Summary

Questo documento presenta una panoramica sui sistemi operativi, coprendo concetti fondamentali come componenti di un computer, registri, nozioni di base e molto altro.

Full Transcript

# Sistema Operativo - Gestisce le risorse hardware di un sistema computerizzato - uno o più processori - memoria primaria (RAM) - dispositivi di input/output - memoria secondaria (dischi) - rete - Il suo scopo è fornire un insieme di servizi agli utenti - servizi sia...

# Sistema Operativo - Gestisce le risorse hardware di un sistema computerizzato - uno o più processori - memoria primaria (RAM) - dispositivi di input/output - memoria secondaria (dischi) - rete - Il suo scopo è fornire un insieme di servizi agli utenti - servizi sia per gli sviluppatori che per i semplici utilizzatori - esempio: offre un ambiente di esecuzione "facilitato" alle applicazioni utente - esempio: offre un ambiente grafico per eseguire applicazioni # Componenti di un Computer Monoprocessore The image shows a diagram of a computer with the following components: - **CPU** - **PC** (Program counter) - **MAR** (Memory address register) - **IR** (Instruction register) - **MBR** (Memory buffer register) - **I/O AR** (Input/output address register) - **I/O BR** (Input/output buffer register) - **Execution unit** - **System Bus** - **Main Memory** - **I/O Module** - **Buffers** # Nozioni di Base: Parti Principali - **Processore** - il cervello del computer: si occupa di tutte le computazioni - **Memoria Principale** - volatile: se si spegne il computer, se ne perde il contenuto - talvolta chiamata memoria reale o primaria - **Moduli di input/output** - dispositivi di memoria secondaria (dischi...), non volatile - dispositivi per la comunicazione (schede di rete...) - altri dispositivi: tastiera, monitor, stampante, mouse,... - **"Bus" di sistema** - mezzo per far comunicare tra loro le parti interne del computer: processori, memoria principale, e moduli di input/output # Registri del Processore - **Registri visibili dall'utente**   - usati o da chi programma in assembler o dai compilatori di linguaggi non interpretati - obbligatori per alcune istruzioni su alcuni processori - facoltativi per ridurre accessi alla memoria principale - linguaggi compilati ("vecchi"): C, C++, Fortran; linguaggi interpretati (“nuovi"): Python, Java - **Registri di controllo e di stato** - usati dal processore per controllare l'uso del processore stesso - usati da funzioni privilegiate del SO per controllare l'esecuzione dei programmi - **Registri "interni"** - usati dal processore tramite microprogrammazione - comunicazione con memoria ed I/O # Registri Visibili dall'Utente - Gli unici che possono essere usati direttamente (con il loro nome) quando si programma in linguaggio macchina (o assembler), ad es.: - mov $5, %eax (x86 con sintassi AT&T) - li $t1, 5 (MIPS, ad es. R3000A nella PlayStation) - Possono contenere dati o indirizzi - Nel caso contengano indirizzi, possono essere - puntatori diretti - registri-indice: per ottenere l'indirizzo effettivo, occorre aggiungere il loro contenuto ad un indirizzo base - puntatori a segmento: se la memoria è divisa in segmenti, contengono l'indirizzo di inizio di un segmento - es.: cs, ds, ss, es, fs, gs nel Pentium - puntatori a stack: puntano alla cima di uno stack - es.: esp per x86, $sp per MIPS # Registri Interni - **Registro dell'indirizzo di memoria** - Memory Address Register, ο MAR - contiene l'indirizzo della prossima operazione di lettura/scrittura - **Registro di memoria temporanea** - Memory Buffer Register, o MBR - contiene i dati da scrivere in memoria, o fornisce lo spazio dove scrivere i dati letti dalla memoria - lw $s1, 0($s2): concettualmente, prima copia il contenuto di $s2 in MAR, poi legge dalla memoria in MBR, e infine copia da MBR in $s1 (microprogrammazione semplificata) - **Registro dell'indirizzo di input/output** - I/O address register - **Registro di memoria temporanea per l'input/output** - I/O buffer register # Registri di Controllo e Stato - **Contatore di Programma (Program Counter, o PC)** - contiene l'indirizzo di un'istruzione da prelevare dalla memoria - **Registro di Istruzione (Instruction Register, o IR)** - contiene l'istruzione prelevata più di recente - **Stato di Programma (Program Status Word, o PSW)** - contiene le informazioni di stato, ad es: interrupt disabilitati - **Codici di condizione (o flag)** - singoli bit settati dal processore come risultato di operazioni - esempi: risultato positivo, negativo, zero, overflow, ... - **Vengono usualmente letti/modificati in modo implicito da opportune istruzioni assembler** - esempio: una jump modifica il PC - **Nel x86 sono considerati registri di controllo anche quelli per la gestione della memoria** - ad esempio, i registri cro ... cr4 gestiscono le tabelle delle pagine - un bit di cro abilita la paginazione tout-court # Esecuzione di Istruzioni - **Due passi** - Il processore legge (preleva, fase di fetch) istruzioni dalla memoria (principale) - Il processore esegue ogni istruzione prelevata # Prelievo ed Esecuzione di Istruzioni - Il processore preleva l'istruzione dalla memoria principale - II PC mantiene l'indirizzo della prossima istruzione da prelevare - II PC è incrementato dopo ogni prelievo - Se l'istruzione contiene una jump, il PC verrà ulteriormente modificato dall'istruzione stessa # Registro dell'Istruzione - L'istruzione prelevata viene caricata nell'IR - Categorie di istruzioni - Scambio dati tra processore e memoria - Scambio dati tra processore e input/output - Manipolazione di dati - include operazioni aritmetiche - solitamente solo con registri (MIPS), ma in alcuni processori anche direttamente in RAM (x86) - Controllo - modifica del PC tramite salti condizionati o non - Operazioni riservate - (dis)abilitazione interrupt - (dis)abilitazione cache - (dis)abilitazione paginazione/segmentazione # Caratteristiche di una Macchina Ipotetica The image shows a diagram of a hypothetical machine with the following: - **Instruction format** where the first 4 bits are the opcode and the remaining bits are the address - **Integer format** that uses the first bit as a sign bit and the remaining bits as the magnitude. - **Internal CPU registers** representing the: - Program counter (PC) = Address of instruction - Instruction register (IR) = Instruction being executed - Accumulator (AC) = Temporary storage - **Partial list of opcodes** where 0001 = Load AC from memory, 0010 = Store AC to memory, and 0101 = Add to AC from memory # Esempio di Esecuzione di un Programma The image shows a table of memory addresses and their content for a fictional program execution. - **Step 1**: It begins with the Program counter (PC) at address 300. - **Step 2**: It reads the value stored in the memory location at address 300 and adds 2 by 3 to get a result of 5 which is stored in the accumulator (AC) and the PC is incremented to 301 to move to the next address. - The process continues in the same fashion till the program completes. # Interruzioni - **Paradigma dell'interazione hardware/software** - **Interrompono la normale esecuzione sequenziale del processore** - come conseguenza, viene eseguito del software “di sistema”, che tipicamente non è stato scritto dall'utente che sta eseguendo un certo programma - questo software di sistema, come si può intuire, è parte del sistema operativo - **Le cause sono molteplici, e danno luogo a diverse classi di interruzioni:** - da programma (sincrone) - da I/O (asincrone) - da fallimento hardware (asincrone) - da timer (asincrone) # Interruzioni Asincrone vs. Sincrone - Le interruzioni da programma sono le uniche sincrone - ovvero, hanno luogo come immediata conseguenza di una certa istruzione - Le altre sono asincrone perché vengono tipicamente sollevate (molto) dopo l'istruzione che le ha causate - addirittura, alcune non sono neanche causate dall'esecuzione di istruzioni # Classi di Interruzioni Asincrone - **Interruzioni da input/output** - generate dal controllore di un dispositivo di input/output - per la maggior parte, i dispositivi di input/output sono più lenti del processore - quindi, il processore manda un comando al dispositivo di I/O e poi aspetta che il dispositivo lo “interrompa" quando è riuscito a completare la richiesta - segnalano il completamento o l'errore di un'operazione di I/O - **Interruzioni da fallimento HW** - improvvisa mancanza di potenza (power failure) - errore di parità nella memoria - **Interruzioni da comunicazione tra CPU** - per sistemi dove ce n'è più d'una - **Interruzioni da timer** - generate da un timer interno al processore - permettono al sistema operativo di eseguire alcune operazioni ad intervalli regolari - Per processori Intel, gli interrupt sono solo questi # Classi di Interruzioni Sincrone - **Interruzioni di programma, causate principalmente da:** - overflow - divisione per 0 - debugging: single step o breakpoint - riferimento ad indirizzo di memoria fuori dallo spazio disponibile al programma - riferimento ad indirizzo di memoria momentaneamente non disponibile - memoria virtuale: ci ritorneremo - tentativo di esecuzione di un'istruzione macchina errata - opcode illegale, oppure operando non allineato - chiamata a system call (intenzionale!) - Per processori Intel, queste vengono chiamate exception # Interruzioni ed Istruzione di Ritorno - **Per le interruzioni asincrone, una volta che l'handler è terminato, si riprende dall'istruzione subito successiva a quella dove si è verificata l'interruzione** - questo, ovviamente, solo se la computazione non è stata completamente abortita come conseguenza dell'interruzione - in realtà, potrebbe succedere che ci sia un process switch, ma ne parleremo nelle prossime lezioni - comunque, quando e se la computazione ritornerà al processo interrotto, si ricomincia dall'istruzione successiva - **Con le eccezioni sincrone, non è detto** - faults: errore correggibile, viene rieseguita la stessa istruzione - es.: page fault - aborts: errore non correggibile, si esegue software collegato con l'errore - es.: segmentation fault - traps e system calls: si continua dall'istruzione successiva - es. per traps: debugging # Fase di Interruzione - Ad ogni ciclo fetch-execute, viene anche controllato se c'è stata un'interruzione (o una exception) - Se così è, il programma viene sospeso e viene eseguita una funzione che gestisce l'interruzione (interrupt-handler routine) # Interruzioni: Trasferimento del Controllo - L'interrupt handler è una funzione particolare: nel programma utente non era prevista - Sistema operativo e hardware collaborano per salvare le informazioni (almeno registro di stato e program counter) e settare il program counter - normalmente, questo lo fa o il programmatore (se scrive direttamente in assembler) o il compilatore: è una chiamata a funzione - non è stata scritta dal programmatore, ma fin qui niente di così strano (esistono le librerie...) - il fatto è che, nel punto in cui avviene questa “chiamata", il programma utente non prevedeva affatto di effettuare la chiamata all'interrupt handler! - soprattutto per le interruzioni “vere”; per le eccezioni, almeno si sa che è possibile che vengano sollevate - per funzioni “normali” salvare anche il registro di stato è solitamente superfluo, qui può essere importante # Interruzioni: Modifiche a Memoria e Registri - Il processore sta eseguendo l'istruzione all'indirizzo N quando arriva un'interruzione, da gestire con l'handler all'indirizzo Y - The image shows a diagram that depicts how a CPU saves the current context and switches to handle an interrupt. - The diagram depicts the process of: - Saving the current context (program state) - Calling the interrupt service routine - Restoring the state and returning to the user program # Interruzioni Disabilitate - The image shows an interrupt cycle with interrupts disabled. It only shows the fetch and execute stage of the cycle. # Interruzioni: Sequenziali ed Annidate - The image shows two diagrams representing different methods of handling interrupts. - **Sequential interrupt processing**: This process is where the interrupt handler for interrupt X is completed before the interrupt handler for interrupt Y is initiated. - **Nested interrupt processing**: This method allows the interrupt handler for interrupt Y to be initiated before the interrupt handler for interrupt X is completed. # I/O Programmato - Il più vecchio modo di fare I/O - L'azione viene effettuata dal modulo di 1/0, non dal processore - Setta i bit appropriati sul registro di stato dell'I/O - Niente interruzioni - Il processore controlla lo status finché l'operazione non è completa # I/O da Interruzioni - È un modo un po' più moderno per fare I/O - II processore viene interrotto quando il modulo I/O è pronto a scambiare dati - Il processore salva il contesto del programma che stava eseguendo e comincia ad eseguire il gestore dell'interruzione - Non c'è inutile attesa - Tuttavia, consuma molto tempo di processore, dal momento che ogni singolo dato letto o scritto interrompe l'esecuzione del processore # Programma: Flusso di Controllo - The image showcases three different scenarios demonstrating the flow of control during I/O operations. - **(a) No interrupts**: The CPU waits for the I/O operation to complete before proceeding. - **(b) Interrupts; short I/O wait**: The CPU handles an interrupt and returns to the user program immediately. - **(c) Interrupts; long I/O wait**: The CPU handles the interrupt, but then waits for the I/O operation to complete before returning to the user program. # Accesso Diretto in Memoria - È il metodo di I/O usato nei computer attuali - Le istruzioni di I/O tipicamente richiedono di trasferire informazioni tra dispositivo di I/O e memoria - Trasferisce un blocco di dati direttamente dalla/alla memoria - Un'interruzione viene mandata quando il trasferimento è completato - Più efficiente # Multiprogrammazione - Un processore deve eseguire più programmi contemporaneamente - La sequenza con cui i programmi sono eseguiti dipende dalla loro priorità e dal fatto che siano o meno in attesa di input/output - Alla fine della gestione di un'interruzione, il controllo potrebbe non tornare al programma che era in esecuzione al momento dell'interruzione # Gerarchia della Memoria - The image depicts a memory hierarchy triangle, visualizing the relationship between memory speed, cost, and capacity. - The top of the triangle represents registers, cache, and main memory, which have the fastest access speed, highest cost per bit, and lowest capacity. - Moving down the triangle, the speed decreases, cost per bit decreases, and capacity increases, culminating in magnetic tape at the bottom, representing the slowest access speed, lowest cost per bit, and highest capacity. # Gerarchia della Memoria: Memoria Secondaria - Corrisponde all'outboard e all'offline storage - Memoria "ausiliaria" ed "esterna" - Non volatile: se si spegne il computer, il contenuto rimane - Usata per memorizzare i files contenenti programmi o dati # Gerarchia della Memoria: Memoria Cache - Anche nell'inboard memory ci sono importanti differenze di velocità - Infatti, la velocità del processore è maggiore della velocità di accesso alla memoria principale - Per evitare eccessivi tempi di attesa, tutti i computer hanno una memoria cache - Memoria piccola e veloce, che sfrutta il principio di località # Cache e Memoria Principale - The image shows a simple diagram of the cache and main memory of the computer. It shows the byte/word transfer and the block transfer between the two components. # Cache: Nozioni di Base - Contiene copie di porzioni della memoria principale - Il processore prima controlla se un dato è nella cache - Se no, il corrispondente blocco di memoria principale viene caricato nella cache - Siccome vale la località dei riferimenti, è probabile che il dato appena caricato serva ancora nell'immediato futuro - in generale, i futuri riferimenti in memoria ricadranno probabilmente nel blocco appena caricato - Gestione totalmente demandata all'hardware - il programmatore non "vede" la cache, neanche se usa l'assembler - quindi, non la "vede" neanche un compilatore - e neanche il sistema operativo, gestita dall'HW della CPU # Cache vs. Memoria Principale - The image shows a diagram of cache and main memory. - **Cache**: Shows a limited number of lines with each line containing a tag and a block. - **Main Memory**: Displays a much larger number of blocks. - **The formula for the size of a cache tag is: $log_2(\frac{2^n}{K})$, where K is the number of words in a block and n is the total number of words in main memory. For example, if n is 32 and K is 4, then the size of each cache tag would be 6 (log2(2^32 / 4) = log2(2^28) = 28 bits). # Lettura dalla Cache - The image shows a diagram of the process of reading data from cache. - The CPU sends a read request to the cache. - If the data is already in the cache, it is retrieved and sent back to the CPU. - If the data is not in the cache, a block from main memory containing the data is loaded into the cache. # Cache: Nozioni di Base - Capacità della cache - cache anche piccole hanno un grande impatto sulle performance - Misura dei blocchi - i dati scambiati tra memoria e cache sono in quantità multiple di un blocco - incrementare la misura del blocco aumenta il numero di accessi riusciti - ma incrementarla troppo è controproducente: saranno di più anche i dati che vengono rimossi - il che abbassa la probabilità di accesso riuscito - Funzione di mappatura - determina la locazione della cache nella quale andrà messo il blocco proveniente dalla memoria - Algoritmo di rimpiazzamento - sceglie il blocco da rimpiazzare - algoritmo Least-Recently-Used (LRU): si rimpiazza il blocco usato meno di recente (quindi, più vecchio) - Politica di scrittura - determina quando occorre scrivere in memoria - può accadere ogni volta che un blocco viene modificato (write-through) - può accadere quando il blocco è rimpiazzato (write-back) - occorre minimizzare le operazioni di scrittura - questo vuol dire che la memoria può trovarsi in uno stato “obsoleto”, ovvero non in linea con il contenuto della cache # La Cache nei Pentium i7 - Ogni cache line ha 64 byte e ogni word ha 64 bit, quindi $K = 8$ - Ci sono 2 cache di primo livello (L1), più altre 2 cache di secondo e terzo livello (L2 e L3) - le 2 di primo livello sono l'una dedicata alle istruzioni, l'altra dedicata ai dati - si va a cascata: dato un indirizzo RAM, prima si cerca in L1, se fallisce in L2, se fallisce in L3, e se fallisce ancora in memoria - ovviamente, se si trova un dato in L2 e non in L1, L1 va aggiornata - Le dimensioni della cache crescono da 32 KB per ciascuna delle L1, a 256 KB per L2, fino a 8MB per L3 - Il sistema operativo può disabilitare il caching - Linux non lo fa - Politica di scrittura: la può decidere il sistema operativo - Linux sceglie sempre il write-back # Strati e Utenti - The image shows a diagram depicting the different layers of the computer system. - **End User**: Interacts with the highest level of the system. - **Application Programs**: Executes the user's tasks. - **Utilities**: Provides basic services to the application programs. - **Operating System**: Manages the computer hardware and resources. - **Programmer**: Responsible for creating application programs and utilities. - **Operating-System Designer**: Focuses on designing the operating system. - **Computer Hardware**: The physical components that make up the computer. - When programming with an interpreted language, the system relies mostly on the "utilities". This includes functions that are specific to the operating system and are not directly related to the hardware. # Servizi Offerti da un Sistema Operativo - **Esecuzioni di programmi** - app(licazioni) - servizi - anche più applicazioni e servizi contemporaneamente - **Accesso ai dispositivi di input/output** - nel caso dei dispositivi di memoria di massa, tramite filesystem - **Accesso al sistema operativo stesso** - shell - **Sviluppo di programmi** - compilatori, editor e debugger - system calls - visione semplificata della memoria RAM - **Rilevamento di e reazione ad errori** - errori di hardware interno ed esterno - errori software - richiesta di un applicativo non soddisfacibile - **Accounting (chi fa cosa)** - collezione di statistiche dell'uso del sistema - monitoraggio delle performance - usato per capire cosa occorre migliorare - usato per far pagare in base all'uso del sistema # Sistema Operativo - Un programma che controlla l'esecuzione dei programmi applicativi - gli prepara l'ambiente, li manda in esecuzione, risponde a loro eventuali richieste, gestisce la loro terminazione - Un'interfaccia tra le applicazioni e l'hardware - Obiettivi di un sistema operativo - Convenienza - Efficienza - Capacità di evolvere # Sistema Operativo - Responsabile della gestione delle risorse - funziona allo stesso modo del software "normale": è un programma in esecuzione - tuttavia, lo fa con privilegi più alti - concede il controllo del processore ad altri programmi - e controlla l'accesso alle altre risorse (RAM, I/O) # II Kernel - La parte di sistema operativo che si trova sempre in memoria principale - Contiene le funzioni più usate - Letteralmente, sta per “nucleo" - Restano fuori funzionalità che si usano per casi particolari - ad es.: file system poco usati # Evoluzione dei Sistemi Operativi - I sistemi operativi "primitivi” (anni Quaranta) erano molto diversi da quelli attuali - Si è arrivati alla situazione attuale gradualmente, tramite un'evoluzione - Evoluzione dovute principalmente a: - in seguito ad aggiornamento dell'hardware, o a nuovi tipi di hardware - nuovi servizi - correzione di errori - Conoscere questa evoluzione storica è importante per capire i sistemi operativi moderni - inoltre, alcune metodologie abbandonate potrebbero tornare utili in altri ambiti - http://www.computerhistory.org/timeline/ # Storia dei Sistemi Operativi - **Computazione seriale (anni Quaranta)** - nessun sistema operativo - per fornire comandi ad un computer, si usavano speciali "console” con spie luminose ed interruttori, e una stampante per output - **Già all'inizio l'input viene parzialmente semplificato con dispositivi per leggere schede perforate (esistenti da 2 secoli)** - **Per scrivere una scheda perforata, si poteva usare una speciale macchina da scrivere (ad es.: IBM 024 e 026)** - **Semplice sistema non interattivo o batch (anni Cinquanta/Sessanta)** - programma esterno di monitoraggio - software per controllare sequenze di eventi - possibilità di raggruppare lavori (jobs) da eseguire insieme - il programma, una volta concluso, ritorna il controllo al programma esterno di monitoraggio - **Linguaggio di controllo dei job** - dà istruzioni al monitor - che compilatore usare - che dati di input usare # Caratteristiche Hardware - **Protezione della memoria** - non permette che la zona di memoria contenente il monitor venga modificata - **Timer** - impedisce che un job monopolizzi l'intero sistema - **Istruzioni privilegiate** - alcune istruzioni macchina possono essere eseguite solo dal monitor - interruzioni - i primi modelli di computer non le avevano # Protezione della Memoria - I programmi utente vengono eseguiti in modalità utente - alcune istruzioni non possono essere eseguite - Il monitor viene eseguito in modalità sistema - o modalità kernel - le istruzioni privilegiate possono essere eseguite - le aree protette della memoria possono essere accedute # Sistemi Batch: Sottoutilizzazione - Più dell 96% del tempo è sprecato ad aspettare i dispositivi di I/O # Programmazione Singola - Il processore deve aspettare che le istruzioni di I/O siano completate prima di procedere # Multiprogrammazione - Se un job deve aspettare che si completi dell'I/O, allora il processore può passare ad un altro job # Multiprogrammazione - Program A will run till it encounters the wait state. - Program B will run when Program A encounters waits for I/O operations. - The combined process will alternate between the execution of the two programs whenever one program is ready to run while the other is in a wait state. # Esempio - The table shows a comparison between the usage of system resources (CPU, Memory, Disk, Terminal, and Printer) for uniprogramming and multiprogramming. - **Uniprogramming** involves running a single job at a time. - **Multiprogramming** allows multiple jobs to run concurrently, sharing the system resources. - The table highlights that multiprogramming leads to a more efficient use of system resources, resulting in higher throughput and reduced mean response time. # Sistemi Time Sharing - Letteralmente, sistemi a condivisione di tempo (dagli anni Settanta) - Uso della multiprogrammazione per gestire contemporaneamente più jobs interattivi - Il tempo del processore è condiviso tra più utenti - Più utenti contemporaneamente accedono al sistema tramite terminali # Batch vs. Time Sharing - **Batch** - Scopo principale: Massimizzare l'uso del processore - Provenienza delle direttive al Sistemi Operativi: Comandi del job control language, sottomessi con il job stesso - **Time Sharing** - Scopo principale: Minimizzare il tempo di risposta - Provenienza delle direttive al Sistemi Operativi: Comandi dati da terminale # Storia dei Sistemi Operativi - Computazione seriale (anni Quaranta) - Semplice sistema non interattivo o batch (anni Cinquanta/Sessanta) - multiprogrammazione - Time-Sharing: sistemi a condivisione di tempo (dagli anni Settanta) - qui invece i job sono tipicamente interattivi # Storia dei Sistemi Operativi: Risultati più Importanti - Processi - Gestione della memoria - Sicurezza e protezione delle informazioni (privacy) - Gestione dello scheduling e delle risorse - Strutturazione del sistema # Dal Job al Processo - Il processo riunisce in un unico concetto il job non-interattivo e quello interattivo - Incorpora anche un altro tipo di job che cominciò a manifestarsi dagli anni Settanta: quello transazionale real-time - ad es.: prenotazione biglietti aerei - Un'unità di attività caratterizzata da: - un singolo flusso (thread) di esecuzione - uno stato corrente - un insieme di risorse di sistema ad esso associate # Multiprogrammazione dei Processi: Difficoltà - Errori di sincronizzazione - gli interrupt si perdono o vengono ricevuti 2 volte - Violazione della mutua esclusione - se 2 processi vogliono accedere alla stessa risorsa, ci possono essere problemi - Programmi con esecuzione non deterministica - un processo accede ad una porzione di memoria modificata da un altro processo - Deadlock (stallo) - un processo A attende un processo B che attende A # Gestione della Memoria - Isolamento dei processi - Protezione e controllo degli accessi - Gestione (compresa allocazione/deallocazione) automatica - Supporto per la programmazione modulare (stack) - Memorizzazione a lungo termine - Metodi attuali: paginazione + memoria virtuale # Protezione dell'Informazione e Sicurezza - Disponibilità (availability) - il dover proteggere il sistema contro l'interruzione di servizio (DoS attacks) - Confidenzialità - garanzia che gli utenti non leggano informazioni per le quali non hanno l'autorizzazione - Integrità dei dati - protezione dei dati da modifiche non autorizzate - Autenticità - il dover verificare l'identità degli utenti, o la validità di messaggi e dati # Pianificazione e Gestione delle Risorse - Equità (fairness) - dare accesso alle risorse in modo egualitario ed equo - Velocità di risposta differenziata - a seconda del tipo di processo - Efficienza - massimizzare l'uso delle risorse per unità di tempo (throughput), minimizzare il tempo di risposta, e servire il maggior numero di utenti possibile # Elementi Principali di un Sistemi Operativo - The image shows a diagram depicting the core elements of an operating system and their interactions. - **Service Call from Process**: User processes request services from the operating system. - **Service Call Handler**: This module processes the service calls, executing the required actions. - **Interrupt from Process/Interrupt from I/O**: Interrupts can be triggered either by user processes or by I/O devices. - **Interrupt Handler**: Manages interrupts from various sources. - **Long-Term Queue, Short-Term Queue, I/O Queues**: Jobs are queued and scheduled for execution as needed. - **Short-Term Scheduler**: Selects the next process to be executed by the CPU. - **Pass Control to Process**: The scheduler decides which process will be given control of the CPU. - The diagram demonstrates the interaction between user processes and the operating system, showcasing the functions of service call handling and interrupt management. # Struttura del Sistema Operativo - Il sistema viene visto come una serie di livelli - Ogni livello effettua un sottoinsieme delle funzioni del sistema - Ogni livello si basa sul livello immediatamente più in basso, che effettua alcune operazioni di livello più basso - Decomposizione del problema in vari sottoproblemi più semplici # Livelli - **Livello 1** - circuiti elettrici - gli oggetti sono registri, celle di memoria, porte logiche - le operazioni sono, ad esempio, resettare un registro o leggere una locazione di memoria - **Livello 2** - insieme delle istruzioni macchina - operazioni come add, subtract, load, and store - **Livello 3** - aggiunge il concetto di procedura (o subroutine), con operazioni di chiamata e ritorno - **Livello 4** - interruzioni # Livelli: Multiprogrammazione - **Livello 5** - processo come programma in esecuzione - sospensione e ripresa dell'esecuzione di un processo - **Livello 6** - dispositivi di memorizzazione secondaria - trasferimento di blocchi di dati - **Livello 7** - crea uno spazio logico degli indirizzi per i processi - organizza lo spazio degli indirizzi virtuali in blocchi # Livelli: Dispositivi Esterni - **Livello 8** - comunicazioni tra processi - **Livello 9** - salvataggio di lungo termine di file con nome - **Livello 10** - accesso a dispositivi esterni usando interfacce standardizzate - **Livello 11** - associazione tra identificatori interni ed esterni - **Livello 12** - supporto di alto livello per i processi - **Livello 13** - interfaccia utente # Architettura di UNIX - The image shows a diagram of the UNIX architecture. - It depicts the different layers of the operating system: - **User-written applications**: Programs and applications created by users. - **Kernel**: The core of the operating system, managing the system's resources and providing essential services. - **System call interface**: A layer that allows user programs to interact with the kernel. - **UNIX commands and libraries**: Pre-built functions and commands to simplify programming tasks. - **Hardware**: Physical components of the computer. # Kernel Tradizionale di UNIX - The image shows a diagram depicting the traditional UNIX kernel architecture. - It presents a layered architecture with different subsystems: - **User Level**: User programs reside in this level. - **Kernel Level**: The kernel comprises several subsystems. - **File subsystem:** Manages files and directories. - **Process control subsystem:** Controls the creation, termination, and execution of processes. - **Scheduler:** Selects the next process to be executed by the CPU. - **Interprocess communication:** Facilitates communication between different processes. - **Memory management:** Manages memory allocation and deallocation. - **Hardware Level**: Represents the underlying hardware. - **Device drivers**: Responsible for managing the communication with hardware devices. # Kernel Moderno di UNIX - The image shows a diagram of the modern UNIX kernel architecture. - It presents a more modular architecture, with common facilities that are used by different subsystems: - **Common facilities**: Shared resources across different kernel modules. - **Virtual memory framework**: Manage the virtual memory space for processes. - **File mappings**: Allow applications to directly access files through pointers. - **Device mappings:** Enable interaction between different kernel modules and hardware devices. - **Anonymous mappings:** Permit kernel modules to allocate temporary memory. - **Disk driver, Tape driver**: Handle the interaction with storage devices. - **Block device switch**: A layer that manages access to block devices. - **Streams**: Provides an interface for reading and writing data sequences. - **Network driver, tty driver**: Handles network communication and interactions with serial ports. - **Scheduler framework**: Manages the scheduling of processes for execution. - **System processes**: Essential processes running within the kernel. - **Time-sharing processes**: Processes sharing the CPU time. - **vnode/vfs interface:** Provides an interface for accessing filesystems. - **NFS, FFS, RFS, s5fs**: Different types of filesystems supported by the UNIX kernel. # Kernel Moderno di Linux - Compromesso tra kernel "monolitico” e “micro

Use Quizgecko on...
Browser
Browser