Fundamentals of Operating Systems
Faculdade de Ciências e Tecnologia
Departamento de Informática
Teacher in charge
José Alberto Cardoso e Cunha
To understand the fundamentals of operating systems, their basic abstractions and system programming interfaces. To understand the system call interface and be able to develop simple system programs, involving concurrent processes, and access to file system primitives. To understand the fundamentals of concurrent programming, and process synchronization and communication in centralized systems: critical sections and mutual exclusion, readers and writers, producers and consumers, clients and servers. Study of the functionalities and system calls provided by the Unix operating system.
Practical laboratories involve Unix systems programming exercises with concurrent processes, at the shell level and at the C language level.
- Functions and organization of an operating system (OS)
- Types of services offered by an OS and to use them
- Concept of process and of concurrent execution
- Characteristics of concurrent programs
- Mechanisms for process communication and synchronization
- Programming using the system calls for process and file management
- Concurrent programming
- Use of the UNIX command line interface and tools (compilers, linkers, make)
- Technical writing: simple reports on the laboratory assignments
- Fullfilment of deadlines: for the laboratory assignments and reports
1. Introduction to operating systems. Historical evolution, types of systems, user interfaces and system calls.
2. The process concept concept of virtual processor, virtual memory and input / output channels. Process execution model and basic support mechanisms. Execution context: process state and address space.
3. File system and input / output: programming at the level of the file system calls. File system organization and primitive operations.
4. Process control: phases in the life of a process under the control of the operating system: process creation, loading and activation, execution, and termination. Concepts of synchronous and assynchronous events. Concurrency models: among processes and internal to each process. Concepts of heavy-weight and light-weight processes (threads).
5. Concurrent programming: concepts of sequential and concurrent execution. Atomicity and execution traces. Process interactions: competion and cooperation models. Mutual exclusion, producers and consumers, readers and writers, clients and servers, transaction models. Synchronization of concurrent processes: algorithms based on busy waiting; semaphores; monitors. Interprocess communication: shared-memory models and distributed-memory models (message-based).
Practical laboratory: Programming at the level of the Unix system calls. Programming with file access, concurrent processes, process synchronization and communication based on shared-memory and semaphores, and based on messages.
- Operating System Concepts, A. Silberschatz, P. Galvin, G. Gagne, 8th Ed, 2009, Wiley
- K. Haviland, D. Gray e B. Salama, UNIX System Programming, 2nd Edition, Addison-Wesley, 1998
- B. W. Kernighan, D. M. Ritchie, The C Programming Language, 2nd Edition, Prentice Hall, 1988
- M. Ben-Ari, Principles of Concurrent and Distributed Programming, Prentice-Hall, 2006
- Lecture notes are available onliine through the course Web site
The theoretical concepts are presented and discussed in the
theoretical lectures, so thar the student is stimulated to question the
This methodology is applied all along the course chapters.
The final grade is obtained from two components:
-theoretical component NT results from individual evaluation (through tests or final examination)
-laboratory component NP results from the evaluation of the practical lab exercises, which are performed by groups of two students.