Sistemi Operativi PDF
Document Details
Uploaded by ValuableHilbert5480
Tags
Summary
This document provides a general overview of operating systems. It discusses key concepts such as operating system components, their functions, and different scheduling algorithms. It explains how operating systems manage resources, including memory management and process management, as well as how they provide an interface between users and the hardware.
Full Transcript
Definizione Il sistema operativo è un insieme di componenti software, che garantisce l'operatività di base di un calcolatore, coordinando e gestendo le risorse hardware, le periferiche, le risorse software (processi) e offrendo l’interfaccia all'utente È la "base" per i software applicativ...
Definizione Il sistema operativo è un insieme di componenti software, che garantisce l'operatività di base di un calcolatore, coordinando e gestendo le risorse hardware, le periferiche, le risorse software (processi) e offrendo l’interfaccia all'utente È la "base" per i software applicativi , che dovranno essere progettati e realizzati in modo da essere riconosciuti e supportati da quel particolare sistema operativo. offre una interfaccia tra utente e macchina nasconde i dettagli interni semplifica il lavoro recupera situazioni di errore è un supervisore/gestore delle risorse del sistema di elaborazione (ha una visione globale delle risorse del sistema, le conosce nei dettagli, ne offre agli utenti una visione virtuale, ne ottimizza e ne facilita l’uso) Funzioni Principali gestione dell’unità centrale (processore e memoria) gestione dell’input/output gestione dei programmi applicativi gestione del file system gestione dell’interfaccia con l’utente (interprete dei comandi o shell) gestione della sicurezza (controllo dell’accesso alle risorse) modello Onion Skin Il modello Onion Skin (buccia di cipolla) elaborato da H. M. Deitel nel 1983 schematizza un sistema operativo che insiste su una macchina hardware e nei vari strati virtualizza i vari dispositivi rendendo friendly il loro utilizzo da parte degli utenti. Il livello di astrazione dall’hardware, diventa man mano più elevato quanto più ci si allontana dal centro del modello “a cipolla”. Nucleo Nel primo strato si trovano tutti i moduli che gestiscono il processore con l’obiettivo di slegare le particolarità hardware del processore dal software che lo utilizzerà realizzare il multitasking Processi Un processo è un programma in esecuzione. La struttura di un processo in memoria è generalmente suddivisa in più sezioni (codice, dati, heap, stack) Ogni processo è rappresentato nel sistema operativo da un blocco di controllo (process control block, PCB). Il PCB contiene un insieme di informazioni connesse a un processo specifico. Elementi del PCB Stato del processo Contatore di programma Registri della CPU Informazioni sullo scheduling di CPU Informazioni sulla gestione della memoria Informazioni di accounting Informazioni sullo stato dell’I/O Scheduling dei processi Lo scheduler dei processi seleziona un processo da eseguire dall’insieme di quelli disponibili. Processo I/O bound: impiega la maggior parte del proprio tempo nell’esecuzione di operazioni di I/O Processo CPU bound: impiega la maggior parte del proprio tempo nelle elaborazioni Context Switch In presenza di una interruzione (o di una system call), il sistema deve salvare il contesto del processo corrente, per poterlo poi ripristinare quando il processo stesso potrà ritornare in esecuzione. Si esegue un salvataggio dello stato e, in seguito, un corrispondente ripristino dello stato (cambio di contesto). Algoritmi di Scheduling - 1 FCFS (First Come First Served) Opera senza prelazione. → Un processo esegue fino all'I/O o alla fine. Funzionamento: I processi accodano con disciplina First In. Si assegna il processore al processo in cima alla coda (disciplina First Out). Algoritmi di Scheduling - 2 Shortest Job First Opera senza prelazione → Un processo esegue fino all'I/O o alla fine. Funzionamento: I processi accodano con disciplina First In. Si assegna il processore al processo con il CPU burst successivo più piccolo fra quelli in coda. Se esistono più processi con CPU burst minimo, si applica il criterio FCFS. Algoritmi di Scheduling - 3 PRIORITY Opera con o senza prelazione (preempitive). Funzionamento: I processi accodano con disciplina First In. Si associa ad ogni processo una priorità. Si assegna il processore al processo con la priorità più alta. Se due processi hanno uguale priorità, si applica il criterio FCFS. → STARVATION!!!!!! Algoritmi di Scheduling - 4 ROUND ROBIN Opera con prelazione → Un processo può essere interrotto dallo scheduler. Funzionamento: I processi accodano con disciplina First In. Viene scelto il processo in cima alla coda. Ciascun processo può eseguire al più un per un intervallo di tempo prestabilito, dopodiché si passa al processo successivo (FIFO con prelazione) → dimensionamento del QUANTO DI TEMPO (time slice)! Simulatore: https://codepen.io/enemydeeath/pen/zXEEMd Gestione della Memoria Il secondo livello virtualizza il concetto di memoria centrale nascondendo agli utenti la sua effettiva capacità. É costituito da moduli gestori della memoria centrale che permettono anche a più programmi in esecuzione di condividere tale importante risorsa. Spazio di indirizzamento logico: ogni processo è associato ad uno spazio di indirizzamento logico. Gli indirizzi usati in un processo sono indirizzi logici, ovvero riferimenti a questo spazio di indirizzamento. Spazio di indirizzamento fisico: ad ogni indirizzo logico corrisponde un indirizzo fisico. La MMU (memory management unit) opera come una funzione di traduzione da indirizzi logici a indirizzi fisici. GESTIONE della MEMORIA CENTRALE REALE VIRTUALE PARTIZIONI PARTIZIONI FISSE PAGINAZIONE SEGMENTAZIONE DINAMICHE Partizionamento - Partizioni Fisse (fixed partitioning) La memoria disponibile (quella non occupata dal SO) viene suddivisa in partizioni: la dimensione di ogni partizione e`fissata a priori. Quando un processo viene schedulato, il S.O. cerca una partizione libera di dimensione sufficiente ad accoglierlo. Problemi: frammentazione interna (sottoutilizzo della partizione) Il grado di multiprogrammazione è limitato al numero di partizioni. La dimensione massima dello spazio di indirizzamento di un processo è limitata dalla dimensione della partizione più estesa Partizionamento - Partizioni Variabili (dynamic partitioning) Ogni partizione è allocata dinamicamente, e dimensionata in base alla dimensione del processo da allocare. Quando un processo viene schedulato, il S.O. cerca un’area sufficientemente grande per allocarvi dinamicamente la partizione destinata ad accoglierlo. Vantaggi: Si elimina la frammentazione interna (ogni partizione è della esatta dimensione del processo) il grado di multiprogrammazione è variabile La dimensione massima dello spazio di indirizzamento di ogni processo è limitata dalla dimensione dello spazio fisico. Problemi: scelta dell’area in cui allocare: best fit, worst fit, first fit, … frammentazione esterna: man mano che si allocano nuove partizioni, la memoria libera è sempre più frammentata (necessità di compattazione) Paginazione Partizionamento dello spazio fisico di memoria in pagine (frame) di dimensione costante e limitata sulle quali mappare porzioni dei processi da allocare ⇒ allocazione non contigua. eliminazione della frammentazione esterna possibilità di riduzione della frammentazione interna a valori trascurabili. Ogni pagina logica di un processo caricato in memoria viene mappata su una pagina fisica → tabella delle pagine Paginazione Vantaggi: Pagine logiche contigue possono essere allocate su pagine fisiche non contigue: non c’è frammentazione esterna Le pagine sono di dimensione limitata: la frammentazione interna, per ogni processo è limitata dalla dimensione del frame. E` possibile caricare in memoria un sottoinsieme delle pagine logiche di un processo (memoria virtuale). Segmentazione La segmentazione si basa sul partizionamento dello spazio logico degli indirizzi di un processo in parti (segmenti), ognuna caratterizzata da un nome e una lunghezza. Divisione semantica: ad esempio, codice, dati, stack, heap. Ogni segmento viene allocato in memoria in modo contiguo. Ad ogni segmento il S.O. associa un id attraverso il quale lo si può riferire. Possibilità di frammentazione esterna! Gestione delle Periferiche In commercio esistono varie periferiche di input/output con cui il computer, e quindi essenzialmente il sistema operativo, deve interagire. Tra l’altro molte periferiche sono “immesse sul mercato” in data successiva all’uscita del sistema operativo. Esiste quindi una difficoltà oggettiva del sistema operativo, risolta con l’utilizzo dei driver, nel gestire questa varietà di componenti. File System Il file system che si occupa della gestione della memorizzazione permanente dei dati in memoria di massa. Il file system rappresenta una astrazione del modo con cui i dati sono allocati e organizzati su un dispositivo memoria di massa. Attraverso il file system, il SO offre una visione logica uniforme della memorizzazione delle informazioni sui diversi supporti (dischi, nastri, CD, ecc.). Elemento di base nella gestione a livello logico della memoria di massa è il file. File Un file è un insieme di informazioni correlate e registrate nella memoria secondaria con un nome. Il file è la più piccola unità di memoria secondaria assegnabile all’utente che può scrivere sulla memoria secondaria solo registrando un file. Principali attributi del file sono: Nome, Tipo, Locazione, Dimensione… Directory Il file system può essere molto ampio (contenere molte migliaia di file) e tipicamente è organizzato in una struttura gerarchica che mantiene gli elementi terminali (i file) all’interno di contenitori detti directory. Le operazioni messe a disposizione (mediante system call) dal file system per gestire i file, sono: Create, Open, Close, Write, Read, Delete, Seek (Riposizionamento all’interno del file),... Metodi di Accesso Il più semplice metodo d’accesso è l’accesso sequenziale: le informazioni del file si elaborano ordinatamente, un record dopo l’altro. Questo metodo d’accesso è di gran lunga il più comune, ed è usato, per esempio, dagli editor e dai compilatori Nel caso dell’accesso diretto, un file è formato da elementi logici (record) di lunghezza fissa; ciò consente ai programmi di leggere e scrivere rapidamente tali elementi senza un ordine particolare. Allocazione Concatenata Ogni file è una linked list di blocchi, che possono essere sparpagliati ovunque sul disco FAT Variante: File-allocation table (FAT) di MS-DOS e Windows. Mantiene la linked list in una struttura dedicata, all’inizio di ogni partizione Allocazione Indicizzata Si mantengono tutti i puntatori ai blocchi di un file in una tabella indice. inode Un file in Unix è rappresentato da un inode (nodo indice): gli inode sono allocati in numero finito alla creazione del file system. Interprete dei Comandi Le interfacce sono il mezzo dell'interazione tra uomo e macchina. Interfaccia Utente o interprete dei comandi, in quanto l’interazione utente/computer avveniva solo tramite comandi digitati da tastiera che il sistema operativo interpretava ed eseguiva. GUI - Graphical User Interface I compiti essenziali di un’interfaccia grafica possono riassumersi nei seguenti: rendere visibile l’organizzazione dei file in memoria di massa facilitare l’uso di comandi del sistema operativo evitando all’utente di digitare precise sequenze di caratteri facilitare l’avvio dei programmi applicativi