Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
SISTEMA OPERATIVO
Un sistema di elaborazione automatico è formato da:             HARDWARE             +             SOFTWARE
SOFTWARE APPLICATIVO: è quello "costruito" dal  programmatore per risolvere problemi che gli  interessano DI BASE: progr...
Il computer è praticamente inutilizzabile  se non è presente un apposito software  che ne gestisca tutti i componenti.
SOFTWARE DI BASEProgrammi necessari per il funzionamento del  computer:– SISTEMA OPERATIVO– PROGRAMMI DI UTILITÀ
SOFTWARE APPLICATIVOSi tratta di programmi che hanno il compito di risolvere  specifici problemidell’utente, come nel caso...
SOFTWARE APPLICATIVOUna categoria particolare è rappresentata dai Desktop publishing o programmi di impaginazione che perm...
SOFTWARE APPLICATIVO- PROGRAMMI DI PRESENTAZIONE: servono a creare   schermate (dette slide) contenenti testo, immagini,  ...
SOFTWARE APPLICATIVO- PROGRAMMI DI GRAFICA (Photoshop, Flash)- SOFTWARE DI GESTIONE CONTABILE- SOFTWARE MULTIMEDIALE- BROW...
SISTEMA OPERATIVOIl sistema operativo rappresenta l”intelligenza” del computer   ed è l’unica porzione di software che non...
SISTEMA OPERATIVOL’utilizzatore interagisce col sistema operativo attraverso  l’interfaccia, che può essere di due tipi:• ...
SISTEMA OPERATIVOOra la situazione è cambiata grazie alla nascita delle   interfacce grafiche che non sono altro che la tr...
Sistema operativoLe principali funzioni svolte dal S.O. sono:• GESTIONE DELLA MEMORIA• GESTIONE DEL SISTEMA CENTRALE• GEST...
SISTEMA OPERATIVOEvoluzione dei SOIn questa sezione ripercorriamo brevemente l’evoluzione subita dai sistemi operativi:Ann...
SISTEMA OPERATIVOAnni 50-60: sistemi batchSi passa a quello che viene definito elaborazione a lotti:• Viene realizzato tra...
SISTEMA OPERATIVO
SISTEMA OPERATIVOAnni 60: sistemi multiprogrammati e sistemi time- sharingAvvento della multiprogrammazione, ovvero presen...
SISTEMA OPERATIVO
SISTEMA OPERATIVOSubito dopo, naturale evoluzione e nell’ambito della  stessa multiprogrammazione, viene introdotto quello...
SISTEMA OPERATIVO
SISTEMA OPERATIVOAnni 70 ad oggi:I Sistemi Operativi (SO) prendono “vita”, si differenziano   e si specializzano in relazi...
SISTEMA OPERATIVOElementi di un sistema operativoNella sua più ampia generalit{ un S.O. è l’insieme dei  programmi interag...
SISTEMA OPERATIVOSostanzialmente il S.O. è quel complesso di programmi  impiegato per controllare altri programmi, eseguit...
Modelli organizzativi dei S.O.Il S.O. è caratterizzato, funzionalmente, dalla combinazione   di un insieme di processi di ...
Modelli organizzativi dei S.O.
Modelli organizzativi dei S.O.Nel modello a strati (onion skin) ogni strato implementa una macchina virtuale   (astratta)p...
 Portabilità di un sistema = capacità di essere eseguito  su altre macchine Interoperabilità di sistemi = capacità di sc...
Breve descrizione1. BIOS: a diretto contatto con l’hardware del   sistema c’è il BIOS (Basic Input Output System). E’   me...
2. Nucleo o Kernel o Supervisore: gestisce i processi  corrispondenti ai programmi che sono  contemporaneamente attivi. Fu...
3. Gestore della memoria: è la parte del SO che ha il  compito di gestire l’accesso alla memoria centrale.  Consente la co...
4 Gestore delle periferiche: è la parte del SO che  consente ai processi di operare su “periferiche  astratte”. Le caratte...
5. Gestore di  file: è la parte del SO che si occupa di gestire e strutturare  le informazioni memorizzate su memorie di m...
6. Shell: è la parte del SO che interpreta i comandi.  Modulo direttamente accessibile dall’utente ha la  funzione di inte...
7. Programmi di utilità: consentono di ampliare le   funzionalità del SO, al fine di ottimizzare l’utilizzo del   calcolat...
8. Bootstrap: una piccola parte del Sistema  Operativo residente nella ROM, che va in  esecuzione all’accensione del calco...
9. Gestore della rete: è l’infrastruttura software  necessaria per la gestione delle reti di calcolatori.  In verità il mo...
SISTEMA INMONOPROGRAMMAZIONE 1 SOLO PROCESSO ATTIVO TEMPO CPU: Tempo utente (esec programma) Tempo sistema Tempo inat...
SISTEMA MULTIPROGRAMMAZIONESi è così pervenuti ad una nuova fase nellevoluzione del software di base, con un significativo...
Vediamo meglio questo meccanismo utilizzando dei grafici in cui viene  rappresentato il tempo di utilizzo della CPU per i ...
b) MultiprogrammazioneGrazie agli elaboratori di canale si può delegare ad essi la gestione delle operazioni di I-O e nel ...
 Lelaborazione in multiprogrammazione riduce quindi  il tempo in cui la CPU resta inutilizzata, in quanto si  eseguono pi...
Si osservi inoltre come, comunque , la gestione che assegna la CPU ad un   nuovo programma - soltanto se quello in esecuzi...
In effetti per realizzare questa organizzazione oltre ad avere i diversi   programmi in memoria centrale contemporaneament...
A questo punto lo schema di occupazione della CPU  diventa il seguente :Coda : Pg1, Pg2, Pg3             I/O     I/O     s...
Esempio 1multiprogrammazione (senza TIME-SLICE)PGM A inizio ---…. --- ….. finePGM B inizio … ----…----- finePGM C inizio -...
Esempio 2multiprogrammazione (due programmi) con TIME-SLICEIl Sistema Operativo decide come suddividere la memoria tra due...
Classificazione s.o. Sistemi dedicati Batch Interattivi multiutente Elaboratore di canale = dispositivo che si occupa ...
PROCESSO : elenco finito di istruzioni eseguite in sequenza  + dati che vengono elaborati da queste istruzioniDIFFERENZA T...
FUNZIONI DEL SISTEMA OPERATIVOSISTEMA OPERATIVO: è linsieme di routines necessarie per la  gestione della C.P.U., dell I/O...
In un sistema in multiprogrammazione è questo il compito principale:   servire le code di programmi.Altre funzioni:2) PROT...
Gestione dei processi Controlla la sincronizzazione, interruzione e riattivazione dei programmi in esecuzione Piu’ progr...
Esempio: esecuzione di unaricetta   Ricetta = programma   Noi = processore   Ingredienti = dati in input   Attivita’ d...
Vari processi in esecuzione Bisogna gestire anche   Condivisione risorse fisiche (CPU, memoria)   Condivisione risorse ...
ORGANIZZAZIONE DI UN SISTEMAIN MULTIPROGRAMMAZIONEIl programma parte in uno stato di SUBMIT (=sottoposto)   cioè pronto pe...
STATI DI UN PROCESSO PARCHEGGIO: in attesa di essere caricato in memoria centrale IN PRONTO: se tutte le operazioni rela...
parcheggio              pronto                         esecuzione     attesa                       terminazio             ...
Il sistema operativo interviene non appena si verifica uno di questi eventi    : il processo termina il time slice finis...
TEMPO    PROGRAMMA A                PROGRAMMA BLancio   submit/parcheggio/pronto    Submit/parcheggio0        Esecuzione  ...
TEMPO PROGRAMMA A                 PROGRAMMA B         PROGRAMMA CLancio submit/parcheggio pronto   submit/parcheggio    su...
Interrupt Segnali hardware ad esempio alla cpu via apposita    linea elettrica   Collegati al verificarsi di un evento ...
Tipi di interrupt Rilevazione malfunzionamento hardware Fine del quanto di tempo Arrivo di dati in input Rilevazione d...
3 tipi Interruzioni sincrone generate dall’hardware: es time  sharing legate all’orologio interno Interruzioni asincrone...
Tabelle dei processi Ogni processo ha una sua tabella che lo descrive, che contiene(stack di sistema)     Identificativ...
Operazioni sui processi La tabella e’ sempre in memoria centrale (per  accedervi velocemente) Usando le informazioni con...
Processi concorrenti Necessita’ di sincronizzazione e comunicazione Threads: cammini di esecuzione della CPU su  un prog...
Processi indipendenti oconcorrenti Processi indipendenti:   L’esecuzione di un processo non e’ influenzata da    quella ...
Pipe Permette il passaggio dei dati tra due processi I dati sono messi da una parte di un ‘’tubo’’ (pipe) da un processo...
Coda di messaggi Esplicite funzioni per scambio messaggi: (send e receive) Scambio di messaggi tra piu’ processi Messag...
Condivisione di memoria Forma di comunicazione piu’ veloce Pero’ anche piu’ difficile da implementare: bisogna evitare c...
NUCLEO=kernel parte del s.o. più vicina alla macchina, dipende  strettamente dall’hardwareFunzioni:   Avvio e terminazion...
Misure Cpu activity % = (tempoutente+ temposistema)*  100/tempototale Throughput(produttività)  = tempoutente/tempototal...
NUCLEO Politiche di scheduling : regole per l’assegnazione della  CPU ai vari processi    Semplice : round robin (coda)  ...
Gestione dei processori Criteri in base ai quali i processori vengono assegnati ai processi Programma schedulatore:   D...
Criteri per lo schedulatore Massimo tasso di uso della CPU Massimo numero di processi completati per unita’ di tempo (th...
Gestione della coda dei pronti:FIFO FIFO (first in, first out):   Secondo l’ordine di arrivo, senza interruzione   Impl...
Gestione della coda dei pronti:altri metodi SJF (Shortest Job First): prima i processi piu’  corti Round-robin: con quan...
I SISTEMI INTERATTIVISISTEMA DI TIPO INTERATTIVO: si accetta la richiesta di  un solo lavoro da ciascun terminale.(Si prev...
Esistono poi sistemi "MISTI" cioè che prevedono sistemi di  lavoro sia BATCH sia INTERATTIVO.Succede spesso, infatti, che ...
Gestione della memoria centrale Criteri per allocare la memoria centrale tra piu’ entita’ che la richiedono:   SO   Pro...
LA GESTIONE DELLA MEMORIA CENTRALELa C.P.U. è in grado di eseguire solo ciò che è presente in MEMORIA CENTRALE.(Quindi qua...
Per eseguire un programma, questo viene trasportato  dalla memoria ausiliaria (disco),su cui è stato  memorizzato, alla me...
Al termine dellelaborazione lo spazio occupato in  memoria centrale viene lasciato libero per altri lavori!  (Visto che la...
MEMORIA CENTRALE   Sistema Operativo        Parte della memoria                            centrale occupata dal          ...
MEMORIA CENTRALE In multiprogrammazione sono presenti più programmi   contemporaneamente.In questo caso i processi devono ...
GESTIONE DELLE ALLOCAZIONI PER PARTIZIONIIl sistema operativo assegna una parte (=fetta) di memoria a   ciascun processo, ...
La partizione dinamica è più "complessa" da gestire per il sistema    operativo rispetto a quella statica, ma è preferibil...
Quando un nuovo programma deve essere caricato in memoria centrale, il sistema  operativo deve scegliere la zona cui alloc...
La seconda soluzione è la meno veloce ma è quella più  razionale, in quanto lascia spazi più ampi per più tempo.Osserva ch...
MC 500 KSO 200KEsempio partizione statica : 3 blocchi da 100K carico al max 3  programmiEsempio Partizione dinamica : 300K...
GESTIONE DELLA MEMORIA PER PAGINE oPAGINAZIONELa paginazione offre un’altra soluzione al problema della frammentazione del...
Naturalmente la dimensione delle pagine e dei blocchi deve essere fatta tenendo   conto dei lavori da effettuare e della s...
0                      pag   blocchi                S O0                                        80K4K                     ...
Vediamo ora dato un indirizzo logico come viene determinato l’indirizzo fisico:- dividendo l’indirizzo logico per l’ampiez...
La paginazione ha il vantaggio di eliminare la  frammentazione senza richiedere molto tempo alla CPU  per lo spostamento f...
GESTIONE DELLA MEMORIA PER SEGMENTIo SEGMENTAZIONESi definisce segmento un insieme di informazioni con una   unitarietà fi...
 Main Sottoprog 1 Sottoprog 2
 La segmentazione è una generalizzazione della gestione a partizioni variabili  che porta ad una riduzione del problema d...
LA MEMORIA VIRTUALE
Sistemi operativi
Sistemi operativi
Sistemi operativi
Upcoming SlideShare
Loading in …5
×

Sistemi operativi

1,470 views

Published on

Published in: Technology
  • Be the first to comment

Sistemi operativi

  1. 1. SISTEMA OPERATIVO
  2. 2. Un sistema di elaborazione automatico è formato da: HARDWARE + SOFTWARE
  3. 3. SOFTWARE APPLICATIVO: è quello "costruito" dal programmatore per risolvere problemi che gli interessano DI BASE: programmi che facilitano luso delle risorse dellhardware.  SISTEMA OPERATIVO  PROGRAMMI DI UTILITA’
  4. 4. Il computer è praticamente inutilizzabile se non è presente un apposito software che ne gestisca tutti i componenti.
  5. 5. SOFTWARE DI BASEProgrammi necessari per il funzionamento del computer:– SISTEMA OPERATIVO– PROGRAMMI DI UTILITÀ
  6. 6. SOFTWARE APPLICATIVOSi tratta di programmi che hanno il compito di risolvere specifici problemidell’utente, come nel caso di:- PROGRAMMI DI TRATTAMENTO DEI TESTI: consentono di scrivere o lavorare con datigià esistenti per realizzare operazioni di correzione e formattazione di documenti di qualsiasidimensione o complessità, stampando infine il tutto (è il caso di Microsoft Word, ad esempio).
  7. 7. SOFTWARE APPLICATIVOUna categoria particolare è rappresentata dai Desktop publishing o programmi di impaginazione che permettono la realizzazione di pagine complete di un settimanale o di una rivista (Ventura Publisher, XPress, Pagemaker..)
  8. 8. SOFTWARE APPLICATIVO- PROGRAMMI DI PRESENTAZIONE: servono a creare schermate (dette slide) contenenti testo, immagini, diagrammi, suoni e filmati da usarsi in ambito aziendale per comunicare concetti ed informazioni (Powerpoint)- GESTORI DI DATABASE: operano su insiemi strutturati di dati. Un file è formato da record composti a loro volta da campi di immissione dei dati (Access, Oracle)- FOGLI ELETTRONICI: consentono di realizzare operazioni matematiche con netta propensione per quelle finanziarie, contabili e commerciali (Excel)
  9. 9. SOFTWARE APPLICATIVO- PROGRAMMI DI GRAFICA (Photoshop, Flash)- SOFTWARE DI GESTIONE CONTABILE- SOFTWARE MULTIMEDIALE- BROWSERS per la navigazione in INTERNET- LINGUAGGI DI PROGRAMMAZIONE
  10. 10. SISTEMA OPERATIVOIl sistema operativo rappresenta l”intelligenza” del computer ed è l’unica porzione di software che non può mancare in nessuna macchina.La sua nascita, per gli elaboratori a 16 bit, si può far coincidere con la realizzazione di Ms-Dos della Microsoft.Il Sistema Operativo si assume il compito di interpretare i comandi (input) provenienti dallesterno e di tradurli in un linguaggio (macchina) comprensibile al computer; allo stesso modo funziona anche al contrario, traducendo gli output della macchina in un linguaggio a noi comprensibile. Il S.O. ha, in sostanza, il compito di gestire tutte le componenti del computer e di consentire la comunicazione tra utente e calcolatore.
  11. 11. SISTEMA OPERATIVOL’utilizzatore interagisce col sistema operativo attraverso l’interfaccia, che può essere di due tipi:• GUI (GRAPHIC USER INTERFACE) tipica di Windows• CLI (COMMAND LINE INTERFACE) o CUI (CHARACTER USER INTERFACE), tipica di MS-DOSPrima dellavvento di Windows, i computer allaccensione visualizzavano il prompt del DOS (Disk Operating System) cioè lavviso che la macchina era pronta a ricevere dei comandi (tutto ciò era rappresentato, nel caso dell’MS-DOS, dalla scritta C:> ).
  12. 12. SISTEMA OPERATIVOOra la situazione è cambiata grazie alla nascita delle interfacce grafiche che non sono altro che la traduzione in termini grafici della stessa situazione precedente, inserita in un contesto molto più accattivante. Linterfaccia grafica (GUI) è una rappresentazione grafica sullo schermo di file, dati, dispositivi e programmi memorizzati sul computer. L’utente può impartire comandi all’elaboratore interagendo con queste immagini grafiche.I più moderni e importanti Sistemi Operativi sono: OS/2, Unix, Win98/XP, WindowsNT/2000, WINDOWS Vista e 7, MacOS, Linux.
  13. 13. Sistema operativoLe principali funzioni svolte dal S.O. sono:• GESTIONE DELLA MEMORIA• GESTIONE DEL SISTEMA CENTRALE• GESTIONE DELLE UNITÀ PERIFERICHE• GESTIONE DELLE APPLICAZIONI
  14. 14. SISTEMA OPERATIVOEvoluzione dei SOIn questa sezione ripercorriamo brevemente l’evoluzione subita dai sistemi operativi:Anni 40: assenza di SOL’elaborazione era attuata, essenzialmente, tramite un processo seriale:• I programmi, in codice macchina, venivano “caricati” (copiati) attraverso il dispositivo diinput (es. lettore schede) ed avviati dall’utente (operatore di sala macchine);• L’ordine di caricamento ed esecuzione dei vari programmi (detti job) erano determinati dalmeccanismo manuale di prenotazione della macchina;• Si generava uno spreco di tempo macchina ogni volta che un programma terminava inanticipo rispetto al tempo prenotato;• Il tempo di preparazione dell’ambiente di supporto all’esecuzione di un programma eraspesso elevato dovendo passare attraverso fasi di compilazione del codice, montaggio dinastri, installazione di funzioni di libreria.
  15. 15. SISTEMA OPERATIVOAnni 50-60: sistemi batchSi passa a quello che viene definito elaborazione a lotti:• Viene realizzato tramite l’impiego di un programma detto ‘monitor’ (antenato dei SO) in grado di automatizzare l’avviamento e l’esecuzione sequenziale di un lotto di programmi (job);• Si ha la prima, parziale eliminazione dell’accesso diretto dell’utente alla macchina;• Continua, però, a persistere la totale mancanza di interattivit{ e il tempo di latenza continua ad avere valori elevati;• Viene utilizzato uso di un apposito linguaggio, detto Job Control Language (JCL o OCL), per la descrizione delle operazioni che il monitor doveva compiere;• Si ottenne, così, una prima ottimizzazione dello sfruttamento delle risorse con accurata distribuzione del tempo di calcolo tra i vari programmi da eseguire;• Siamo, però, ancora in una ambiente di monoprogrammazione in cui, come visibile dallo schema, l’utilizzo della CPU era temporizzato dalle sequenze di input/output.
  16. 16. SISTEMA OPERATIVO
  17. 17. SISTEMA OPERATIVOAnni 60: sistemi multiprogrammati e sistemi time- sharingAvvento della multiprogrammazione, ovvero presenza contemporanea di più di un programma in memoria centrale:
  18. 18. SISTEMA OPERATIVO
  19. 19. SISTEMA OPERATIVOSubito dopo, naturale evoluzione e nell’ambito della stessa multiprogrammazione, viene introdotto quello che va sotto il nome di time-slice ovvero quanto di tempo: l’esecuzione di più processi o thread, eseguiti in alternanza solo per uno specifico quanto di tempo (nell’ordine dei millisecondi) con una tecnica denominata di time-sharing (condivisione di tempo) mediante la quale si realizza la suddivisione del tempo di CPU tra i programmi rendendo così possibile l’elaborazione interattiva:
  20. 20. SISTEMA OPERATIVO
  21. 21. SISTEMA OPERATIVOAnni 70 ad oggi:I Sistemi Operativi (SO) prendono “vita”, si differenziano e si specializzano in relazione alle specifiche, rilevanti caratteristiche funzionali. Vengono realizzati :1. SO monoutente • Windows, UNIX, Linux2. SO multiutente • Unix3. SO distribuiti4. SO di rete
  22. 22. SISTEMA OPERATIVOElementi di un sistema operativoNella sua più ampia generalit{ un S.O. è l’insieme dei programmi interagenti fra loro per coordinare l’accesso alle risorse da parte degli utenti e del software applicativo ed è costituito da: • Gestore del processore; • Gestore della memoria centrale; • Gestore delle periferiche; • Gestore dei file (File system); • Gestore degli utenti e dei relativi comandi (interprete comandi).
  23. 23. SISTEMA OPERATIVOSostanzialmente il S.O. è quel complesso di programmi impiegato per controllare altri programmi, eseguiti dallo stesso processore.Le differenze fra questi ultimi e il sistema operativo sono dovuti al fatto che i programmi applicativi hanno accesso ad un insieme ridotto di risorse e non possono decidere quando e come avere accesso alle risorse (esecuzione in modalità utente) mentre il SO ha accesso riservato alle risorse e stabilisce in che ordine e come le richieste di risorse da parte di programmi applicativi devono essere soddisfatte (esecuzione in modalità supervisore).
  24. 24. Modelli organizzativi dei S.O.Il S.O. è caratterizzato, funzionalmente, dalla combinazione di un insieme di processi di servizio e da un gestore, detto nucleo, che opera come sistema di controllo dei processi.I modelli organizzativi di riferimento per i sistemi operativi stand-alone sono:• Modello monolitico: S.O. costituito da un unico modulo che serve le richieste dei programmi-utente uno alla volta;• Modello a strati (a buccia di cipolla): S.O. costituito da più moduli, ciascuno dei quali svolge specifiche funzioni, ed ogni modulo può servire le richieste di più programmi-utente.
  25. 25. Modelli organizzativi dei S.O.
  26. 26. Modelli organizzativi dei S.O.Nel modello a strati (onion skin) ogni strato implementa una macchina virtuale (astratta)più potente della precedente appoggiandosi alle funzionalità offerte dallo strato sottostante(modulo).Schematizzando:• ogni macchina virtuale è un insieme di programmi che realizza funzionalit{ utilizzando i servizi forniti dal livello inferiore;• ogni macchina virtuale ha il compito di gestire specifiche risorse del sistema, fornendo meccanismi di accesso che ne regolamentano l’uso.Modulo= routines che attivano meccanismi fisici necessari per risolvere problemi logici di uno stesso tipo (operazioni di ingresso o uscita o gestione della memoria)Ogni procedura standard per mezzo della quale si possono utilizzare i servizi di un modulo è detta primitiva (modalità di comunicazione tra i moduli che sono tra loro indipendenti)(macchina virtuale = oggetto costituito da una macchina più semplice che esegue operazioni fisiche + modulo che da interpretazione logica delle operazioni ; l’insieme crea una nuova macchina in grado di eseguire operazioni logiche)
  27. 27.  Portabilità di un sistema = capacità di essere eseguito su altre macchine Interoperabilità di sistemi = capacità di scambiare informazioni o utilizzare risorse tra sistemi diversi
  28. 28. Breve descrizione1. BIOS: a diretto contatto con l’hardware del sistema c’è il BIOS (Basic Input Output System). E’ memorizzato permanentemente su chip a sola lettura (è hardware e software insieme) ed esegue test di base e poi cerca il settore di avvio (boot sector) sul floppy o nel disco fisso ed inizia ad eseguire il codice in esso contenuto. Attiva il processo di loader che passa il controllo allo strato superiore: il kernel.
  29. 29. 2. Nucleo o Kernel o Supervisore: gestisce i processi corrispondenti ai programmi che sono contemporaneamente attivi. Funzionalmente il nucleo: • tiene traccia dei processi che utilizzano la CPU; • gestisce l’uso della CPU da parte dei vari processi (scheduling); • sincronizza i processi. Fino a qui
  30. 30. 3. Gestore della memoria: è la parte del SO che ha il compito di gestire l’accesso alla memoria centrale. Consente la condivisione della memoria tra più programmi. • Permette a ciascun programma di lavorare in un proprio spazio di indirizzamento, avendo a disposizione una memoria dedicata, di capacità superiore a quella fisicamente disponibile; • Alloca e dealloca la memoria ai processi; • Tiene traccia di quali parti della memoria sono correntemente usate e da quali processi.
  31. 31. 4 Gestore delle periferiche: è la parte del SO che consente ai processi di operare su “periferiche astratte”. Le caratteristiche fisiche delle periferiche e le specifiche operazioni di I/O vengono mascherate all’utente e alle applicazioni. Permette l’uso di comandi di alto livello (forniti dai driver delle periferiche) per leggere e scrivere dati, senza preoccuparsi dei problemi di indirizzamento e di sincronizzazione delle periferiche stesse.
  32. 32. 5. Gestore di file: è la parte del SO che si occupa di gestire e strutturare le informazioni memorizzate su memorie di massa.Fornisce un meccanismo di astrazione che consente all’utente di organizzare l’informazione in strutture logiche (Organizzazione logica). Traduce le strutture logiche create dall’utente in strutture fisiche di dati memorizzate su memorie secondarie (Implementazione).Controlla, infine, l’uso delle strutture fisiche da parte dei processi permettendo l’accesso solo ai processi autorizzati (Protezione).Operativamente organizza le informazioni memorizzate su memoria di massa nelle strutture logiche conosciute come file ovvero unità logica di informazione che può contenere informazioni di vario tipo: documenti (file di testo), programmi in codice sorgente (istruzioni in chiaro nel linguaggio specifico), programmi in codice eseguibile (file binario), immagini (ad esempio bitmap).Dati che vengono organizzati in blocchi di piccole dimensioni logicamente connessi da “puntatori”.
  33. 33. 6. Shell: è la parte del SO che interpreta i comandi. Modulo direttamente accessibile dall’utente ha la funzione di interpretare i comandi forniti dall’utente, tipicamente da tastiera, e di attivare i programmi corrispondenti mostrando, sullo schermo, il risultato dell’esecuzione. Rappresenta l’ interfaccia tra utente e sistema. A seconda della modalità di comunicazione offerta si parla di shell a linea di comando (CLI) tipica del sistema operativo DOS o UNIX prima maniera e shell di tipo grafico (GUI) più “amichevoli” con icone, finestre, menù (sistemi di tipo Windows, Mac OS, Unix Gnome).Si tenga ben presente che la shell è un processo ‘permanente’ che dà vita ad un processo ‘temporaneo’ ogni volta che richiede l’esecuzione di un comando.
  34. 34. 7. Programmi di utilità: consentono di ampliare le funzionalità del SO, al fine di ottimizzare l’utilizzo del calcolatore da parte sia degli utenti sia degli amministratori di sistema.Comprende: • Compilatori, debugger, editor di sistema; • Programmi per il backup dei dati; • Programmi per la gestione dei dischi: o Formattazione; o Deframmentazione (ottimizzazione dello spazio occupato su disco); o Scanning del disco (controllo della superficie del disco e individuazione di eventuali settori rovinati).
  35. 35. 8. Bootstrap: una piccola parte del Sistema Operativo residente nella ROM, che va in esecuzione all’accensione del calcolatore in modo da effettuare le seguenti operazioni: • Eseguire i programmi di diagnostica (fase detta di POST: power on self test), che verificano la presenza di tutti i dispositivi hardware e l’assenza di guasti; • Caricare dalla memoria di massa una parte del Sistema Operativo che a sua volta ne carica una maggiore, e così via fino a quando tutti i programmi sono caricati; • Attivare l’interprete dei comandi.
  36. 36. 9. Gestore della rete: è l’infrastruttura software necessaria per la gestione delle reti di calcolatori. In verità il modello a strati non include i servizi di gestione della connessione tra calcolatori: agli elementi propri di tale modello occorre aggiungere un modulo per la condivisione delle risorse dei calcolatori connessi in rete.
  37. 37. SISTEMA INMONOPROGRAMMAZIONE 1 SOLO PROCESSO ATTIVO TEMPO CPU: Tempo utente (esec programma) Tempo sistema Tempo inattività (molto grande rispetto agli altri)Dalle considerazioni sui tempi  multiprogrammazione
  38. 38. SISTEMA MULTIPROGRAMMAZIONESi è così pervenuti ad una nuova fase nellevoluzione del software di base, con un significativo miglioramento nella efficienza dei sistemi : la multiprogrammazione. In memoria centrale possono essere presenti più programmi, tutti in grado di essere eseguiti.La CPU esegue un programma fino alla richiesta di una operazione di I-O: A questo punto la CPU delega loperazione ad un certo canale e, finchè questo non lo completa, può passare ad eseguire un altro programma.MULTIPROGRAMMAZIONE: presenza di più programmi in memoria centrale che avanzano in “parallelo”.La C.P.U. si occupa di un solo programma alla volta attuando:ripartizione delle risorseripartizione del tempoSe durante il tempo a disposizione di un programma è necessaria una operazione di I/O allora la C.P.U. attiva il canale e passa al programma successivo; il canale quando termina, avvisa la C.P.U. con una interruzione.Così si ha una ripartizione del tempo di C.P.U. tra i diversi programmi; inoltre si ha la ripartizione delle risorse, cioè delle periferiche che vengono usate da più programmi a seconda della necessità.
  39. 39. Vediamo meglio questo meccanismo utilizzando dei grafici in cui viene rappresentato il tempo di utilizzo della CPU per i vari programmi.a) Monoprogrammazione attività di CPU ___ ___ ___ | | | | | | | | | | | | _|_ _|____________|_ _|_ ___________ |_ _|____________________ tempo --->lancio I-O fine I-O fine fine esecuzionedel I-O I-Oprogramma
  40. 40. b) MultiprogrammazioneGrazie agli elaboratori di canale si può delegare ad essi la gestione delle operazioni di I-O e nel frattempo utilizzare la CPU per altri programmi.Attività di CPU I/O I/O fine processoprog 1________ _ _ _ _ _________ _ _ _ _ _ _ _ _ _ ___________ _ _ _ _ _prog 2_ _ _ _ ________ _ _ _ _ _ _ _ _ _ __________ _ _ _ _ _ _ _ _ _ _ _ _ CPU I/O inutil fine processo
  41. 41.  Lelaborazione in multiprogrammazione riduce quindi il tempo in cui la CPU resta inutilizzata, in quanto si eseguono più programmi in minor tempo. La semplice gestione vista ha però il seguente inconveniente : un programma che non presenti richieste di I-O monopolizza la CPU ai danni di altri in attesa; viceversa un programma con molte operazione di I-O risulta penalizzato e può avere un tempo di esecuzione molto più lungo di quello che avrebbe in monoprogrammazione.
  42. 42. Si osservi inoltre come, comunque , la gestione che assegna la CPU ad un nuovo programma - soltanto se quello in esecuzione richiede una operazione di I-O - possa lasciare ancora tempi di inutilizzo della CPU nel momento in cui tutti i programmi siano in attesa del completamento di operazioni di I-O. Per ovviare a questi inconvenienti e per migliorare ulteriormente lefficienza del sistema si è sviluppata una particolare tecnica : a ciascun programma viene assegnato un tempo massimo di utilizzo, chiamato TIME SLICE superato il quale il programma viene forzatamente interrotto.Si stabiliscono così dei turni di utilizzo CPU, in modo da portare avanti parallelamente lesecuzione di più programmi senza lasciare tempi morti. Gli schemi finora visti sono molto semplificati.Questa tecnica di gestione della CPU è chiamata time sharing ; ma questa tenica può essere applicata anche ad altre risorse Il sistema operativo  virtualizza la CPU Attenzione al time slice scelto
  43. 43. In effetti per realizzare questa organizzazione oltre ad avere i diversi programmi in memoria centrale contemporaneamente, occorre anche un programma che gestisca linterruzione di ciascuno e la ripresa di un altro memorizzando in unarea apposita i dati necessari e sufficienti alla ripresa di quello interrotto.Occorre perciò salvare lindirizzo dellistruzione successiva a quella interrotta, contenuto nel Program Counter, e oltre ad altre informazioni e caricare nel PC lindirizzo precedentemente salvato dal programma da riprendere.Inoltre esiste il problema di assegnazione della CPU: Occorre cioè stabilire dei criteri con cui il Sistema Operativo scelga , tra tutti i programmi pronti quale far riprendere. Quindi tra un programma e laltro esiste sempre un tempo di occupazione della CPU da parte del sistema operativo per la gestione appunto, del passaggio da un programma a un altro.
  44. 44. A questo punto lo schema di occupazione della CPU diventa il seguente :Coda : Pg1, Pg2, Pg3 I/O I/O scade TS I/OUtilizzo _____|____|___|___|________|___|_________|____|___|___|_________|____|_________|CPU PG1 SO Pg2 SO Pg3 SO Pg1 Fine SO Pg2 SO Pg3 Fine SO Pg2 Fine
  45. 45. Esempio 1multiprogrammazione (senza TIME-SLICE)PGM A inizio ---…. --- ….. finePGM B inizio … ----…----- finePGM C inizio ----..---…. fineLinea tratteggiata (----) indica operazioni di C.P.U.Linea punteggiata (....) indica tempo di I/OVediamo invece come lavora la C.P.U. con la tecnica del time sharing (i tre programmi avanzano in parallelo) Ad ogni programma si assegna un "TIME-SLICE", ovvero un tempo massimo di utilizzo della C.P.U.; superato il tempo massimo si interrompe forzatamente lesecuzione e la C.P.U. passa al programma successivo.E poi si va avanti con i turni!In questo caso quindi il segnale di interruzione viene inviato anche allo scadere del time slice, oltre che alla richiesta di I/O:
  46. 46. Esempio 2multiprogrammazione (due programmi) con TIME-SLICEIl Sistema Operativo decide come suddividere la memoria tra due programmi A e B.Supponiamo di fotografare passo per passo, lo stato dei due programmi A e B e come a questi vengono assegnate le risorse del sistema.  0 la C.P.U. inizia l’esecuzione del programma  1 il programma A inizia la sua esecuzione, mentre il programma B è in attesa.  2 successivamente, il programma A chiede di poter utilizzare le periferiche (operazione I/O)  3 mentre la richiesta viene soddisfatta, riparte il programma B fino a quando non si verifica una interruzione del programma B  4 il programma A riparte, e il programma B rimane in attesa.  5 supponiamo ora che il programma a abbia ancora bisogno di usare le periferiche e quindi il programma B riprende la sua esecuzione e continua a lavorare per un tempo, abbastanza lungo, ma poiché non esegue operazioni di I/O, il Sistema Operativo ripristina le condizioni di lavoro di A mediante  6 un segnale di interruzione dovuto allo scadere di un tempo massimo  7 si continua così fino a che uno dei due programmi finisce e quindi l’altro riprende la sua esecuzione né senza limiti di tempo, né ripartizione delle risorse.
  47. 47. Classificazione s.o. Sistemi dedicati Batch Interattivi multiutente Elaboratore di canale = dispositivo che si occupa ad esempio di trasferire l’output su stampante Contengono buffer
  48. 48. PROCESSO : elenco finito di istruzioni eseguite in sequenza + dati che vengono elaborati da queste istruzioniDIFFERENZA TRA PROCESSO E PROGRAMMA : il processo evolve nel tempo, il programma noil processo è sequenziale, mentre il programma può avere salti e cicli.Si chiama processore l’oggetto che causa l’evoluzione di un processo.
  49. 49. FUNZIONI DEL SISTEMA OPERATIVOSISTEMA OPERATIVO: è linsieme di routines necessarie per la gestione della C.P.U., dell I/O e delle altre risorse del sistema.Il sistema operativo ha diversi compiti (a seconda anche del tipo di sistema operativo) ma sicuramente lo scopo fondamentale è quello di:1) RIPARTIRE LE RISORSE TRA I VARI UTENTI deve trovare il modo di ripartire il tempo di C.P.U. nel modo più efficiente. (Esempio: se un utente sta aspettando a terminale dei risultati, mentre gli altri eseguono elaborazioni sequenziali allora cercherà di privilegiare il primo, e così via).
  50. 50. In un sistema in multiprogrammazione è questo il compito principale: servire le code di programmi.Altre funzioni:2) PROTEGGERE LAREA SU CUI E MEMORIZZATO IL SISTEMA OPERATIVO3) MEMORIZZARE I PROGRAMMI E I DATI DEGLI UTENTI E PROTEGGERE CIASCUNA AREA dagli altri utenti evitando che uno scriva sul programma di un altro.4) FACILITARE LUSO DELLE RISORSE si prevedono macrocomandi che vengono poi gestiti dal sistema operativo.
  51. 51. Gestione dei processi Controlla la sincronizzazione, interruzione e riattivazione dei programmi in esecuzione Piu’ programmi si alternano nell’uso della CPU Ogni programma puo’ essere: Eseguito Sospeso Fatto ripartire Struttura che mantiene lo stato di avanzamento di ogni programma: processo.
  52. 52. Esempio: esecuzione di unaricetta Ricetta = programma Noi = processore Ingredienti = dati in input Attivita’ di leggere la ricetta, usare gli ingredienti, mescolare, cuocere = processo Telefonata durante l’esecuzione della ricetta = interrupt Il processo interrompre l’esecuzione, prende nota del punto (riga della ricetta, ...) e gestisce l’evento Alla fine della telefonata, l’esecuzione riprende e viene conclusa Dolce = output
  53. 53. Vari processi in esecuzione Bisogna gestire anche  Condivisione risorse fisiche (CPU, memoria)  Condivisione risorse logiche (dati)  Modularita’: piu’ processi per una singola operazione  Maggiore velocita’ per parallelismo tra processi Anche piu’ processi per un programma  Es.: piu’ programmatori usano lo stesso editore di testi
  54. 54. ORGANIZZAZIONE DI UN SISTEMAIN MULTIPROGRAMMAZIONEIl programma parte in uno stato di SUBMIT (=sottoposto) cioè pronto per essere sottoposto ad elaborazione.Ma il programma non viene subito eseguito dopo essere stato richiesto, bensì viene messo in coda, ovvero in parcheggio.Ossia il programma da eseguire viene in genere memorizzato ma ignorato finché non sia il sistema operativo a decidere di caricarlo in zona lavoro ed entri nella lista dei processi in stato di pronto.Poi inizia lesecuzione e in un certo istante ogni processo si può trovare in uno dei seguenti stati:
  55. 55. STATI DI UN PROCESSO PARCHEGGIO: in attesa di essere caricato in memoria centrale IN PRONTO: se tutte le operazioni relative ad una certa fase del processo sono state eseguite, ma il processo non può avanzare perché le risorse di cui ha bisogno sono momentaneamente impegnate in altri processi. IN ESECUZIONE: sono in corso di esecuzione le istruzioni che lo compongono. IN ATTESA: è in attesa del completamento di una operazione (ad esempio I/O). IN TERMINAZIONE : quando l’elaborazione è terminata.
  56. 56. parcheggio pronto esecuzione attesa terminazio ne
  57. 57. Il sistema operativo interviene non appena si verifica uno di questi eventi : il processo termina il time slice finisce ( per i sistemi che operano in time sharing) il processo richiede una operazione di I/ONel primo caso il SO libera l’area di memoria centrale occupata dal processo e la riempie con uno di quelli che si trovano in stato di pronto.Nel secondo caso riporta il processo in stato di pronto e assegna la CPU ad un altro processo che si trovi in tale stato.Nel terzo caso sospende il processo in quanto non può proseguire sino a che non è avvenuta l’operazione di I/O e gli attribuisce lo stato di attesa, al termine di questo il processo ritornerà in stato di pronto.
  58. 58. TEMPO PROGRAMMA A PROGRAMMA BLancio submit/parcheggio/pronto Submit/parcheggio0 Esecuzione pronto1 attesa (I/O) esecuzione2 Pronto attesa (I/O)3 Esecuzione pronto4 attesa (I/O) esecuzione5 Pronto attesa (I/O)6 Esecuzione pronto7 Terminazione esecuzione8 Terminazione
  59. 59. TEMPO PROGRAMMA A PROGRAMMA B PROGRAMMA CLancio submit/parcheggio pronto submit/parcheggio submit/parcheggio0 Esecuzione pronto Pronto1 attesa (I/O) attesa (I/O) Esecuzione2 attesa (I/O) esecuzione Pronto3 Esecuzione pronto Pronto4 attesa (I/O) esecuzione Pronto5 attesa (I/O) attesa (I/O) Esecuzione6 attesa (I/O) attesa (I/O) attesa (I/O)7 Terminazione attesa (I/O) attesa (I/O)8 Esecuzione Pronto9 Terminazione Esecuzione10 attesa (I/O)11 Terminazione
  60. 60. Interrupt Segnali hardware ad esempio alla cpu via apposita linea elettrica Collegati al verificarsi di un evento Provocano l’esecuzione immediata di un programma del SO (vettore di interrupt) che serve a gestire l’evento Una CPU puo’ gestire piu’ interrupt Interrupt anche per fine di quanto di tempo (generato dal timer) Processo che si occupa delle interruzioni si chiama interrupt handler Tutte le informazioni relative al processo e cioè contenuto registri ,program counter con l’indirizzo prossima istruzione copiati in zona memoria chiamata stack di sistema
  61. 61. Tipi di interrupt Rilevazione malfunzionamento hardware Fine del quanto di tempo Arrivo di dati in input Rilevazione di segnali da sensori Rilevazione di errori softwareOgni interruzione ha la sua priorita’, cosi’ il processo che la gestisce puo’ interrompere solo processi con priorita’ inferiore
  62. 62. 3 tipi Interruzioni sincrone generate dall’hardware: es time sharing legate all’orologio interno Interruzioni asincrone generate dall’hardware: es fine stampa Interruzioni sincrone provocate via software : provocate anche volontariamente dal programmatore (linguaggio assembler) ad es lettura o scrittura su disco
  63. 63. Tabelle dei processi Ogni processo ha una sua tabella che lo descrive, che contiene(stack di sistema)  Identificativo  Indirizzo prossima istruzione  Contenuto registri CPU  Stato corrente (pronto, bloccato, esecuzione)  Collocazione programma e dati in memoria  Priorita’  Ammontare CPU time gia’ speso  …
  64. 64. Operazioni sui processi La tabella e’ sempre in memoria centrale (per accedervi velocemente) Usando le informazioni contenute nella tabella, si possono fare varie operazioni:  Creazione di nuovi processi  Cambio di priorita’  Blocco  Assegnamento della CPU  Terminazione
  65. 65. Processi concorrenti Necessita’ di sincronizzazione e comunicazione Threads: cammini di esecuzione della CPU su un programma Piu’ thread possono condividere codice, dati, memoria, file, … Task: insieme di thread e delle cose condivise tra loro Processo tradizionale: un solo task con un solo thread
  66. 66. Processi indipendenti oconcorrenti Processi indipendenti:  L’esecuzione di un processo non e’ influenzata da quella degli altri processi  Dipende solo dall’input (deterministica) Processi cooperanti o concorrenti:  Lo stato puo’ essere influenzato da altri processi, e dati condivisi  Esecuzione non deterministica (dipende dalle velocita’ relative dei processi)
  67. 67. Pipe Permette il passaggio dei dati tra due processi I dati sono messi da una parte di un ‘’tubo’’ (pipe) da un processo ed estratti dall’altro lato, nello stesso ordine, da un altro processo Molto usato nel SO Unix
  68. 68. Coda di messaggi Esplicite funzioni per scambio messaggi: (send e receive) Scambio di messaggi tra piu’ processi Messaggi gestiti secondo il loro arrivo in coda
  69. 69. Condivisione di memoria Forma di comunicazione piu’ veloce Pero’ anche piu’ difficile da implementare: bisogna evitare che piu’ processi modifichino contemporaneamente gli stessi dati Meccanismi piu’ usati: semafori, monitor, rendez-vous
  70. 70. NUCLEO=kernel parte del s.o. più vicina alla macchina, dipende strettamente dall’hardwareFunzioni:  Avvio e terminazione processi  Assegnazione CPU ai vari processi  Sincronizzazione tra i processi  Sincronizz processi con ambiente esterno
  71. 71. Misure Cpu activity % = (tempoutente+ temposistema)* 100/tempototale Throughput(produttività) = tempoutente/tempototale = numeroistruzioni/tempoTurnaround time =tempo da quando processo parte fino a quando termina = tempoterminaz – tempoavvioWaiting time = tempo in stato di attesaResponse time = tempo in pronto prima di avere cpu
  72. 72. NUCLEO Politiche di scheduling : regole per l’assegnazione della CPU ai vari processi Semplice : round robin (coda) Oppure priorità dei processiScheduling gestore dei processi = processo con priorità massimaPreemption : processo più alto interrompe processi più bassi in esecuz
  73. 73. Gestione dei processori Criteri in base ai quali i processori vengono assegnati ai processi Programma schedulatore:  Distribuisce il tempo di CPU tra i processi  Decide l’avvicendamento dei processi 76
  74. 74. Criteri per lo schedulatore Massimo tasso di uso della CPU Massimo numero di processi completati per unita’ di tempo (throughput) Minimo tempo tra la sottomissione di un processo e il suo completamento Minimo tempo passato in attesa nella coda dei processi pronti 77
  75. 75. Gestione della coda dei pronti:FIFO FIFO (first in, first out):  Secondo l’ordine di arrivo, senza interruzione  Implementazione banale  Tempo di attesa non minimizzato 78
  76. 76. Gestione della coda dei pronti:altri metodi SJF (Shortest Job First): prima i processi piu’ corti Round-robin: con quanti di tempo associati a FIFO Scadenza: prima i processi con la scadenza piu’ vicina SRT (Shortest Remaining Time): prima i processi a cui manca meno tempo per finire 79
  77. 77. I SISTEMI INTERATTIVISISTEMA DI TIPO INTERATTIVO: si accetta la richiesta di un solo lavoro da ciascun terminale.(Si prevede un "dialogo diretto" tra il sistema e lutente; avviene un vero e proprio colloquio).Lutente ha limpressione di avere tutte le risorse a propria disposizione come nella monoprogrammazione; in realtà i lavori richiesti vengono sempre portati avanti in "parallelo" cioè in multiprogrammazione ovvero attraverso la suddivisione del tempo C.P.U. tra i vari terminali.
  78. 78. Esistono poi sistemi "MISTI" cioè che prevedono sistemi di lavoro sia BATCH sia INTERATTIVO.Succede spesso, infatti, che il numero di unità stampa (=stampanti) sia inferiore al numero dei terminali, così il sistema si trova a gestire operazioni di spool per la stampante mentre lavora in modo interattivo con i terminali.SISTEMI TIME-SHARING: (=ripartizione di tempo).Il sistema presta attenzione ad ogni terminale per un periodo di tempo definito (TIME SLICE = quanto di tempo); scaduto il tempo prefissato, la C.P.U., si dedica ad un altro collegamento e così via a turno per tutti i collegamenti.
  79. 79. Gestione della memoria centrale Criteri per allocare la memoria centrale tra piu’ entita’ che la richiedono:  SO  Processi  Buffer di I/O  … 82
  80. 80. LA GESTIONE DELLA MEMORIA CENTRALELa C.P.U. è in grado di eseguire solo ciò che è presente in MEMORIA CENTRALE.(Quindi quando cè la richiesta di un lavoro, i dati e il programma necessari devono essere trasportati in MEMORIA CENTRALE perché lelaborazione possa avvenire).MEMORIA: CENTRALE: è qui che devono essere contenuti i dati e i programmi per poter essere elaborati dalla C.P.U. Questa è costosa, limitata e labile o volatile (cioè il contenuto viene perso ogni volta che lunità viene spenta). AUSILIARIA o DI MASSA: serve per memorizzare nel tempo i dati e i programmi; grosse quantità di dati vengono immagazzinati per tempi molto lunghi. (Sono i dischi, i nastri, le schede perforate, CD-ROM etc). Disco: fisso (che è dentro al computer) floppy (che è quello estraibile) (Le memorie ausiliarie servono per affiancare la memoria centrale nel suo lavoro).
  81. 81. Per eseguire un programma, questo viene trasportato dalla memoria ausiliaria (disco),su cui è stato memorizzato, alla memoria centrale, solo qui la C.P.U. lo può elaborare.
  82. 82. Al termine dellelaborazione lo spazio occupato in memoria centrale viene lasciato libero per altri lavori! (Visto che la memoria centrale è limitata).In monoprogrammazione non ci sono particolari problemi.In memoria centrale ci sarà il sistema operativo (che deve essere sempre presente) e poi lo spazio restante viene lasciato tutto allunico utente.
  83. 83. MEMORIA CENTRALE Sistema Operativo Parte della memoria centrale occupata dal Sistema Operativo il rimanente" è tutto quello che resta allutente per il proprio programma e i dati(E chiaro che se lutente richiede lesecuzione di un programma le cui dimensioni vanno oltre lo spazio utilizzabile; allora il Sistema Operativo segnalerà il "disguido" e si rifiuterà di fare lesecuzione).
  84. 84. MEMORIA CENTRALE In multiprogrammazione sono presenti più programmi contemporaneamente.In questo caso i processi devono ripartirsi lo spazio disponibile in memoria centrale ( oltre al Sistema Operativo che comunque deve essere presente). Sistema Operativo Parte della memoria centrale occupata dal Sistema Operativo Processo 1 il rimanente" è tutto quello Processo 2 che resta allutente per il proprio programma e i dati Processo 3
  85. 85. GESTIONE DELLE ALLOCAZIONI PER PARTIZIONIIl sistema operativo assegna una parte (=fetta) di memoria a ciascun processo, tenendo presente che la ripartizione può essere: PARTIZIONE: STATICA: la parte assegnata è fissa. Cioè ogni volta che viene mandato in esecuzione un programma, gli viene data una parte di memoria( uguale agli altri programmi). DINAMICA: le ripartizioni (= le “fette") vengono create a seconda delle dimensioni del programma e dello spazio rimasto libero.
  86. 86. La partizione dinamica è più "complessa" da gestire per il sistema operativo rispetto a quella statica, ma è preferibile perché evita lo spreco di memoria.Infatti nella ripartizione statica linconveniente è che anche a programmi molto brevi viene assegnato sempre lo stesso spazio così gran parte di questo resta inutilizzato; viceversa se il programma è molto lungo può darsi che non ci stia nella "fetta” di memoria assegnata, così lesecuzione non può avvenire e inoltre il numero massimo di processi caricabili è fisso.Nella ripartizione dinamica, questo problema viene risolto, in quanto la memoria non viene suddivisa in blocchi di dimensione prefissata.Il sistema operativo comunque deve tenere una mappa della memoria, cioè deve sapere sempre quali zone di memoria sono occupate e quali zone libere e tale mappa deve essere continuamente aggiornata.
  87. 87. Quando un nuovo programma deve essere caricato in memoria centrale, il sistema operativo deve scegliere la zona cui allocare il nuovo programma.CRITERI DI ALLOCAZIONE:Algoritmo FIRST FIT : si assegna la prima partizione libera che si incontra sufficientemente grande.(Algoritmo molto semplice).Algoritmo BEST FIT: tra tutti i posti liberi si sceglie, il migliore cioè il più adatto, cioè lo spazio libero più piccolo che lo può contenere.Algoritmo WORST FIT: tra tutti i posti liberi si sceglie, il peggiore cioè lo spazio più grande libero.
  88. 88. La seconda soluzione è la meno veloce ma è quella più razionale, in quanto lascia spazi più ampi per più tempo.Osserva che con il tempo, a causa del susseguirsi di allocazioni e rilasci di memoria, si giunge alla "frammentazione" in tante piccole zone inutilizzabili.Ecco che periodicamente il Sistema Operativo deve ricompattare i programmi e creare così ununica aerea libera di memoria.Il sistema di allocazione della memoria a partizioni variabili sfrutta meglio la memoria centrale a scapito però di un carico di lavoro maggiore svolto dal SO.
  89. 89. MC 500 KSO 200KEsempio partizione statica : 3 blocchi da 100K carico al max 3 programmiEsempio Partizione dinamica : 300K disponibiliPG1 30 K, PG2 50K, PG3 120K, PG4 80K, PG 5 60KPosso caricare i primi 4 e il 5° attende
  90. 90. GESTIONE DELLA MEMORIA PER PAGINE oPAGINAZIONELa paginazione offre un’altra soluzione al problema della frammentazione della memoria centrale e rappresenta una delle tecniche maggiormente usate sugli attuali sistemi di elaborazione.Con questa tecnica il programma viene diviso in blocchi aventi le stesse dimensioni dette pagine logiche(solitamente 2K o 4K).In modo analogo la memoria centrale viene divisa in pagine fisiche aventi le stesse dimensioni delle pagine logiche.Possiamo dire che esiste una corrispondenza biunivoca tra le pagine logiche e quelle fisiche.Però mentre le pagine sono logicamente contigue e come tali vengono gestite dall’utente, i blocchi di memoria possono anche non esserlo.Saranno necessari dei supporti di memorizzazione cioè delle tabelle di mappa di pagina che consentono di gestire la trasformazione dell’indirizzo di pagina in indirizzo di blocco.Per ogni pagina logica sarà necessario sapere :- se occupa una pagina fisica- le posizioni sul disco della pagina logica- altri flag come ad esempio quello che indica se la pagina è stata modificata o meno.
  91. 91. Naturalmente la dimensione delle pagine e dei blocchi deve essere fatta tenendo conto dei lavori da effettuare e della struttura hardware del sistema; infatti se la pagina è troppo grande ci si ritrova con gli stessi problemi delle partizioni fisse, mentre se la misura è troppo piccola si dovrà gestire una grossa tabella di mappa che se implementata attraverso registri veloci, farebbe aumentare il cosdto del sistema.Esempio supponiamo che la memoria centrale sia suddivisa in 15 blocchi e che i blocchi 3, 4, 6,7,11,12 siano già occupati da alcuni programmi.Un programma PROG2 di 14 k venga diviso in 4 pagine di 4 k ( 4* 1024) ciascuna di cui l’ultima non completamente occupata. Quando viene caricato in memoria vengono reperiti 4 blocchi non contigui liberi (1, 5, 8, 11) e viene creata la tabella di associazione tra pagine e blocchi.La tecnica di paginazione risolve quasi completamente il problema della frammentazione senza che avvenga alcun movimento fisico dei blocchi in memoria.Se ad esempio si dovesse allocare un altro programma di 16K sarebbe possibile associargli i blocchi liberi 2 , 9 , 10 , 13 senza dover compattare i blocchi già in uso.
  92. 92. 0 pag blocchi S O0 80K4K 0 3 b 1 1 7 2 3 PROG1 4 5 04K 0 1 68K 1 5 712K 2 8 8 3 11 9 PROG2 10 110 124K 0 4 138K 1 6 14 2 12 15 PROG3 pagine logiche tabella di mappa memoria centrale
  93. 93. Vediamo ora dato un indirizzo logico come viene determinato l’indirizzo fisico:- dividendo l’indirizzo logico per l’ampiezza della pagina; il risultato della divisione fornisce il numero di pagina; il resto fornisce l’indirizzo relativo all’interno della paginaAd esempio supponiamo che un programma contenga l’istruzione che fa riferimento alla posizione 5120.allora divido 5120 per 4 * 1024 5120: 4096 = 1 con resto 1024 = 1K- individuando nella tabella di mappa di pagina l’indirizzo del blocco in cui è memorizzata la pagina:La pagina logica 1 so che è mappata nel blocco 7 e quindi7 * 4096 = 28672 = 28KSo che i primi 80K della memoria centrale sono occupati dal sistema operativo quindi 28K + 80K = 108K è l’inizio del blocco 7.- sommando all’indirizzo di inizio del blocco l’indirizzo relativo all’interno della pagina108K + 1K = 109K che è l’indirizzo cercato.
  94. 94. La paginazione ha il vantaggio di eliminare la frammentazione senza richiedere molto tempo alla CPU per lo spostamento fisico dei blocchi di dati. Ciò porta ad un aumento del grado di multiprogrammazione, sia ad un aumento del rendimento generale del sistema.Gli svantaggi : elevato costo hardware per la trasformazione degli indirizzi, occupazione in memoria delle varie tabelle e il consumo di tempo della CPU per mantenere aggiornate queste tabelle. Inoltre si ha un fenomeno simile alla frammentazione quando la lunghezza di un programma non è esattamente un multiplo di pagina ad esempio se è 17K allora occuperà 5 pagine di 4K ciascuna con evidente spreco di memoria.
  95. 95. GESTIONE DELLA MEMORIA PER SEGMENTIo SEGMENTAZIONESi definisce segmento un insieme di informazioni con una unitarietà fisica come una routine, un array , un’area dati.Nella segmentazione il programma viene diviso in segmenti di lunghezza variabile a cura del programmatore; ogni segmento può corrispondere per esempio ad un modulo del programma o ad un’area dati.Ogni indirizzo logico all’interno del programma è espresso dal numero di segmento e dall’indirizzo relativo all’interno del segmento.Il caricamento dei segmenti in memoria è gestito con la tecnica delle partizioni variabili.
  96. 96.  Main Sottoprog 1 Sottoprog 2
  97. 97.  La segmentazione è una generalizzazione della gestione a partizioni variabili che porta ad una riduzione del problema della frammentazione poichè è più facile adattare i segmenti alle aree di memoria anche piccole che rimangono disponibili. Differenza tra paginazione e segmentazione : le pagine sono unità fisiche di dimensione fissa mentre i segmenti sono unità logiche di dimensione variabile definiti dal programmatore. Svantaggi della segmentazione : costo hardware e complessità so. Ma se un programma richiede uno spazio superiore a quello disponibile? Se il numero di pagine, necessario per memorizzare un programma, libere sono insufficienti? La memoria centrale è limitata!!! Il problema è stato risolto con la tecnica della MEMORIA VIRTUALE.
  98. 98. LA MEMORIA VIRTUALE

×