Sistemi operativi: manuale pratico/Processi/Introduzione

Indice del libro

Sistemi operativi: manuale pratico/Processi/Introduzione

AlgoritmoModifica

Un algoritmo e' un procedimento logico che permette la risoluzione di un problema in un numero finito di passi

ProgrammaModifica

Un programma e' un'entita' passiva (file in memoria) che formalizza un algoritmo attraverso un linguaggio di programmazione

ProcessoModifica

Un processo e' un'entita' attiva (operazioni compiute dal processore) che corrisponde ad un'astrazione di un programma in esecuzione; un processo e' composto da:

  • codice sorgente
  • area dati (variabili statiche globali)
  • stack (variabili statiche locali)
  • heap (variabili dinamiche)

Processi sequenzialiModifica

I processi sequenziali sono processi in cui ogni operazione viene eseguita dopo il termine di quella precedente (comportamento deterministico)

Processi concorrentiModifica

I processi concorrenti sono processi in cui le operazioni possono essere eseguite contemporaneamente (comportamento non deterministico) La concorrenza puo' essere: reale (sistemi multiprocessore e multi-core) o fittizia

Processi automaticiModifica

I processi automatici sono processi che vengono eseguiti al bootstrap e terminati allo shut-down (attesa messaggi posta elettronica, controllo virus)

Processi su richiesta dell'utenteModifica

I processi su richiesta dell'utente sono processi la cui esecuzione viene avviata in modo esplicito da parte dell'utente (stampante, browser)

Stati di un processoModifica

Gli stati di un processo durante la sua esecuzione sono:

  • new: il processo viene creato e sottomesso al SO
  • running: il processo e' in esecuzione
  • ready: il processo e' pronto per l'esecuzione e in attesa di risorse dal processore
  • waiting: il processo e' in attesa di risorse da parte del sistema
  • terminated: il processo termina e rilascia le risorse utilizzate

Context switchModifica

Un context switch (cambiamento di contesto) e' uno stato del SO in cui avviene un cambio del processo correntemente in esecuzione sulla CPU; il context switch genera un ritardo temporale tra l'esecuzione di un processo e l'altro

Process Control Block (PCB)Modifica

Il PCB e' un blocco di dati associato ad ogni processo; tali dati riguardano:

  • stato del processo
  • program counter (indirizzo dell'istruzione successiva)
  • registri della CPU
  • informazioni per lo scheduling della CPU
  • informazioni per la gestione della memoria
  • informazioni sulle operazioni di I/O

Process Identifier (PID)Modifica

Il PID e' un intero non negativo (UNIX/linux), generato automaticamente dal SO, che identifica in modo univoco ciascun processo

PID riservatiModifica

I PID riservati dal SO UNIX/linux sono:

  • PID  : per lo scheduler dei processi
  • PID  : per il processo (invocato al termine del bootstrap) che e' l'antenato di tutti i processi

TerminazioneModifica

Un processo puo' essere terminato in   modi:

  • standard
    • return dal main
    • exit o _exit o _Exit da un suo thread
    • un suo thread riceve un segnale di terminazione
  • non standard
    • abort
    • ricevere un segnale di terminazione
    • cancellare l'ultimo thread del processo

Al termine di ogni processo il kernel invia al padre un segnale SIGCHLD (Signal Child)

SchedulerModifica

Lo scheduler e' un programma che stabilisce un ordinamento temporale per l'esecuzione dei processi attraverso algoritmi di scheduling; lo scheduler si occupa di:

  • inserisce i PCB dei processi che richiedono una risorsa in una coda (ogni coda si riferisce ad un possibile stato dei processi: coda di ready, coda di running,...)
  • preleva dalle code i processi che andranno eseguiti

Architetture paralleleModifica

Esistono diverse architetture parallele:

  • Single Instruction Single Data (SISD): in un certo istante una singola istruzione viene eseguita da un singolo processo su un singolo dato (no parallelismo; bit)
  • Single Instruction Multpile Data (SIMD): in un certo istante una singola istruzione viene eseguita da piu' processi su piu' dati (dati parallelizzati; numeri)
  • Multiple Instruction Single Data (MISD): in un certo istante piu' istruzioni vengono eseguite da piu' processi su un singolo dato
  • Multiple Instruction Multiple Data (MIMD): in un certo istante piu' istruzioni vengono eseguite da piu' processi su piu' dati (parallelismo su dati e su istruzioni)

Speed-upModifica

I vantaggi in termini di tempo ottenibili da architetture concorrenti sono lineari (solo per un numero ridotto di processori)

Grafo di precedenzaModifica

Un grafo di precedenza e' un grafo aciclico diretto in cui:

  • i nodi corrispondono a istruzioni o a processi
  • gli archi corrispondono a condizioni di precedenza: ogni nodo puo' essere eseguito solo dopo che il padre e' terminato

Condizioni di BernsteinModifica

Le condizioni di Bernstein sono le condizioni necessarie affinché un algoritmo possa essere scritto in modo concorrente; dati due processi Pi e Pj, essi sono parallelizzabili se valgono le seguenti condizioni (R(P): input del processo P; W(P): output del processo P):

  •  
  •  
  •