Operative Systems

Year
2
Academic year
2022-2023
Code
01000158
Subject Area
Computer Science
Language of Instruction
Portuguese
Mode of Delivery
Face-to-face
Duration
SEMESTRIAL
ECTS Credits
6.0
Type
Compulsory
Level
1st Cycle Studies

Recommended Prerequisites

C programming, Informatics technology, Computers Architecture

Teaching Methods

The Theoretical classes will have detailed exposition, using audiovisual media, of the main concepts, principles and theories of Operating Systems, complemented with practical examples that are illustrative of real world systems. The Theoretical-Practical classes will have detailed exposition of the Linux application development environment. Classes will include demonstrations and problem resolution activities. In Practical-Laboratorial classes, students will develop several exercices that require the application of theoretical knowledge and promote critical thinking. 

Learning Outcomes

This unit is a basic Operative Systems (OS) course. An OS should support an environment for the development and execution of programs, an interface for accessing the internal computational system (programming API) and managing the hardware and software computational resources (processors, memory, peripherals, data and programs stored in the filesystem). The goal of this course is to present the students with the understanding of how modern OS work and to enable them to develop system applications that directly use the OS API and that explore the concurrency and multi-program features of the system. This course promotes the acquisition of competences through analysis and synthesis, problem solving, practical application of theoretical knowledge, autonomous learning, oral and written communication, critical thinking and decision making.

Work Placement(s)

No

Syllabus

1. Functions of an Operating System

2. Processes and threads

3. Synchronization of processes and threads

4. Deadlocks

5. CPU scheduling

6. Memory management

  a) Main memory

  b) Virtual memory

7. Input/output and storage management

8. Filesystem

9. Security

10. Virtualization

11. Concurrent programming

  a) Programming in C for Linux;

  b) Linux commands and shell scripting;

  c) Linux system functions;

  d) Multi-process and multi-threaded programming;

  e) Inter-process communication

    i) Shared memory; Signals; Pipes; Named Pipes; Select; Message queues; Memory-mapped files;

  f) Synchronization

    i) Mutual exclusion (mutexes), Semaphores, Condition variables;

    ii) Deadlocks e Race Conditions.

Head Lecturer(s)

Vasco Nuno Sousa Simões Pereira

Assessment Methods

Assessment
Mini Tests: 25.0%
Project: 35.0%
Exam: 40.0%

Bibliography

Operating System Concepts: 8th Edition, by Abraham Silberschatz, Peter Baer Galvin, Greg Gagne. John Wiley & Sons, ISBN 9780470233993.

 

Operating Systems: Internals and Design Principles 8th Edition, by William Stallings. Prentice Hall, ISBN 9781292061351.

 

Unix Systems Programming: Communication, Concurrency and Threads 2nd Edition, by Kay Robbins, Steve Robbins. Prentice Hall, ISBN 0130424110.

 

Advanced Programming in the UNIX Environment Second Edition, by W. Richard Stevens, Stephen A. Rago. Addison-Wesley.