Sistemi Operativi A Parte I - Introduzione Augusto Celentano Universit Ca Foscari Venezia Corso di Laurea in Informatica ' Augusto Celentano Sistemi Operativi A -2 La gestione di un calcolatore Un calcolatore L un sistema complesso (sistema di elaborazione) e la sua gestione non pu essere distribuita e replicata in tutti i programmi applicativi ! operazioni ripetitive complesse svolte da tutti i programmi ! relazioni e interferenze tra programmi diversi ! controllo del funzionamento del calcolatore come macchina Il software di un sistema di elaborazione si pu dividere in due classi: ! software applicativo, composto da programmi e servizi che risolvono problemi per gli utenti ! software di sistema, composto da programmi e servizi che gestiscono il funzionamento del calcolatore (del sistema di calcolo) ' Augusto Celentano Sistemi Operativi A -3 Classi e livelli di software (vista architetturale) Dispositivi fisici Microarchitettura Linguaggio macchina Sistema operativo Sistema bancario Prenotazioni aeree Browser Web Compilatore Editor Interprete comandi Software applicativo Software di sistema Hardware/Firmware (Tanenbaum, 2001) ' Augusto Celentano Sistemi Operativi A -4 Sistema operativo Il sistema operativo pu essere visto e studiato da diversi punti di vista: ! come interfaccia tra lutente e il sistema permette di utilizzare il calcolatore e le sue le risorse per risolvere problemi ! come macchina virtuale permette di programmare come se si avesse a disposizione una macchina funzionalmente estesa ! come gestore di risorse controlla e coordina il funzionamento contemporaneo dei componenti del sistema I diversi punti di vista non si escludono a vicenda ! in un sistema operativo coesistono servizi per lesecuzione dei programmi, funzionalit per la gestione interna e funzioni standard per la programmazione
21
Embed
Sistemi Operativi A Parte I - Introduzionesoa2001/docs/soa-introduzione.pdf · gestiscono le caratteristiche specifiche dei dispositivi ... ' Augusto Celentano Sistemi Operativi A
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Sistemi Operativi AParte I - Introduzione
Augusto CelentanoUniversità Ca� Foscari VeneziaCorso di Laurea in Informatica
� Un calcolatore è un sistema complesso (sistema di elaborazione) e la sua gestione non può essere distribuita e replicata in tutti i programmi applicativi! operazioni ripetitive complesse svolte da tutti i programmi! relazioni e interferenze tra programmi diversi! controllo del funzionamento del calcolatore come macchina
� Il software di un sistema di elaborazione si può dividere in due classi:! software applicativo, composto da programmi e servizi che
risolvono problemi per gli utenti! software di sistema, composto da programmi e servizi che
gestiscono il funzionamento del calcolatore (del sistema di calcolo)
� Il sistema operativo pone sopra lo hardware un insieme di funzionalità che ne gestiscono i componenti! fornisce agli utenti la visibilità di una macchina più completa e
più semplice da programmare
� Il sistema operativo racchiude funzioni che gestiscono in modo standard situazioni quali! operazioni di ingresso e uscita! presenza contemporanea di più programmi in memoria che si
alternano nell�esecuzione! risposta ad eventi esterni (tempo, segnalazioni dalla periferia,
malfunzionamenti)! adattamento alla varietà dei dispositivi di memoria e esterni
� In questo modo si consente la programmazione di applicazioni come se si disponesse di una macchina estesa! tanti programmi → tanti processori, tante memorie! tante periferiche → gestione unificata! strutture di archivio complesse → visione logica
� Il sistema operativo gestisce le risorse del sistema (componenti, sottosistemi, tempo di elaborazione, etc.) distribuendole alle attività in corso (processi)! utilizza l�unità centrale a turno per i diversi processi! conserva più programmi e dati in memoria evitando
interferenze! sincronizza le attività comuni e l�uso di informazioni condivise! stabilisce le priorità di intervento necessarie nei vari casi! protegge le informazioni private degli utenti da accessi non
autorizzati! simula per ogni utente un sistema di elaborazione dedicato e
� Controllo e esecuzione dei programmi, interpretazione delle richieste di servizi (processi, memoria, I/O)! esecuzione e terminazione dei programmi! ingresso e uscita dei dati! temporizzazione! gestione dei dispositivi hardware
� Organizzazione e strutturazione delle informazioni su memoria di massa (file system)! catalogazione di archivi (directory)! operazioni sui file! accesso alle singole informazioni
� Interpretazione e esecuzione di comandi dell�utente
� Il sistema operativo interviene su richiesta di un programma (processo) o in seguito ad un evento che modifica o richiede di modificare lo stato del sistema! la richiesta di intervento da parte di un processo avviene
attraverso una chiamata al supervisore (supervisor call, SVC)! la richiesta di intervento a seguito di un evento avviene
attraverso il meccanismo delle interruzioni
� In entrambi i casi vengono attivati gli stessi meccanismi di esecuzione! una interruzione software è una richiesta di intervento del
sistema operativo non causata da dispositivi esterni alla CPU
� Il meccanismo di interruzione (interrupt) è una combinazione di comportamenti hardware e software attivati da un segnale hardware (segnale di controllo sul bus) o software (istruzione) per cui! si interrompe l�esecuzione del programma in corso ! si trasferisce il controllo della unità centrale (e della
memoria) ad un programma di risposta all�interruzione la cui posizione in memoria è nota a priori
! si esegue il programma di risposta! al termine si riprende l�attività che era stata sospesa
� Al verificarsi di una interruzione l�unità centrale! termina l�esecuzione della istruzione in corso! copia il contenuto dei registri PC e PSW in locazioni apposite
in memoria centrale (salvataggio dei registri)! copia nei registri PC e PSW i valori contenuti in due celle di
memoria predefinite, dipendenti dall�interruzione ricevuta, corrispondenti al programma di risposta all�interruzione
! prosegue con la fase di fetch dell�istruzione successiva, che è la prima del programma di risposta all�interruzione
� Il programma di risposta: ! salva i registri generali che deve utilizzare! acquisisce le informazioni sull�interruzione segnalata! esegue le operazioni di gestione relative! ripristina i registri generali che ha utilizzato! esegue una istruzione di fine interruzione che ripristina i
registri PC e PSW! prosegue con la fase di fetch dell�istruzione successiva, che è
normalmente l�istruzione del programma interrotto successiva al punto di interruzione
� Il programma di risposta può modificare la prosecuzione dell�esecuzione
� Durante la gestione di una interruzione il meccanismo di interruzione può essere disabilitato per evitare interferenze! le interruzioni che si verificano durante questo tempo sono
poste in attesa, e segnalate quando il meccanismo di interruzione viene riabilitato
! l� esecuzione del programma di risposta deve essere veloce
� Se le interruzioni non sono disabilitate si adotta uno schema a priorità! le interruzioni più prioritarie possono interrompere le
� Le interruzioni possono verificarsi in seguito a! eventi causati da dispositivi periferici (esterne, asincrone) ! esecuzione di particolari istruzioni (interne, sincrone)
� Alcuni tipi di interruzione:! ingresso e uscita! clock! malfunzionamento hardware! errore software! chiamata al supervisore
� Errore software! alcune istruzioni possono dare luogo a situazioni di errore
che vengono segnalate per mezzo di una interruzione interna� divisione per zero� indirizzamento di memoria non esistente� esecuzione di istruzione non lecita (codice operativo non
significativo, o istruzione privilegiata)
� Chiamate al sistema operativo (supervisor call)! l�esecuzione di servizi del sistema operativo richiede una
gestione dello stato del sistema simile a quella necessaria nel caso di interruzione esterna.
� Trasferiscono dati da e verso la periferia attraverso circuiti di interfaccia che adattano i segnali e gestiscono le caratteristiche specifiche dei dispositivi
� La comunicazione si avvale di due registri:! registro dati: tramite per lo scambio di dati! registro di stato (o di controllo): contiene informazioni sullo
� I dispositivi di I/O richiedono una gestione del colloquio e del trasferimento dei dati più articolata di quella della memoria centrale:! il loro funzionamento è asincrono rispetto all'unità centrale! la loro velocità è molto inferiore a quelle dell'unità centrale e
della memoria
� Per tali motivi è necessario utilizzare dei meccanismi di sincronizzazione nelle operazioni di I/O che:! assicurino il corretto trasferimento dei dati, evitando
duplicazioni (stesso dato più volte) e perdite (salto di dati)! evitino un degrado generalizzato delle prestazioni dovute alla
� Si possono utilizzare tre tecniche di gestione:! software, a controllo di programma (polling)! hardware-software, a interruzione! hardware, DMA (Direct Memory Access)
� Il programma che deve effettuare le operazioni di ingresso e uscita controlla periodicamente lo stato del dispositivo (polling) per verificarne la disponibilità
� Ingresso:! legge lo stato del dispositivo! se è disponibile un dato, lo trasferisce! altrimenti non fa nulla fino alla prossima verifica
� Uscita:! legge lo stato del dispositivo! se il dispositivo è pronto, invia un dato! altrimenti non fa nulla fino alla prossima verifica
� Il trasferimento dei dati è gestito da una funzione dedicata.
� La scelta del tempo di campionamento dei controlli è critica, e condiziona le prestazioni generali: se troppo bassa, si possono perdere dati, se troppo alta la macchina è bloccata sulle operazioni di I/O
� La gestione a interruzione richiede un dispositivo hardware che possa segnalare all'unità centrale il verificarsi di un evento sull'interfaccia di I/O! presenza di un dato, o disponibilità dell'unità periferica a
riceverlo! il segnale provoca una modifica del comportamento dell'unità
� L'unità centrale inizia un'operazione di I/O comunicandone i parametri a una funzione dedicata
� Quindi, prosegue l'elaborazione con operazioni che non richiedono che l'operazione di I/O sia terminata
� Quando l'operazione di I/O si è compiuta (dato disponibile, o dispositivo pronto), il dispositivo di I/O invia alla unità centrale un segnale hardware (interruzione)
� L'unità centrale serve l�interruzione e completa l�operazione di I/O
� La gestione delle operazioni di I/O a interruzione richiede l'intervento della CPU per ogni dato trasferito. La gestione DMA (Direct Memory Access) fa intervenire la CPU solo una volta per un blocco di dati, ma richiede hardware aggiuntivo con capacità di elaborazione (controllore DMA).
� E' utilizzata per trasferire molti dati da un dispositivo periferico verso celle contigue di memoria e viceversa, in particolare da e verso memorie di massa veloci.
� L'unità centrale inizia un'operazione di I/O comunicandone i parametri al controllore DMA tramite una funzione dedicata: numero di dati da trasferire, indirizzo di partenza in memoria, indirizzo del blocco dati sul dispositivo periferico
� Quindi, prosegue l'elaborazione con operazioni che non richiedono che l'intera operazione di I/O sia terminata
� Quando il dispositivo periferico è pronto per il trasferimento di un singolo dato, il controllore DMA si riserva l'utilizzo del bus di sistema per il tempo necessario a scambiare il dato con la memoria centrale, indirizzandole direttamente e sospendendo per il tempo del trasferimento l'attività della CPU sul bus (cycle stealing)
� Al termine del trasferimento dell'intero blocco di dati invia un segnale di interruzione all'unità centrale, segnalando il completamento dell'operazione di I/O
� La macchina serve un solo �utente� e svolge un solo �compito�! funzioni base per interpretare comandi e eseguire programmi! supervisori o monitor! semplicità, basso livello, scarso sfruttamento del tempo
� La macchina serve un �lotto� di programmi in sequenza, in modo non interattivo! serializzazione delle operazioni di ingresso / uscita! sovrapposizione dei lavori! elaborazione non assistita ! sfruttamento del tempo macchina
� La macchina serve a turno più utenti ripartendo tra essi l�utilizzo delle risorse (unità centrale, memoria, periferiche)! ogni utente lavora indipendentemente dagli altri, avendo
l�impressione di utilizzare una macchina dedicata! protezione! sfruttamento delle risorse della macchina
� La macchina esegue più attività sulla base di una scala di priorità, sospendendo i lavori meno urgenti a favore dei più urgenti! protezione, tempi di risposta! gestione conflitti! sfruttamento delle risorse compatibilmente con le esigenze
� Permettono l�uso di programmi applicativi e l�accesso a archivi di dati salvaguardando la compiutezza delle operazioni! gestione del traffico verso sistemi remoti ! gestione della concorrenza tra gli utenti! gestione degli errori e ripristino della coerenza dei dati
� In un sistema ideale dedicato alla esecuzione di un solo programma le operazioni sono sequenziali e sincrone! tutte le operazioni (elaborazione, ingresso e uscita, controllo
dell�esecuzione) sono eseguite una dopo l�altra in mododeterministico e ripetibile
! ogni azione viene terminata prima di passare all�azione successiva
! l�esito dell�elaborazione non dipende dal tempo totale di esecuzione, né dal tempo relativo di esecuzione delle singole operazioni
� In un sistema reale multiprogrammato tale comportamento può essere riferito al singolo programma, ma non al sistema nel suo complesso
� La macchina è dotata di un solo processore e di una sola memoria centrale. Il nucleo ripartisce l�uso della unità centrale tra i diversi processi attraverso la gestione delle interruzioni! si genera una macchina virtuale in cui ad ogni programma
attivo (processo) corrisponde una unità centrale virtuale dedicata.
! i programmi che vengono eseguiti in tale ambiente non devono occuparsi della ripartizione dell�uso dell�unità centrale, poiché ciascuno ne utilizza una diversa (virtuale)
� Il gestore della memoria di un sistema operativo consente di programmare riferendosi ad uno spazio di indirizzamento virtuale, indipendente dall�effettivo spazio di indirizzamento della memoria fisica.
� Si genera una macchina virtuale in cui ogni processore (virtuale) ha a disposizione una memoria privata la cui corrispondenza con la memoria fisica non è (in linea di principio) rilevante.
� I programmi possono essere sviluppati senza sapere la configurazione reale della memoria in cui saranno allocati
� Il file system assegna alle informazioni memorizzate su una memoria di massa una organizzazione e una strutturazione riferite all�utilizzo delle informazioni e non al loro schema di memorizzazione! le informazioni sono raccolte in unità logiche (file) identificate
da un nome, di cui si ignora la struttura fisica e l�allocazionesul supporto di memorizzazione
! l�accesso avviene tramite funzioni che operano sul contenuto in base alla sua organizzazione logica (stream, record)
! sono gestite sia la privatezza dei dati, sia i conflitti di accesso nel caso di utilizzo condiviso tra più utenti
� Ha un�architettura modulare che consente un elevato livello di flessibilità nella configurazione! può adattarsi a macchine differenti sul piano hw (in modo
limitato) ! supporta applicazioni scritte per altri sistemi operativi (in
modo limitato)
� E� un�architettura microkernel modificata! molte funzioni esterne al microkernel sono eseguite in modo
kernel! ogni modulo del sistema può essere rimosso, aggiornato o
� I processi utente si appoggiano ai sottosistemi ambientali (environment subsystems)! Win32! OS/2! Posix
� Applicazioni progettate per sistemi Windows 16-32 bit, per sistemi OS/2 o per sistemi Posix trovano in WIndows NT/2000 un ambiente di esecuzione che simula l�ambiente nativo
� L�esecuzione dei processi si basa sui due concetti di thread e di multiprocessing simmetrico! un processo può avere al suo interno più flussi di esecuzione
logicamente paralleli (thread)! un processo server può creare tanti thread quanti sono i
client che richiedono il servizio! in un hardware multiprocessor i thread possono essere
eseguiti da processori diversi! i processor fisici sono perfettamente equivalenti rispetto ad
ogni richiesta di esecuzione (simmetric multiprocessing)