Sei sulla pagina 1di 5

I Compendi OpenSource

di Giacomo Marciani

Teoria, Formulario e Suggerimenti Pratici

Sistemi Operativi

Strutture dei sistemi operativi

Un sistema operativo il software 1 che gestisce l'hardware di un calcolatore, controllando le periferiche, di cui crea un'astrazione, e realizzando un ambiente per l'esecuzione controllata dei programmi applicativi, assegnando le risorse di sistema in modo ottimizzato, e realizza un'interfaccia di comunicazione tra l'utente nale e l'hardware. Un sistema operativo dunque una interfaccia, un realizzatore di astrazioni hardware, un programma di controllo, un assegnatore di risorse, che fornisce un insieme di procedure uniformi per l'utilizzo delle periferiche hardware. Per denire ci che faccia o meno parte del sistema operativo2 necessario dunque porsi, di volta in volta, nell'ottica dell'utente nale, del programmatore o del progettista. Poich il sistema operativo un programma di base strettamente correlato all'architettura del calcolatore elettronico, storicamente i sistemi operativi si sono evoluti parallelamente ai calcolatori elettronici.
Servizi di un sistema operativo Un sistema operativo ore un ambiente in cui eseguire i programmi applicativi e in cui orire servizi3 . Sebbene i servizi specici varino in base al sistema operativo, possiamo comunque identicare le seguenti categorie di servizi comuni:

user interface (UI)

4 : interfaccia non interattiva in cui i comandi sono codicati negli script5 . L'utente deve schedulare in anticipo i job da svolgere, sia sequenzialmente che in parallelo.  command line interface (CLI)6 : interfaccia basata sulla linea di comando realizzata da un programma di sistema, detto shell7 , in cui i comandi sono codicati in stringhe8 . Esistono due soluzioni per implementare i comandi: comandi interni: la shell contiene il codice per l'esecuzione del comando9 , quindi la shell esegue le operazioni richeste direttamente, senza creare un nuovo processo.
batch interface

di programmi. comprende talvolta, oltre al kernel, anche i programmi di sistema e alcuni programmi applicativi. 3 i servizi oerti da un sistema operativo facilitano il compito dei programmatori di applicazioni. 4 anche detta interfaccia a lotti. 5 uno script un le eseguibile chiamato dalla shell a realizzare le operazioni richieste. 6 anche detta interprete dei comandi. 7 la shell talvolta compresa nel kernel di sistemi operativi semplici. 8 quando l'interfaccia pronta ad accettare una nuova stringa di comando, visualizza sul terminale (o console ) una stringa di caratteri, detta prompt. 9 quindi il numero di comandi disponibili determina le dimensioni dell'interprete.

1 inteso come insieme 2 il sistema operativo

comandi esterni: i comandi sono realizzati da programmi di sistema, posti in directory predenite10 . La shell impiega il nome del comando per mandare in esecuzione il programma di sistema che lo realizza11 .  graphical user interface (GUI): interfaccia graca implementata da un window server e un widow manager, talvolta integrata nel sistema operativo. Essa intende rendere user-friendly l'interazione con l'utente, ricreando sullo schermo un desktop virtuale. Seppur altamente personalizzabile, nella GUI ben distinta la struttura portante del sistema.

esecuzione di un programma operazioni di I/O gestione del file system comunicazioni rilevamento d'errori assegnazione delle risorse contabilizzazione dell'uso delle risorse protezione e sicurezza

Modelli di struttura di un sistema operativo



modello semplice

: :

modello stratificato microkernel

: :

modello modulare

Chiamate di sistema Le chiamate di sistema sono la principale interfaccia tra i processi e il kernel del sistema operativo, costituendone dunque degli entry points per accedere ai servizi e settare i privilegi dei processi12 . Generalmente consistono in routine C/C++, ma per la gestione diretta dell'hardware si fa ricorso al linguaggio assembly. Ogni chiamata di sistema codicata da un numero: il compilatore mantiene una tabella indicizzata dai numeri di chiamata di sistema.
10 la variabile d'ambiente PATH memorizza una lista di directory in cui la shell cerca il comando esterno. 11 quindi il numero di comandi disponibili e loro eventuale modica non ha alcuna inuenza sulla shell. 12 nei sistemi operativi con meccanismi di protezione esistono infatti due modalit di esecuzione dei processi: kernel mode e user mode.

Categorie di chiamate di sistema Le chiamate di sistema sono approssimativamente classicabili in cinque macrocategorie:

controllo dei processi gestione dei file gestione dei dispositivi gestione delle informazioni comunicazioni protezione

Interfacce alle chiamate di sistema: API e librerie Il programmatore di applicazioni pu interfacciarsi alle chiamate di sistema tramite:

: sono un'interfaccia per la programmazione delle applicazioni che specica un insieme di funzioni in grado di invocare opportunamente le chiamate di sistema per conto del programmatore. La maggior parte dei programmatori non dovr dunque preoccuparsi dei dettagli del ciclo esecutivo delle chiamate di sistema. Le API pi diuse sono: API Win32, API POSIX e API Java. Il caller non ha alcuna necessit di conoscere l'implementazione della chiamata di sistema o i dettagli del suoi ciclo esecutivo: gli suciente riconoscere le API e il risultato dell'esecuzione delle chiamate di sistema.
application programming interface (API)

: un insieme di funzioni speciche di un linguaggio di programmazione strutturate in librerie13 incluse nel compilatore.
Run-Time Support System

Programmi di sistema I programmi di sistema14 sono programmi che orono un ambiente conveniente per lo sviluppo e l'esecuzione dei programmi applicativi, o semplici interfacce alle chiamate di sistema. Sono classicabili nelle seguenti categorie:

gestione dei file informazioni di stato modifica dei file ambienti d'ausilio alla programmazione

13 una

libreria un insieme di procedure, e pu essere:  libreria statica: il codice viene copiato nel le eseguibile in fase di linking.  libreria dinamica: il codice viene caricato nella memoria del processo in fase di esecuzione.
detti utilit di sistema.

14 anche

caricamente ed esecuzione dei programmi comunicazioni

Debugging dei sistemi operativi Il debugging l'attivit di individuazione, diagnosi e risoluzione dei bugs15 , e comprende anche la performance 16 tuning , ovvero la regolazione delle prestazioni. Il debugger lo strumento che realizza il debugging tramite l'esaminazione di codice, log le 17 e core dump18 . Il debugging del sistema operativo impiega strumenti e tecniche dierenti dal debugging dei processi. In caso di crash19 infatti, il kernel genera un log le e un crash dump, i quali vengono salvati in un'area di memoria esclusivamente adibita, ed analizzati da un processo specico, solo dopo aver riavviato il sistema. Generazione e avvio di sistemi operativi Un sistema operativo progettato per essere eseguito su macchine di una stessa classe, ma con speciche eventualmente dierenti: il sysgen il processo che si occupa di congurare il sistema operativo in modo da renderlo conforme alle speciche del calcolatore. Il booting del sistema avviene tramite il bootstrap loader, contenuto in una locazione specica puntata dal PC in una ROM 20 o EPROM 21 ; esso individua sul disco il bootstrap program, il quale pu inne addentrarsi nel le system per individuare, caricare ed eseguire il kernel a partire dal boot
block.

prestazioni. 17 un log le un le scritto dal sistema operativo contenente informazioni relative all'errore avvenuto in caso di fallimento di un processo. 18 un core dump l'immagine dello spazio privato del processo, acquisita dal sistema operativo in caso di fallimento del processo. 19 un crash un guasto nel kernel. 20 ovvero Read-Only Memory (ROM). 21 ovvero Erasable and Programmable Read-Only Memory (EPROM).

15 un bug 16 i colli

un errore del sistema, sia a livello hardware che software di bottiglia (bottle-neck ) sono considerati bugs, in quanto causano un calo delle