| Course Code | 321-4100 |
|---|---|
| Semester | 4 |
| ECTS | 5.00 |
| Hours (Theory) | 3 |
| Hours (Lab) | 2 |
| Instructor | Nomikos Nikolaos |
Introduction to Operating Systems: basic concepts, history, operating system structure. Processes: the process model and implementation of processes, interprocess communication (race conditions, critical regions, mutual exclusion), process scheduling. Threads: the thread model and thread usage, implementation of threads in user space and in the kernel, hybrid implementations, pop-up threads, making single-threaded code multithreaded, thread scheduling. Deadlocks: detection and recovery, deadlock avoidance, deadlock prevention. Memory management: swapping, virtual memory, page replacement algorithms, design issues for paging systems, implementation issues, segmentation. Input/Output (I/O): principles of I/O hardware, principles of I/O software, I/O software layers, disks. File systems: files and directories, file system implementation, security and protection mechanisms.
It is the intent of this course that students will:
- understand the modern computer systems' complexity and the usefulness of operating systems.
- know the most important resource-utilization issues arising in a computer system.
- learn the most popular solutions adopted by modern operating systems.
- be able to describe the basic principles used in the design of modern operating systems.
In particular, the students will:
- be able to analyze the tradeoffs inherent in operating system design.
- be able to distinguish different styles of operating system design.
- understand the main principles and techniques used to implement processes and threads as well as the different algorithms for process scheduling.
- understand the main mechanisms used for inter-process communication.
- be able to contrast kernel and user mode in an operating system.
- be able to explain memory hierarchy and cost-performance tradeoffs.
- be able to give the rationale for virtual memory abstractions in operating systems.
- have an understanding of disk organization and file system structure.
- be able to describe how computing resources are used by application software and managed by system software.
- understand the internal structure of an operating system and be able to write programs using system calls.
- understand the major mechanisms of current general-purpose operating systems exemplified by Linux.
- are capable of basic system-oriented programming and providing simple extensions to an operating system.
Not required.
Lectures, resolving exercises, Laboratory Exercises.
| Activity | Semester workload |
|---|---|
| Lectures | 39 hours |
| Laboratory Exercises | 26 hours |
| Personal study | 54 hours |
| Laboratory Exams |
3 hours |
| Final exams | 3 hours |
| Course total | 125 hours (5 ECTS) |
Lab exercises, written examination.
Greek (English for Erasmus students)

