DANIELELE
Erectus
41 min. di lettura
Vota 4 / 5

Concetti Chiave

  • I sistemi operativi gestiscono le risorse del PC, permettendo l'interazione tra hardware e software attraverso interfacce utente e gestori di risorse.
  • Esistono diverse tipologie di sistemi operativi, come quelli transazionali per grandi archivi e quelli real-time che garantiscono risposte immediate.
  • La multiprogrammazione e il time sharing ottimizzano l'uso della CPU, permettendo l'esecuzione simultanea di più programmi senza necessità di più CPU.
  • La gestione della memoria può avvenire tramite partizioni fisse o variabili, paginazione e segmentazione per ottimizzare l'uso delle risorse fisiche e virtuali.
  • I sistemi operativi utilizzano strutture modulari e gerarchie di macchine virtuali per gestire operazioni e risorse, con moduli come il nucleo, il gestore della memoria e il file system.
Sistema operativo, macchina virtuale, gestore periferiche

Sistema operativo
Insieme di programmi che attraverso l’interfaccia per l’utente e il gestore delle risorse mette a disposizione i dispositivi del PC e le loro funzionalità all’utente.

Punto di vista della macchina
Sistemi monogrammati: CPU - riceve da un solo programma utente un codice che viene eseguito dalla CPU che esegue le istruzioni del programma una per volta. Il registro contatore di programma provvede a segnalare l’istruzione da eseguire.
Con l’uso di dispositivi tipo periferiche interviene il supervisor call che sospende temporaneamente il programma utente ,salvando in memoria centrale le informazioni che consentono il corretto riavvio, e viene attivato il processo del sistema operativo per accedere alla periferica. Quando il programma utente termina la memoria centrale accoglie un nuovo programma
Le fasi della CPU si dividono in esecuzione delle istruzioni programma utente, esecuzioni delle istruzioni del SO, e il tempo di inattività in attesa di un nuovo programma.
- Il primo (tempo utente) può essere più grande rispetto agli altri perchè la CPU è molto veloce;
- il secondo (tempo inattivo) la CPU potrebbe eseguire istruzioni di altri programmi visto che non sta facendo nulla;
- il terzo (tempo totale) la macchina non è disponibile per gli altri utenti.
Sistemi multigrammati - questi sistemi cercano di sfruttare i tempi morti(tempi inattivi) della CPU per eseguire altri programma di utenti diversi, x fare ciò devono essere create le routine in grado di 1 decidere quale delle istruzioni sia quella da eseguire e da quale programma prelevarla, 2 proteggere i vari programmi in modo che non interferiscano tra loro, 3 risolvere problemi di coda per assegnazione di una stessa risorsa (stampante).
L’obbiettivo è di raggiungere in minimo inutilizzo della CPU, ovviamente non tutta la cpu può essere utilizzata dai prog utente, una parte deve essere lasciata al SO altrimenti si ha il sistem overhead (sovraccarico da parte del SO).
UNA RISORSA viene gestita in time sharing (TS), cioè sezionando l’utilizzo di questa con una fetta di tempo per ogni programma(in ogni fetta di tempo una parte è del SO per i controlli, la scrittura e la rassegnazione), questo rende possibile la multiprogrammazione con + utenti senza necessità di + CPU. Quando questa risorsa viene gestita in TS solitamente viene divisa in molte risorse simili ma con prestazioni inferiori.

Il punto di vista dell'utente
Sistemi dedicati - utilizzati da un solo utente alla volta, con utilizzo del multi tasking dove + programmi vengono eseguite contemporaneamente, se un task o programma può essere scomposto allora si può parlare di multi threading che rispetto alla multi tasking ha un + elevato sistema di protezione dai programmi.
Nei sistemi dedicati si hanno dei dll (dynamic link library) che contengono le procedure condivise tra + programmi.
Sistemi Batch - l’utente non interagisce con la macchina durante l’esecuzione dei programmi, infatti esso deve preparare tutto il lavoro che la macchina deve svolgere, fornendo inizialmente tutti i comandi necessari all’elaborazione(schede perforate o nastri), il vantaggio dei S batch è quello dello sfruttamento delle risorse anche in assenza dell’operatore, che una volta iniziato il processo non è + necessario, questo diminuisce l’attesa di operaz di I/O aumentando l’efficienza del sistema.
Le operazioni eseguite vengono spostate in memorie di massa dall'elaborazione di canale, così mentre le risorse vengono spostate la cpu può eseguire le operazioni seguenti.
Per lo spostamento tra sorgente e destinazione(con velocità differenti di ricezione) i dati passano per un area buffer poi li redistribuisce alla giusta velocità
Il termine Batch viene usato anche genericamente per raggruppare tutti quei programmi che devono essere eseguiti uno dopo l’altro, nel SO DOS si possono scrive righe di codice che eseguono i comandi.
Sistemi interattivi multiutente - hanno come obbiettivo di mettere a disposizione di + utenti una periferica in modo simile hai sistemi batch. Per fare ciò ad ogni utente viene assegnata la CPU in time sharing, inoltre occorre garantire la sicurezza dei programmi eseguiti e della gestione delle risorse. PER fare ciò occorre valutare la velocità della CPU in MIPS(milioni di istruzioni per secondo) e la dimensione della memoria centrare che deve contenere oltre ai moduli del SO i processi degli utenti e quelli dei dati su cui operare.

I sistemi iperativi
I sistemi operativi si dividono in:
1. Sistemi transazionali - strutturati per la gestione di transazioni, cioè per operazioni di updating di archivi e basi di dati di dimensioni molto grandi (bancomat, borsa);
2. sistemi real time - rispondono all’istante agli stimoli esterni, in questi sistemi un operazione puoòconsiderasi corretta non solo quando fornisce risultati esatti, ma quando li fornisce in tempo (sistema controllo volo aereo).
Per quanto riguarda la gestione dei dispositivi, troviamo:
- S.O. proprietari - funzionanti solo con alcuni dispositivi solitamente stessa marca (ibm);
- S.O. aperti - utilizzano qualunque tipo di dispositivo attraverso l’uso di vari driver. Questi driver possono essere contenuti nel SO , e attraverso dispositivi plug and play vengono richiesti dai dispositivi.

Plug'n play
Ogni SO deve poter essere ampliato e personalizzato in base alla macchina sui cui è stato installato. Il SO deve essere in grado di accedere anche a dispositivi che non sono previsti inizialmente, basta che siano forniti del device driver. I dispositivi realizzati in plug n’play parlano con il sistema in modo da farsi riconoscere e richiedere l’istallazione giusta dei driver.

Driver
Un driver specifico si ha sia dal punto di vista dell’hardware che pilota sia dal punto di vista del sistema operativo. scritto solitamente dal produttore del dispositivo o da terzi sulla base della documentazione tecnica del produttore. Molti dispositivi vengono costruiti seguendo alcuni standard ;-persona computer compatibili IBM;-cpu compatibili INTEL;-periferiche SCSI ecc.
Un sistema opera anche se ottimo avrà poco pubblico se non rilascia gli opportuni driver e le specifiche del prodotto.
Nei so come linux il driver è compilato insieme al kernel. Il kernel supporta moltissime periferiche in modo nativo, quindi la maggior parte dell’hardware viene riconosciuta all’istante.
Nei so come windows il driver viene caricato dinamicamente dal kernel, in questo modo è possibile aggiungere una nuova periferica e il kernel deve solo caricare il file del driver che ritiene più opportuno.
La struttura di un sistema operativo è gerarchica:questo significa che i programmi che lo compongono si collocano a livelli diversi, si servono di programmi che stanno a livelli sottostanti e servono i programmi dei livelli superiori. Possiamo pensare all’insieme dei dispositivi fisici che costituiscono il calcolatore come a un livello zero, e all’utente come al livello più alto. Il so contiene i livelli tra zero e un livello molto vicino all’utente.
Le richieste dell’utente vengono acquisite dal modulo che le trasforma in modo da essere compreso anche ai livelli inferiori. Ogni procedura standard per mezzo della quale il modulo mette a disposizione i servizi è detta primitiva.
Un modulo è una collezione di routine che attiva i meccanismi fisici necessari per risolvere i problemi logici di uno stesso tipo(operazioni ingresso o uscita).
Un sistema operativo costruito con criteri di modularità diversi può essere usato su macchine diverse sostituendo i soli moduli che operano sull’hardware, mantenendo lo stesso insieme di primitive.
I moduli appartenenti ai lv più bassi della gerarchia virtualizzano i dispositivi, questi diventano macchine virtuali in grado di eseguire operazioni complesse come se fossero elementari.
Una macchina virtuale è un oggetto costituito da una macchina più semplice, in grado di eseguire un certo insieme di operazioni fisiche, e da un modulo che da un’interpretazione logica di queste operazioni. L’insieme costituisce una macchina in grado di eseguire operazioni logiche.
Il sistema operativo genera una gerarchia di macchine virtuale che sono in grado di:-risolvere il problema dell’utilizzo delle risorse da parte dei moduli di livello superiore, rendendo accessibili le capacità della macchina di livello più basso grazie un insieme di comandi; moltiplica il numero dei dispositivi disponibili.
Ogni strato costituisce un modulo, che è composto da programmi che vedono solo le procedure implementate dagli strati sottostanti, attraverso le primitive che mettono a disposizione. Le primitive possono essere indicate solo dai moduli di lv superiore.

Modello macchine virtuali
Lo stato più interno è il nucleo che contiene le routines per la gestione del processore centrale ed i programmi di risposta alle interruzioni. Dopo il nucleo troviamo il gestore della memoria che contiene le routines che operano sugli indirizzi fisici della mem centr. Superato il gest della memoria troviamo il gestore delle periferiche che contiene routines per la gestione delle periferiche. Dopo ce il file system che rende invisibili all’utente le problematiche relative alla locazione dei files su mem di massa. Per ultimo ce la shell che è un programma che riceve in ingresso le richieste di esecuzione di operazioni. Infine i programmi applicativo.

Nucleo
La CPU è un esecutore sequenziale di operazioni quindi costituisce un processore. In ambiente multi programmato la sequenza delle operazioni è costituita da sotto sequenze che sono generate da processi diversi e dalle routine di interruzione. Usando il time sarin delle risorse è possibile vedere la CPU come un insieme di processori virtuali assegnati ai singoli processi e funzionanti a turno.
Il nucleo è la parte del sis ope più vicina alla macchina ed è strettamente dipendente dall’hd. Le sue funzioni sono:-avvio e fine dei programmi;-assegnazione della CPU ai diversi processi, sincroniz tra i processi; sincroniz dei processi con l’esterno.
Il nucleo comprende:-routine di risposta alle interruzioni e le procedure che assegnano la risorsa CPU ai diversi processi.
Le norme che regolano le assegnazioni della CPU ai diversi processi si dicono politiche di schedulino e si dividono in:-round robin;-round robin a più livelli.

Round robin
Se la CPU di un sist multipro viene gestita in time sarin, rimane assegnata ad un programma utente finché il programma utente termina, il prog utente richiede che vengano effettuate operazioni che coinvolgono altri dispositivi o scade il time slice. Il sistema ope deve disporre di un meccanismo automatico che prende il controllo della situazione e verifichi a chi tocca usare la CPU Il programma a cui è stata tolta la CPU viene messo in fondo a una coda di programmi in pronto; quando tutti i programmi finiranno,ripartiranno da dove era arrivato; se uno o più prog risultano essere in attesa di altri eventi, il time slice viene riassegnato ad un programmi successivo. È possibile che un sistema operativo usi meccanismi di priorità che consentono ad alcuni programmi di essere eseguiti più rapidamente come per esempio concedendo un time slice più lungo ai programmi con priorità elevata oppure scegliendo di assegnare più spesso la CPU ai programmi con priorità più altra tra quelli in attesa.

Round robin a più livelli
Ci sono processi con priorità maggiore rispetto agli altri:-scheduler è il gestore dei processi che a sua volta è un processo ed ha la priorità massima; -interrupt handler è il processo che si occupa della gestione delle interruzione e deve avere priorità maggiore rispetto a qualsiasi altro processo. Quelli con priorità 0 hanno la priorità più alta, 1 media e2 bassa.

Sincronizzazione dei processi
Il problema della sincr deriva dalla necessita di condividere le risorse di un sistema di elaborazione. La ripartizione di queste richieste necessita di un coordinamento che assicuri la sequenza corretta delle operazioni. Per evitare interferenza fra i processi, le risorse possono essere assegnate in modo statico, ma ce un problema. Quando un processo molto lungo utilizza la risorsa solo nell’ultima parte, questa risulta inagibile per molto tempo per gli altri processi. Questo problema si risolve assegnano le risorse in modo dinamico.

Interferenza tra i processi
Più i processi interferiscono tra loro quando potrebbero evolvere in modo indipendente se non dovessero usufruire della stessa risorsa. È compito del controllore del traffico garanti che che la risorsa sia assegnata a uno solo dei processi richiedenti e che ognuno di questi lo possa usare(mutua esclusione).
Cooperazione fra processi: due processi cooperano quando sono logicamente interconnessi, cioè quando per evolvere uno dei due deve usare un qualche tipo di risorsa che viene prodotta dall’altro. i problemi di competizione devono essere risolti direttamente dai processi che comunicano tra di loro per mezzo di opportuni messaggi di sincronizzazione. Di conseguenza i programmi associati ai processi dovranno contenere apposite istruzioni per la produzione ed il consumo dei messaggi.

Semafori binari
Nella maggior parte degli schemi di sincronizzazione ogni risorsa è rappresentata da una variabile(semaforo binario). In particolare il semaforo può solo assumere valore 1 quando la risorsa non è disponibile o 0 quando la risorsa è disponibile.

Test and test
Quando un processo necessita di una risorsa, deve controllarne la disponibilità leggendo il valore del semaforo e ne caso in cui la risorsa sia occupata, deve porsi in attesa finché il semaforo non dia il via libera. Per fare queste operazioni si usa il sistema test and test. È una sequenza di istruzioni la cui esecuzione non può mai venire interrotta e che spiega le seguenti funzioni:-esamina il valore del semaforo associata alla risorsa aperta(test) e ne tiene traccia nel registro di stato;-pone a 1 il valore del semaforo(set).
Non può mai essere interrotta. Alla fine del ciclo il valore del semaforo sarà sicuramente 1. all’uscita della test and set, la risorsa risulterà occupata. Una volta utilizzata la risorsa, il processo deve porre nuovamente il semaforo a 0. ogni processo rimane in esecuzione sul proprio processore anche durante la fase di attesa della risorsa, eseguendo di continuo il ciclo test and set con un'altra occupazione del processore.

Wait e signal
È possibile chiedere la gestione della sincronizzazione al controllore del traffico in modo da interrompere l’esecuzione di un processo che richiede una risorsa finché non risulti disponibile. Il processo effettua l’operazione di test and test una sola volte. Se la risorsa è disponibile, viene assegnata al processo e il semaforo impostato ad 1. una volta ultimata l’operazione, il processo che sta usando la risorsa viene messo a 0 il semaforo e chiama una primitiva del SO, il signal che si preoccupa di estrarre dalla coda uno dei processi e di riportarlo allo stato di pronto. Se la risorsa non è disponibile, viene chiamata la primitiva wait che lo pone in stato di attesa con gli altri processi che hanno richiesto la stessa risorsa. Dopo richiamerà lo schedulatore dei processi che assegna il processore ad un nuovo processo. . una volta ultimata l’operazione, il processo che sta usando la risorsa viene messo a 0 il semaforo e chiama una primitiva del SO, il signal che si preoccupa di estrarre dalla coda uno dei processi e di riportarlo allo stato di pronto.

Semafori a contatore e P e V
Le primitive P e V hanno il compito di:-decrementare di 1 il valore del semaforo quando un processo richiede l’uso della risorsa;-incrementare dello stesso valore il semaforo quando la risorsa viene rilasciata;- richiamare le primitive di sincronizzazione wait e signal per garantire una corretta gestione delle code di attesa.

Produttore e consumatore
Un processo produttore deve produrre dei dati che il processo consumatore deve utilizzare man mano che vengono prodotti. Per poter interagire tra loro, i processi devono mettere in comune il buffer. Il consumatore può accedere al buffer quando il prod ha depositato un dato, mentre prod non può depositare un nuovo dato prima che il cons non abbia preso il precedente.

Send e receive
Due processi in interazione possono comunicare direttamente tra loro inviandosi mess di sincro. La gest dei mess viene fatta dalle primitive send e receive. Con la send un processo mittente chiede che il messaggio prodotto venga salvato in un area apposita affinché possa essere letto dai destinatari. Con la receive il processo destinatario andrà a verificarsi se gli è stato inviato qualche mess ed eventualmente lo preleva insieme al nome del processo che lo ha inviato.

Stallo
Quando due processi interagiscono fra loro, l’avanzamento del primo dipende da quello degli altri. In una situazione di questo tipo può verificarsi il caso che due processi non possono mai avanzare perché in attesa ciascuno di un messaggio che viene generato dall’altro. esempio: Supponiamo che un processo A richieda ed ottenga una risorsa R e la possa rilasciare solo dopo aver ottenuto una seconda risorsa K. Contemporaneamente un secondo processo B richiede ed ottiene la risorsa K e la può rilasciare solo dopo aver ottenuto la risorsa R.
Se tempi di utilizzo delle risorse da parte dei due processi non sono stati ben calcolati, si può verificare la seguente sequenza di eventi:-A richiede e non ottiene l’uso di K e viene messo in attesa senza che pero venga rilasciata R;-B richiede e non ottiene l’uso di R e viene posta in attesa senza che venga rilasciata K. I due processi rimangono cosi bloccati all’infinito in attesa di un evento che non accadrà mai.

Gestore della memoria
Il secondo lv simula l’esistenza di una pluralità di unita di memoria centrale ciascuna associata ad uno dei processori virtuali generati dal nucleo, mascherando ai lv successivi la limitazione fisica della memoria centrale reale. La gestione della mem centrale può avvenire con diverse tecniche:-partizioni fisse;-partizioni variabili(best fit, first fit);-paginazione;-segmentazione.

Partizioni fisse
La più semplice da realizzare ma ha due limiti:-numero max dei processi che possono essere messi in memoria è prestabilito;- un blocco contente un processo molto breve viene considerato occupato e quindi lo spazio risulta sprecato. È fondamentale la presenza di una tabella con le info relative a ciascun blocco se sia libero od occupato da qualche programma.

Partizioni variabili
Questa sfrutta meglio la mem centr e prevede un maggior carico di lavoro svolto dal SO. La presenza di spazi di lunghezza variabile in posizioni casuali della memoria fa si che il sistema ope utilizzi tabelle complesse contenti info sulla locazione dei singoli processi sugli spazi liberi a disposizione. La scelta della partizione dove caricare un nuovo programma può essere fatta in 2 modi:-si carica nella prima zona libera sufficientemente grande per contenere il programma, usando il first fit;- si carica nella zona libera più piccola tra quelle adatte a contenere il programma, usando il best fit. Il first fit risulta essere più efficiente del best fit infatti si perde meno tempo usando il primo posto libero e creandolo se non si trova.

Overlay
Fino ad ora si è supposto implicitamente che il caricamento di un programma riguardi tutto il codice, questo pero non è sempre possibile e se anche fosse non può essere necessario. Questo problema viene affrontato con l’overlay. Basta avere in mem centr una porzione per volta di ciascun programma, lasciando il resto in mem di massa. Il disco viene utilizzato per memorizzare le info che dovrebbero risiedere in mem centr. La mem centr virtuale disponibile diventa più grandi in quanto non corrisponde alla memoria fisica. In questo contesto il caricamento di un programma viene realizzato con la locazione della prima porzione e delle infor che riguardano la locazione sui supporti di massa delle porzioni restanti.

Gestione memoria virtuale
Si realizza con due tecniche:
- segmentazione;
- paginazione.
Paginazione: un programma viene diviso in blocchi di uguali dimensioni detti pag logiche. La mem centr viene divisa in pagine fisiche di dimensioni uguali a quelle delle pag logiche. Per ogni pagina bisogna sapere se occupa un pag fisica, se la pag occupata, la posizione sul disco della pag logica, se la pag è stata modificata. Le pagine che contengono il sistema ope e le tabelle non devono mai essere scaricate. Le pagine che contengono il nucleo del sist op restano fissate nella memoria e non vengono mai paginate su disco. Il meccanismo che impedisce di paginare su disco di alcune parti della memoria si chiama pinning.
Segmentazione: prevede la suddivisione del programma sulla base di criteri logici controllati dal programmatore. Ogni blocco risultante dalla suddivisione ha lunghezza arbitraria e viene detto segmento. La mem centrale non viene suddivisa in blocchi statici predefiniti ma viene occupata in base alla necessita dei processi in esecuzione. Presenta alcuni lati negativi:- la ma diventa soggetta a frammentazione;-non è semplice costruire con scaricamenti aree libere di dimensioni assegnate;-le tabelle da mettere per gestire la mem virtuale con i segmenti sono più complesse da usare che nel caso della paginazione. Gli aspetti positivi sono:-possibilità di far condivide a più processi alcuni segmenti di codice mantenendo i dati su segmenti differenti(cod puro);-mancanza di vincoli sul numero di segmenti caricabili in memoria;-le routine di sistema possono essere scritte separando in segmenti distinti le aree contenenti i dati da quelle contententi il cod eseguibile
Segmentazione con paginazione dinamica: è possibile combinare le due tecniche suddividente ciascun segmento:- si aggiunge ai vantaggi della segmentazione la facilita d’uso della memoria paginata;- si ha maggiore complicazione delle routine software per la gestione della mem virtuale e di un aumento di carico di lavoro per il sist op.
In conclusione le operazioni di gestione della mem possono essere realizzate anche a livello di hd per mezzo della memory management unit che aumenta la velocità ma anche il costo del sistema. Questa contiente un’area di memoria con le tabelle di mappatura tra indirizzi logici e fisici e di un diposi logico che esegue controlli sulla presenza delle pag o dei segmenti richiesti cosi da generare un segnale diretto verso la CPU prestazioni migliori sono dovute al fatto che essa contiene circuiti specificamente progettati per l’esecuzione delle operazioni richeise e non richiede un prog che impartisca istruzioni.
Gestore delle periferiche: alcuni dispositivi di I/O che si possono collegare alla unita centrale sono:-video, tavolette grafiche, plotter, stampanti ecc.
Il terzo lv del sistemaema oper consiste di definire dispositivi virtuali secondo dei criteri:-mette a disposizione le capacita delle periferiche nascondendo i reali meccanismi con i quali esse parlano con il processo, grazie a primitive di tipo generale come leggi, scrivi.;-gestirepiùpiù comuni errori che si possono verificare nelle op stesse(errori di trasmissione);-l’utente può utilizzare le periferiche senpreoccuparsirsi delle caratteristiche fisiche e delle operazioni fisiche;- il sistema operativo offre a diversi utenti possibilitàita di aumentare il numero delle periferiche virtuali.

Spooling
È necessario utilizzare lo spooling per utilizzare diversi processi contemporaneamente. Il suo acronimo è: simultaneous peripheral operation on line, cioè sistema in linea di operazioni periferiche simultanee. Esempio è l’ordine di stampa FIFO.

Canali
Il gestore delle periferiche ha anche il compito di sovrintendere alle operazioni dei canali I/O che sono dei processi dedicati. I canali eseguono solo i programmi di I/O detti programmi di canale. Spesso il numero di canali utilizzati all’interno del sistema e molto minore di quello delle periferiche a causa dell’alto costo dell hd. Per effettuare il trasferimento dati dalla memoria ad una periferica, è indispensabile che esista almeno una linea che unisca la memoria alla periferica in modo che questa posso essere assegnata al processore di I/O. per decidere se un percorso può essere assegnata ad un processo di i/O, il controllore del traffico di i/O dovrà verificare lo stato di ogni periferica e di ogni canale.
La CPU e la memoria del dispo input output sono connesse grazie ad un bus. I dispositivi di input output devono essere collegati tramite schede di interfaccia e ai bus non possono essere connessi più controller.
Compiti dispositivi collegati ai bus: devono trasmettere(master) o ricevere(slave). I dispositivi di input output più veloci trasferiscono i dati da e per la memoria centrale con uno specifico controller che opera in modalità DMA che non richiede l’uso della CPU

Periferiche indipendenti
Esempio nel caso delle unità a disco si potrebbe pensare di usare la capacita di effettuare autonomamente il posizionamento della testina per ridurre i tempi di occupazione del canale. Il canale potrebbe essere assegnato alla gestione di operazioni similari su altre periferiche.
Per sincronizzare le operazioni di input output su tutte le periferiche collegate allo stesso canale si usano i segnali di interruzione. Sono dette di interruzione di fine input output, e vengono attivate ogni volta che un dispositivo ha terminato il proprio lavoro. Per esempio se si una una stampante dotate di buffer il canale non deve attendere la fine dell’operazione di stampa di un dato ma potrà trasmettere i dati in sequenza fino al completo riempimento del buffer.

Linee multiple
La presenza di una struttura a linee multiple presenta un notevole vantaggio, cioè quello di utilizzare i dispositivi periferici anche in presenza di un guasto su uno dei canali.

Canali multiplexati
Nel caso delle unita di canale convenzionali le potenzialita delle periferiche indipendenti e bufferizzate non possono essere sfruttare appieno in quanto il processore di canale è in grado di servire un unico programma alla volta. Questi consentono una specie di multiprogrammazione a livello di input output

File system
Il file sistem è il quarto modello a macchine virtuali e:-provvede alla virtualizzazione delle memorie di massa e genera una macchina costituita da una pluralità di dispositivi indipendenti l’uno dall’altro;-consente all'utente programmatore di riferirsi ai file attraverso nomi di identificazione di tipo simbolico senza preoccuparsi degli aspetti riguardanti la gestione del supporto di memoria di massa o della registrazione fisica dei dati su supporto.
Le principali funzioni sono:-gestire in modo ottimale lo spazio disponibile nella memoria di massa per la registrazione richieste dagli utenti;-garantire all’utente l’accesso ai dati contenuti in un file,in modo veloce anche in presenza di richieste allo stesso file da altri utenti;-fornire agli utenti meccanismi di protezione di file a diversi livelli;-rendere disponibili in modo semplice le operazioni di uso comune sui file come la copia, cancellazione ecc.
I più comuni supporti di memoria di massa sono nastri e dischi magnetici, manipolabili dal sistema attraverso dispositivi detti controller che realizzano le operazione di accesso tramite motori e testine magnetiche. - Il disco magnetico è un disco metallico ricoperto di materiale magnetizzabile. Più dischi montati su uno stesso asse sono detti disk pack;-le facce di ogni disco sono suddivise in piste o tracce concentriche a loro volta divise in settori separati da gap e ogni settore può contenere un blocco;- le piste sono a uguale distanza dal centro appartengono ad un cilindro. Un gruppo di settori costituisce un cluster e può essere indirizzato come un’unita logica dal file system.

Directories
Una directory deve:-essere memorizzata anch’essa su disco perché le info che contiene non devono essere perse quando si spegne il sistema;- per essere consultata dal sistema operativo deve essere ricopiata in mem centrale dove viene arricchita con dati riguardanti lo stato dinamico dei file(se sono aperti, se in lettura e quale è stato ultimo record indirizzato);-equivale ad un file, si tratta di dati scritti sul disco in una certa posizione distribuiti in uno o più blocchi simili a quelli che costituiscono il file.

Shell
L'ultimo lv del modello a macchine virtuali è costituito dalla shell, un programma che riceve in ingresso le richieste di esecuzione di operazioni espresse usando il linguaggio comandi. I sistemi più semplici limitano i comandi possibili alle richieste di esecuzione di programmi di sistema o scritti dagli utenti
Ambiente unix: il linguaggio comandi permette la scrittura di veri algoritmi strutturati chiamati script
Ambiente dos: l’interprete comandi si chiama comand.com e contiene un insieme mino di comandi per la gestione del PC. Permette anche di scrivere script

Ambiente Windows
Miglioramento dell’interfaccia utente, cioè delle modalità di interazione tra utente e sist oper.
Gli interpreti tradizionali a riga di comandi sono muniti di un analizzatore sintattico un programma che verifica la correttezza formale delle richieste dell’utente. L’interfaccia più recente presentano sul video un menu di scelte possibili. L’utente non può scegliere la funzione che vuole chiedere al sistema operativo tramite menu a tendina o dal menu pop up. Interfacce grafiche consentono di stabilire un colloquio diretto con il sistema. L’utente può scegliere la funzione desiderata selezionando icone e finestre mediante strumenti di puntamento guidati dal mouse. Il processo di esecuzione dell’interprete comandi viene considerato il processo padre degli altri processi che vengono lanciati nel corso della sessione. In un sistema multitasking è possibile aprire più processi che vengono eseguiti contemporaneamente, ciascuno a sua volta può lanciare l’esecuzione di altri processi seguendo una struttura ad albero la cui radice è costituita dall’interprete dei comandi e i nodi sottostanti dai processi figli.

Processi attivati dal S.O.
Il calcolatore si accende, (bootstrap) occorre caricare il sistema operativo in memoria centrale copiando nei supporti di mem di massa sui quali è permanentemente registrato. A ciò provvede un programma registrato su ROM chiamato ipl che assume il controllo della CPU quando si accende.
Attivazione dei processi:-bootstrap(gestore dei processi, connessione, gestore spool, gestore account);-shutdown
Bootstrap: è il gestore dei processi. Il sistema operativo provvede a caricare i suoi moduli di livello più basso mentre gli altri vengono gestiti da pagine a segmenti. Viene mandata in esecuzione la parte del nucleo che gestisce tutti gli altri processi(gestore processi), questo attiva la fase di inizializzazione del sistema, per il controllo delle risorse disponibili e di attivazione delle linee collegate ai terminali.
Per ogni terminale viene poi attivato un processo di connessione che lo collega logicamente all’unita centrale e fa appire sul video la maschera di identificazione dell’utente. Se i dati forniti risultatno corretti ciascun utente puo usare un ambiente di lavoro per ottenere dal sistema operativo le funzioni necessarie all’applicazione richiesta.
Il processo di inizializzazione lancia anche altri processi:-gestore dellooo spool sulla stampante;-gestore dell’accounting cioè il controllo dei tempi di accesso del sistema da partdegligl utenti.
Shutdown: la procedura di chiusura del sistema deve:-controllare le sessione di lavoro aperte sui vari terminali;-lanciare agli utenti un mess invitandoli a scollegarsi entro il tempo prefissato;-insieme ad essi termina anche il processo di gestione dello spool e dell’accounging.

Programmi di utilità
Sono concepiti per agevolare l'utente nella sua attività di programmazione. A volte l’insieme dei moduli del sis ope e di questi ambienti software viene genericamente indicato con il termine di software di base. Gli ambienti software di sistema comprendo:-editor testi;-traduttori;-gestore maschere per data entry;-gestori delle comunicazioni.

Linee di sviluppo dei S.O.
- Adeguare il software alle prestazioni crescenti dell’hd;
- offrire all’utente un insieme di servizi e di utilità di alto livello;
- evitere che l’eccessivo raffinamento del sist ope l'aumento dei controllori vadano a scapito dell’avanzamento corretto e veloce delavoriri dell’utente.
I sistemi operativi comprendono funzioni per:
- gestione db;
- gestione delle comunicazioni con altre risorse accessibili tramite reti locali.
Le performance non sono l’unico criterio di valutazione di un sist opera.
Uno dei problemi più importanti è la portabilità. Il sistema opera deve essere in grado di garantire la max compatibilità alle applicazioni a prescindere dal tipo di processore. I sistemi operativi basati su microkernel, cioè su un nucleo limitato a una piccola quantità di software al quale aggiungere poi funzioni specializzate e prestazioni diverse a seconda della piattaforma hd.
Uno dei compiti principali dei moderni sistemi operativi è la gestione delle connessioni e degli scambi di info con altri sistema di elaborazione. Importante è la gestione della sicurezza del sistema. La protezione del sistema previene la perdita accidentale dei dati, cancellazioni di dati da utenti non autorizzati, controllo accessi, integrità dati contro errori ecc.

Domande da interrogazione

  1. Qual è il ruolo principale di un sistema operativo?
  2. Un sistema operativo gestisce le risorse del computer e fornisce un'interfaccia utente per accedere ai dispositivi e alle loro funzionalità.

  3. Come funzionano i sistemi multigrammati?
  4. I sistemi multigrammati sfruttano i tempi inattivi della CPU per eseguire programmi di utenti diversi, ottimizzando l'uso delle risorse attraverso il time sharing.

  5. Qual è la differenza tra sistemi dedicati e sistemi batch?
  6. I sistemi dedicati sono utilizzati da un solo utente alla volta con multitasking, mentre i sistemi batch eseguono programmi senza interazione diretta dell'utente, ottimizzando l'uso delle risorse.

  7. Cosa sono i semafori binari e come vengono utilizzati?
  8. I semafori binari sono variabili che indicano la disponibilità di una risorsa, utilizzati per sincronizzare l'accesso alle risorse tra processi diversi.

  9. Qual è la funzione del file system in un sistema operativo?
  10. Il file system virtualizza le memorie di massa, permettendo agli utenti di gestire i file attraverso nomi di identificazione e garantendo l'indipendenza dei dispositivi.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community