SISTEMI OPERATIVI
Di cosa parla
- Introduzione e Architettura: Il documento descrive i sistemi operativi (SO) come gestori di risorse, distinguendo tra modalità Kernel e Utente. Traccia l'evoluzione storica dai mainframe ai sistemi time-sharing e delinea l'architettura hardware chiave: CPU (pipeline, registri, PSW), memoria (gerarchia, cache, RAM, ROM, disco) e I/O (controller, driver, bus). Viene introdotto il concetto di System Call e le architetture SO (monolitici, microkernel, distribuiti).
- Processi e Thread: Vengono analizzati i processi come entità di lavoro con un proprio stato esecutivo, coprendo la loro creazione (FORK), terminazione (exit, kill) e il ciclo di vita (Running, Ready, Blocked, Zombie) con lo swapping. Si approfondisce la multiprogrammazione e l'implementazione dei processi tramite PCB. I thread sono presentati come flussi esecutivi leggeri che condividono lo spazio di indirizzamento di un processo, con dettagli sulla loro implementazione (spazio utente, kernel, ibrida) e gestione in Java.
- Sincronizzazione e Deadlock: Il documento affronta il problema della Regione Critica e la Mutua Esclusione, con tecniche come
synchronizedin Java, busy waiting e l'algoritmo di Paterson. Vengono introdotti i meccanismi diSleep and Wait, semafori (binari e generali) e monitor (utilizzati in Java) per la sincronizzazione, applicati al problema Produttore-Consumatore e ai 5 Filosofi. Il deadlock è spiegato attraverso le sue quattro condizioni (mutua esclusione, hold and wait, non-prelazione, attesa circolare), un modello a grafo delle risorse, algoritmi di rilevamento e strategie per la prevenzione e risoluzione (prelazione, rollback, eliminazione processi, algoritmo del banchiere). - Gestione della Memoria: Viene illustrata l'evoluzione della gestione della memoria, dalla memoria senza astrazione (registri base e limite) alla Memoria Virtuale. Quest'ultima include la paginazione (Pagine, Frame, MMU, TLB, Page Fault) con vari algoritmi di rimpiazzamento (Ottimo, FIFO, LRU, Working Set) e la segmentazione. Sono discusse le politiche di allocazione dello spazio (First/Next/Best/Worst Fit) e la gestione della frammentazione.
- File System: Il documento descrive il file system come una struttura per la memorizzazione persistente delle informazioni. Vengono esaminati i nomi, le strutture interne, i tipi (normali, directory, speciali) e le operazioni sui file. Si esplorano diverse organizzazioni di directory (singolo livello, gerarchiche, path name) e il layout fisico del file system (MBR, i-nodes, data blocks). Vengono presentati il Logical Volume Manager (LVM) e RAID, e varie implementazioni di file (allocazione continua, liste collegate, FAT, i-node), inclusi file condivisi e file system log-strutturati (Journaled, Virtual).
- Input/Output e Scheduling Avanzato: Si analizzano i dispositivi I/O (a blocchi, a caratteri) e il loro funzionamento con controller, I/O mappato in memoria e Direct Memory Access (DMA). Viene dettagliata la gestione degli interrupt e la stratificazione del software I/O (driver, buffer). Lo scheduling dei processi è categorizzato (Batch, Interattivi, Real-time) con algoritmi specifici (FCFS, SJF, Round Robin, RMS, EDS).
- Cloud Computing e Sistemi Multimediali: Il cloud computing è introdotto come un modello per l'ottimizzazione delle risorse tramite virtualizzazione, con i suoi problemi (es. single point of failure) e soluzioni (SaaS, PaaS, IaaS), vantaggi e svantaggi, e tipi di cloud. Infine, i sistemi multimediali sono descritti con le loro caratteristiche (codifica, compressione, real-time), tipi di ridondanza (spaziale, temporale), buffering (underrun/overrun) e funzionalità VCR-like.