Introducing 

Prezi AI.

Your new presentation assistant.

Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.

Loading…
Transcript

Kernel

2019-2020

Manoni, Cecchini, Arcangeli,

Borgacci, Stefani, Rossolini, Graziosi

25/11/2019

Programmi e processi

Per processo si intende un programma in esecuzione.

Ogni processo ha 3 caratteristiche:

1) INPUT: al processo vengono dati uno più input;

2) OUTPUT: ogni processo manda verso l’esterno i risultati delle sue operazioni;

3) ATTIVITÁ: i processi svolgono una serie di operazioni al fine di arrivare al risultato finale;

Legati ai processi ci sono molti argomenti:

1. Stati di un processo;

2. Protezioni dell’hardware;

3. Operazioni sui processi;

4. Thread e modelli.

Stati del processo

Stati di un processo

Ogni processo può trovarsi in 5 stati:

1- New (Nuovo Processo)

2- Ready (pronto)

3- Running (in esecuzione)

4- Terminated (Terminato)

5- Waiting (in attesa)

  • Nello stato di nuovo si crea il processo.
  • Nello stato di pronto, il processo attende di essere assegnato ad un'unità di elaborazione.
  • Nello stato di running, l'unità di elaborazione esegue le operazioni e i programmi del processo.
  • Nello stato di attesa, il processo attende che si verifichi un evento o un'operazione di input o output.
  • Nello stato di terminazione, l'unità di elaborazione si libera del processo.

PCB

Un processo è rappresentato da un solo blocco denominato PCB (blocco di controllo). Il PCB al suo interno contiene tutte le informazioni del processo:

  • Stato del processo
  • Contatore di programma (contiene l'indirizzo della successiva istruzione che dove essere eseguita)
  • Registri della CPU
  • Informazioni sullo scheduling (comprendono la priorità del processo)
  • Informazioni sulla gestione della memoria (si esprimono tramite i registri di base in quelli limite )
  • Informazioni sullo stato i/o (contiene la lista dei dispositivi input e output che è stata assegnata al processo)
  • Informazioni sulle risorse (numero dei processi totali da svolgere e tutte le risorse che devono essere utilizzate)

Protezioni dell'hardware

Protezioni dell'Hardware

Tra i vari compiti che il sistema operativo deve svolgere, c’è anche la protezione dell’hardware, ovvero deve gestire delle risorse per evitare l’interferenza di programmi o operazioni esterne.

Le protezioni dell'hardware sono 4.

Funzionamento in Dualmode

Funzionamento in Dualmode

La doppia modalità di funzionamento consente la protezione del sistema operativo in base al comportamento dell’utente tramite.

Le due modalità utilizzate sono di sistema e utente.

Questo tipo di controllo si esegue attraverso delle istruzioni privilegiate, ovvero il controllo dell’I/O, la gestione de timer e la gestione delle interruzioni.

Protezione I/O

Questo tipo di protezione lavora in maniera molto semplice, infatti per verificare che l’utente non stia facendo niente di dannoso o di illegale, ogni volta che il sistema operativo riceve una chiamata di sistema per svolgere le operazioni richieste dall’utente, questo passa alla modalità di sistema e verifica la validità di questa operazione.

Protezione delle memorie

Per proteggere la memoria l’indirizzo che viene inviato dalla CPU, passa attraverso il controllo di 2 registri, uno contenente l’indirizzo minimo e uno contenente l’indirizzo massimo.

Se l’indirizzo passato è contenuto all’interno di questa soglia di valori, il dato verrà memorizzato in memoria, altrimenti no.

Protezione della CPU

Questo tipo di protezione avviene tramite l’utilizzo di un timer che impedisce ad un processo di non mantenere il “controllo” della CPU troppo a lungo.

Il timer può essere fisso o variabile: fisso quando ogni lasso di tempo sposta il controllo della CPU da un processo all’altro, variabile quando viene generato un tempo variabile in cui i processi vengono eseguiti.

Operazioni sui processi

Operazioni sui processi

Le operazioni svolte sui processi sono molte:

Creazione processi: un processo chiamato padre, può creare numerosi processi, chiamati figli, che a loro volta, possono creare altri processi, formando un albero genealogico di processi.

Possibili condivisioni delle risorse:

• Il padre e il figlio condividono tutte le risorse. (Minor carico nel sistema)

• I figli condividono un sottoinsieme delle risorse del padre.

• Il padre e il figlio non condividono risorse. (Maggior carico nel sistema).

Terminazione processi: Un processo termina quando esegue l’ultima istruzione e chiede al sistema operativo di essere cancellato per mezzo di una specifica chiamata di sistema, e quindi viene “distrutto“.

Sospensione processi;

Ripresa processi;

Cambio priorità dei processi;

Blocco processi;

Sblocco processi;

COMUNICAZIONE TRA PROCESSI

COMUNICAZIONE TRA PROCESSI

I processi eseguiti all’interno del sistema operativo possono essere: indipendenti cioè non influenzano ne vengono influenzati da altri processi, o cooperanti quindi influenzano o vengo influenzati da altri processi.

I sistemi inoltre possono essere a memoria condivisa o a scambio di messaggi dove per comunicare si utilizzano diversi canali di comunicazione: Diretto o indiretto, sincrono o asincrono, automatico o esplicitato dal Buffer.

DIRETTO O INDIRETTO

Diretto o indiretto

Diretto: Ogni processo che intende comunicare deve nominare sia il ricevente che il trasmettitore;

Indiretto: i processi vengono inviati a delle porte logiche che poi li smisteranno.

SINCRONO O ASINCRONO

Sincrono o asincrono

Sincrono: il processo che manda il messaggio si blocca in attesa che il ricevente lo riceva;

Asincrono: il trasmittente non si blocca ma continua ad inviare messaggi.

AUTOMATICO ESPILICITATO

Automatico o esplicitato

Esplicitata dal Buffer: la comunicazione di svolge a capacità 0, cioè il buffer non può avere al suo interno processi in attesa;

Automatico: la capacità può essere limitata o illimitata a seconda delle situazioni.

THREAD

Thread

Il thread è l’unità base d’uso della CPU.

Ogni processo viene normalmente associato ad un Thread, tranne quando di parla di Multithread dove ad un processo vengono associati più thread.

Ogni thread contiene 4 elementi: un identificatore, un contatore di programma, un insieme di registri e una pila.

Multithreading

Multithreading

I vantaggi del Multithreading sono 4:

Un minor tempo di risposta, una maggior efficienza nella condivisione delle risorse, un’economia migliore (il thread viene utilizzato in più contesti) e l’utilizzo di più processori.

Ci sono 3 modelli di Multithreading:

Molti ad uno: il sistema operativo fa corrispondere più thread a livello utente ad un thread a livello Kernel;

Uno ad uno: il sistema operativo fa corrispondere un thread a livello utente ad un thread a livello Kernel;

Molti a molti: il sistema operativo fa corrispondere più thread a livello utente a moltithread a livello Kernel.

I programmi

Programmi

Un programma è una successione di istruzioni eseguibili con computer.

Il computer però comprende soltanto in codice binario, cioè una successione di 0 e di 1.

È quindi necessario usare un linguaggio di programmazione per scrivere in modo leggibile le istruzioni che il computer deve eseguire, con delle istruzioni comprensibili a noi persone. Così, questi programmi sono tradotti in linguaggio macchina (in binario) da un compilatore.

come funzionano

I programmi informatici sono scritti su comuni file di testo ( codice sorgente ). Possono essere interpretati direttamente dal computer o trasformati in linguaggio macchina tramite un compilatore.

La compilazione crea un altro file ( codice oggetto ) direttamente eseguibile dal computer. Ad esempio, un file .exe. Quindi, il file sorgente e il file eseguibile sono due file ben distinti tra loro.

Politiche di Scheduling

Scheduler

Per eseguire una coda di processi, il sistema operativo utilizza lo scheduler, il quale stabilisce l'ordine di esecuzione dei processi.

Lo scheduler può essere:

  • A lungo termine: seleziona quali processi possono competere per le risorse del calcolatore;

  • A medio termine: rimuove i processi dalla memoria (e dalla contesa per la CPU). L'eliminazione del processo è detta swap out e il suo caricamento in memoria è detto swap in.

  • A breve termine (scheduler della CPU) : seleziona quale processo debba essere eseguito successivamente, ed alloca la CPU.

Scheduler della CPU

Scheduler CPU

Lo scheduling può essere:

  • Senza diritto di prelazione: il processo rimarrà in possesso della CPU fino al termine dell'esecuzione
  • Con diritto di prelazione: il SO può obbligare un processo a rilasciare la CPU in qualunque momento.

Algoritmi

FCFS (First Come, First Served) senza prelazione:

E’ facile da implementare, infatti i processi vengono eseguiti in ordine di arrivo. Con FCFS il tempo di attesa del completamento di un processo è spesso lungo Supponiamo tre processi che arrivano assieme e che entrano in CPU nell’ordine P1, P2, P3.

Il diagramma di Gantt per questa sequenza è:

Attesa: P1 = 0; P2 = 24; P3 = 27

Tempo medio di attesa: (0 + 24 + 27)/3 = 17

SJF (Shortest Job First)

SJF

Con questo algoritmo, viene eseguito il processo che ha il burst time di durata minore. Nel caso della prelazione, se arriva un processo il cui burst time è inferiore a quanto rimane da eseguire al processo attualmente in corso, quest’ultimo viene interrotto e la CPU passa al nuovo processo.

Esempio di SJF senza prelazione:

-

Con prelazione

Con prelazione

Esempio di SJF con prelazione:

-

Code a priorità

Priorità

Utilizzando l'algoritmo per priorità, un valore di priorità (di solito un numero intero) è associato ad ogni processo. La CPU è allocata al processo con la priorità migliore.

Esempio senza prelazione:

RR (Round Robin)

RR

Ogni processo ha a disposizione una piccola quantità di tempo di CPU (quanto di tempo), prefissato e uguale per tutti. Quando questo tempo è trascorso, il processo viene interrotto e rimesso in coda.

Multitasking

Il multitasking è una funzionalità del sistema operativo che permette al computer di eseguire più programmi contemporaneamente.

Multitasking cooperative

cooperative

Il multitasking cooperative è un sistema senza prelazione.

Ogni programma cede il controllo al sistema operativo dopo aver eseguito un'operazione.

Lo scheduling non riesce a riprendere il controllo di un processo ed era utilizzato dai vecchi sistemi operativi.

Multitasking preemptive

preemptive

Il multitasking preemptive è un sistema con rilascio anticipato

(o prelazione).

Il sistema operativo può interrompere un programma in esecuzione se non restituisce il controllo.

Questo tipo di scheduling si è diffuso negli anni '90 a partire da Windows 95.

E' oggi adottato da gran parte dei sistemi operativi.

Esecuzione di un programma

Esecuzione

L'esecuzione è lo stato in cui si trova un processo quando una CPU sta eseguendo le istruzioni del codice sorgente che lo caratterizzano

Background

Backgroud

Un programma in background viene eseguito dal computer senza alcuna interazione con l'utente.

Oggi è usata da tutti i sistemi operativi per eseguire più processi contemporaneamente tramite un sistema di scheduling.

Foreground

Un programma in foreground viene eseguito usando l'interfaccia utente e le varie periferiche di i/o che coinvolgono l'utente finale

Nei primi sistemi operativi a linea comando era possibile avere soltanto un processo in foreground.

Nei sistemi operativi più recenti è invece possibile eseguire più processi in foreground tramite la divisione dello schermo in finestre o su più schermi.

Learn more about creating dynamic, engaging presentations with Prezi