Torna alla pagina di Sistemi Operativi
:: Appunti caotici ::
Lezione 1
Funzioni di un sistema operativo
Pag 1
Sommario
Ovviamente per sistema operativo si intende quell'insieme di programmi che hanno come obiettivo la gestione dell'architettura dell'elaboratore.
Pag 2
Obiettivi
Per astrazione si intende l'innalzamento del livello della concezione dei componenti del sistema di elaborazione, ovvero gli utenti utilizzeranno la macchina ad un livello più semplice e intuitivo rispetto quello hardware.
Tra le conseguenze di questa proprietà ricordiamo:
- semplificazione dell'uso, resa possibile nascondendo i dettagli all'utente i dettagli realizzativi
- gestione ottimizzata, perché permette di usare/accedere alle risorse nel miglior modo possibile (senza dover conoscere le implementazioni di certi funzionamenti interni)
Altro obiettivo del sistema operativo è la virtualizzazione, ovvero la creazione di un ambiente simulato equivalente a quello della macchina, ma totalmente dedicato al programma in esecuzione. Ciò comporta:
- l'indipendenza dalla presenza di altri programmi (ognuno di essi si comporta come se fosse l'unico in esecuzione) e
- la semplificazione della programmazione dei programmi applicativi e della gestione delle risorse condivise. Non dobbiamo infatti preoccuparci dell'interazione tra i programmi: se qualcuno dovrà utilizzare una risorsa già usata da un altro dovrà prima aspettare che questo la rilasci.
Se la virtualizzazione non fosse rispettata, per ogni nuovo programma installato dovrei prima tener conto di tutti gli altri già presenti, il che è impossibile.
Organizzazione logica (1)
Subito da puntualizzare che l'organizzazione logica non è la reale struttura interna del sistema operativo, anche se quest'ultimo ne rispetterà l'organizzazione astratta.
Per ottenere l'astrazione e la virtualizzazione bisogna struttura logicamente il sistema operativo, per creare l'illusione che nella memoria centrale ci sia un solo programma.
Nella figura:
- i vari P1 P2 e P3 rappresentano i programmi, o meglio, un'astrazione dedicata dei vari programmi
- l'HW è l'intera macchina di von Neumann, composta da processore, memoria e periferiche
- le varie gestioni (processore, memoria, i/o) fanno parte del sistema operativo. In particolare la gestione i/o genererà un'immagine virtuale della periferica fisica, ognuna delle quali sarà dedicata a uno specifico programma.
Non mi interessa sapere quali blocchi operativi (per processore memoria o periferiche) siano di un determinato programma, l'importante è che ognuno di essi vi accedano come se fossero l'unico ad accedere alla risorsa. Starà poi ai vari dispositivi gestire le richieste nel modo (e ordine) più ottimizzato possibile.
Pag 3
Organizzazione logica (2)
Premessa: il modo più naturale per accedere alle informazioni non è per posizione fisica, ma per contenuto (parole chiave). Ad esempio, se vado in una biblioteca e cerco "Pompieri ninja in bicicletta" utilizzo dei criteri (ordine alfabetico per il titolo, per l'autore, genere, anno, ...), non scelgo uno scaffalo a caso e scandisco tutti i libri finché non lo trovo.
Nel nostro sistema di elaborazione l'accesso alle informazioni per posizione era già un'astrazione (dell'infimo livello hardware) e potrebbe già andar bene. Astraendo ulteriormente arriviamo al concetto di file system, che traduce la struttura fisica del sistema in struttura logica, che consente la visione delle informazioni nelle memorie non più come blocchi e sezioni, ma come sequenze di record logici che compongono file. Il vantaggio è che si ottiene un'indipendenza dall'architettura dei dischi (numero di sezioni, blocchi, ...): il metodo di accesso ai dati rimarrà sempre uguale.
Un'ulteriore astrazione al file system è il database, che consente un accesso ai file per valore.
Anche le periferiche dal punto di vista astratto sono concepibili come file (immagini logiche) speciali. Ad esempio la tastiera può essere pensata come sequenza di caratteri, quindi gestita come file di testo. Ciò porta ad una rappresentazione piuttosto omogenea delle informazioni, che siano su file o su periferiche.
Considerazione finale generale: quando un'insieme di operazioni diventano di uso talmente condiviso dagli utenti, pur appartenendo inizialmente all'insieme delle applicazioni, può accadere che vengano "spostate nel sistema operativo", e quindi implementate direttamente in esso. Il file system rappresenta un esempio di tali spostamenti.
Funzioni (1)
La domanda a cui verrà risposto nei prossimi lucidi è:
"L'utente cosa si aspetta dal sistema operativo?"
Gestione del processore: il sistema operativo farà in modo che si possano attivare programmi e che evolvano (almeno apparentemente) in parallelo. Tale gestione passa attraverso la gestione dei processi, ovvero un programma entrato in esecuzione (istruzioni + informazioni che caratterizzano il programma stesso).
Tra le varie operazioni di gestione ricordiamo:
- schedulazione dei processi, ovvero la scelta dell'ordine con cui eseguirli, in modo da dare l'impressione che stiano evolvendo in parallelo
- sincronizzazione tra processi, ad esempio impedendo a due processi di stampare contemporaneamente dalla stessa stampante
- gestione di situazioni di stallo, con ad esempio due processi che attendono reciprocamente che si liberi una risorsa impiegata dall'altro
Pag 4
Funzioni (2)
Gestione della memoria centrale: il sistema operativo gestirà i vari processi caricati in memoria centrale in modo da garantire la multiprogrammazione, e quindi dargli tutto lo spazio necessario perché sia garantita la loro corretta esecuzione.
La multiprogrammazione concorre infatti a sfruttare nel miglior modo possibile le risorse condivise (memorie e processore), cercando di mantenere contemporaneamente in memoria il maggior numero possibile di programmi.
Funzioni (3)
Gestione delle periferiche: il sistema operativo dovrà rendere omogeneo e trasparente l'interazione con esse
Tra le varie funzioni ricordiamo:
- interfaccia generale e omogenea, in modo che le applicazioni non si debbano preoccupare del modo con cui attivare le periferiche
- gestione ottimizzata dei dispositivi di ingresso, uscita, memorizzazione di massa e rete informatica in modo tale che per ciascuna tipologia siano utilizzate le tecniche che ottimizzino l'uso delle risorse
- protezione delle periferiche, ovvero bisogna impedire a due processi di accedere contemporaneamente allo stesso dispositivo.
Pag 5
Funzioni (4)
Gestione del file system: il sistema operativo dovrà far sì che le informazioni siano reperite per posizione logica e non fisica, utilizzando i concetti di file ed albero del file system.
Saranno così fornite un insieme di funzioni che mi permettano di gestire file e cartelle, dalla creazione alla cancellazione alla lettura e scrittura eccetera. Particolare attenzione va riposta nella protezione e nella sicurezza dei file, dal momento che il file system è ad accesso condiviso.
Funzioni (5)
Gestione dell'interfaccia utente: il sistema operativo dovrà fornire quell'insieme di funzioni che garantiscano l'interazione tra utente e i vari programmi.
Tra le varie funzioni ricordiamo:
- interprete comandi a livello programmi (chiamate di sistema), ovvero meccanismi utilizzati affinché gli applicativi eseguano funzioni del sistema operativo
- autenticazione, per attribuire i diritti previsti associati ad un determinato utente
- gestione degli errori e dei malfunzionamenti: trattare l'errore e se possibile risolverlo, se non si riesce si rimanda la gestione al livello superiore e così via (se nessuno sa far nulla, bisogna trovare il modo di avvisare l'utente).
Torna alla pagina di Sistemi Operativi