1st degree and Bachelor-level of the Bologna process in Ingegneria Informatica (Computer Engineering) - Torino 1st degree and Bachelor-level of the Bologna process in Ingegneria Informatica - 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.
Mandatory course in the Bachelor's Degree program in Computer Engineering, it is held in the first semester of the third year.
Its main objectives are to present the basic elements of the architecture of the operating system and to teach the concepts and methods of concurrent programming.
The course permits students to acquire specific knowledge about UNIX-like operating systems, with particular reference to the Linux system. It also introduces operating system management by means of shell commands, shell scripts, administration commands, and system calls.
• 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.
At the end of this course, the student will be able
- to understand concurrent programming principles, and to implement cooperating concurrent programs using processes
and threads.
- to use and develop applications in Linux.
• Classification of main modern operating systems.
• Basic functionality provided by an operating system.
• Architecture of an operating system seen as a manager and as a scheduler of system resources.
• Process and thread management, that is the ability to use primary techniques for creating, synchronizing, and terminating processes and threads.
• Skill for using system calls for the creation, synchronization and termination of processes and threads
• Use of concurrent programming for solving elementary problems.
• Analysis of classical synchronization problems.
• 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.
• Architectural knowledge
o Architecture of a processing system, with particular reference to the structure of a processor, to memory organization and to data types
o Basic knowledge about interrupt mechanism
• Programming and problem-solving knowledge
o Basic and advanced syntax of the C programming language.
o Static and dynamic abstract data types (ADT), such as vectors, matrices, lists, queues, stacks, etc., and constructs.
o Advanced problem-solving, i.e., capacity to solve relatively highly complex problems by means of the C programming 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 Shell
o Script languages
• The AWK language (3.0h)
• Processes (11.0h)
o Introduction to processes and concurrent programming
o Advanced process control
o Signals
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)
• Operating system architecture (3.0h)
o Introduction and classification of operating systems
o Structure of an operating system, managed resources and main modules
o Operating System Kernel: possible organizations
• Basic aspects about the Linux operating system (6.0h)
o User commands
o System management commands
• Advanced aspects about the Linux operating system (6.5h)
o Shell
o Script languages
• The file system (3.0h)
o File and allocation
o Architecture of a file system
• Processes (11.0h)
o Introduction to processes and concurrent programming (system call fork and wait)
o Advanced process control (system call exec and system)
o Signals
o Inter-process communication (pipe)
• Threads (6.0h)
o Main concepts (execution, passage of parameters, wait, etc.)
o Differences between threads and processes, and type of threads
o The PThread library in UNIX-like environment
• Processes and thread synchronization (7.5h)
o Software and hardware solutions to synchronization
o Semaphore variables and primitives
o Classical synchronization problems (producer and consumer, readers and writers, philosophers, etc.)
o Parallel problem-solving
• Processes scheduling (1.5h)
• Deadlock (1.5h)
• Laboratory practice about all previous listed topics and in a Linux operating system (15.0h)
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.
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.
The course also includes about 15 hours of assisted laboratory exercises.
The laboratory activity includes practical exercises on (practically) all the topics covered during the lessons and classroom exercises. For this reason laboratories are an integral and fundamental part of the course.
The laboratory exercises are carried out using a Linux operating system (Ubuntu or similar) and involve the use of all the basic tools of the operating system, i.e., commands and shell languages, script writing, file-system and its management, development of concurrent programs with the C programming language.
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.
• Material provided by the teacher
o Slides used in classroom
o Material used in laboratory, with particular reference to laboratory exercises and related solutions
o Provided material on specific topics
• Material (educational or not) available on the World Wide Web and in the course website
• Books:
o A. Silbershatz, P. Galvin, G. Gagne, “Operating System concepts”, John Wiley & Sons, Inc.
o A. S. Tanenbaum, H. Bos, “Modern operating systems”, Pearson College
o W. R. Stevens "Advanced programming in the UNIX Environment", Addison-Wesley Publishing Company
Slides; Libro di testo; Esercizi; Esercizi risolti; Esercitazioni di laboratorio; Esercitazioni di laboratorio risolte; Video lezioni dell’anno corrente; Video lezioni tratte da anni precedenti; Materiale multimediale ; Strumenti di simulazione; Strumenti di collaborazione tra studenti;
Lecture slides; Text book; Exercises; Exercise with solutions ; Lab exercises; Lab exercises with solutions; Video lectures (current year); Video lectures (previous years); Multimedia materials; Simulation tools; Student collaboration tools;
Modalità di esame: Prova scritta (in aula);
Exam: Written test;
...
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.
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Exam: Written test;
The exam consists of a written test.
The written test is carried out by means of a computer, using the university platform "Exam". Depending on the sanitary situation, the exam is taken either onsite, i.e., in one of the laboratories, or online, i.e., remotely.
In the first case, the instructors provide the required assistance and control activity, directly in the laboratories.
In the second one, the exam is taken integrating the "Exam" platform with the proctoring tools available within the portal system.
All students have to read the University regulations related to the exams and to obtain the necessary hardware and software tools needed for it. All students are required to respect the ethical code defined by the University.
In the case of problems of infrastructural nature, students must promptly communicate the problem via email no later than one hour after the end of the test. If irregularities are found, the professors reserve the right to perform an oral verification on all topics of the course.
The written test includes from 6 to 18 open (with manual correction) or close questions (with automatic correction by means of the exam platform).
These questions are aimed at verifying:
• The knowledge acquired during the course and related to both the theoretical and the more practical aspects
• The ability to solve problems involving the theoretical and practical knowledge acquired, with particular attention to shell commands, script languages, main aspects of system programming and concurrent programming.
The test lasts about 120 minutes.
Books, overheads, and notes are not allowed. Laptops, cellular phones, etc. are forbidden. The reference notes deemed as necessary (such as the ones on Linux shell commands, BASH shell scripts, and the Pthreads library) will be made directly available within the "Exam" platform.
In the case of suspects during the written test, the teachers reserve the right to cancel the test itself or to evaluate the candidate by means of a further oral examination.
The written test is evaluated up to 36 points.
All marks larger or equal to 32 or 33 (depending on the written text) will be automatically converted in 30 with honor.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.