Related


Cos’è?

Il sistema operativo è un software fondamentale che:

  • Gestisce le risorse hardware di un computer, e premette l’interazione con l’utente.
  • Gestione dei programmi applicativi, gli prepara l’ambiente, li manda in esecuzione, risponde a loro eventuali richieste, gestisce la loro terminazione
  • Interfaccia tra le applicazioni e l’hardware

Obiettivi di un sistema operativo

  • Convenienza
  • Efficienza
  • Capacità di evolvere

Servizi di un sistema operativo

Le funzionalità di base per l’utente offerte dai sistemi operativi moderni sono:

Esecuzioni di programmi

  • app (ovvero software avviato dall’utente)
  • sevizi (ovvero software avviato all’avvio del sistema)
  • la possibilità di eseguire più servizi e applicazioni contemporaneamente

Accesso a dispositivi di input/output

  • principalmente interfaccia con le memorie grazie al FileSystem

Accesso al OS

  • Attraverso shell

Sviluppo di programmi

  • compilatore, editor e dubuger
  • system calls
  • visione semplificata della RAM

Gestione di errori

  • Rilevamento di errori e gestione delle conseguenze.
  • tippi:
    • errori hardware interno o esterno
    • errori software
    • richieste di un dispositivo non soddisfacibili

Accounting

  • collezione di statistiche dell’uso del sistema
  • monitoraggio delle performance
  • usato per capire cosa occorre migliorare
  • usato per far pagare in base all’uso del sistema

Kernel

Il kernel è il livello più basso del sistema operativo e si trova tra l’hardware e gli altri componenti del sistema operativo.

È responsabile di fornire un’interfaccia standard per l’accesso alle risorse hardware, in modo che gli altri componenti del sistema operativo possano utilizzarle in modo trasparente.

Nota

  • È sempre presente nella memoria principale (RAM)
  • La traduzione letterale è nucleo

Programmazione Singola e Multi Programmazione

Programmazione Singola

La programmazione singola è un approccio in cui un solo processo o programma viene eseguito alla volta. Il sistema operativo esegue un processo fino al suo completamento prima di passare al successivo.

Svantaggio Principale: quando un processo è in attesa di un input il processore rimarrà inutilizzato.

Multiprogrammazione

La multi programmazione è una tecnica che si basa sul idea che un processore deve poter eseguire più programmi contemporaneamente, condividendo le risorse del sistema.

Esempio processo I/O bound


Batch e Time Sharing

I casi visti precedentemente (qui) sono basiti su sistemi Batch

Batch

Un Sistema Batch che eseguono programmi in modo sequenziale, senza intervento umano diretto. I sistemi Batch sono considerati statici ovvero, le istruzioni da eseguire sono definite in anticipo e non cambiano durante l’esecuzione.

Svantaggi: Non adatti a sistemi con iterazione utente, e multi user.

Time Sharing

Un sistema Time Sharing è sistema operativo che consente a più utenti di accedere e utilizzare le risorse di un computer contemporaneamente, permettendo

  • L’esecuzione processi in “parallelo”.
  • L’esecuzione di processi interattivi.
  • La condivisione delle risorse hardware.

Questo è permesso grazie allo Scheduling, ovvero un algoritmo che decide quale utente e processo deve essere eseguito in ogni time slice.

I Time Slice: il sistema divide il tempo di esecuzione della CPU in piccoli intervalli di tempo, chiamati “time slice” o “quantum”. Ogni utente e processo ha a disposizione un certo numero di time slice per eseguire le proprie istruzioni.

Multi Programmazione

Il time sharing permette la multi programmazione, infatti appena un processo deve eseguire un’operazione di I/O (Input/Output), come ad esempio leggere da un file o stampare su una stampante, il sistema operativo può sospendere il processo e assegnare la CPU ad un altro processo che è pronto per essere eseguito.

BatchTime Sharing
Scopo principale:Massimizzare l’uso del processore.Minimizzare il tempo di risposta.
Provenienza Direttive per l’OS:Comandi del job control language, sottomessi con il job stesso.Comandi dati da terminale