Processi Flashcards

1
Q

Definizione di un processo

A

Un processo è un programma in esecuzione e comprende:
- l’attività corrente, rappresentata dal valore del contatore del programma e dal contenuto dei registri della CPU;
* normalmente comprende anche la propria pila (stack), contenente a sua volta i dati temporanei, come i parametri di un metodo, gli indirizzi di rientro e le variabili locali, e una sezione di dati contenente le variabili globali.
* Un processo può includere uno heap, ossia della memoria dinamicamente allocata durante l’esecuzione del processo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qual è la differenza tra programma e processo?

A

Un programma è un’entità passiva, mentre un processo è un’entità attiva.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Quando un programma diventa processo?

A

Un programma diventa processo quando il file eseguibile che lo contiene è caricato in memoria.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Cosa si intende per PCB e che informazioni contiene?

A

Ogni processo è rappresentato nel sistema operativo da un blocco di controllo di un processo (process control block, PCB). Un blocco di controllo di un processo contiene molte informazioni connesse a un processo specifico, tra cui le seguenti:

  • Stato del processo.
  • Contatore di programma. Il contatore di programma contiene l’indirizzo della successiva istruzione da eseguire per tale processo.
  • Registri di CPU. I registri variano in numero e tipo secondo l’architettura del calcolatore. Essi comprendono accumulatori, registri d’indice, puntatori alla cima delle strutture a pila (stack pointer), registri d’uso generale e registri contenenti informazioni relative ai codici di condizione. Quando si verifica un’interruzione della CPU, si devono salvare tutte queste informazioni insieme con il contatore di programma, in modo da permettere la corretta esecuzione del processo in un momento successivo.
  • Informazioni sullo scheduling della CPU. Queste informazioni comprendono la priorità del processo, puntatori alle code di scheduling e tutti gli altri parametri di scheduling.
  • Informazioni sulla gestione della memoria. Queste informazioni si possono esprimere attraverso i valori dei registri di base e di limite, le tabelle delle pagine o le tabelle dei segmenti, a seconda del sistema di gestione della memoria usato dal sistema operativo.
  • Informazioni di contabilizzazione delle risorse. Queste informazioni comprendono il tempo d’uso della CPU e il tempo reale d’utilizzo della stessa, i limiti di tempo, i numeri dei processi, e così via.
  • Informazioni sullo stato dell’I/O. Queste informazioni comprendono la lista dei dispositivi di I/O assegnati a un determinato processo, l’elenco dei file aperti, e così via.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Cosa si intende per ready queue?

A

La ready queue è una coda dove risiedono i* processi che sono pronti per essere eseguiti.*

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Come viene memorizzata solitamente una ready queue?

A

Questa coda generalmente si memorizza come una lista concatenata:
un’intestazione della coda dei processi pronti contiene i puntatori al primo e all’ultimo PCB dell’elenco, e ciascun PCB è esteso su un campo puntatore che indica il successivo processo contenuto nella coda dei processi pronti.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Come sceglie il processo da eseguire, il sistema operativo?

A

Il sistema operativo, incaricato di selezionare i processi dalle suddette code, compie la selezione per mezzo di un opportuno scheduler.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Cosa si intende con il termine spooling?

A

Spesso, in un sistema a lotti, accade che si sottopongano più processi di quanti se ne possano eseguire immediatamente. Questi lavori si trasferiscono in dispositivi di memoria secondaria, generalmente dischi, dove si tengono fino al momento dell’esecuzione (spooling).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Qual è il compito dello scheduler a lungo termine (job scheduler)?

A

Il job scheduler gestisce la ready queue. Si occupa di di scegliere quali di stabilire quali processi devono essere ammessi nella coda dei processi attivi. Pertanto, egli controlla il grado di multiprogrammaizone, cioè il numero di processi in memoria.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Qual è il compito dello scheduler a breve termine (CPU scheduler)?

A

Lo scheduler a breve termine si occupa di selezionare, dalla coda dei processi attivi, quale processo deve avere accesso alla CPU in un determinato momento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qual è la differenza tra scheduling a breve termine e a lungo termine?

A

In generale, lo scheduler a lungo termine opera a una frequenza molto più bassa rispetto allo scheduler a breve termine, poiché deve solo prendere decisioni a lungo termine sulle risorse del sistema, mentre lo scheduler a breve termine deve operare a una frequenza molto più alta per gestire l’accesso alla CPU in modo equo e rapido.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

A cosa serve lo scheduler a medio termine?

A

Esistono sistemi operativi in cui lo scheduler a lungo termine può essere assente o minimo e viene introdotto un livello di scheduling intermedio, utile nell’implementazione del processo di swapping. L’idea alla base di un tale scheduler è che a volte può essere vantaggioso eliminare processi dalla memoria (e dalla contesa attiva per la CPU), riducendo il grado di multiprogrammazione del sistema. In seguito, il processo può essere reintrodotto in memoria, in modo che la sua esecuzione riprenda da dove era stata interrotta. Il processo viene rimosso e successivamente caricato in memoria dallo scheduler a medio termine.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Cosa si intende per Context switching e cosa comprende?

A

Le interruzioni permettono al sistema di sospendere il lavoro attuale della CPU per eseguire routine del kernel. In presenza di una interruzione, il sistema deve salvare il contesto del processo corrente, per poterlo poi ripristinare quando il processo stesso potrà ritornare in esecuzione.

Il contesto è rappresentato all’interno del PCB del processo, e comprende:

  • i valori dei registri della CPU
  • lo stato del processo
  • informazioni relative alla gestione della memoria.

Questa procedura è nota col nome di cambio di contesto (context switch).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Come fa il sistema operativo a identificare un processo?

A

La maggior parte dei sistemi operativi identifica un processo per mezzo di un numero univoco, detto identificatore del processo o pid (process identifier). Si tratta solitamente di un intero.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Cosa si intende per terminazione a cascata?

A

In alcuni sistemi, se un processo termina si devono terminare anche i suoi figli, indipendentemente dal fatto che la terminazione del genitore sia stata normale o anormale, determinando, ciò che viene definita, una terminazione a cascata.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Definizione di processo cooperante.

A

Un processo è cooperante se influenza o può essere influenzato da altri processi in esecuzione nel sistema.

16
Q

Quali sono i modelli fondamentali della comunicazione tra processi?

A

I modelli fondamentali della comunicazione tra processi sono due:

  • Memoria condivisa. Si stabilisce una zona di memoria condivisa dai processi cooperanti, che possono così comunicare scrivendo e leggendo da tale zona. La memoria condivisa massimizza l’efficienza della comunicazione, ed è più veloce dello scambio di messaggi perché richiede l’intervento del kernel solo per allocare le regioni di memoria condivisa, dopo di che tutti gli accessi sono gestiti alla stregua di ordinari accessi in memoria che non richiedono l’assistenza del kernel.
  • Scambio di messaggi. Ha luogo tramite scambio di messaggi tra i processi cooperanti e risulta utile per trasmettere piccole quantità di dati. Lo scambio di messaggi è più lento del modello a memoria condivisa perché implementato tramite chiamate di sistema che impegnano il kernel.
17
Q

Cosa si intende per pipe?

A

Una pipe agisce come un canale di comunicazione tra processi.

18
Q

Cosa si intende per pipe convenzionali?

A

Le pipe convenzionali permettono a due processi di comunicare secondo una modalità standard chiamata del produttore-consumatore. Il produttore scrive a una estremità del canale mentre il consumatore legge dall’altra estremità. Le pipe convenzionali sono quindi unidirezionali, perché permettono la comunicazione in un’unica direzione. *Non si può accedere a una pipe al di fuori del processo che la crea. *

19
Q

Cosa si intende per named pipe?

A

Con le named pipe, la comunicazione può essere bidirezionale, e la relazione di parentela padre-figlio non è necessaria. Una volta che si crea la named pipe, diversi processi possono utilizzarla per comunicare. In uno scenario tipico una named pipe ha infatti diversi scrittori. In più le named pipe continuano a esistere anche dopo che i processi comunicanti sono terminati.