Materia:Sistemi operativi

Da Wikiversità, l'università aperta.


Materia: Sistemi operativi

Facoltà di Ingegneria
Facoltà di Scienze matematiche, fisiche e naturali


Indice

[modifica] Cos'è, come funziona e a cosa serve un sistema operativo

Secondo quanto descritto dalla tabella dei Livelli architetturali di un computer, il livello del Sistema Operativo é il terzo. Subito sopra questo livello troviamo l'ASSEMBLY ed il livello dei Liguaggi orientati alla risoluzione di problemi (la comune programmazione); subito sotto il Livello ISA della macchina (vedi Corso di Architetture).


Un sistema operativo è un insieme di programmi ed istruzioni che controllano le funzionalità della macchina fisica in modo tale da offrire una base ai programmi applicativi. Senza di esso i programmi applicativi non potrebbero trovare il modo di comunicare con l'hardware del pc, perché normalmente vengono scritti ad alto livello. I programmi applicativi accedono quindi alle risorse hardware mediante opportuni componenti del sistema operativo. Alcuni sistemi operativi offrono un'interfaccia visuale all'utente, in modo da facilitare l'uso del pc anche ai più distaccati da questo mondo. La gestione dell'hardware viene diviso in genere in 5 parti:

Un altro aspetto importante è quello della comunicazione. Il sistema operativo si occupa di codificare tutti i messaggi dei programmi applicativi e prepara le periferiche per l'invio dei dati. Allo stesso modo quando riceve dati deve decodificarli ed eventualmente inviarli ai programmi applicativi che ne faranno uso. Questa funzionalità è importantissima quando si ha un sistema multi-tasking perché se ogni programma applicativo dovesse gestire il suo traffico si verrebbero a formare moltissime richieste diminuendo notevolmente la velocità di elaborazione e trasmissione.

[modifica] La supervisione

I sistemi operativi si distinguono anche dal tipo di supervisione adottata. La supervisione è la parte del sistema operativo che consente o nega un'azione (normalmente sulle periferiche) allo stato utente.

[modifica] Livello servizi (Monolitica)

Lo stato utente permette di accedere senza autorizzazione a poche risorse e nega l'accesso diretto alla memoria principale. La richiesta per accedere (ad esempio al gestore del processore) viene inviata al supervisore (anche chimato kernel) attraverso una chiamata di sistema (system call). Il kernel decide se e quando mandare in esecuzione il processo (chiamato servizio) e in caso di risposta affermativa il kernel invia il segnale al processo utente che l'azione è stata eseguuita correttamente, quindi può continuare la sua esecuzione.

[modifica] Livello macchina (Server)

Il sistema operativo avvia i processi necessari in modo totalmente autonomo. Il processo utente per effettuare un azione invia la richiesta allo specifico server (esempio per stampare una pagina, invierà la richiesta al server stampa), attraverso una send. Il server ricevuto il messaggio chiede a tutti altri server se può eseguire l'azione richiesta e in caso affermativo esegue l'azione e invia al processo utente l'ok per continuare l'esecuzione.

[modifica] Quale la migliore?

  • Monolitica:
    • Integrato nella maggior parte dei SO (tra cui unix, linux e windows)
    • Molto veloce
    • Studiato molto
  • Server:
    • Poco diffuso
    • Lento
    • Sicurezza Elevata
    • Ideale per i sistemi operativi di rete

[modifica] Processi e Thread

Come già spiegato nella gestione della memoria, ogni processo è indipendente dall'altro, sia come istruzioni sia come memoria. Pensate se creando un programma avete la necessità di eseguire due azioni contemporaneamente, è impossibile per un processo, quindi dovreste creare due processi, ma avendo memoria separata, dovrete inviarvi dati, perdendo tempo passando dal kernel. Uno schema simile farebbe diminuire drasticamente le prestazioni della macchina e l'esecuzione in contemporanea diventerebbe impossibile. E' qui che vengono in aiuto i thread, dei sottoprocessi chiamati anche flussi di controllo. I thread hanno i vantaggi:

  • Poco costo (in termini di risorse) per l'attivazione
  • Condivisione della memoria in comune
  • Possibilità di utilizzare memoria separata
  • Controllo e chiusura di essi relativamente semplice

Ogni thread possiede inoltre un suo stato che può essere: pronto, in esecuzione, bloccato. Un processo che non utilizza thread, in realtà la funzione principale (in c main()) costituisce da se un thread. Un esempio molto comune di utilizzo dei thread è un server multi-client. Il server (ad esempio uno di chat) deve interagire con più client (ad esempio se il client 1 invia il testo "ciao" il server lo deve inviare a tutti gli altri client). Per fare questo ha bisogna di attivare un thread per ogni utente connesso che gestisce la comunicazione con quel client. Una volta che il client si disconnette il thread termina.

[modifica] Gestione del software

[modifica] I sistemi operativi più diffusi

I sistemi operativi principali e quelli più diffusi (anche in passato) sono (in ordine alfabtico):

  • BeOS
  • DOS
  • GNU/Linux
  • Mac OS
  • OS/2
  • UNIX
  • VMS
  • Windows
  • OS/390
  • QNX
  • OSE
  • AmigaOS
Strumenti personali