Il sistema operativo e' l'insieme dei programmi che gestiscono la macchina.
La parte principale si chiama kernel, ci sono poi i daemon, programmi che non fanno realmente parte del kernel, ma che offrono servizi per il funzionamento della macchina, come servizi di rete, riconoscimento degli utenti, gestione messaggi etc. I driver sono quelle parti del sistema operativo che pilotano le periferiche; come la scheda video, la scheda audio, la scheda di rete o la stampante. In genere fanno parte del kernel, ma possono anche essere programmi esterni o moduli, cioe' componenti del kernel, compilate e tenuti a parte, i moduli sono inseriti nel kernel quando servono, in modo automatico, senza dover riavviare la macchina.
Si parla di kernel monolitici, per indicare quei kernel che sono fatti da un grande unico programma, e di microkernel, per indicare kernel piccoli e maneggevoli, che fanno poche cose e sono affiancati da programmi separati che fanno il resto.
Con alcune centinaia di milioni di computer in giro diventa difficile capire quali sono i sistemi operativi piu' usati, vengono fatte stime in base alle vendite di hardware, o ci sono sistemi automatici che cercano di contare i server in rete ( vedi ad es.: news.netcraft.com oppure: www.leb.net/hzo/ioscount/ od: www.isc.org ).
Ad ogni modo i sistemi operativi piu' in uso sono:
Le principali funzioni svolte dal sistema operativo sono:
Ogni periferica ha un suo numero di interrupt, che una volta corrispondeva ad una "linea elettrica" del bus, e si predisponeva via hardware, sistemando appositi contatti sulle schede, stando ben attenti a non dare lo stesso numero a piu' periferiche. Oggi la gestione degli interrupt e' automatizzata e conflitti fra le periferiche sono relativamente rari.
In ogni modo la CPU e' interrotta periodicamente, in modo che il sistema operativo possa controllare le code dei processi, questo avviene fra 10 e 100 volte al secondo.Il sistema operativo viene caricato in memoria all'accensione della macchina, in genere occupa una zona fissa della memoria e lavora con gli indirizzi di memoria reale e non virtuale.
Alla partenza della macchina il BIOS, un piccolo programma residente in una memoria flash della scheda madre, effettua una serie di test per controllare RAM, video, tastiera, (POST: power on system test)e quindi cerca un programma da caricare in memoria e far partire che, a seconda delle opzioni impostate, puo' essere all'inizio dell'hard-disk, su un floppy, un CD, una memoria usb rimovibile.
Questo programma si chiama boot loader ed ha la funzione di caricare il sistema operativo vero e proprio. Questo programma puo' anche permettere la scelta del kernel o del sistema operativo da caricare, se sul computer ce ne e' piu' di uno.
Il sistema operativo appena caricato inizializza le sue tabelle interne e quindi fa partire i processi che lo aiutano nella gestione del sistema e quindi eventuali servizi presenti sul computer.
Il sistema operativo continua poi a correre sulla macchina, gestendo i processi, gli interrupts etc etc.
Nel computer i dati ed i programmi risiedono sui dischi.
I dischi possono essere divisi in partizioni, che sono parti indipendenti, viste dal sistema operativo come dischi distinti.
In molti sistemi, fra cui MS-DOS, Windows e Linux, il primo blocco di 512 bytes in un disco contiene la "partition table", una tabella che specifica le partizioni del disco. Questo blocco si chiama "master boot record" (MBR), poiche' contiene anche un piccolo programma per il caricamento del sistema operativo.
Il primo blocco di ogni partizione si chiama "Master Block", ed anche qui puo' stare un programmino per il boot del sistema.
Si possono avere fino a 4 partizioni primarie, non c'e' spazio per le specifiche di piu' di
4 partizioni nel MBR.
Una partizione primaria puo' tuttavia contenere una partizione estesa, e questa puo'
contenere piu' partizioni logiche. Le informazioni sulle partizioni logiche non sono nell'MBR, ma
all'inizio delle stesse partizioni logiche.
Si possono quindi avere molte partizioni sul disco, ed esistono anche sistemi per vedere piu' dischi come fossero uno solo. I sistemi Raid, utilizzati nei server, permettono di utilizzare piu' dischi insieme, distribuendo i files fra i dischi in modo che in caso di rottura di un disco i dati non vengano persi.
I dati, nelle partizioni, sono organizzati secondo una struttura detta "file system", un insieme di dati identificato da un nome e' detto "file".
Tutto nel computer e' quindi organizzato in files; un file puo' contenere qualunque cosa, dati, programmi, immagini, musica, od essere un archivio compresso che contiene altri files, il files e' trattato dal sistema in modo indipendente dal suo contenuto.
Nei sistemi Unix anche i drivers delle periferiche, le pipe ed i socket (sistemi di comunicazione fra processi) sono visti come file del filesystem.
Ogni file system ha un suo modo di organizzare le informazioni, in genere lo spazio su
disco e' diviso in blocchi ( 512 bytes o piu') , un file occupa uno o piu' blocchi,
non necessariamente contigui, e sul disco c'a' un indice dei blocchi e dei files,
per sapere quali blocchi appartengono a ciascun file.
I file system moderni mostrano all'utente una struttura gerarchica, quello che in
Windows e' rappresentato come un insieme di cartelle e sottocartelle;
questo e' realizzato tramite le directory ( le cartelle in Windows), files speciali che
contengono nomi di files e puntatori alle posizioni relative nell'indice dei files.
Ci sono molti file system diversi, fra questi ricordiamo: