Sistema Operativo
prof.ssa Elisa Scarafile
1) Definizione di Sistema Operativo .................................................................................................... 1
2) Organizzazione a strati di un Sistema Operativo ............................................................................. 3
Kernel (Nucleo o gestore di processi) .............................................................................................. 4
Tecnica del time sharing ............................................................................................................. 4
Stati di un processo ...................................................................................................................... 4
Gestore della Memoria .................................................................................................................... 6
Gestore delle periferiche .................................................................................................................. 8
File System ....................................................................................................................................... 8
Interprete comandi ......................................................................................................................... 11
1) Definizione di Sistema Operativo
In informatica, un sistema operativo (abbreviato in SO, o all'inglese OS, operating
system) è il programma responsabile del diretto controllo e gestione dell'hardware che
costituisce un computer e delle operazioni di base. Compito del sistema operativo è
quello di fare da interfaccia tra le risorse hardware e i programmi applicativi.
Principali S.O. sviluppati dalla Microsoft:

MS-DOS (sviluppato con IBM, versioni dalla 1.0 alla 8.0)

Windows 3.0

Windows 3.1 prima versione con un volume di vendite elevato

Windows 95 (versione 4.0)

Windows 98 (versione 4.1)



Windows Me (versione 4.9)
OS/2 (sviluppato dalla IBM poi congiuntamente con Microsoft, poi solo da IBM)
Windows NT versioni multiple per ogni rilascio

Windows NT 3.1

Windows NT 3.5
Ultima revisione:20/04/2013
1/11
Sistema Operativo
prof.ssa Elisa Scarafile

Windows NT 3.51

Windows NT 4.0

Windows 2000 (versione 5.0)

Windows XP (versione 5.1)

Windows Server 2003 e Windows XP Professional x64 Edition (versione 5.2)

Windows Vista e Windows Server 2008 (versione 6.0)

Windows 7 Successore di Vista. (versione 6.1)

Windows Server 2008 R2 Successore di Server 2008.

Windows Azure Sistema operativo Microsoft per il cloud computing basato su Windows Server.

Windows 8 (autunno 2012). (versione 6.2)
Principali S.O. Open source Unix-like
 GNU/Linux
 Arch Linux
 CentOS
 Chrome OS
 Debian GNU/Linux
 Edubuntu
 Fedora Core
 Gentoo Linux
 Knoppix
 Kubuntu
 Mandriva Linux, fino al 2004 nota con il nome "Mandrake Linux"
 Mepis
 Slackware
 SUSE Linux
 Ubuntu Linux
 Xubuntu
 OpenSolaris
 Solaris Express
 BeleniX
 marTux
 NexentaOS
 Schillix
 GNU Hurd
 SSS-PC sviluppato dall'Università di Tokyo
Ultima revisione:20/04/2013
2/11
Sistema Operativo
prof.ssa Elisa Scarafile
2) Organizzazione a strati di un Sistema Operativo
Il Sistema operativo è un insieme di programmi che regola il funzionamento delle
apparecchiature che
costituiscono
il
sistema
di
elaborazione.
Le richieste dell'utente vengono acquisite e gestite dal sistema operativo in modo
coordinato, rispettando le politiche di gestione, ovvero le regole scelte per realizzare i
meccanismi desiderati, stabilendo gerarchie e priorità.
Il modello "onion skin" (buccia di cipolla) rappresenta il sistema come una
successione di strati costruiti sopra la macchina hardware, ciascuno dei quali
rappresenta un livello di macchina virtuale. Ogni livello all'interno del modello, viene
visto come un oggetto unico, che non corrisponde alla macchina fisica ma che è in
grado di svolgere le funzioni richieste indipendentemente dagli altri livelli; come
notiamo dall'immagine, i livelli più bassi sono vicini all'hardware al contrario quelli
più
esterni
che
sono
vicini
all'utente.
Ciascuno strato costituisce un modulo, ovvero una collezione di routine che attiva i
meccanismi fisici necessari per risolvere problemi logici di uno stesso tipo.
Se un sistema operativo è costruito con criteri di modularità, può essere usato su
macchine diverse; l'attitudine di un sistema operativo a essere eseguito su macchine
diverse definisce il grado di portabilità.
Ultima revisione:20/04/2013
3/11
Sistema Operativo
prof.ssa Elisa Scarafile
Kernel (Nucleo o gestore di processi)
Il kernel è il cuore di un sistema operativo. Si tratta di un software che ha il compito
di fornire ai moduli che compongono il sistema operativo e ai programmi in
esecuzione sul computer le funzioni fondamentali ed un accesso controllato
all'hardware, sollevandoli dai dettagli della sua gestione. Si occupa dell’esecuzione
dei programmi e della risposta agli eventi esterni generati dalle periferiche. Scopo
principale è quello di gestire i processi corrispondenti ai programmi che sono
contemporaneamente attivi, attuando una politica di alternanza (scheduling)
nell’accesso alla CPU da parte dei processi in esecuzione.
Fra quest'ultime la più semplice viene chiamata round robin, la quale prevede una
coda di processi pronti e una serie di processi in attesa.
Tecnica del time sharing
Permette la condivisione della CPU tra più processi, assegnando ad ogni
processo un “quanto” di tempo di utilizzo della CPU, al termine del quale viene
sospeso per lasciare il posto ad un altro processo in attesa di esecuzione.
Stati di un processo
Pronto->Esecuzione
Dalla coda (struttura di tipo FIFO (First In First Out)) dei processi pronti, il
kernel, prende il processo e lo manda in esecuzione
Esecuzione->Attesa
Ultima revisione:20/04/2013
4/11
Sistema Operativo
prof.ssa Elisa Scarafile
Il processo in esecuzione chiede delle risorse di Input /Output, e quindi passa
nella coda dei processi in attesa.
Attesa -> Pronto
Quando l’operazione di Input/Output è terminata, il Kernel sposta il processo
nella coda dei processi pronti.
Esecuzione -> Pronto
Quando termina il “quanto” di tempo, il processo viene spostato nella coda dei
processi pronti, e contemporaneamente un altro processo passa da pronto a
esecuzione.
Quindi riassumendo:
Il processo viene creato e viene posto nella coda dei processi pronti;
2. il primo processo tra i processi pronti viene posto in esecuzione;
3. il processo in esecuzione dispone delle risorse del sistema fino a:
a. il termine del quanto di tempo
• il nucleo interrompe il processo e lo mette in coda ai processi
pronti;
• quando arriva in cima alla coda dei processi pronti, il processo
torna in stato in esecuzione, proseguendo con l’elaborazione
dell’istruzione successiva a quella su cui era stato interrotto;
b. la richiesta di un’operazione di ingresso/ uscita il nucleo sposta il
processo attivo nello stato di attesa;
• quando l’operazione di ingresso/ uscita si completa il processo
può proseguire l’elaborazione e viene messo in fondo alla coda dei
processi in pronti e prosegue come nel punto precedente;
c. il termine delle propria esecuzione (istruzione finale)
• il processo viene eliminato e rimosso dall’elenco dei processi
esistenti;
In ogni caso il nucleo provvede a sostituirlo con il primo dei processi pronti.
Si può raffinare questa politica organizzando i processi pronti su diverse code,
corrispondenti alle diverse priorità. I processi in attesa vengono posti su code
corrispondenti alle diverse priorità assegnate a ciascuno: al momento di scegliere il
processo da mandare in esecuzione vengono favoriti quelli a priorità più elevata.
Il gestore dei processi (scheduler), che è anch'esso un processo, ha la priorità
massima, così come il processo che si occupa della gestione delle interruzioni
( interrupt handler) deve avere la priorità maggiore rispetto a qualunque altro
processo.
Ultima revisione:20/04/2013
5/11
Sistema Operativo
prof.ssa Elisa Scarafile
Gestore della Memoria
Un programma per essere eseguito, deve risiedere in memoria centrale. Il gestore
della memoria è l’insieme dei programmi che gestiscono l’allocazione in memoria
centrale del programma da eseguire, al fine di risolvere le relative esigenze dei vari
processi, in modo trasparente ed efficiente.
Consente ai programmi di lavorare in un proprio spazio di indirizzamento virtuale e
di ignorare quindi le effettive zone di memoria fisica occupata.
Il gestore della memoria deve allocare la memoria e partizionarla tra i processi che la
richiedono.
Ci sono varie tecniche di gestione della memoria:
-
Metodo a partizioni fisse
Metodo a partizioni variabili
la paginazione
la segmentazione
Metodo a partizioni fisse:
il metodo a partizioni fisse è il più semplice da realizzare in quanto suddivide la
memoria centrale in parti di uguali dimensioni. I programmi che risiedono in
memoria devono corrispondere al numero di partizioni fisse.
Svantaggi:
· Il numero massimo di processi che possono essere allocati in memoria è prefissato
· Si ha uno spreco di memoria perché un programma di solito ha dimensioni minori di
quelle della partizione e lo spazio avanzato non può però essere utilizzata da un altro
programma
· Il programma può essere di dimensioni maggiori della partizione
Vantaggi:
· Il carico di lavoro svolto dal sistema operativo è minore.
Metodo a partizioni variabili:
Con il metodo a partizioni variabili mentre un programma viene eseguito vengono
create le partizioni.
Se si libera una partizione di dimensione inferiore rispetto al programma che deve
essere caricato tale programma deve aspettare lo spazio. Se si liberano due partizioni
vicine possono essere occupate entrambe dallo stesso programma anche se non viene
occupato tutto lo spazio.
Ultima revisione:20/04/2013
6/11
Sistema Operativo
prof.ssa Elisa Scarafile
Man mano che si inseriscono i programmi si crea una deframmentazione cioè
periodicamente i programmi presenti in memoria centrale devono essere portati verso
l’alto per non avere troppi spazi liberi.
Svantaggi:
· Il carico di lavoro svolto dal sistema operativo è maggiore
Vantaggi:
· Non c’è un numero fisso di partizioni
· Ogni partizione ha dimensioni uguali al programma. Dunque non c’è uno spreco di
memoria.
Nel caso di programmi di dimensioni paragonabili con quelle della memoria centrale
la loro allocazione sarebbe problematica e in caso di programmi di dimensioni
superiori non sarebbe possibile. Per questo motivo si possono utilizzare due diverse
tecniche di suddivisione dei programmi in blocchi:
·
la paginazione
·
la segmentazione.
La paginazione suddivide la memoria centrale e i programmi in pagine (o segmenti).
In tal modo è possibile eseguire un programma di dimensioni maggiori della memoria
centrale, partizionando il programma e caricandone in memoria centrale una parte
alla volta (quella correntemente in esecuzione). Eseguendo contemporaneamente più
programmi, se la somma delle dimensioni supera la dimensione della memoria
centrale si utilizza la tecnica della memoria virtuale. Quest’ultima trova lo spazio
necessario, utilizzando una memoria che ha più spazio ma che risulta più lenta, e
cioè l’hard disk.
La Segmentazione: questa tecnica di gestione suddivide la memoria disponibile in
blocchi di lunghezza fissa o variabile detti segmenti. Un programma può essere
diviso in 2 segmenti principali uno che contiene i dati e uno che contiene il codice da
eseguire. La segmentazione aumenta l’efficienza e il risparmio della memoria e un
risparmio del tempo di gestione della memoria ma comporta anche due conseguenze
negative cioè la frammentazione della memoria e la diminuzione della semplicità del
sistema operativo.
Ultima revisione:20/04/2013
7/11
Sistema Operativo
prof.ssa Elisa Scarafile
Gestore delle periferiche
Il gestore delle periferiche maschera le caratteristiche fisiche delle periferiche e le
specifiche operazioni di ingresso/uscita, permettendo una più semplice
comunicazione tra l’ambiente CPU/RAM e i dispositivi esterni.
I SO comprendono i driver per la gestione delle periferiche più comuni. Ogni
aggiunta o modifica alla configurazione standard comporta l’installazione di software
addizionali (driver aggiuntivi).
I SO più recenti sono dotati di funzioni Plug&Play (PnP) che permettono di
aggiungere (plug) nuove periferiche al sistema che quindi, possono essere utilizzate
(play) senza l’intervento dell’utente per la selezione e l’installazione del driver.
File System (Gestore dei file)
Il file system è il modo in cui i file sono immagazzinati e organizzati su un
dispositivo di archiviazione (memorie di massa), come un hard disk o un CD-ROM.
Esistono molti tipi di file system, creati per diversi sistemi operativi, per diverse unità
di memorizzazione e per diversi usi. Si possono identificare due grandi classi di file
system: quelli per unità locali, destinate ad organizzare fisicamente i dati su un disco
(FAT32 [file allocation table], NTFS [NT File System]) , e i file system distribuiti
(NFS [Network File System, SAMBA]), nati per condividere i dati fra più computer
collegati attraverso una rete, superando le differenze fra sistemi operativi e file
system locali delle varie macchine.
I suoi compiti sono:
- Gestire i dati in memoria di massa.
- Strutturare i dati in modo gerarchico utilizzando file e directory.
- Fornire operazioni di alto livello per la gestione di file, ad esempio creare
un nuovo documento, directory ecc.
- Proteggere i dati da accessi esterni.
- Garantire la condivisione sicura dei dati.
Il file system, per gestire le informazioni, mette a disposizione dell’utente il file come
strumento di base, che rappresenta dunque l’unità minima archiviabile .
Il file è un contenitore con le seguenti caratteristiche:
•
•
•
Nome (filename)
Contenuto (informazione che voglio memorizzare)
Attributi (dimensioni,data creazione,diritti d’accesso)
Ultima revisione:20/04/2013
8/11
Sistema Operativo
prof.ssa Elisa Scarafile
In particolare il nome di un file è costituito generalmente da due componenti separate
da un punto:
nome.suffisso
•
•
Nome: è scelto dall’utente, solitamente in modo da evocare il contenuto
Suffisso o Estensione: è automaticamente aggiunto dall’applicazione con cui
si sta usando o generando il file e ne indica il tipo di contenuto; per es .DOC,
.XLS, .TXT, .CPP
Una directory è un contenitore logico che può contenere file ma anche altre
cartelle.
Con i pathname, ovvero il nome del file espresso attraverso un percorso, è
possibile individuare ogni entità del file system.
Si definisce pathname ASSOLUTO, quando il nome del file viene descritto
elencando tutti i nodi che occorre attraversare a partire dalla root(dicesi radice, la
directory di livello maggiore) fino ad arrivare al file.
Bensì si parla di pathname RELATIVO, quando l’accesso inizia dalla directory
corrente.
Struttura ad albero nella gestione dei file, da parte del File System
Ultima revisione:20/04/2013
9/11
Sistema Operativo
prof.ssa Elisa Scarafile
Un ulteriore servizio è quello di collegamento o link o shortcut. Il collegamento è un
riferimento ad un altro oggetto presente nel file system (sia esso file o directory). Ciò
consente di avere lo stesso file presente in più directory, ma di risparmiare in termini
di occupazione del file, in quanto non è necessario effettuare il duplicato del file .
Root
Ultima revisione:20/04/2013
10/11
Sistema Operativo
prof.ssa Elisa Scarafile
Interprete comandi
E’ il modulo del SO direttamente accessibile dall’utente.
Consente all’utente di attivare i programmi tramite un click (interfaccia grafica)
oppure da tastiera.
Le operazioni che svolge sono:
- cercare in memoria di massa il programma da eseguire.
- allocare la memoria centrale richiesta dal programma.
- caricare nello spazio allocato in memoria centrale, il programma e i relativi
dati.
- creazione e attivazione del processo corrispondente.
Ultima revisione:20/04/2013
11/11