Sistemi Operativi A.A. 2022/2023 ============================================= Benvenuti al corso di Sistemi Operativi per A.A. 2022/2023 del Corso di Laurea in Ingegneria Informatica di Roma Tre Docente: `Romolo Marotta `_ News ---- .. warning:: Pubblicati i risultati della sessione di :ref:`Luglio 2023 ` * :ref:`n16-11-2022` * :ref:`n02-11-2022` * :ref:`n19-10-2022` * :ref:`n16-10-2022` Per la lista completa degli aggiornamenti visita la sezione dedicata: :doc:`2022/news` Obiettivi del corso ------------------- L'obiettivo del corso è fornire allo studente competenze sull'architettura di un generico sistema operativo moderno, con particolare riferimento al sistema Linux, e sulle metodologie usate per risolvere le problematiche tipiche della gestione di risorse in un sistema operativo moderno. Infine, particolare attenzione verrà dedicata alla programmazione di sistema e scripting. Orario delle lezioni -------------------- ========= ============= ===== Giorno Orario Aula ========= ============= ===== Martedì 16:00 - 18:00 N13 [Vasca Navale 79/81] - `Aula Teams `_ Mercoledì 16:00 - 18:00 N13 [Vasca Navale 79/81] - `Aula Teams `_ ========= ============= ===== .. warning:: * Il corso è pensato per essere seguito dagli studenti in presenza. * Le lezioni saranno comunque trasmesse in streaming e registrate, ma queste ulteriori modalità di erogazione sono disponibili soprattutto per coloro che saltuariamente non possono partecipare alle lezioni. * Se, per motivi tecnici, non sarà possibile registrare o trasmettere, la lezione sarà impartita ugualmente. * Se il docente riterrà utile usare la lavagna e non sarà possibile inquadrarla in modo efficace, la lezione si svolgerà ugualmente. * Non è detto che sarà possibile, per gli studenti che parteciperanno in remoto, interagire con il docente durante la lezione. Link ai contenuti del corso --------------------------- - `Teams `_ - `SharePoint `_ - Stream - `Moodle `_ - `GitHub `_ - :doc:`Slides <2022/slides>` Ricevimento ----------- Contattare il docente alla seguente email **{nome}.{cognome}@uniroma3.it** e riportare il prefisso **[SO2223]** nell'oggetto. Modalità d'esame ---------------- L'esame prevede 2 prove i cui punteggi sono ripartiti secondo quanto segue. +---------+----------------------------+-------+-------+-------------+-----------+ | # Test | Tipologia | Punti | Perc. | Sufficienza | Durata | +---------+----------------------------+-------+-------+-------------+-----------+ | 1 | Domande di teoria | ~21 | ~65% | ~12 | ~2h | +---------+----------------------------+-------+-------+-------------+-----------+ | 2 | Esercizi di programmazione | ~10 | ~35% | ~6 | ~1h30m | +---------+----------------------------+-------+-------+-------------+-----------+ Regole: #. Il voto finale è pari alla somma dei punteggi ottenuti: * nei test 1 e 2; * dalla vincita di una sfida avanzata dal docente. 2. Per superare l'esame occorre ottenere la sufficienza in entrambi i test. #. Qualora la sufficienza sia stata conseguita solo su uno dei due test, lo studente è esonerato dal sostenere il test in cui è risultato sufficiente nell'A.A. 2022/2023. Potrà perciò risostenere unicamente il test dove non ha conseguito la sufficienza. #. Per la lode è richiesto un punteggio di 31 punti. #. I punteggi ottenuti nei test e nelle sfide potranno essere mantenuti fino all'ultima sessione di esame per l'A.A. 2022/2023. Date """""""" * **I Appello** (Gennaio) * Prova di programmazione: 31/01 in Aula ECampus (turni disponibili dopo il 25/01) * Prova di teoria: 07/02 in Aula N11 ore 14:00 * **II Appello** (Febbraio) * Prova di programmazione: 21/02 (turni disponibili dopo il 15/02) * Prova di teoria: 28/02 in Aula N11 ore 10:00 .. _books2022: Testi consigliati e link utili (in aggiornamento) ------------------------------------------------- * [t1] Operating Systems: Internals and Design Principles - William Stallings - Prentice Hall, fifth edition (o superiori). Riferimento: ninth global edition. * [t2] Sistemi operativi: Concetti ed Esempi - Silberschatz Abraham, Galvin Peter Baer, Gagne Greg - Addison Wesley/Pearson, nona edizione (o superiori). Riferimento: tenth global edition. * [t3] Programmazione in Ambiente UNIX - Francesco Quaglia, Camil Demetrescu - `Disponibile in formato pdf `_ .. role:: removedtopic Programma --------- * **Panoramica sui sistemi operativi moderni.** definizione di sistema operativo, scopi, architettura a strati, kernel/user mode, caratteristiche salienti * **Processi e Thread.** dispatching, stati, descrizione e controllo, modelli tipici di sistemi operativi e di uso della memoria nei processi * **Scheduling.** a breve medio e lungo termine, algoritmi per cpu scheduling * **Sincronizzazione.** primitive di sincronizzazione, RMW, mutex, semafori * **Memoria.** allocatori di memoria, partitioning, best/first/next fit, buddy algorithm, paging, segmentation, memoria virtuale e sua gestione hardware/software * **I/O e File Management.** Disk scheduling, UNIX File Management, inode, Linux VFS, ext2 * **Introduzione a Linux.** comandi di utilizzo frequente (e.g., gestione file e directory), variabili di ambiente, redirection, piping, :removedtopic:`segnali, espressioni regolari (sed e grep), scripting (bash, awk),` linux filesystem management * **Programmazione di Sistema.** Gestione in C dei processi/thread su ambiente linux * :removedtopic:`**Debugger**.` :removedtopic:`utilizzo di gdb stepping, breakpoints, watching, backtrace, comandi gdb.` * :removedtopic:`**Virtualizzazione.**` :removedtopic:`Concetti generali, container, Docker` .. disabled .. warning:: :removedtopic:`topic` indica che i relativi contenuti sono stati esclusi dal programma .. toctree:: :hidden: self linux_install 2022/examples 2022/questions 2022/slides 2022/lectures/index 2022/challenges 2022/exams 2022/news 2022/errata editions