Sistemi Operativi (introduzione)

Cos’è un Sistema Operativo?

  • Un programma che agisce come tramite tra l’utente e gli elementi fisici del calcolatore.
  • E’ un insieme di programmi (software) che:

–   gestisce gli elementi fisici di un calcolatore (hardware),

–   fornisce una piattaforma ai programmi di applicazione

–   agisce da intermediario tra l’utente e la struttura fisica del calcolatore

Scopi di un sistema operativo:

–    Eseguire programmi utente e rendere più semplice la soluzione dei problemi dell’utente.

–    Rendere conveniente ed efficiente l’utilizzo del sistema di calcolo.

  • Un sistema operativo deve assicurare il corretto funzionamento di un calcolatore.
  • Funzioni del Sistema Operativo

–    Estendere e astrarre l’hardware (per semplificare la programmazione, per rendere i programmi portabili, etc..).

  • (ad es. un “file” è un astrazione)

–    Gestire le risorse

  • (ad es. suddividere stampanti, dischi, tempo di CPU fra più programmi)

Ruolo del Sistema Operativo

  • I sistemi operativi (S.O. abbreviato) esistono perché forniscono agli utenti uno strumento conveniente per l’uso di un sistema di calcolo
  • Convenienza: –    faciltà d’uso,  efficienza uso risorse.
  • Gran parte della teoria dei S.O. si è concentrata sull’efficienza.
  • Inoltre, hardware e S.O. si sono influenzati vicendevolmente.

Ruolo del Sistema Operativo: punto di vista dell’utente

PC:  Il sistema operativo è progettato principalmente per facilitare l’uso del computer.

Mainframe e Minicomputer: Occorre massimizzare l’uso delle risorse.

Workstation: Compromesso ottimale tra l’uso delle risorse individuali e risorse condivise.

Palmari e simili: Progettati per l’uso individuale prestando attenzione alle prestazioni della batteria

Sistemi Embedded: Concepiti per funzionare senza l’intervento dell’utente

Ruolo del Sistema Operativo: punto di vista del sistema

  • Il sistema operativo è il programma più strettamente connesso con l’hardware.
  • Quindi, è:

–    allocatore di risorse: di fronte a richieste conflittuali decide come assegnare equamente ed efficientemente le risorse ai programmi,

–    programma di controllo: garantisce l’esecuzione dei programmi senza errori e usi impropri del computer,

–    esecutore di funzioni comuni: esegue funzioni di utilità generale comuni ai diversi programmi (ad es. routine di I/O),

–    nucleo (Kernel): l’unico programma sempre in esecuzione (tutti gli altri sono “programmi applicativi”).

Servizi di un sistema operativo

  • Un S.O. offre un ambiente in cui eseguire i programmi e fornire servizi ai programmi e ai loro utenti.
  • Ecco una lista di alcune classi di servizi comuni offerti dal S.O.   per rendere più agevole la programmazione:

–    Interfaccia con l’utente:

  • interfaccia a riga di comando (CLI) - basata su stringhe che codificano i comandi, insieme ad un metodo per inserirli e modificarli,
  • interfaccia a lotti - comandi e relative direttive sono codificati nei file ed eseguiti successivamente a lotti,
  • interfaccia grafica con l’utente (GUI) - sistema grafico a finestre dotato di un dispositivo puntatore (ad es. il mouse).

–    Esecuzione di un programma – il sistema deve poter caricare un programma in memoria ed eseguirlo.

–    Operazioni di I/O - i programmi utenti non possono eseguire direttamente operazioni di I/O:

  • S.O. deve fornire strumenti per permettere l’esecuzione di operazioni di I/O.

–    Gestione del file system – esecuzione di operazioni di lettura, scrittura, creazione e cancellazione file.

–    Comunicazioni– scambi di informazioni tra processi in esecuzione sullo stesso calcolatore o collegati tra loro per mezzo di una rete.

  • Realizzate tramite memoria condivisa scambio di messaggi.

–    Rilevamento di errori – assicurare la correttezza della computazione rilevando eventuali errori di CPU, di memoria, di I/O o in programmi utenti.

Esiste un’altra serie di funzioni del S.O. che non riguarda direttamente l’utente ma assicura il funzionamento efficiente del sistema stesso:

–    Assegnazione delle risorse – allocare risorse a più utenti o processi che sono concorrentemente in esecuzione.

–    Contabilizzazione dell’uso delle risorse – registrare quali utenti usino il calcolatore, segnalando quali e quante risorse impieghino.

–    Protezione e sicurezza – assicurare il controllo dell’accesso a tutte le risorse condivise di sistema identificando l’utente ad ogni suo accesso.

Struttura del sistema operativo

Concetto chiave è quello della multiprogrammazione:

– necessaria per aumentare l’efficienza.

  • Un solo utente non può tenere CPU e dispositivi I/O occupati per tutto il tempo.
  • La multiprogrammazione consente di aumentare la percentuale di utilizzo della CPU organizzando i lavori in modo tale da mantenerla in continua attività.
  • Un sottoinsieme dei job si trova in memoria centrale (job pool).
  • Un job viene selezionato (job scheduling) ed eseguito.
  • Quando il job è in attesa (ad es. di un’ operazione di I/O), il S.O. esegue un altro job.
  • Altro concetto chiave: timesharing (multitasking):
    • –    estensione logica della multiprogrammazione,
    • –    la CPU commuta tra i job così frequentemente che gli utenti possono interagire con ciascun job mentre è in esecuzione, realizzando una computazione interattiva.
  • Tempo di Risposta < 1 secondo.
  • ciascun utente ha almeno un processo in esecuzione in memoria.
  • Se diversi processi sono pronti per essere eseguiti sarà necessaria la schedulazione della CPU.
  • Se lo spazio di memoria non è sufficiente per contenere tutti i processi,
    • – tramite lo swapping alcuni processi verranno spostati temporaneamente su memoria di massa e poi riportati in memoria centrale per essere eseguiti.

  • La memoria virtuale permette l’esecuzione di processi che non sono completamente in memoria e separa la memoria fisica da quella logica.

Attività del S.O.: gestione delle interruzioni

  • I sistemi operativi moderni sono caratterizzati dal fatto di essere guidati dalle interruzioni (interrupt driven).

–    se non ci sono processi da eseguire, dispositivi di I/O da servire o utenti con cui interagire, il S.O. resta inattivo nell’attesa che accada qualcosa.

  • In presenza di una interruzione:

–    il sistema operativo preserva lo stato della CPU salvando lo stato dei registri e del contatore di programma prima di servire l’interruzione.

–    Determina di che tipo sia l’interruzione.

–    Segmenti diversi di codice determinano quale azione debba essere presa per ciascun tipo di interrupt.

–    Dopo aver servito l’interruzione il S.O. ripristina lo stato della CPU (ad es. i registri) e del contatore di programma originali.

Duplice modo di funzionamento (dual mode)

  • La protezione deve essere garantita per qualsiasi risorsa condivisibile del sistema.
  • L’architettura del sistema deve supportare almeno due distinti modi di funzionamento:
  1. 1.   Modo d’utente (User mode) in cui avviene l’esecuzione dei programmi utente
  2. 2.   Modo di sistema (Monitor mode kernel mode system mode) in cui avviene l’esecuzione delle chiamate e dei programmi di sistema.
  • Un bit di modo (mode bit) di cui deve essere dotata l’architettura (hardware) della CPU indica il modo corrente: sistema (0),  utente (1).
  • In presenza di un’interruzione o eccezione l’hardware commuta il modo di sistema.

- Le istruzioni privilegiate possono essere date solo in modo di sistema

- L’utente, per richiedere un servizio al Sistema Operativo, utilizza una chiamata di funzione del sistema operativo, detta anche chiamata del sistema (system call), gestita dal sistema tramite interrupt.


Ultime modifiche: venerdì, 16 ottobre 2020, 15:21