Il
Sistema Operativo
Una definizione esemplificativa del sistema operativo può essere la seguente:
“il sistema operativo è una sorta di strato che si pone sopra la macchina fisica e permette di fare richieste ad una macchina virtuale ma che l’utente crede vera, inoltre il compito del sistema operativo, oltre a quello di controllare l’esecuzione degli altri programmi, consiste nell’impedire alle applicazioni di eseguire dei comandi che potrebbero rivelarsi dannosi”
Senza Sistema Operativo (SO) un computer è solo un “macchinario inutile”. Il SO rende possibile la gestione, l'elaborazione e l'immagazinamento dell'INFORMAZIONE.
•
L’hw fornisce potenza di calcolo, il SO la rende disponibile agli utenti,
gestendo l’hw in modo efficiente.
•
Il SO controlla l’esecuzione di tutti gli altri programmi.
•
Il SO è l’intermediario tra l’utente/i e la macchina.
Il SO è il software che gestisce le risorse (hardware e software) della macchina.
Il
SO permette alle applicazioni di astrarre dal dettaglio hardware e di operare in
termini di richieste di servizi al SO stesso.

La
descrizione precisa di cosa faccia parte o meno del SO non è universalmente
definita (vedi caso IE)
•
Gestione dei Processi (multitasking)
•
Gestione della memoria (scheduler)
•
Gestione dei files (file system)
•
Gestione degli utenti (multiutenza)
•
Gestione dell’ I/O (stampanti, video, tastiera, ...)
•
Gestione servizi di Rete
•
Protezione del sistema
•
Interprete di comandi
•
...
• Singolo utente / Multi utente
• Real time
• Sistemi distribuiti
• Embedded
• ...
Processo:
è un programma in esecuzione.
programma
=>
statico dinamico <= processo
Un
processo incorpora le istruzioni, i dati da elaborare, lo stato
dell’elaborazione (context)
Abbiamo
due
famiglie di sistemi:
- MULTITASKING: processo tramite il quale il sistema operativo può realizzare più operazioni che sembrano contemporanee ma che in realtà avvengono in tempi diversi. Questo lasso di tempo, grazie alla velocità del processore è minimo, per tanto si ha la sensazione che le operazioni si effettuino nello stesso istante.
-
SCHEDULER: dispositivo che si prefigge di sostituire un processo,
finito o meno, sostituendolo con un altro poiché il sistema operativo
permette di lavorare con un solo processo alla volta.
-
INTERRUPTS: è un segnale di avvertimento che viene mandato al
processore per indicare che qualcosa è avvenuto
Lo scopo delle modalità operative è quello di proteggere l’hardware dal malfunzionamento di applicazioni software (crash). Per evitare questo possibile inconveniente esistono dei modi operativi distinti dalla CPU.
Soluzione:
modi operativi distinti della CPU
-USER
MODE (esecuzione di operazioni per un utente. Es. applicativi).
La user mode gestisce i vari processi attribuendo ad ognuno di essi un determinato periodo di tempo oltre il quale non possono operare.
-KERNEL
MODE (esecuzione di operazioni per il sistema operativo). E’
una modalità protetta nella quale il processore non interrompe e non esclude il
processo che sta operando.
ESEMPIO
DI FUNZIONAMENTO DELLE MODALITA’ OPERATIVE
| CPU | Kernel Mode | Kernel Mode | User Mode | Kernel Mode | User Mode |
| Processo 1 | Waiting | Ready | Ready | Waiting | Ready |
| Processo 2 | Waiting | Waiting | Waiting | Waiting | Waiting |
| Sistema Operativo | Ready | Ready | - | Ready | - |
•
1 cpu <–> molti processi
–
Come è possibile?
• Il controllo della CPU viene passato, a turno, da un processo ad un altro: poiché questo avviene in modo molto rapido, gli utenti hanno una “illusione” di concorrenza.

• Il turno dipende
anche dalla priorità assegnata al processo.

–
Le transizioni tra lo stato “running” e gli altri stati comportano un “context
switch” della CPU.
•
Un file
è una collezione di dati con un nome.
•
Un file
è una sequenza di byte terminata da un carattere di EOF
(End Of File)
•
Il file
system è l’insieme dei files, della loro
organizzazione in directory e dei metodi di gestione
e di accesso.
•
I files
risiedono
nella memoria secondaria (dischi)
•
Esistono comandi per creare, distruggere, aprire, chiudere, leggere, scrivere
files
•
In un sistema multiutente è necessario proteggere i files ci possono essere più
livelli di protezione per diverse tipologie di utenti
•
Linguaggio di programmazione: una serie di termini e regole
per comporre istruzioni che descrivono un problema o la soluzione di un problema
al calcolatore
Es:
JavaScript,Visual Basic, Assembler, C, Pascal, C++, Java, SQL, COBOL, Fortran,
…
•
Si differenziano per:
–
potenza espressiva (livello di astrazione)
–
tipo di approccio (dichiarativo, imperativo, ...)
–
paradigma di programmazione (oggetti, ...)
– piattaforme di
utilizzo
•
Per essere eseguito dal processore, un programma deve essere tradotto in una
serie di istruzioni eseguibili (linguaggio macchina)
•
Compilazione: la traduzione da linguaggio ad alto livello a linguaggio
macchina viene effettuata da un apposito programma preesistente (il compilatore)
• Interpretazione: il programma nel linguaggio ad alto livello viene letto una (o poche) istruzione alla volta e vengono eseguiti le corrispondenti istruzioni in linguaggio macchina. Questa operazione viene effettuata da un programma chiamato interprete

