Estratto del documento

Introduzione al sistema operativo

Sistema operativo: Insieme di programmi con lo scopo di gestire in modo ottimale le risorse del calcolatore e facilitare l’uso a programmatori e ad utenti finali l’utilizzo della macchina sottostante.

Differenza tra software base e applicativo

  • Software di base: Particolari software che hanno il compito di gestire risorse del sistema, facilitare l’uso delle stesse ai programmatori, abilitare l’uso delle risorse e delle sue componenti ad un utente (esempi: SO, DBMS, compilatori).
  • Software applicativi: Applicazioni con le esigenze di assolvere determinati compiti per gli utenti finali (esempi: word, posta elettronica).

Concetti importanti

  • Tempo di turnaround: Intervallo di tempo che intercorre tra l’istante di tempo in cui si sottopone un processo e l’istante di tempo in cui termina l’esecuzione dello stesso.
  • CPU time: Quantità di tempo utilizzato dalla CPU per eseguire un determinato processo.
  • Throughput: Numero di processi eseguiti in un intervallo di tempo T.
  • Response time: Intervallo di tempo che intercorre tra l’istante di tempo in cui si sottopone un processo e l’istante di tempo in cui si ottiene una prima risposta dal sistema.
  • Multiprogrammazione: Coesistenza temporanea di più processi in memoria centrale, ottimizzando l’uso della CPU adottando meccanismi che consentono di svincolarla con dispositivi di I/O.
  • Interrupt: Segnale elettrico inviato da un dispositivo esterno al microprocessore (precisamente al controller). L’interrupt consente al processore di interrompere le attività in corso e di eseguirne altre.

Componenti di un sistema operativo

Il sistema operativo, oltre a porsi come interfaccia tra hardware e software applicativi, fornisce diverse funzioni che lo contraddistinguono, ognuna delle quali è svolta da un particolare componente.

  • Processes manager: Si occupa della gestione dei processi, come la loro creazione e cancellazione, sospensione e risveglio e della loro sincronizzazione.
  • Memory manager: Si occupa della gestione della memoria sia fisica che virtuale, ossia permette di reperire informazioni salvate o in memoria centrale o su disco.
  • File system: Componente che si preoccupa di memorizzare e recuperare informazioni opportunamente strutturate su un dispositivo di memorizzazione secondario.
  • I/O services: Si occupa di predisporre le comunicazioni tra dispositivi di input output.
  • Communication: Gestisce le comunicazioni tra processi, programmi di dati condivisi.
  • Error manager: Gestisce eventuali errori nelle diverse funzioni svolte.
  • Protezione e sicurezza: Il SO deve difendersi da una serie di abusi volontari o involontari che possono intaccare il sistema (esempio: programmi che accedono a porzioni di memoria riservata).

Modalità di esecuzione di un processo

Un modo per proteggere le informazioni è la modalità di esecuzione di un processo:

  • Kernel mode: Il codice di esecuzione ha accesso all’intero Instruction Set Architecture dell’hardware. Può accedere a qualunque dispositivo e far riferimento a qualsiasi indirizzo in memoria. Errori in questa modalità possono causare il blocco del sistema. Il sistema operativo, ossia il kernel, è l’unica risorsa che opera in modalità kernel.
  • User mode: Il processo in esecuzione non ha alcuna possibilità di accedere direttamente in alcun modo con l’hardware sottostante se non attraverso delle syscall (chiamate di sistema).

System call

Funzioni implementate nel SO che possono essere usate da processi, come delle procedure. L’indirizzo della syscall è presente in una tabella del kernel, ed eseguendo la particolare chiamata l’esecuzione viene cambiata in modalità Kernel. Ogni system call è definita da:

  • Un numero che identifica la sua istruzione.
  • L’insieme di parametri in ingresso.

Microkernel

È un kernel di sistema operativo che contiene solo i servizi indispensabili per il funzionamento dell’intero sistema:

  • Gestore processi
  • Meccanismo di comunicazione tra processi
  • Gestore messaggi

Vantaggi: Kernel molto contenuto, di facile manutenzione.

Svantaggi: Prestazioni.

Processi

Con il termine processo denotiamo l’esecuzione di un programma; i processi sono tra loro scorrelati, ossia le risorse di ciascun processo sono private.

Sistema mono-programmato

Viene eseguito un processo alla volta, non viene eseguito un nuovo processo finché quello in esecuzione non è terminato.

Sistema multi-programmato

Presenza contemporanea di più processi, deve essere introdotto un meccanismo che consente di cambiare l’esecuzione con un altro processo.

Context-switch

Sospensione di un processo in esecuzione, a favore di un altro processo che verrà eseguito a quello precedente. Quando viene effettuato un context-switch vengono salvate tutte le informazioni sufficienti in modo tale da ripristinare il processo precedente nello stato in cui era prima di essere sospeso.

Mode-switch

Transazione da user a kernel mode durante l’esecuzione del processo (esempio quando si effettua una chiamata di sistema). Durante queste transizioni il kernel salva le informazioni necessarie per riprendere l’esecuzione al momento in cui è stato sospeso. Tempo mode-switch << Tempo context-switch.

Informazioni di un processo

Per identificare un processo:

  • Identificatore del processo
  • Identificatore processo padre
  • Identificatore dell’utente che ha generato il processo

Per identificare lo stato del processo:

  • Ricordare registri processore
  • PC, EFLAGS e Stack Pointer (associato al processo)
  • Variabili di stato (flag interrupt, execution mode)

Per identificare il control information:

  • Process state: running, ready, waiting, halted
  • Priorità scheduling
  • Informazioni per l’algoritmo di scheduling (permanenza nel Sistema, tempo CPU)
  • Identificativo di cui l’evento è in attesa
  • Campi strutture dati e variabili comunicazione tra processi, ed eventuali privilegi concessi
  • Gestione della memoria: tabella pagine o segmenti
  • Risorse utilizzate: file creati e/o aperti

Un processo è un’attività che deve essere creata, cambia nel tempo e alla fine termina.

Creazione del processo

Viene creato a seguito di una richiesta esplicita da parte dell’utente oppure da richiesta di un altro processo (esempio: fork()), oppure ancora durante l’inizializzazione del sistema.

Terminazione del processo

Le condizioni che fanno terminare il processo possono essere:

  • Terminazione normale
  • Scadenza del tempo di permanenza nel sistema
  • Memoria non disponibile
  • Violazione di protezioni
  • Errori durante l’esecuzione

Schema degli stati del processo

Esecuzione dell’Interrupt:

  • Interrupt controller segnala l’occorrenza di un interrupt, e passa il numero dello stesso (vettore)
  • Il processore usa il vettore dell’interrupt per decidere quale handler attivare
  • Il processore interrompe il processo corrente, PROC, e decide quale attivare
  • Il processore salta a interrupt handler
  • Quando l’interrupt è stato gestito, lo stato di PROC viene ripristinato e viene ripresa l’esecuzione da cui era stato sospeso

Comando fork()

Il comando fork() crea una copia del processo chiamante. Al termine dell’esecuzione dell’istruzione saranno in esecuzione due processi: il processo chiamante e un processo figlio da lui generato. Il processo figlio eredita dal padre una copia esatta di:

  • Codice, stack, heap, program counter, variabili globali e file descriptor

Riceve invece un nuovo:

  • PID, time, signals, file locks

Fork() restituisce:

  • -1 in caso di errore
  • 0 al processo figlio
  • Il PID del figlio al processo padre

Scheduling dei processi

Scheduler: Processo di sistema che si occupa di:

  • Gestire tutti i processi: selezionare quale processo eseguire in stato di ready, terminazione, sospensione, interruzione.
  • Gestione di quanto tempo lasciare eseguire un determinato processo
  • Evitare sprechi di tempo di CPU durante I/O

Criteri adottati per scegliere il processo da eseguire:

  • Da quanto tempo il processo è stato caricato
  • Quanto tempo di CPU ha usato recentemente il processo
  • Quanto è grande il processo
  • Quanto è importante

Caratteristiche di uno scheduler ideale:

  • Minimizzare latenze di tempo di risposta
  • Massimizzare il throughput
  • Massimizzare l’uso delle risorse, mantenendo sempre tutti i dispositivi occupati
  • Imparzialità tra i processi, nessuno dei quali deve rimanere bloccato

Modalità di utilizzo dello scheduler

  • User oriented: Tempo di risposta ottimale, migliorare tempo che intercorre tra avvio del processo e del suo primo output.
  • System oriented: Uso efficiente delle risorse del sistema.

Tipologie di algoritmi utilizzati

Gli algoritmi che vengono utilizzati dagli scheduler si dividono in due grosse categorie:

  • Preemptive: Algoritmi che prevedono la possibilità di sospendere momentaneamente i processi in esecuzione per eseguirne altri.
  • Non-preemptive: Un processo in esecuzione mantiene l’uso della CPU sino al naturale completamento dello stesso, sua terminazione.

Lo scheduling può avvenire quando viene effettuata una particolare transizione di stati dei processi:

  • Da running a waiting (es: I/O richiesta)
  • Da running a ready
  • Da waiting a ready (es: I/O completato)
  • Terminato

Algoritmi di scheduling

  • FCFS: First Come First Service
  • SJF: Shortest Job First
  • RR: Round Robin

Algoritmo FCFS (First Come First Service)

Algoritmo non-preemptive, di facile implementazione, con average time molto variabile, generalmente non ottimizzato: dipendente dai tempi di esecuzione dei processi in coda (da non usare in sistemi interattivi).

Algoritmo SJF (Shortest Job First)

Algoritmo che presuppone la conoscenza del tempo di esecuzione di ciascun processo, ciascuno dei quali ha uguale importanza. La CPU viene assegnata con il tempo di esecuzione minore. Nella versione preemptive: Shortest Remaining Time Next, all’arrivo di un nuovo processo si rivaluta l’ordine di esecuzione e la scelta corrente garantendo il minor tempo di attesa.

Algoritmo RR (Round Robin)

Scheduling circolare, di tipo preemptive, in cui ad ogni processo di esecuzione viene affidato un tempo di esecuzione per la CPU detto quanto. Terminato il quanto, il processo se non ha terminato la sua esecuzione, viene rimesso in coda.

Dimensione del quanto:

  • Quanto di tempo troppo breve: scarsa efficienza CPU
  • Quanto di tempo troppo lungo: RR diventa un FCFS

Diverse tipologie di scheduling

Scheduling con priorità: La priorità assegnata a un processo varia nel tempo in funzione della sua permanenza nel sistema e del tempo di CPU consumato.

Scheduling a code multiple:

  • A due code separate:
    • Foreground (processi che interagiscono con l’utente, spesso in attesa di input)
    • Background (processi eseguiti indipendentemente dall’interazione con l’utente)
  • A due algoritmi separati:
    • Foreground: RR
    • Background: FCFS

Sistemi real time

La correttezza del sistema non dipende solo dai risultati dei singoli processi, ma anche dagli istanti di tempo in cui questi risultati sono prodotti. I processi reagiscono ad eventi esterni, e devono essere gestiti in tempo debito.

Concetto di determinismo: Ogni operazione deve essere svolta in un lasso di tempo predeterminato. L’intervallo di tempo di risposta ad un interrupt deve essere superiormente limitato.

  • Context switch molto veloce
  • Dimensione del sistema contenuto
  • Velocità di risposta ad interrupt esterni
  • Multitasking con interprocess communication (semafori, signals ed eventi)
  • Files in grado di memorizzare grosse quantità di dati ad alta velocità

Threads

Ogni processo è costituito da un unico thread of control che determina le possibili sequenze di esecuzione delle istruzioni (control flow: ordine in cui sono eseguite le istruzioni del processo, fissato l’input). Nell’ambito del control flow le istruzioni sono eseguite sequenzialmente.

Un processo può essere:

  • Single threaded: Equivalente alla nozione di processo
  • Multiple threaded: All’interno dello stesso processo coesistono più thread of control che possono essere eseguiti in parallelo, ossia sovrapposti nel tempo (ogni componente chiamata thread).

Cosa condividono i thread

Ogni thread può accedere a ciascun indirizzo all’interno dello spazio di indirizzamento del processo a cui appartiene. I thread all’interno del processo condividono:

  • Process ID
  • Spazio degli indirizzi, codice (istruzioni) e dati non locali
  • Segnali e signals handlers

Cosa NON condividono i thread

  • Thread ID
  • L’insieme dei registri, compresi ProgramCounter e StackPointer
  • Stack variabili locali e record attivazione
  • Maschera signal

Perché usare i threads

  • Migliorano le prestazioni di un sistema (tempi risposta ottimizzati, miglior sfruttamento risorse)
  • Rendono più semplice la parallelizzazione di applicazioni
  • Migliorano la struttura del programma
  • Le creazioni e la distruzione dei threads sono generalmente più efficienti rispetto alla gestione di processi separati
Anteprima
Vedrai una selezione di 8 pagine su 34
Sistemi Operativi - Gestione VM e Processi Pag. 1 Sistemi Operativi - Gestione VM e Processi Pag. 2
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Sistemi Operativi - Gestione VM e Processi Pag. 6
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Sistemi Operativi - Gestione VM e Processi Pag. 11
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Sistemi Operativi - Gestione VM e Processi Pag. 16
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Sistemi Operativi - Gestione VM e Processi Pag. 21
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Sistemi Operativi - Gestione VM e Processi Pag. 26
Anteprima di 8 pagg. su 34.
Scarica il documento per vederlo tutto.
Sistemi Operativi - Gestione VM e Processi Pag. 31
1 su 34
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 only_one_crive 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 Milano o del prof Bruschi Danilo.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community