SlideShare une entreprise Scribd logo
1  sur  101
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: programmi che facilitano l'uso delle risorse
  dell'hardware.
       SISTEMA OPERATIVO
       PROGRAMMI DI UTILITA’
Il computer è praticamente inutilizzabile
  se non è presente un apposito software
  che ne gestisca tutti i componenti.
SOFTWARE DI BASE
Programmi necessari per il funzionamento del
  computer:
– SISTEMA OPERATIVO
– PROGRAMMI DI UTILITÀ
SOFTWARE APPLICATIVO
Si tratta di programmi che hanno il compito di risolvere
  specifici problemi
dell’utente, come nel caso di:
- PROGRAMMI DI TRATTAMENTO DEI TESTI:
  consentono di scrivere o lavorare con dati
già esistenti per realizzare operazioni di correzione e
  formattazione di documenti di qualsiasi
dimensione o complessità, stampando infine il tutto (è il
  caso di Microsoft Word, ad esempio).
SOFTWARE APPLICATIVO
Una 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..)
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)
SOFTWARE APPLICATIVO
- PROGRAMMI DI GRAFICA (Photoshop, Flash)
- SOFTWARE DI GESTIONE CONTABILE
- SOFTWARE MULTIMEDIALE
- BROWSERS per la navigazione in INTERNET
- LINGUAGGI DI PROGRAMMAZIONE
SISTEMA OPERATIVO
Il 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 dall'esterno 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.
SISTEMA OPERATIVO
L’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-DOS
Prima dell'avvento di Windows, i computer
  all'accensione visualizzavano il prompt del DOS (Disk
  Operating System) cioè l'avviso che la macchina era
  pronta a ricevere dei comandi (tutto ciò era
  rappresentato, nel caso dell’MS-DOS, dalla scritta C:>
  ).
SISTEMA OPERATIVO
Ora 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. L'interfaccia 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.
Sistema operativo
Le principali funzioni svolte dal S.O. sono:
• GESTIONE DELLA MEMORIA
• GESTIONE DEL SISTEMA CENTRALE
• GESTIONE DELLE UNITÀ PERIFERICHE
• GESTIONE DELLE APPLICAZIONI
SISTEMA OPERATIVO
Evoluzione dei SO
In questa sezione ripercorriamo brevemente l’evoluzione subita dai sistemi operativi:
Anni 40: assenza di SO
L’elaborazione era attuata, essenzialmente, tramite un processo seriale:
• I programmi, in codice macchina, venivano “caricati” (copiati) attraverso il dispositivo di
input (es. lettore schede) ed avviati dall’utente (operatore di sala macchine);
• L’ordine di caricamento ed esecuzione dei vari programmi (detti job) erano determinati dal
meccanismo manuale di prenotazione della macchina;
• Si generava uno spreco di tempo macchina ogni volta che un programma terminava in
anticipo rispetto al tempo prenotato;
• Il tempo di preparazione dell’ambiente di supporto all’esecuzione di un programma era
spesso elevato dovendo passare attraverso fasi di compilazione del codice, montaggio di
nastri, installazione di funzioni di libreria.
SISTEMA OPERATIVO
Anni 50-60: sistemi batch
Si 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.
SISTEMA OPERATIVO
SISTEMA OPERATIVO
Anni 60: sistemi multiprogrammati e sistemi time-
 sharing
Avvento della multiprogrammazione, ovvero
 presenza contemporanea di più di un programma
 in memoria centrale:
SISTEMA OPERATIVO
SISTEMA OPERATIVO
Subito 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:
SISTEMA OPERATIVO
SISTEMA OPERATIVO
Anni 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, Linux
2. SO multiutente
  • Unix
3. SO distribuiti
4. SO di rete
SISTEMA OPERATIVO
Elementi di un sistema operativo
Nella 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).
SISTEMA OPERATIVO
Sostanzialmente 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).
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.
Modelli organizzativi dei S.O.
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)
 Portabilità di un sistema = capacità di essere eseguito
  su altre macchine
 Interoperabilità di sistemi = capacità di scambiare
  informazioni o utilizzare risorse tra sistemi diversi
Breve descrizione
1. 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.
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
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.
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.
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”.
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.
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).
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.
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.
SISTEMA IN
MONOPROGRAMMAZIONE
 1 SOLO PROCESSO ATTIVO


 TEMPO CPU:
 Tempo utente (esec programma)
 Tempo sistema
 Tempo inattività (molto grande rispetto agli altri)
Dalle considerazioni sui tempi  multiprogrammazione
SISTEMA MULTIPROGRAMMAZIONE
Si è così pervenuti ad una nuova fase nell'evoluzione 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
    l'operazione 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 risorse
ripartizione del tempo

Se 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à.
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 esecuzione
del              I-O               I-O
programma
b) Multiprogrammazione

Grazie 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 processo
prog 1________ _ _ _ _ _________ _ _ _ _ _ _ _ _ _ ___________ _ _ _ _ _


prog 2_ _ _ _ ________ _ _ _ _ _ _ _ _ _ __________ _ _ _ _ _ _ _ _ _ _ _ _


                                   CPU
                     I/O           inutil fine processo
 L'elaborazione 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.
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 l'efficienza 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 l'esecuzione 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
In effetti per realizzare questa organizzazione oltre ad avere i diversi
   programmi in memoria centrale contemporaneamente, occorre anche
   un programma che gestisca l'interruzione di ciascuno e la ripresa di un
   altro memorizzando in un'area apposita i dati necessari e sufficienti
   alla ripresa di quello interrotto.
Occorre perciò salvare l'indirizzo dell'istruzione successiva a quella
   interrotta, contenuto nel Program Counter, e oltre ad altre
   informazioni e caricare nel PC l'indirizzo 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
   l'altro 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.
A questo punto lo schema di occupazione della CPU
  diventa il seguente :
Coda : Pg1, Pg2, Pg3

             I/O     I/O     scade TS                   I/O
Utilizzo _____|____|___|___|________|___|_________|____|___|___|_________|____|_________|
CPU      PG1 SO Pg2 SO Pg3            SO Pg1 Fine SO Pg2 SO Pg3 Fine SO Pg2 Fine
Esempio 1
multiprogrammazione (senza TIME-SLICE)



PGM A inizio ---…. --- ….. fine
PGM B inizio … ----…----- fine
PGM C inizio ----..---…. fine
Linea tratteggiata (----) indica operazioni di C.P.U.
Linea punteggiata (....) indica tempo di I/O

Vediamo 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 l'esecuzione 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:
Esempio 2
multiprogrammazione (due programmi) con TIME-SLICE

Il 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.
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
PROCESSO : elenco finito di istruzioni eseguite in sequenza
  + dati che vengono elaborati da queste istruzioni

DIFFERENZA TRA PROCESSO E PROGRAMMA :
 il processo evolve nel tempo, il programma no
il processo è sequenziale, mentre il programma può avere
   salti e cicli.

Si chiama processore l’oggetto che causa l’evoluzione di un
  processo.
FUNZIONI DEL SISTEMA OPERATIVO
SISTEMA OPERATIVO: è l'insieme 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).
In un sistema in multiprogrammazione è questo il compito principale:
   servire le code di programmi.

Altre funzioni:

2) PROTEGGERE L'AREA SU CUI E' MEMORIZZATO IL SISTEMA
   OPERATIVO

3) 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 L'USO DELLE RISORSE si prevedono macrocomandi che
   vengono poi gestiti dal sistema operativo.

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.
Esempio: esecuzione di una
ricetta
   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
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
ORGANIZZAZIONE DI UN SISTEMA
IN MULTIPROGRAMMAZIONE
Il 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 l'esecuzione e in un certo istante ogni processo si
   può trovare in uno dei seguenti stati:
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.
parcheggio
              pronto

                         esecuzione

     attesa




                       terminazio
                           ne
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/O

Nel 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.
TEMPO    PROGRAMMA A                PROGRAMMA B
Lancio   submit/parcheggio/pronto    Submit/parcheggio
0        Esecuzione                  pronto
1         attesa (I/O)               esecuzione
2         Pronto                    attesa (I/O)
3        Esecuzione                   pronto
4        attesa (I/O)               esecuzione
5        Pronto                     attesa (I/O)
6        Esecuzione                  pronto
7        Terminazione               esecuzione
8                                    Terminazione
TEMPO PROGRAMMA A                 PROGRAMMA B         PROGRAMMA C
Lancio submit/parcheggio pronto   submit/parcheggio    submit/parcheggio
0               Esecuzione        pronto               Pronto
1               attesa (I/O)      attesa (I/O)         Esecuzione
2               attesa (I/O)      esecuzione           Pronto
3               Esecuzione        pronto               Pronto
4               attesa (I/O)      esecuzione          Pronto
5               attesa (I/O)      attesa (I/O)        Esecuzione
6               attesa (I/O)      attesa (I/O)        attesa (I/O)
7               Terminazione      attesa (I/O)        attesa (I/O)
8                                 Esecuzione          Pronto
9                                 Terminazione        Esecuzione
10                                                    attesa (I/O)
11                                                    Terminazione
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
Tipi di interrupt
 Rilevazione malfunzionamento hardware
 Fine del quanto di tempo
 Arrivo di dati in input
 Rilevazione di segnali da sensori
 Rilevazione di errori software

Ogni interruzione ha la sua priorita’, cosi’ il
 processo che la gestisce puo’ interrompere
 solo processi con priorita’ inferiore
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
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
     …
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
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
Processi indipendenti o
concorrenti
 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)
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
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
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
NUCLEO
=kernel
 parte del s.o. più vicina alla macchina, dipende
  strettamente dall’hardware
Funzioni:
   Avvio e terminazione processi
   Assegnazione CPU ai vari processi
   Sincronizzazione tra i processi
   Sincronizz processi con ambiente esterno
Misure
 Cpu activity % = (tempoutente+ temposistema)*
  100/tempototale
 Throughput(produttività)
  = tempoutente/tempototale
 = numeroistruzioni/tempo

Turnaround time =tempo da quando processo parte
 fino a quando termina = tempoterminaz – tempoavvio
Waiting time = tempo in stato di attesa
Response time = tempo in pronto prima di avere cpu
NUCLEO
 Politiche di scheduling : regole per l’assegnazione della
  CPU ai vari processi
    Semplice : round robin (coda)
    Oppure priorità dei processi
Scheduling gestore dei processi = processo con
  priorità massima
Preemption : processo più alto interrompe processi più
  bassi in esecuz
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
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
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
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
I SISTEMI INTERATTIVI
SISTEMA DI TIPO INTERATTIVO: si accetta la richiesta di
  un solo lavoro da ciascun terminale.
(Si prevede un "dialogo diretto" tra il sistema e l'utente;
  avviene un vero e proprio colloquio).
L'utente ha l'impressione 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.


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.
Gestione della memoria centrale
 Criteri per allocare la memoria centrale tra piu’
 entita’ che la richiedono:
   SO
   Processi
   Buffer di I/O
   …




                                                      82
LA GESTIONE DELLA MEMORIA CENTRALE

La 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é l'elaborazione 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 l'unità 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).
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.
Al termine dell'elaborazione 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 all'unico utente.

MEMORIA CENTRALE
   Sistema Operativo        Parte della memoria
                            centrale occupata dal
                            Sistema
                            Operativo
                            il rimanente" è tutto quello
                            che resta all'utente per il
                            proprio programma e i dati


(E' chiaro che se l'utente richiede l'esecuzione di un
  programma le cui dimensioni vanno oltre lo spazio
  utilizzabile; allora il Sistema Operativo segnalerà il
  "disguido" e si rifiuterà di fare l'esecuzione).
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 all'utente per il
                           proprio programma e i dati
 Processo 3
GESTIONE DELLE ALLOCAZIONI PER PARTIZIONI
Il 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.
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 l'inconveniente è 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ì
    l'esecuzione 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.
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.

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ì un'unica 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.
MC 500 K

SO 200K

Esempio partizione statica : 3 blocchi da 100K carico al max 3
  programmi



Esempio Partizione dinamica : 300K disponibili

PG1 30 K, PG2 50K, PG3 120K, PG4 80K, PG 5 60K

Posso caricare i primi 4 e il 5° attende
GESTIONE DELLA MEMORIA PER PAGINE o
PAGINAZIONE
La 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.
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.
0

                      pag   blocchi                S O
0                                        80K

4K                      0      3                                  b 1
                        1      7                                    2
                                                                    3
       PROG1
                                                                   4
                                                                   5
 0
4K                      0      1                                   6

8K                      1      5                                   7

12K                     2      8                                   8
                        3     11                                   9

       PROG2                                                      10
                                                                  11

0                                                                 12

4K                     0       4                                  13
8K                     1      6                                   14
                       2     12                                   15
       PROG3



     pagine logiche   tabella di mappa         memoria centrale
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 pagina

Ad 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 quindi
7 * 4096 = 28672 = 28K

So 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 pagina

108K + 1K = 109K che è l’indirizzo cercato.
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.
GESTIONE DELLA MEMORIA PER SEGMENTI
o SEGMENTAZIONE
Si 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.
 Main
 Sottoprog 1
 Sottoprog 2
 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.
LA MEMORIA VIRTUALE

Contenu connexe

Tendances

Ecdl Modulo 1 Concetti teorici di base
Ecdl Modulo 1 Concetti teorici di baseEcdl Modulo 1 Concetti teorici di base
Ecdl Modulo 1 Concetti teorici di baseDanieleMartini15
 
Chapter 6: Expansion Buses
Chapter 6: Expansion BusesChapter 6: Expansion Buses
Chapter 6: Expansion Busesaskme
 
2 ecdl modulo2-online-essential explorer+gmail
2 ecdl modulo2-online-essential explorer+gmail2 ecdl modulo2-online-essential explorer+gmail
2 ecdl modulo2-online-essential explorer+gmailPietro Latino
 
Reti e internet
Reti e internetReti e internet
Reti e internetyrcorr
 
Dario ianes inegrazione scolastica
Dario ianes inegrazione scolasticaDario ianes inegrazione scolastica
Dario ianes inegrazione scolasticaCentro Autismo
 
Impariamo a conoscere il pc
Impariamo a conoscere il pcImpariamo a conoscere il pc
Impariamo a conoscere il pcMeryweb
 
The internet: una breve storia di Internet
The internet: una breve storia di InternetThe internet: una breve storia di Internet
The internet: una breve storia di InternetRoBisc
 
1-la digitalizzazione nella pa
1-la digitalizzazione nella pa1-la digitalizzazione nella pa
1-la digitalizzazione nella paiMaS s.r.l.
 
Don Milani, la sua scuola
Don Milani, la sua scuolaDon Milani, la sua scuola
Don Milani, la sua scuolaalessiabalsamo1
 

Tendances (20)

Il sistema informativo
Il sistema informativoIl sistema informativo
Il sistema informativo
 
Informatica base1
Informatica base1Informatica base1
Informatica base1
 
Ecdl Modulo 1 Concetti teorici di base
Ecdl Modulo 1 Concetti teorici di baseEcdl Modulo 1 Concetti teorici di base
Ecdl Modulo 1 Concetti teorici di base
 
La crisi1929
La crisi1929La crisi1929
La crisi1929
 
HARDWARE & SOFTWARE
HARDWARE & SOFTWAREHARDWARE & SOFTWARE
HARDWARE & SOFTWARE
 
Chapter 6: Expansion Buses
Chapter 6: Expansion BusesChapter 6: Expansion Buses
Chapter 6: Expansion Buses
 
2 ecdl modulo2-online-essential explorer+gmail
2 ecdl modulo2-online-essential explorer+gmail2 ecdl modulo2-online-essential explorer+gmail
2 ecdl modulo2-online-essential explorer+gmail
 
Nuova ECDL - Word Processing n.1
Nuova ECDL - Word Processing n.1Nuova ECDL - Word Processing n.1
Nuova ECDL - Word Processing n.1
 
Cambogia
Cambogia Cambogia
Cambogia
 
Reti e internet
Reti e internetReti e internet
Reti e internet
 
Dario ianes inegrazione scolastica
Dario ianes inegrazione scolasticaDario ianes inegrazione scolastica
Dario ianes inegrazione scolastica
 
Impariamo a conoscere il pc
Impariamo a conoscere il pcImpariamo a conoscere il pc
Impariamo a conoscere il pc
 
The internet: una breve storia di Internet
The internet: una breve storia di InternetThe internet: una breve storia di Internet
The internet: una breve storia di Internet
 
Computer
ComputerComputer
Computer
 
SD Corso Word
SD Corso WordSD Corso Word
SD Corso Word
 
1-la digitalizzazione nella pa
1-la digitalizzazione nella pa1-la digitalizzazione nella pa
1-la digitalizzazione nella pa
 
Don Milani, la sua scuola
Don Milani, la sua scuolaDon Milani, la sua scuola
Don Milani, la sua scuola
 
Corso Firma Digitale Mi
Corso Firma Digitale MiCorso Firma Digitale Mi
Corso Firma Digitale Mi
 
Firma Digitale E Pec
Firma Digitale E PecFirma Digitale E Pec
Firma Digitale E Pec
 
La Firma Digitale
La Firma DigitaleLa Firma Digitale
La Firma Digitale
 

Similaire à Sistemi operativi (20)

Ti base 2020
Ti base 2020Ti base 2020
Ti base 2020
 
Ti base 2020b
Ti base 2020bTi base 2020b
Ti base 2020b
 
Ti 2021 22_new
Ti 2021 22_newTi 2021 22_new
Ti 2021 22_new
 
Slide trentin
Slide trentinSlide trentin
Slide trentin
 
Software7
Software7Software7
Software7
 
Power point sistemi operativi , luca marcella 3° e
Power point sistemi operativi , luca marcella 3° ePower point sistemi operativi , luca marcella 3° e
Power point sistemi operativi , luca marcella 3° e
 
TI_2022.pptx
TI_2022.pptxTI_2022.pptx
TI_2022.pptx
 
Il software2
Il software2Il software2
Il software2
 
Presentazione sistemi operativi meli marco
Presentazione sistemi operativi meli marcoPresentazione sistemi operativi meli marco
Presentazione sistemi operativi meli marco
 
Presentazione scuola!
Presentazione scuola!Presentazione scuola!
Presentazione scuola!
 
Sistemi operativi
Sistemi operativiSistemi operativi
Sistemi operativi
 
Introduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiIntroduzione ai Sistemi Operativi
Introduzione ai Sistemi Operativi
 
Elementidi informatica
Elementidi informaticaElementidi informatica
Elementidi informatica
 
MODULO 1-Informatica di Base
MODULO 1-Informatica di BaseMODULO 1-Informatica di Base
MODULO 1-Informatica di Base
 
Il software 11
Il software 11Il software 11
Il software 11
 
Sistemi operativi: confronto tra linux, windows e mac
Sistemi operativi: confronto tra linux, windows e macSistemi operativi: confronto tra linux, windows e mac
Sistemi operativi: confronto tra linux, windows e mac
 
Sistemioperativi
SistemioperativiSistemioperativi
Sistemioperativi
 
operating system
operating systemoperating system
operating system
 
Classificazione software
Classificazione softwareClassificazione software
Classificazione software
 
Storia del computer
Storia del computerStoria del computer
Storia del computer
 

Sistemi operativi

  • 2. Un sistema di elaborazione automatico è formato da: HARDWARE + SOFTWARE
  • 3. SOFTWARE  APPLICATIVO: è quello "costruito" dal programmatore per risolvere problemi che gli interessano  DI BASE: programmi che facilitano l'uso delle risorse dell'hardware.  SISTEMA OPERATIVO  PROGRAMMI DI UTILITA’
  • 4. Il computer è praticamente inutilizzabile se non è presente un apposito software che ne gestisca tutti i componenti.
  • 5. SOFTWARE DI BASE Programmi necessari per il funzionamento del computer: – SISTEMA OPERATIVO – PROGRAMMI DI UTILITÀ
  • 6. SOFTWARE APPLICATIVO Si tratta di programmi che hanno il compito di risolvere specifici problemi dell’utente, come nel caso di: - PROGRAMMI DI TRATTAMENTO DEI TESTI: consentono di scrivere o lavorare con dati già esistenti per realizzare operazioni di correzione e formattazione di documenti di qualsiasi dimensione o complessità, stampando infine il tutto (è il caso di Microsoft Word, ad esempio).
  • 7. SOFTWARE APPLICATIVO Una 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. 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. SOFTWARE APPLICATIVO - PROGRAMMI DI GRAFICA (Photoshop, Flash) - SOFTWARE DI GESTIONE CONTABILE - SOFTWARE MULTIMEDIALE - BROWSERS per la navigazione in INTERNET - LINGUAGGI DI PROGRAMMAZIONE
  • 10. SISTEMA OPERATIVO Il 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 dall'esterno 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. SISTEMA OPERATIVO L’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-DOS Prima dell'avvento di Windows, i computer all'accensione visualizzavano il prompt del DOS (Disk Operating System) cioè l'avviso che la macchina era pronta a ricevere dei comandi (tutto ciò era rappresentato, nel caso dell’MS-DOS, dalla scritta C:> ).
  • 12. SISTEMA OPERATIVO Ora 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. L'interfaccia 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. Sistema operativo Le principali funzioni svolte dal S.O. sono: • GESTIONE DELLA MEMORIA • GESTIONE DEL SISTEMA CENTRALE • GESTIONE DELLE UNITÀ PERIFERICHE • GESTIONE DELLE APPLICAZIONI
  • 14. SISTEMA OPERATIVO Evoluzione dei SO In questa sezione ripercorriamo brevemente l’evoluzione subita dai sistemi operativi: Anni 40: assenza di SO L’elaborazione era attuata, essenzialmente, tramite un processo seriale: • I programmi, in codice macchina, venivano “caricati” (copiati) attraverso il dispositivo di input (es. lettore schede) ed avviati dall’utente (operatore di sala macchine); • L’ordine di caricamento ed esecuzione dei vari programmi (detti job) erano determinati dal meccanismo manuale di prenotazione della macchina; • Si generava uno spreco di tempo macchina ogni volta che un programma terminava in anticipo rispetto al tempo prenotato; • Il tempo di preparazione dell’ambiente di supporto all’esecuzione di un programma era spesso elevato dovendo passare attraverso fasi di compilazione del codice, montaggio di nastri, installazione di funzioni di libreria.
  • 15. SISTEMA OPERATIVO Anni 50-60: sistemi batch Si 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.
  • 17. SISTEMA OPERATIVO Anni 60: sistemi multiprogrammati e sistemi time- sharing Avvento della multiprogrammazione, ovvero presenza contemporanea di più di un programma in memoria centrale:
  • 19. SISTEMA OPERATIVO Subito 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:
  • 21. SISTEMA OPERATIVO Anni 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, Linux 2. SO multiutente • Unix 3. SO distribuiti 4. SO di rete
  • 22. SISTEMA OPERATIVO Elementi di un sistema operativo Nella 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.
  • 24. SISTEMA OPERATIVO Sostanzialmente 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).
  • 25. 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.
  • 27. 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)
  • 28.  Portabilità di un sistema = capacità di essere eseguito su altre macchine  Interoperabilità di sistemi = capacità di scambiare informazioni o utilizzare risorse tra sistemi diversi
  • 29. Breve descrizione 1. 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.
  • 30. 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
  • 31. 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.
  • 32. 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.
  • 33. 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”.
  • 34. 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.
  • 35.
  • 36.
  • 37. 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).
  • 38. 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.
  • 39. 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.
  • 40. SISTEMA IN MONOPROGRAMMAZIONE  1 SOLO PROCESSO ATTIVO  TEMPO CPU:  Tempo utente (esec programma)  Tempo sistema  Tempo inattività (molto grande rispetto agli altri) Dalle considerazioni sui tempi  multiprogrammazione
  • 41. SISTEMA MULTIPROGRAMMAZIONE Si è così pervenuti ad una nuova fase nell'evoluzione 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 l'operazione 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 risorse ripartizione del tempo Se 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à.
  • 42. 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 esecuzione del I-O I-O programma
  • 43. b) Multiprogrammazione Grazie 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 processo prog 1________ _ _ _ _ _________ _ _ _ _ _ _ _ _ _ ___________ _ _ _ _ _ prog 2_ _ _ _ ________ _ _ _ _ _ _ _ _ _ __________ _ _ _ _ _ _ _ _ _ _ _ _ CPU I/O inutil fine processo
  • 44.  L'elaborazione 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.
  • 45. 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 l'efficienza 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 l'esecuzione 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
  • 46. In effetti per realizzare questa organizzazione oltre ad avere i diversi programmi in memoria centrale contemporaneamente, occorre anche un programma che gestisca l'interruzione di ciascuno e la ripresa di un altro memorizzando in un'area apposita i dati necessari e sufficienti alla ripresa di quello interrotto. Occorre perciò salvare l'indirizzo dell'istruzione successiva a quella interrotta, contenuto nel Program Counter, e oltre ad altre informazioni e caricare nel PC l'indirizzo 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 l'altro 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.
  • 47. A questo punto lo schema di occupazione della CPU diventa il seguente : Coda : Pg1, Pg2, Pg3 I/O I/O scade TS I/O Utilizzo _____|____|___|___|________|___|_________|____|___|___|_________|____|_________| CPU PG1 SO Pg2 SO Pg3 SO Pg1 Fine SO Pg2 SO Pg3 Fine SO Pg2 Fine
  • 48. Esempio 1 multiprogrammazione (senza TIME-SLICE) PGM A inizio ---…. --- ….. fine PGM B inizio … ----…----- fine PGM C inizio ----..---…. fine Linea tratteggiata (----) indica operazioni di C.P.U. Linea punteggiata (....) indica tempo di I/O Vediamo 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 l'esecuzione 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:
  • 49. Esempio 2 multiprogrammazione (due programmi) con TIME-SLICE Il 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.
  • 50. 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
  • 51. PROCESSO : elenco finito di istruzioni eseguite in sequenza + dati che vengono elaborati da queste istruzioni DIFFERENZA TRA PROCESSO E PROGRAMMA : il processo evolve nel tempo, il programma no il processo è sequenziale, mentre il programma può avere salti e cicli. Si chiama processore l’oggetto che causa l’evoluzione di un processo.
  • 52. FUNZIONI DEL SISTEMA OPERATIVO SISTEMA OPERATIVO: è l'insieme 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).
  • 53. In un sistema in multiprogrammazione è questo il compito principale: servire le code di programmi. Altre funzioni: 2) PROTEGGERE L'AREA SU CUI E' MEMORIZZATO IL SISTEMA OPERATIVO 3) 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 L'USO DELLE RISORSE si prevedono macrocomandi che vengono poi gestiti dal sistema operativo. 
  • 54. 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.
  • 55. Esempio: esecuzione di una ricetta  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
  • 56. 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
  • 57. ORGANIZZAZIONE DI UN SISTEMA IN MULTIPROGRAMMAZIONE Il 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 l'esecuzione e in un certo istante ogni processo si può trovare in uno dei seguenti stati:
  • 58. 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.
  • 59. parcheggio pronto esecuzione attesa terminazio ne
  • 60. 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/O Nel 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.
  • 61. TEMPO PROGRAMMA A PROGRAMMA B Lancio submit/parcheggio/pronto Submit/parcheggio 0 Esecuzione pronto 1 attesa (I/O) esecuzione 2 Pronto attesa (I/O) 3 Esecuzione pronto 4 attesa (I/O) esecuzione 5 Pronto attesa (I/O) 6 Esecuzione pronto 7 Terminazione esecuzione 8 Terminazione
  • 62. TEMPO PROGRAMMA A PROGRAMMA B PROGRAMMA C Lancio submit/parcheggio pronto submit/parcheggio submit/parcheggio 0 Esecuzione pronto Pronto 1 attesa (I/O) attesa (I/O) Esecuzione 2 attesa (I/O) esecuzione Pronto 3 Esecuzione pronto Pronto 4 attesa (I/O) esecuzione Pronto 5 attesa (I/O) attesa (I/O) Esecuzione 6 attesa (I/O) attesa (I/O) attesa (I/O) 7 Terminazione attesa (I/O) attesa (I/O) 8 Esecuzione Pronto 9 Terminazione Esecuzione 10 attesa (I/O) 11 Terminazione
  • 63. 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
  • 64. Tipi di interrupt  Rilevazione malfunzionamento hardware  Fine del quanto di tempo  Arrivo di dati in input  Rilevazione di segnali da sensori  Rilevazione di errori software Ogni interruzione ha la sua priorita’, cosi’ il processo che la gestisce puo’ interrompere solo processi con priorita’ inferiore
  • 65. 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
  • 66. 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  …
  • 67. 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
  • 68. 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
  • 69. Processi indipendenti o concorrenti  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)
  • 70. 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
  • 71. 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
  • 72. 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
  • 73. NUCLEO =kernel parte del s.o. più vicina alla macchina, dipende strettamente dall’hardware Funzioni:  Avvio e terminazione processi  Assegnazione CPU ai vari processi  Sincronizzazione tra i processi  Sincronizz processi con ambiente esterno
  • 74. Misure  Cpu activity % = (tempoutente+ temposistema)* 100/tempototale  Throughput(produttività) = tempoutente/tempototale = numeroistruzioni/tempo Turnaround time =tempo da quando processo parte fino a quando termina = tempoterminaz – tempoavvio Waiting time = tempo in stato di attesa Response time = tempo in pronto prima di avere cpu
  • 75. NUCLEO  Politiche di scheduling : regole per l’assegnazione della CPU ai vari processi Semplice : round robin (coda) Oppure priorità dei processi Scheduling gestore dei processi = processo con priorità massima Preemption : processo più alto interrompe processi più bassi in esecuz
  • 76. 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
  • 77. 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
  • 78. 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
  • 79. 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
  • 80. I SISTEMI INTERATTIVI SISTEMA DI TIPO INTERATTIVO: si accetta la richiesta di un solo lavoro da ciascun terminale. (Si prevede un "dialogo diretto" tra il sistema e l'utente; avviene un vero e proprio colloquio). L'utente ha l'impressione 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.  
  • 81. 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.
  • 82. Gestione della memoria centrale  Criteri per allocare la memoria centrale tra piu’ entita’ che la richiedono:  SO  Processi  Buffer di I/O  … 82
  • 83. LA GESTIONE DELLA MEMORIA CENTRALE La 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é l'elaborazione 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 l'unità 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).
  • 84. 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.
  • 85. Al termine dell'elaborazione 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 all'unico utente. 
  • 86. MEMORIA CENTRALE Sistema Operativo Parte della memoria centrale occupata dal Sistema Operativo il rimanente" è tutto quello che resta all'utente per il proprio programma e i dati (E' chiaro che se l'utente richiede l'esecuzione di un programma le cui dimensioni vanno oltre lo spazio utilizzabile; allora il Sistema Operativo segnalerà il "disguido" e si rifiuterà di fare l'esecuzione).
  • 87. 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 all'utente per il proprio programma e i dati Processo 3
  • 88. GESTIONE DELLE ALLOCAZIONI PER PARTIZIONI Il 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.
  • 89. 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 l'inconveniente è 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ì l'esecuzione 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.
  • 90. 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. 
  • 91. 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ì un'unica 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.
  • 92. MC 500 K SO 200K Esempio partizione statica : 3 blocchi da 100K carico al max 3 programmi Esempio Partizione dinamica : 300K disponibili PG1 30 K, PG2 50K, PG3 120K, PG4 80K, PG 5 60K Posso caricare i primi 4 e il 5° attende
  • 93. GESTIONE DELLA MEMORIA PER PAGINE o PAGINAZIONE La 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.
  • 94. 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.
  • 95. 0 pag blocchi S O 0 80K 4K 0 3 b 1 1 7 2 3 PROG1 4 5 0 4K 0 1 6 8K 1 5 7 12K 2 8 8 3 11 9 PROG2 10 11 0 12 4K 0 4 13 8K 1 6 14 2 12 15 PROG3 pagine logiche tabella di mappa memoria centrale
  • 96. 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 pagina Ad 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 quindi 7 * 4096 = 28672 = 28K So 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 pagina 108K + 1K = 109K che è l’indirizzo cercato.
  • 97. 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.
  • 98. GESTIONE DELLA MEMORIA PER SEGMENTI o SEGMENTAZIONE Si 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.
  • 99.  Main  Sottoprog 1  Sottoprog 2
  • 100.  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.