Appunti lezioni PDF

Title Appunti lezioni
Author Domenico Monea
Course Ingegneria Informatica
Institution Università della Calabria
Pages 51
File Size 431.4 KB
File Type PDF
Total Downloads 635
Total Views 1,064

Summary

Sistemi OperativiChe cos’è un sistema operativoUn programma che agisce da intermediario tra gli utenti e l’hardware di un computer. Il sistema operativo esegue i programmi utente e aiuta gli utenti a risolvere i loro problemi tramite il computer, rende i computer convenienti da usare, usa l’hardware...


Description

Sistemi Operativi Che cos’è un sistema operativo Un programma che agisce da intermediario tra gli utenti e l’hardware di un computer. Il sistema operativo esegue i programmi utente e aiuta gli utenti a risolvere i loro problemi tramite il computer, rende i computer convenienti da usare, usa l’hardware dei computer in modo efficiente. Inoltre, alloca risorse e gestisce le richieste in conflitto tra loro in modo da garantire un uso efficiente ed equo delle risorse. Il programma sempre in esecuzione è il kernel (o nucleo). Il programma bootstrap è caricato durante l’avvio ed è situato in una ROM o EPROM. Sistemi Mainframe Con i sistemi mainframe si riduce il tempo di trasferimento del controllo tra un programma e l’altro e si occupa del trasferimento automatico del controllo da un programma all’altro (automatic job sequencing), garantendo efficienza. Sistemi Time-Sharing La CPU è assegnata di volta in volta tra diversi programmi (jobs) che sono tenuti in memoria. Un programma caricato in memoria e in esecuzione è detto processo (di elaborazione). Sistemi Paralleli Si hanno i multiprocessori (simmetrico e asimettrico) con connessioni brevi e veloci. Sono sistemi strettamente accoppiati (Tightly coupled systems) dove i processori condividono la memoria e il clock; la comunicazione avviene tramite la memoria condivisa. Hanno prestazioni superiori, sono economici e più affidabili. Sistemi Distribuiti Distribuiscono l’elaborazione tra diversi calcolatori collegati tra loro. Sistemi debolmente accoppiati (Loosely coupled systems) dove ogni processore ha la propria memoria locale e la comunicazione avviene tramite una rete. Non esiste memoria condivisa Multicomputer. Richiedono una rete (LAN o WAN).

Cluster di computer Insieme di macchine convenzionali connesse in rete per costituire un singolo sistema parallelo, ha un’alta affidabilità, un basso costo ed utilizzano dei S.O. ad hoc. Sistemi Real-Time Sistemi con vincoli temporali ben definiti sull’elaborazione e sull’accesso delle risorse. Sono utilizzati per controllare dispositivi in applicazioni dedicate (robot, controllo militare, dati scientifici), hanno degli algoritmi di scheduling specifici. Gestione Interrupt I sistemi operativi sono guidati dagli interrupt. L’interrupt trasferisce il controllo alla routine di servizio ad esso associata mediante il vettore degli interrupt (interrupt vector), il quale contiene gli indirizzi di tutte le routine di servizio. Il sistema operativo conserva lo stato della CPU a seguito di un interrupt memorizzando i valori dei registri e del program counter. Durante la gestione di un interrupt, altri interrupt in arrivo sono disabilitati per evitare la perdita dell’interrupt corrente. Un trap è un interrupt software generato da un errore o da una particolare richiesta dell’utente. Gestione I/O Ogni dispositivo ha un controllore che gestisce insieme alla CPU i dati, che passano nel BUS (Binary Unit System). Metodo sincrono: dopo l’avvio, il controllo ritorna al programma utente solo quando ha finito e rimane lì fino al prossimo interrupt. Viene espulso dalla CPU e va in attesa (wait) e ritorna dopo l’interazione. Metodo asincrono: dopo l’avvio il controllo ritorno subito al programma senza aspettare il completamento del processo. Il programma va in attesa fin quando arriva il segnale della presa in carico dell’I/O (System call). Usa la tabella di stato dei dispositivi che contiene elementi e informazioni per ogni dispositivo che poi magari il sistema operativo modificherà. Direct Memory Access (DMA) Il DMA è usato per dispositivi di I/O capaci di trasmettere dati a velocità vicine a quelle della memoria. Aumenta soltanto le prestazioni di un computer, alleggerendo il lavoro della CPU. Si usa per le gestioni di trasferimento di dati e gestisce gli interrupt intermedi. Per ogni blocco di dati genera un interrupt. La CPU gestisce solo il primo e ultimo interrupt. Caching

Principio importante, realizzato a diversi livelli in un computer (hardware, sistema operativo, software). L’informazione in uso è copiata temporaneamente da memorie più lente a memorie più veloci (cache). La cache è controllata prima per verificare se contiene l’informazione di interesse. Protezione Un sistema operativo deve impedire che il cattivo funzionamento di un programma influenzi la corretta esecuzione del sistema operativo e di altri programmi. ●Funzionamento Dual-Mode ●Protezione dell’I/O ● Protezione della Memoria ● Protezione della CPU. Quando il sistema operativo è in esecuzione in modo monitor può accedere tutte le celle di memoria. Le istruzioni di caricamento e modifica dei registri base e limite vengono eseguite dal sistema operativo in modalità monitor. Funzionamento Dual-Mode Fornisce un supporto hardware per differenziare tra due modalità principali di esecuzione delle operazioni (modo Utente, modo Monitor). Nel modo utente non si possono eseguire istruzioni che possano creare malfunzionamenti. Viene utilizzato il bit di modo(modalità) per indicare il modo corrente (0 monitor e 1 utente). Quando avviene un interrupt o una trap il sistema passa alla modalità Monitor. Le istruzioni privilegiate possono essere eseguite solo nel modo monitor. Protezione I/O Tutte le istruzioni I/O sono privilegiate. Bisogna assicurare che un programma utente non possa ottenere il controllo del computer in modo monitor. Le system call si usano a questo scopo. Protezione della Memoria Occorre proteggere aree di memoria critiche come il vettore delle interruzioni e le routine di servizio degli interrupt. Per proteggere la memoria da usi non corretti si usano due registri per determinare l’intervallo di valori corretto che un programma può accedere: Registro Base (contiene l’indirizzo iniziale della memoria che un programma può accedere) e il Registro Limite (contiene la dimensione dell’intervallo). La memoria al di fuori dell’intervallo è protetta.

Protezione della CPU

È fondamentale che un processo utente non usi indefinitamente la CPU, per questo di usa un timer che si decrementa ad ogni tic del clock quando il timer arriva a 0 viene generato un interrupt, ovviamente viene gestito dal modo monitor. Struttura dei sistemi operativi Gestione dei processi Un processo di elaborazione è un programma in esecuzione. Un processo ha bisogno di un certo numero di risorse per svolgere il suo compito: CPU, memoria, file e dispositivi di I/O. Il sistema operativo è responsabile della: creazione e terminazione dei processi, sospensione e ripristino dei processi, gestione di meccanismi della sincronizzazione, comunicazione e stallo. Gestione della memoria centrale La memoria centrale è costituita da una sequenza di word (unità logica elementare indirizzata dalla memoria, 32 o 64 bit) ognuna con un proprio indirizzo. È uno spazio per conservare dati facilmente accessibile per la CPU e i dispositivi di I/O. Il sistema operativo che si occupa della gestione della memoria principale è responsabile di: tenere traccia di quali parti della memoria sono correntemente usate e da chi, decidere quali processi caricare quando la memoria si rende disponibile, allocare e deallocare lo spazio di memoria. Gestione dei file (File System) Un file è un insieme di informazioni definite dal suo creatore. Generalmente i file contengono programmi (in formato sorgente o oggetto) e dati. Le directory sono file particolari. La componente della gestione dei file del sistema operativo è responsabile delle seguenti attività: creazione e cancellazione di file, creazione e cancellazione di directory, supporto di primitive per manipolare file e directory, mappare file in memoria secondaria, backup dei file su memorie non volatili. Il file system è la rappresentazione logica del disco rigido. Gestione dell’I/O Consiste di un sistema buffer-catching (trasferimento dei dati), un’interfaccia generale per i driver dei dispositivi e di driver per dispositivi hardware specifici. I driver ci sono per ogni dispositivo, sono dei pezzi di software, gestiscono il controllo. Un’interfaccia contiene le operazioni del dispositivo. Gestione della memoria secondaria

Poiché la memoria centrale è volatile e non riesce a contenere tutti i programmi e i dati in maniera permanente, i computer hanno bisogno di una memoria secondaria che contenga tutto quello che serve al computer. La maggior parte dei computer usano i dischi come dispositivi di memoria secondaria per contenere dati e programmi. Il sistema operativo si occupa di allocazione e gestione della memoria, e scheduling del disco. Accesso alla rete In un sistema distribuito (es: rete locale) ogni calcolatore ha la propria memoria locale. I calcolatori sono connessi attraverso una rete di comunicazione. L’accesso alla rete permette: condivisione di risorse, prestazioni più alte, maggiore disponibilità di dati e maggiore affidabilità. Sistema di protezione Fornisce meccanismi per controllare l’accesso di processi e utenti alle risorse del sistema e/o degli utenti. I meccanismi di protezione devono: distinguere tra usi autorizzati e usi non autorizzati, specificare i controlli che devono essere imposti, fornire i mezzi per l’attuazione della protezione. Interprete dei comandi Si interfaccia con il sistema operativo, ogni operazione viene presa in carica dai lui, oggi è grafica. La sua funzione è di ricevere il comando, controllarne la correttezza, gestire la sua esecuzione da parte dei diversi livelli del sistema e mostrare i risultati. System call Le System call forniscono l’interfaccia di programmazione tra un programma e il sistema operativo (API – Application Programming Interface). Generalmente vengono usati tre metodi per il passaggio dei parametri tra un programma in esecuzione e il sistema operativo: 1 Passaggio dei parametri in registri 2 Memorizzazione dei parametri in una tabella in memoria centrale e passaggio dell’indirizzo della tabella, come un parametro, in un registro 3 Push (inserimento) dei parametri in uno stack e pop (prelievo) dallo stesso dal sistema operativo. Debugging dei sistemi operativi Debugging è l’attività di trovare e risolvere gli errori, o bug. I sistemi operativi generano file di log che contengono informazioni sugli errori. Il fallimento di un’applicazione può generare file di core dump che catturano la memoria del

processo. I fallimenti del sistema operativo possono generare file di crash dump contenenti la memoria del kernel. Approccio a livelli (o strati) Il sistema operativo è composto da un certo numero di livelli (strati) ognuno costruito a partire dai livelli sottostanti. Il livello più basso (layer 0) è l’hardware, il livello più alto (layer n) è l’interfaccia utente. Struttura del sistema a microkernel La maggior parte delle funzioni sono spostate fuori dal nucleo “user space”. Le comunicazioni tra i moduli utente avvengono tramite lo scambio di messaggi. Un esempio è la struttura modulare Solaris. Macchine virtuali Usa l’approccio a livelli. Virtuale indica che le operazioni sono realizzate via software, implementando alcune funzionalità. È un software installato sull’hardware o sui sistemi operativi, viene installata a volte prima del sistema operativo stesso. Ci possono essere più sistemi operativi sulla macchina virtuale. È nato con l’idea di poter utilizzare lo stesso hardware da più utenti con esigenze diverse, simulando di avere più macchine (visione dell’hardware diversa dalla realtà). La usa anche Java con JVM Java Virtual Machine. Java crea un file class in bytecode, che è un eseguibile per la macchina virtuale e quindi può essere eseguito su più macchine che JVM senza ricompilare, al contrario di C, che deve ricompilare proprio per l’assenza della macchina virtuale che si appoggia al sistema operativo. Un applet è un’app per il web in java. Anche il browser ha una JVM per eseguirle. Gestione dei processi Un processo è un programma in esecuzione, o anche job, task, thread. Il processo viene eseguito in modo sequenziale. Ha un codice, il program counter (istruzione dove mi trovo), stack(ci sono i parametri), sezione dati. -Stato del processo: Quando si crea un processo ognuno di questi, nei multitasking sono più di uno, viene messo in uno stato di new (il processo deve essere caricato in memoria centrale), ready (il programma diventa un processo e si trova in memoria centrale e vengono inserite tutte le informazioni per far avanzare l’esecuzione del processo), passa nello stato di running(il processo viene assegnato al processore, che ne esegue sempre e solo uno per volta) se il processo completa l’esecuzione gli viene assegnato lo stato di terminated.

In un’esecuzione viene assegnato un tempo al processo (time sharing) se l’esecuzione del processo richiede più tempo rispetto a quello assegnato ritorna nello stato di ready e si rimette in coda per essere nuovamente eseguito. Un processo in running può subire un’interruzione e viene mandato in waiting(dove attende la risoluzione), quando viene risolta l’interruzione torna nello stato di ready. Process Control Back (PCB) Ogni processo è rappresentato nel sistema operativo da un blocco di controllo, che contiene le informazioni riguardanti il processo tra cui lo stato del processo, il program counter (indirizzo della prossima istruzione da eseguire), registri della CPU che sono diversi in base all’architettura dell’elaboratore (accumulatori, puntatori dello stack, registri indice, registri di condizione; nel caso di un’interruzione si devono salvare tutte le informazioni del processo in modo da riprendere poi l’esecuzione), informazioni scheduling (priorità del processo, puntatori e informazioni delle code di scheduling), informazioni gestione memoria (valori registri di base e limite, tabelle delle pagine e dei segmenti), informazioni accounting (uso e tempo di utilizzo della CPU, limiti di tempo, numero di processi), informazioni stato I/O (lista dei dispositivi assegnati ad un processo, elenco file aperti). Quindi il PCB viene usato come deposito per tutte le informazioni relative ai vari processi. Caso particolare è il sistema operativo Linux dove i processi sono collegati fra loro e c’è un current che indica il processo in esecuzione, per spostarsi da un processo all’altro si impiega una complessità O(1) proprio perché basta spostare soltanto il “puntatore” current. In Linux i PCB vengono chiamati Task-Struck. Code di scheduling I processi che entrano nel sistema quindi che si trovano nello stato di new, o anche di terminated si trovano nella coda dei processi (job queue). I processi che stanno per essere eseguiti e si quindi che si trovano in memoria centrale si trovano nella coda dei processi pronti (ready queue). I processi che attendono l’utilizzo di un dispositivo si trovano nella coda dei dispositivi. Tipi di scheduler I processi passando da uno stato all’altro passano da una coda all’altra, le code stanno sulla RAM, a volte possono essere copiate su disco ed è compito della CPU selezionare i processi delle code tramite degli scheduler.

Lo scheduler a lungo termine (job scheduler) carica i processi da inserire nella ready queue, interviene ogni volta che viene creato un nuovo processo, gestisce la new e passa il processo nello stato di ready. Lo scheduler a breve termine (CPU scheduler) seleziona i processi che devono essere eseguiti, quindi quelli che da uno stato andranno a finire nello stato di running, è molto veloce ed interviene molto spesso. Lo scheduler a medio termine presente in alcuni sistemi operativi, con time-sharing. Si occupa di fare lo swap (avvicendamento in memoria) dei processi (swap – out e swap – in), toglie i processi dalla memoria centrale per poi riportarli quando sarà possibile, questo garantisce una migliore gestione della memoria, sfruttando meglio la RAM, visto che alcuni processi verranno spostati nel disco mi consente di eseguire un processo che impegna più memoria di quella disponibile. È utile in termini di prestazioni. I processi I/O Bound utilizzano tanto I/O e poca CPU (processo di stampa), invece i processi CPU Bound utilizzano tanta CPU e poco I/O (calcolo di un’espressione matematica). Context switch (cambio di contesto) In presenza di interruzioni il sistema deve salvare il contesto (contenuto nel PCB) del processo corrente per poi poterlo ripristinare e questa procedura viene chiamata cambio di contesto (context switch). Il tempo necessario dipende dalla velocità di memoria e dal numero di registri da copiare e anche dalla complessità del sistema operativo. Operazioni sui processi: -Creazione Il sistema operativo crea processi utenti come processi figli, infatti è un processo che crea processi (INIT). I processi figli possono: condividere tutte le risorse con il padre(genitore), condividerne una parte o non condividerne. I processi padri e i processi figli si eseguono concorrentemente, prima terminerà il processo figlio. Per quanto riguarda lo spazio di indirizzi: il processo figlio viene duplicato dal processo del padre e il inoltre il processo figlio possiede un proprio codice. In Unix la creazione è diversa poiché il processo si duplica usa due system call: fork che crea un nuovo processo ed exec che sostituisce allo spazio di memoria di un processo un nuovo programma, viene fatta dopo una fork. La maggior parte dei sistemi operativi identifica un processo per mezzo di un numero univoco chiamato identificatore del processo o pid che fornisce un valore

univoco per ogni processo del sistema e può essere usato come indice per accedere a vari attributi di un processo nel kernel. Nel caso di due processi distinti ciascuno dei quali esegua una copia dello stesso programma. Dopo una fork l’unica differenza tra il processo e la sua replica è il valore del pid che nel caso del padre è maggiore di 0 invece nel figlio è 0, se avremo un pid...


Similar Free PDFs