Estratto del documento

Sistemi operativi anno II – CdL Informatica

Ottobre – Dicembre 2016

Introduzione ai sistemi di elaborazione

La capacità di comprendere le funzionalità di un sistema operativo è subordinata alla conoscenza dell'organizzazione di un sistema di elaborazione.

Un computer o un sistema di elaborazione è costituito dai seguenti moduli funzionali:

  • Processore: controlla le operazioni del computer, quando questo è unico, spesso viene chiamato CPU;
  • Memoria centrale: memorizza dati e programmi, è tipicamente volatile;
  • Moduli di I/O: trasferiscono i dati fra il computer e il suo ambiente esterno;
  • I BUS: strutture e meccanismi che provvedono alla comunicazione tra processori, memoria centrale, moduli di I/O...;
  • Device esterni: non essenziali, ma utili.

Il processore

Il processore è uno dei componenti esecutivi di un sistema di elaborazione, si occupa di recuperare le istruzioni dalla memoria e di eseguirle.

Il ciclo di azioni base eseguite da una CPU è costituito da:

  • Recupero delle istruzioni dalla memoria;
  • Decodifica per determinare quale tipo di operatori sono presenti nell'istruzione e quali operandi sono necessari;
  • Esecuzione.

Le fasi principali per la valutazione di un'istruzione sono:

  • Fetch (lettura): acquisizione di un'istruzione dalla memoria;
  • Decode (decodifica): decodifica delle istruzioni riconosciute dal processore;
  • Execute (esecuzione): esecuzione delle informazioni incluso il caricamento degli operatori dalla memoria;
  • Memoring (memorizzazione): memorizzazione dei dati in memoria.

NOTA: Ogni CPU è in grado di eseguire uno specifico insieme di istruzioni, quindi l'ipotetico processore A non può eseguire un programma codificato per un altro ipotetico processore B e viceversa.

Registri principali di un processore

  • PC (Program Counter): contiene l'indirizzo di memoria della prossima istruzione da eseguire (fetch);
  • IR (Instruction Register): contiene l'ultima istruzione acquisita dalla memoria;
  • MAR (Memory Address Register): contiene l'indirizzo della memoria per la prossima operazione di lettura;
  • MDR (Memory Data Register): contiene i dati che devono essere letti o scritti in memoria;
  • PSW (Program Status Word): contiene informazioni sullo stato di un processo, come il bit per l'abilitazione o la disabilitazione degli interrupt e il bit per la selezione del modo supervisore/utente;
  • SP (Stack Pointer): contiene l'indirizzo alla cima dello stack corrente di memoria. Tale stack è una struttura (frame) ed è generalmente utilizzata per conservare procedure iniziate ma non terminate. Ogni frame contiene i parametri di ingresso e di uscita della procedura, le variabili locali e le variabili temporanee NON presenti nei registri.

Descrizione delle fasi principali per l'esecuzione di un'istruzione

Fase di FETCH

Componenti interessati: MAR, MDR, IR, Memoria;

Descrizione:

  • L'unità di controllo scrive l'indirizzo dell'istruzione da eseguire nel registro MAR, successivamente viene scritta ed inviata l'istruzione 'LEGGI' sul BUS Unità Centrale – Memoria;
  • La Memoria seleziona la cella contenente l'istruzione e inserisce il contenuto nel MDR;
  • L'Unità Centrale legge l'istruzione dal MDR e la memoria nel registro IR.

Fase di DECODE

Componenti interessati: PC, IR;

Descrizione:

  • L'unità di controllo incrementa il contenuto di PC affinché esso identifichi la successiva istruzione da eseguire;
  • L'unità di controllo esamina l'istruzione presente nel registro IR e determina le operazioni da svolgere.

Fase di EXECUTE

Componenti interessati: Registri, Memoria, Device;

Descrizione:

  • Le unità interessate (Device) vengono opportunamente comandate, prelevando eventuali operandi dalla memoria e trasferendoli negli opportuni registri.

La memoria

La memoria centrale è la seconda componente essenziale di un elaboratore, essa rappresenta l'unica area di memoria di grandi dimensioni direttamente accessibile dalla CPU. Essa è strutturata come un vettore di parole o byte di dimensione variabile. Ciascuna parola possiede un proprio indirizzo. L'interazione tra CPU e Memoria avviene per mezzo di una sequenza di istruzioni Load e Store opportunamente indirizzate.

Problematiche:

  • Identificazione delle parti di memoria libere e/o occupate;
  • Distribuzione della memoria ai processi;
  • Memoria reale/virtuale.

La memoria ideale dovrebbe essere estremamente veloce*, abbondante e a bassissimo costo. *più veloce dell'esecuzione di un'istruzione, in modo che la CPU non sia rallentata dalla memoria.

Sulla memoria di massa

La memoria di massa è un componente informatico in grado di contenere tutti i programmi che possono servire all'utente insieme ai propri dati ed, inoltre, essere in grado di mantenere i dati per un tempo indefinito anche in assenza di elettricità. Il tempo di accesso alle memorie di massa è quasi tre ordini di grandezza più lungo delle memorie centrali. I principali dispositivi per realizzare le memorie di massa sono basati su tecnologia magnetica e ottica o Stato Solido. La memoria di massa può avere capacità che varia da pochi MEGA/GIGAbyte a YOTTAbyte. Il suo accesso può essere sequenziale (nastri magnetici) o ad accesso diretto (dischi magnetici/ottici o SSD).

Esempio di memoria di massa - Dischi magnetici

  • Un disco magnetico è costituito da un insieme di piatti con due superfici che ruotano attorno ad un perno centrale con una velocità di rotazione pari a 5400, 7200 o 10800 rpm;
  • Ogni superficie è dotata di una testina di lettura/scrittura;
  • Le superfici sono organizzate in cerchi concentrici detti tracce e in spicchi di uguale grandezza detti settori;
  • Tutte le tracce equidistanti dal centro, poste su piatti diversi, formano una superficie detta cilindro;
  • I dati sono scritti occupando posizioni successive lungo le tracce.

Alcune memorie particolari

  • ROM (Read Only Memory): la sua natura statica la rende inalterabile ed è quindi denominata memoria non volatile. Generalmente il suo contenuto non è modificabile dall'utente ed è programmato dalla casa produttrice.
  • EEPROM: (Electrically Erasable Programmable Rom), anche esse memorie non volatili come le ROM ma, al contrario, di esse possono essere cancellate e riscritte.
  • Memoria volatile: è utilizzata da molti elaboratori per memorizzare ora e data corrente, ed altre informazioni essenziali per la configurazione dell'elaboratore.
  • CMOS: La CMOS, ed il circuito che in essa incrementa il tempo, sono alimentati da una piccola batteria o accumulatore in modo che l'ora sia aggiornata correttamente anche quando l'elaboratore è scollegato dalla rete elettrica. Quando la batteria si scarica, l'elaboratore assume comportamenti simili a crisi epilettiche.

Esempio d'uso della memoria per contenere due o più programmi

Per tenere due o più programmi contemporaneamente nella memoria centrale occorre risolvere due problemi:

  • Come proteggere i programmi l'uno dall'altro ed il kernel del S.O. dai programmi;
  • Come gestire le rilocazioni.

Il problema della rilocazione risolve il problema dell'indirizzamento del codice e dei dati.

Esempio: supponiamo di avere un programma compilato e linkato con indirizzo della prima istruzione pari a zero, l'istruzione in posizione 0 fa riferimento ad un indirizzo in posizione 10000, supponiamo inoltre che tutto il programma e i dati siano caricati a partire dalla posizione 50000; ne segue che quando il programma sarà posto in run, esso andrà in errore poiché farà riferimento a un indirizzo non appartenente al programma.

La soluzione a tale problema viene data dalla tecnica della rilocazione e dall'uso di due registri: registro base e registro limite.

Controllo e corrispondenza

Il controllo e la corrispondenza sono la conversione dell'indirizzo generato dal programma, chiamato indirizzo virtuale/logico, all'indirizzo della memoria indirizzo fisico.

MMU (Memory Management Unit) è il dispositivo che effettua il controllo e la corrispondenza degli indirizzi.

Considerazione: considerati i registri contenenti sia i riferimenti a programmi sia ai relativi dati, ogni volta che si deve caricare un programma in memoria è necessario modificare tali registri e questo implica un dispendio di tempo. Quindi, assegnare la CPU a un processo è un'azione estremamente costosa.

Dispositivi di I/O

I dispositivi di I/O generalmente sono composti da due parti: un controllore e il dispositivo stesso.

Il controllore

  • È un chip o un insieme di chip;
  • Controlla fisicamente il dispositivo;
  • Accetta i comandi dal S.O. e li esegue.

Esempio – Controllore di un disco

Il controllore di un disco può ricevere il comando di leggere l'informazione posta nell'indirizzo 13450, esso deve convertire tale numero in una posizione di memoria fisica identificata da: cilindro, settore e testina. Un'ulteriore complicazione deriva dal fatto che i cilindri esterni hanno più settori di quelli interni, inoltre è possibile trovare settori o cilindri danneggiati.

Complicazioni dal punto di vista meccanico: si deve ruotare il disco, muovere il braccetto delle testine dopo averlo individuato e, infine, raggiunta la posizione, leggere i bit presenti sulla superficie magnetica, assemblarli in parole, effettuare un controllo d'errore e, quindi, inviarli al richiedente. Per svolgere tali compiti, spesso, i controllori contengono piccoli elaboratori embedded.

  • Ogni controllore di dispositivo è diverso da un altro, ognuno di essi ha un proprio software per la gestione e, quindi, deve essere installato nel S.O;
  • Il software che gestisce il controllore del dispositivo di I/O è comunemente chiamato device driver (DRIVER), ed è fornito dal costruttore del dispositivo ed è dipendente dal S.O.;
  • In generale un driver di dispositivo deve essere caricato in modalità Kernel;

Esistono 3 modi per caricare un driver nel kernel

  • Effettuare nuovamente i link del kernel e riavviare il sistema;
  • Effettuare la registrazione del driver in un file di sistema dichiarando che vi è necessità di un driver, quindi riavviare il sistema. Al momento del boot il sistema cercherà i driver e li carica;
  • Effettuare il caricamento dei driver durante l'esecuzione e installarli al volo senza riavviare il sistema (es. USB o IEEE1394).

Attività di ingresso/uscita

Le strategie per le attività di ingresso/uscita possono riassumersi in tre modi diversi: busy waiting, interrupt, DMA.

Busy Waiting

  • Un programma utente effettua una chiamata di sistema per un dispositivo;
  • Il sistema (kernel) la traduce in una chiamata alla procedura del driver appropriato;
  • Il driver darà il via all'operazione e, al termine, restituisce i dati al kernel;
  • Il kernel restituisce il controllo al programma chiamante.

Difetto: ha lo svantaggio di tenere occupata la CPU fin quando l'operazione non è terminata.

Interrupt

  • Il driver fa partire il dispositivo;
  • Il S.O. blocca il programma chiamante;
  • Quando il dispositivo ha finito il suo compito, manda un interrupt al driver;
  • Quindi il controllore rileva la fine di un trasferimento dati e lo segnala al S.O. attraverso un interrupt.

DMA (Direct Memory Access)

  • Uso di un chip speciale per le operazioni di Input/Output;
  • Controlla il flusso dei dati tra le memorie e i controllori di dispositivi senza l'uso della CPU;
  • La CPU avvia il DMA specificando: quanti bit devono essere trasferiti, il dispositivo interessato, gli indirizzi di memoria coinvolti,....
  • Al termine dell'esecuzione il DMA genera un interrupt per catturare l'attenzione della CPU.

I Bus

Un BUS può essere definito come un insieme di 'connessioni', è supportato da un protocollo di trasmissione rigorosamente definito che specifica i tipi di dati che si possono inviare attraverso le connessioni. In termini elettronici, i messaggi sono inviati tramite configurazioni di livelli di tensione elettrica applicati a 'fili' con una predeterminata scansione temporale. Sono presenti almeno 8 bus: Cache, Memoria, Locale, PCI, SCSI, USB, IDE, ISA.

Caratteristiche di alcuni BUS

  • ISA (Industry Standard Architecture), IBM, lavora a 8,33 MHz e può trasferire 2 byte per volta, velocità massima 16,67 Mb/s;
  • PCI (Peripheral Component Interconnect), INTEL, 66-133 MHz, 8 byte/volta, 528-1064 MB/s;
  • IDE: Serve per il collegamento di periferiche come dischi e CD-ROM al sistema;
  • SCSI (Small Computer System Interface): bus ad alte prestazioni per dischi veloci, scanner e altri dispositivi che necessitano di una notevole larghezza di banda; lavora fino a 640 MB/sec a seconda della tipologia;
  • USB (Universal Serial Bus): per collegare al calcolatore dispositivi di I/O lenti. La versione 3.0 raggiunge una velocità di 4.8 Gbit/sec;
  • IEEE 1394: detto anche FireWire (Apple), seriale come USB, ma progettato per trasferimento a pacchetto alla velocità massima di 780 Mb/s.

Introduzione ai sistemi operativi

Definire un S.O. con esattezza è abbastanza difficile e questo è dovuto al fatto che il S.O. realizza due funzionalità che sono scorrelate:

  • S.O. come macchina estesa;
  • S.O. come gestore delle risorse.

S.O. come macchina estesa

Il S.O. nasconde al programmatore la verità sull'hardware; esso presenta una semplice interfaccia con cui lavorare per astrazione. Il S.O. cela una serie di azioni che riguardano: l'interruzione, i timer, la gestione delle memorie ed altre problematiche di basso livello. In questo senso la funzionalità del S.O. è quella di presentare all'utente una macchina estesa o macchina virtuale che sia più facile da programmare rispetto all'hardware sottostante.

S.O. come gestore delle risorse

Il S.O. come gestore delle risorse è visto come entità il cui compito è quello di fornire all'utente una comoda interfaccia per controllare e gestire tutte le componenti di un sistema complesso e, inoltre, assegnare le competenze per la gestione dell'allocazione delle risorse a specifici programmi.

Esempio: 3 programmi necessitano di usare una stessa stampante senza utilizzo del gestore delle risorse. La gestione delle risorse comporta la loro condivisione sotto 2 aspetti: rispetto al tempo e rispetto allo spazio.

  • Rispetto al tempo: programmi e utenti diversi fanno a turno per usarla (e.g. assegnazione del processore ai programmi presenti in memoria);
  • Rispetto allo spazio: ad ogni programma sarà assegnata una parte della risorsa (e.g. assegnazione della memoria ai programmi).

Cenni storici

I S.O. si sono evoluti drasticamente nel corso degli anni e la loro evoluzione è stata sempre fortemente dipendente dal sistema di elaborazione su cui erano installati.

Prima generazione (1945-1955)

Dopo i tentativi di Babbage alla fine del 1800 per realizzare la macchina analitica, si è dovuto aspettare la metà degli anni '40 per riuscire a realizzare macchine da calcolo (Aiken, Von Neumann, Zuse). Erano macchine enormi che riempivano intere stanze e milioni di volte più lente del più scarso PC attuale. Non c'era un linguaggio di programmazione così come lo conosciamo oggi e la programmazione avveniva tramite delle schede o spinotti e l'elaborazione durava molte ore, a meno che non si bruciasse qualche valvola.

Seconda generazione (1955-1965)

L'introduzione dei transistor durante la metà degli anni '50 cambiò radicalmente l'impatto degli elaboratori con la società. I calcolatori divennero abbastanza affidabili da poter essere costruiti e venduti: presero il nome di MAINFRAME.

Sui Mainframe:

  • Dov'erano sistemati?
  • Erano tenuti in grosse sale macchine e al loro funzionamento erano assegnati gruppi di operatori specializzati.
  • Quanto costavano?
  • Il loro costo si aggirava intorno a svariati milioni di dollari e poteva essere sostenuto solo da grosse compagnie (e.g. università, agenzie di governo);
  • Come si utilizzavano?
  • Per fare girare un 'job' il programmatore doveva prima scrivere il programma su carta, successivamente doveva essere trascritto su schede perforate ed, infine, portato dall'operatore preposto per il suo caricamento sull'elaboratore;
  • Miglioramento dei tempi di elaborazione:
  • Per migliorare i tempi di elaborazione si adottò la strategia dei sistemi batch: i Job venivano caricati in dei nastri magnetici, con degli elaboratori meno costosi e specializzati, questi venivano dati in pasto all'elaboratore per la produzione dei dati di output che venivano caricati su di un altro nastro.

Si cominciano a intravedere i primi SO tra cui Fortran Monitor System e IBSYS per IBM 7094

Terza generazione (1965-1980)

In questo periodo le grandi case costruttrici avevano due linee di produzione, una orientata ai grossi elaboratori e l'altra alle piccole macchine. Questa dualità rendeva costosa la produzione delle stesse e quindi l'IBM tentò di risolvere il problema: realizzò un insieme di macchine simili tra loro (SYSTEM 360), dove le caratteristiche di SO e di interoperabilità erano rispettate (in teoria lo stesso programma funzionava sia sulle macchine piccole che in quel...

Anteprima
Vedrai una selezione di 27 pagine su 128
Sintesi del Corso di Sistemi Operativi Pag. 1 Sintesi del Corso di Sistemi Operativi Pag. 2
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 6
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 11
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 16
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 21
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 26
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 31
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 36
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 41
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 46
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 51
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 56
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 61
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 66
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 71
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 76
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 81
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 86
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 91
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 96
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 101
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 106
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 111
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 116
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 121
Anteprima di 27 pagg. su 128.
Scarica il documento per vederlo tutto.
Sintesi del Corso di Sistemi Operativi Pag. 126
1 su 128
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher astrex di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Palermo o del prof Tegolo Domenico.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community