Computing
CS211: Programming and Operating Systems. (5 ECTS)
This course introduces operating systems, the most fundamental piece of software running on any computer.
Taught in Semester(s) 1. Examined in Semester(s) 1.
Workload: 108 hours (24 Lecture hours, 24 Lab hours, 60 Self study hours).
Module Learning Outcomes.
On successful completion of this module the learner should be able to:
- Name and describe the main tasks of an operating system;
- Explain the concept and purpose of a process in an operating system;
- Represent the life cycle of a process in a diagrammatical fashion;
- Describe and compare various scheduling strategies;
- Explain and implement a queue data structure;
- Apply a semaphore as a tool in concurrent programming;
- Explain the necessary conditions for deadlock;
- Describe and apply an algorithmic strategy for deadlock detection.
Indicative Content
An operating system is the most fundamental piece of software running on any computer. In this course, after a discussion of basic concepts, the main tasks of an operating system are studied in detail.
Processes and threads: static and dynamic aspects, internal representation of processes and threads in the process table, the process life cycle, context of a process and context switching.
Processor scheduling: scheduling criteria, examples of scheduling algorithms.
Synchronization principles: cooperation and competition between concurrent processes, use of semaphores and their operations, implementation of semaphores.
Dealing with deadlocks: resource allocation graph, deadlock prevention, deadlock avoidance, deadlock detection and recovery, the bankers algorithm.
File management, input/output system, Memory management.
Example implementations of algorithms are developed in the practical.
Module Resources
John O'Gorman, Operating Systems, Palgrave 2000.
Andrew S. Tanenbaum, Modern Operating Systems, 3rd ed., Pearson Education 2007.
William Stallings, Operating Systems---Internals and Design Principles., 7th ed., Pearson Education 2011.
Back