This course is characterizing for the Master of Science in Computer Engineering, and it is held at the second semester of the first year.
This course analyzes the operating system architecture, and its internal modules. It introduces concepts and techniques for an effective management of the resources of a computer system (processors, memories, devices, files, etc.). System programming techniques are illustrated through the analysis and use of Unix and Windows system calls.
This course is characterizing for the Master of Science in Computer Engineering, and it is held at the second semester of the first year.
This course analyzes the operating system architecture, and its internal modules. It introduces concepts and techniques for an effective management of the resources of a computer system (processors, memories, devices, files, etc.). System programming techniques are illustrated through the analysis and use of Unix and Windows system calls.
• Knowledge of the operating systems architecture as a collection of resource managers
• Knowledge of operating system kernel modules, and skill to implement new modules
• Skill for using system calls for the creation, synchronization and termination of processes and threads
• Knowledge of virtual memory mechanism
• Knowledge of process scheduling with and without real-time constraints
• Skill to understand and implement memory management and scheduling algorithms
• Knowledge of device management
• Skill to understand and implement device drivers
• Knowledge of modern file system organizations and skill to manage file systems and file locking
• Knowledge of the main mechanisms for resource and information protection
• Knowledge of system programming APIs (system calls)
• Skill to understand and implement programs based on system calls.
• Knowledge of the operating systems architecture as a collection of resource managers
• Knowledge of operating system kernel modules, and skill to implement new modules
• Skill for using system calls for the creation, synchronization and termination of processes and threads
• Knowledge of virtual memory mechanism
• Knowledge of process scheduling with and without real-time constraints
• Skill to understand and implement memory management and scheduling algorithms
• Knowledge of device management
• Skill to understand and implement device drivers
• Knowledge of modern file system organizations and skill to manage file systems and file locking
• Knowledge of the main mechanisms for resource and information protection
• Knowledge of system programming APIs (system calls)
• Skill to understand and implement programs based on system calls.
• Knowledge of a computer system architecture: in particular structure of the CPU and memory
• Knowledge of the interrupt mechanism and basics of an Assembler language
• Knowledge of the main data type structures and algorithms
• Good programming skill in C language
• Knowledge of the basic concurrent programming techniques
• Knowledge of a computer system architecture: in particular structure of the CPU and memory
• Knowledge of the interrupt mechanism and basics of an Assembler language
• Knowledge of the main data type structures and algorithms
• Good programming skill in C language
• Knowledge of the basic concurrent programming techniques
Operating Systems architecture (10 h)
modules for the management of the resources of a computer system
process and thread management,
synchronization,
exception handling
interprocess communication
Memory management (6 h)
segmentation
paging
virtual memory
Process scheduling (4 h)
Device management (6 h)
I/O terminal management
disk management
Win32 low-level system architecture: operating system families, device drivers
synchronous and asynchronous I/O
Linux device drivers
File system management (8 h)
file system organization, management and protection
file locking
Resource and information protection (2 h)
Win32 System Programming: (28 h)
File and directory manipulation
Processes and threads
Synchronization primitives
Structured Exception Handling
Memory management
Asynchronous I/O
Laboratory practice (36 h)
Concurrent programming with processes and threads
Linux kernel customization and install
PC booting
Kernel modules and daemons
Device drivers
Exception handling
Writing a system call
File system internals and system calls
Visual studio programming environment
Binary files and concurrent programming in Win32
Multiple threads/processes and synchronization primitives in Win32
Exception handling in Win32
Operating Systems architecture (10 h)
modules for the management of the resources of a computer system
process and thread management,
synchronization,
exception handling
interprocess communication
Memory management (6 h)
segmentation
paging
virtual memory
Process scheduling (4 h)
Device management (6 h)
I/O terminal management
disk management
Win32 low-level system architecture: operating system families, device drivers
synchronous and asynchronous I/O
Linux device drivers
File system management (8 h)
file system organization, management and protection
file locking
Resource and information protection (2 h)
Win32 System Programming: (28 h)
File and directory manipulation
Processes and threads
Synchronization primitives
Structured Exception Handling
Memory management
Asynchronous I/O
Laboratory practice (36 h)
Concurrent programming with processes and threads
Linux kernel customization and install
PC booting
Kernel modules and daemons
Device drivers
Exception handling
Writing a system call
File system internals and system calls
Visual studio programming environment
Binary files and concurrent programming in Win32
Multiple threads/processes and synchronization primitives in Win32
Exception handling in Win32
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 allow students to solve typical concurrency problems, to be introduced to system, kernel and module programming, 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.
Laboratories allow students to solve typical concurrency problems, to be introduced to system, kernel and module programming, and applying all theory and practice aspects analyzed during the classroom lessons.
Silberschatz, Galvin, Gagne: 'Operating System Concepts', 7th Edition, John Wiley & son, 2003, ISBN: 0-471-69466-5
Bovet D. P., Cesati M., Understanding the Linux Kernel, 3rd Edition, O'Reilly, 2005. ISBN: 0-596-00565-2
Jonathan Corbet, Alessandro Rubini, Greg KroahHartman: 'Linux Device Drivers, 3rd Edition, O'Reilly, 2005
W.R. Stevens
"Advanced programming in the UNIX Environment", Addison-Wesley Publishing Company
Johnson M. Hart,
'Windows System Programming', Addison-Wesley Publishing Company
Silberschatz, Galvin, Gagne: 'Operating System Concepts', 7th Edition, John Wiley & son, 2003, ISBN: 0-471-69466-5
Bovet D. P., Cesati M., Understanding the Linux Kernel, 3rd Edition, O'Reilly, 2005. ISBN: 0-596-00565-2
Jonathan Corbet, Alessandro Rubini, Greg KroahHartman: 'Linux Device Drivers, 3rd Edition, O'Reilly, 2005
W.R. Stevens
"Advanced programming in the UNIX Environment", Addison-Wesley Publishing Company
Johnson M. Hart,
'Windows System Programming', Addison-Wesley Publishing Company
Modalita di esame: Prova scritta (in aula);
Exam: Written test;
...
The laboratory assignments have a deadline , and are evaluated during the exam to assess that the student has acquired not only a theoretical knowledge of the course topics, but it also able to implement concurrent solutions, to be proficient in system programming, to understand implementation details of the kernel, to implement modules and a minimal kernel.
The final exam is written. It includes two parts:
- the first part, to be solved in 105 minutes, consist in solving and implementing a problem in C language by means of
concurrent processes or threads, and other system calls (18 marks) .
For this part the student can use books, notes, program listings, etc., excluding a computer.
- the second part, lasting 50 minutes, includes five questions covering the topics of the course, both theory and practice (15
marks)
For this part the student cannot use any document or computer.
The final result is the sum of the marks obtained in the first( marks >= 8) part and the second part (marks >= 10)
Gli studenti e le studentesse con disabilita 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'Unita Special Needs, al fine di permettere al/la docente la declinazione piu idonea in riferimento alla specifica tipologia di esame.
Exam: Written test;
The laboratory assignments have a deadline , and are evaluated during the exam to assess that the student has acquired not only a theoretical knowledge of the course topics, but it also able to implement concurrent solutions, to be proficient in system programming, to understand implementation details of the kernel, to implement modules and a minimal kernel.
The final exam is written. It includes two parts:
- the first part, to be solved in 105 minutes, consist in solving and implementing a problem in C language by means of
concurrent processes or threads, and other system calls (18 marks) .
For this part the student can use books, notes, program listings, etc., excluding a computer.
- the second part, lasting 50 minutes, includes five questions covering the topics of the course, both theory and practice (15
marks)
For this part the student cannot use any document or computer.
The final result is the sum of the marks obtained in the first( marks >= 8) part and the second part (marks >= 10)
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.