|Politecnico di Torino|
|Academic Year 2017/18|
1st degree and Bachelor-level of the Bologna process in Computer Engineering - Torino
Mandatory course in the Bachelor Degree program in Computer Engineering, it is held at the first semester of the third year.
Its objectives are to present the basic elements of the operating systems architecture and to teach the concepts and methods of concurrent programming. The course also introduces to the operating system management by means of the shell commands, shell scripts, filters and system calls.
Expected learning outcomes
• Knowledge of the classification of the operating systems: Batch, Interactive, Real-time, Virtual machines
• Knowledge of the operating systems architecture as a collection of resource managers
• Knowledge of operating system kernel structures
• Skill for using system calls for the creation, synchronization and termination of processes and threads
• Skill for system administration by means of shell command, filters, scripts and system calls.
Prerequisites / Assumed knowledge
• Good programming skill in C language
• Knowledge of computer system architecture: in particular on the processor and memory organization
• Knowledge of the interrupt mechanism and of assembler language.
• Operating system architecture (3.0h)
o Operating System classification
o Structure of an operating system, managed resources and modules
o Operating System Kernel: possible organizations
• The Linux operating system for beginners (6.0h)
o User commands
o System commands
• The advanced Linux operating system (5.5h)
o Script languages
• The AWK language (3.0h)
• Processes (11.0h)
o Introduction to processes and concurrent programming
o Advanced process control
o Inter-process communication
• Threads (4.5h)
o Main concepts
o Comparison with processes
o The PThread library
• Processes and thread synchronization (9.0h)
o Software and hardware solutions to synchronization
o Semaphore variables and primitives
o Classical synchronization problems (producer and consumer, readers and writers, etc.)
• High level linguistic synchronization constructs
o Conditions variables and primitives (1.5h)
• Deadlock (1.5h)
• Laboratory practice (15h)
The class can be divided into theory lectures, practice lessons and laboratories. There is no formal distinction between theory and practice as almost all course topics involve theory and practice aspects developed during the classroom lessons by the teacher.
Laboratories (about 15 hours overall) allow students to solve typical problems (with complex commands, filters, scripting or C programs on a Linux personal computer) and applying all theory and practice aspects analyzed during the classroom lessons.
Texts, readings, handouts and other learning resources
The reference texts, covering most, but not all, topics are:
• A. Silbershatz, P. Galvin, G. Gagne, "Operating System concepts", John Wiley & Sons, Inc.
• W. R. Stevens "Advanced programming in the UNIX Environment", Addison-Wesley Publishing Company
Additionally the lessons' handouts, laboratory manuals, and solved exercises are available from the course Web site.
Assessment and grading criteria
The exam includes a written test. The test lasts 100 minutes and includes two parts:
• three/four exercises and/or questions related to topics presented in the lectures
• two/three exercises related to topics developed during the classroom and laboratory practices. Those usually involve concurrent programming, shell commands, script programs, etc.
During the exam it is not possible to use any book or note.
The written tests is evaluated as follows:
• Each exercise has a weight equal to 6 points, with a final total mark of 36 (6x6=36)
• Both the theory and the practice parts have a threshold equal to about 50% of the corresponding global mark. The exam is passed only if both parts receive a pass grade.
• The final mark is obtained by the sum of all exercises marks.
Programma definitivo per l'A.A.2017/18