The main objectives of this curricular unit were to provide the fundamental knowledge on:
- the structure and the functioning of an operating system;
- the use of the Application Programming Interface (API) of a real.
The programming language used to develop these projects was C.
- Objectives and functions of an operating system
- Evolution of operating systems; structure of modern operating systems
- Abstractions supported by an operating system and their programming interface
- Hardware support and protection requirements
- Processes and threads; process status
- Scheduling strategies
- Concurrent execution: problems and solutions
- Synchronization mechanisms between processes
- Deadlocks
- Basic memory management: overlays, swapping and partitions
- Virtual memory systems: paging and segmentation
- Implementation of virtual memory; strategies for memory allocation/ release
- Input/output hardware and software
- Abstraction of differences between devices
- File-system interface
- File-system implementation; disk management
- File and directory manipulation.
- Process and thread creation and management.
- Interprocess communication: signals, pipes, FIFOs, and shared memory.
- Process and thread synchronization: semaphores, mutexes and condition variables.