| Politecnico di Torino | |||||||||||||||||
| Anno Accademico 2014/15 | |||||||||||||||||
| 01NYHOV System and device programming |
|||||||||||||||||
|
Corso di Laurea Magistrale in Ingegneria Informatica (Computer Engineering) - Torino |
|||||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
|
Presentazione
The course is taught in English.
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. |
|
Risultati di apprendimento attesi
-• 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. |
|
Prerequisiti / Conoscenze pregresse
-• 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 concurrent programming techniques |
|
Programma
Operating Systems architecture (18 h)
modules for the management of the resources of a computer system process and thread management, synchronization, exception handling interprocess communication Memory management (8 h) segmentation paging virtual memory Process scheduling (6 h) Device management (12 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 (10 h) file system organization, management and protection file locking Resource and information protection (2 h) Win32 Application development: (4 h) reactive programming graphical user interface design and implementation user interaction handling Virtual Machines: (6) general principles, the .NET framework |
|
Organizzazione dell'insegnamento
Practice (10 h)
Concurrent programming with processes and threads Memory mapped files Kernel modules and daemons Structure of device drivers System calls Laboratory practice (24 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 |
|
Testi richiesti o raccomandati: letture, dispense, altro materiale didattico
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 |
|
Criteri, regole e procedure per l'esame
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 consist in solving and implementing a problem in C language by means of concurrent processes or threads, and other system calls (18 marks) - the second part includes five questions covering the topics of the course, both theory and practice (15 marks) The final result is the sum of the marks obtained in the first( marks >= 8) part and the second part (marks >= 10) |
| Orario delle lezioni |
| Statistiche superamento esami |
|
|