Il descrittore di processo (PCB)



Documenti analoghi
Processi. Descrittore di Processo (PCB) Context Switch Primitive per la creazione e terminazione dei processi. Il descrittore di processo (PCB)

Sistemi Operativi (modulo di Informatica II) I processi

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

GESTIONE DEI PROCESSI

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

La Gestione delle risorse Renato Agati

Il Concetto di Processo

I THREAD O PROCESSI LEGGERI Generalità

FONDAMENTI di INFORMATICA L. Mezzalira

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

INFORMATICA 1 L. Mezzalira

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

CAP. 6: Nucleo del sistema operativo (La gestione dei processi)

Java Virtual Machine

Pronto Esecuzione Attesa Terminazione

I processi Unix. Entry della tabella dei processi

Capitolo 3 -- Silberschatz

Corso di Linguaggi di Programmazione

Il Sistema Operativo (1)

Il Sistema Operativo

Corso di Sistemi di Elaborazione delle informazioni

GESTIONE INFORMATICA DEI DATI AZIENDALI

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

La struttura dati ad albero binario

Introduzione alla programmazione in C

2. I THREAD. 2.1 Introduzione

Sistemi Operativi Kernel

Il problema del produttore e del consumatore. Cooperazione tra processi

Processi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Concetto di processo. Processi. Immagine in memoria di un processo. Stati di un processo. Un SO esegue una varietà di attività:

Scheduling della CPU Introduzione ai Sistemi Operativi Corso di Abilità Informatiche Laurea in Fisica

Scheduling della CPU Simulazione in linguaggio Java

CAPITOLO 24 I MONITOR

B+Trees. Introduzione

Il software. la parte contro cui si può solo imprecare. Funzioni principali del sistema operativo. (continua) Gestione della memoria principale

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Linguaggi di programmazione

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Processo - generalità

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.

Il memory manager. Gestione della memoria centrale

Mul&programmazione. Ges&one dei processi. Esecuzione parallela. MAC OSX Monitoraggio a9vità. Linux System monitor. Windows Task Manager. A.

Terza Esercitazione. Unix - Esercizio 1. Unix System Call Exec Java Introduzione Thread

Allocazione dinamica della memoria - riepilogo

Elementi di Architettura e Sistemi Operativi

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Processi. Laboratorio Software C. Brandolese

Esempio produttori consumatori. Primitive asincrone

Modello a scambio di messaggi

Corso di Sistemi Operativi A.A CHIAMATE DI SISTEMA PER IL CONTROLLO DEI PROCESSI. Fabio Buttussi

Corso di Calcolatori Elettronici I A.A Il processore Lezione 18

scheduling Riedizione modifi cata delle slide della Prof. DI Stefano

Riferimenti ed Oggetti

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Definizione di processo. Un processo è un programma (o una parte di una programma) in corso di esecuzione

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

MODELLO AD AMBIENTE GLOBALE

Scheduling della CPU:

Funzioni in C. Violetta Lonati

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi operativi. Esempi di sistemi operativi

Organizzazione della memoria

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi

Architettura dei calcolatori e sistemi operativi. Assemblatore e Collegatore (Linker) Capitolo 2 P&H Appendice 2 P&H

Introduzione ai Sistemi Operativi

Il sistema operativo. Sistema operativo. Multiprogrammazione. Il sistema operativo. Gestione della CPU

Gestione della memoria centrale

Liberare la memoria allocata dinamicamente.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Il Software. Il software del PC. Il BIOS

Infrastrutture Software

Coordinazione Distribuita

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

LA SINCRONIZZAZIONE TRA PROCESSI

Introduzione ai database relazionali

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

IL SISTEMA OPERATIVO

Il costrutto monitor [Hoare 74]

Organizzazione degli archivi

Istruzioni condizionali. Istruzioni condizionali IF-THEN- ELSE IF-THEN-ELSE. Statistica computazionale Carla Rampichini a.a.

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D

Fasi di creazione di un programma

Link e permessi. Corso di Laurea Triennale in Ingegneria delle TLC e dell Automazione. Corso di Sistemi Operativi A. A

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

SISTEMI OPERATIVI THREAD. Giorgio Giacinto Sistemi Opera=vi

Architettura hardware

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Oggetti Lezione 3. aspetti generali e definizione di classi I

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore.

CPU. Maurizio Palesi

Transcript:

Il descrittore di processo (PC) Il S.O. gestisce i processi associando a ciascuno di essi un struttura dati di tipo record detta descrittore di processo o Process Control lock (PC) Il PC contiene tutte le informazioni relative a: stato globale, risorse possedute (memoria centrale, unità di I/O assegnate staticamente, file aperti, ecc.), parametri di schedulazione per l assegnazione di alcune risorse, valori corrente dei registri del processore all atto dell uscita dallo stato running, posizione dell area di swap su disco se privo della risorsa memoria centrale, informazioni di account, ecc. Il descrittore di processo (PC) Il PC viene assegnato ad un processo quando viene posto nello stato new e viene deassegnato quando esce dallo stato terminated e ne viene persa traccia Tipicamente i PC sono disposti in code costituite da liste a puntatori. ppartengono ad una stessa coda PC di processi caratterizzati dallo stesso stato globale (ad esempio coda dei processi ready ad uguale priorità di schedulazione, coda dei processi waiting in attesa di avviare una operazione di accesso ad un disco, coda dei processi waiting in attesa di sincronizzarsi con uno stesso processo di servizio, ecc.) 1

Il cambiamento di contesto L abbandono del processore da parte di un processo provoca il cosiddetto cambiamento di contesto (context switch) nel senso che cambia il contesto a cui appartengono le informazioni contenute nei registri del processore. Il contenuto dei registri appartenente al processo uscente viene salvato nel suo descrittore, e, effettuata la schedulazione del processo entrante, il contenuto dei registri del processore viene ripristinato con le informazioni prelevate dal descrittore di quest ultimo Il cambiamento di contesto Il cambiamento di contesto è quindi il risultato dell esecuzione di tre procedure distinte del S.O.. Procedure Salvataggio_stato Procedure Ripristino_stato Procedure Scheduling_CPU Procedure Context_Switch Salvataggio_stato, Scheduling_CPU, Ripristino_stato 2

Primitiva fork per la creazione di processi La fork(id) è una primitiva che consente ad un processo (processo padre) di creare un altro processo (processo figlio) nello stato new o nello stato ready Il padre e il figlio potranno condividere risorse ed in particolare potranno condividere o meno lo spazio di memoria (area istruzioni e area dati) E nota come chiamata asincrona di procedura ma, a differenza di una chiamata di procedura, le procedure chiamante e chiamata sono eseguite nei differenti contesti dei processi padre e figlio e possono quindi essere eseguite in parallelo Primitiva fork per la creazione di processi : fork(x) : <istruzione successiva alla fork>... X: <prima istruzione della procedura invocata> var P: process procedure X...... P:= fork(x)... X 3

Primitiva fork per la creazione di processi Procedure fork (id) if esiste-pc-libero then <alloca un descrittore libero al processo figlio> <alloca spazio di memoria ed inizializzalo> <inizializza descrittore> <poni il processo figlio nello stato ready> else <poni il processo padre in attesa di un descrittore libero> context_switch Primitiva join(cont) per la sincronizzazione e terminazione di processi Dati n processi la join(cont) è una primitiva che consente a n-1 processi di terminare e all n-esimo di proseguire sincronizzandosi con la terminazione dell (n-1)esimo processo. var cont: integer...... join(cont) 1....... n join 4

Primitiva join(cont) per la sincronizzazione e terminazione di processi Non consente di denotare in maniera esplicita il o i processi con cui si vuole sincronizzare. procedure join(cont) cont:=cont-1 if cont<>0 then <termina il processo chiamante>, Scheduling_CPU, Ripristino_stato Primitiva join(cont) per la sincronizzazione e terminazione di processi cont:=3; ; fork (E1); ; fork (E2); D; goto E3; E1: C; F; goto E3 E2: E; E3: join (cont); G; D G E C F 5

Primitiva join(pid) per la sincronizzazione di un processo con la terminazione di un altro La join(pid) è una primitiva che consente ad un processo (di solito il processo padre) di sincronizzarsi con la terminazione di un altro (di solito un processo figlio) procedure join(pid) if stato(pid)<> terminated then <metti il processo chiamante in attesa che il processo pid termini> context_switch Primitiva exit per la terminazione di un processo La exit è una primitiva che consente ad un processo di terminare procedure exit <poni il processo chiamante nello stato terminated>, if <processo padre in attesa della terminazione> then <sposta il processo padre nella coda dei ready> Scheduling_CPU, Ripristina_stato 6

Uso delle primitive fork, join e exit var P: process procedure X ; exit... P:= fork(x) ; join (P) C; fork join C exit Uso delle primitive fork, join e exit L esempio precedente viene così riscritto: var P 1, P 2 : process procedure E 1 C; F; exit; ; procedure E 2 E;exit; ; D E C F ; P 1 := fork (E 1 ); ; P 2 := fork (E 2 ); D; join (P 1 ); join (P 2 ); G; G 7

Uso delle primitive fork, join e exit var L, E, S: array [1..N] of T; i: 1..N; PE, PS: array[1..n] of process; procedure E(k:1..N); if k<>1 then join (PE[k-1]); Elaborazione (E[k]); S[k]:=E[k]; PS[k]:=fork (S(k)); exit; ; procedure S(k:1..N); if k<>1 then join (PS[k-1]); Scrittura (S[k]) exit ; for i:= 1 to N do Co e co Trattasi di costrutti di linguaggi concorrenti per la creazione di processi figli da parte di un processo padre e la sua sincronizzazione con la loro terminazione S 0 co S 1 S 2 S 3 co S 4 S 0 S 1 S 2 S 3 S 4 8

Co e co In quanto costrutti linguistici co e co sono istruzioni di più alto livello rispetto alle primitive fork e join e quindi di più agevole uso. d esempio... C ; D co C; F; ; ;co D; E; co;; co G; G E F Co e co Il gap esistente tra un costrutto linguistico e le primitive del S. O. viene colmato dal compilatore del linguaggio. In particolare co e co possono essere tradotti in termini di fork e join. Peraltro non è sempre vero il viceversa E C D I G 9

Co e co Compilazione del costrutto in termini di fork e join: var P 1,..., P n : process; procedure S 1 ;...;... procedure S n ;...; S 0 ; P 1 := fork (S 1 ); P n := fork (S n ); S n+1 ; ; Uso delle primitive co e co var,, C: T; i: 2..N; Lettura (); co Lettura (); Elaborazione (); co; i:=2; while i<n do C:=; :=; co Lettura (); Elaborazione (); Stampa (C); co; i:=i+1 ; C:= ; :=; co Elaborazione (); Stampa (C); co; Stampa () ; 10

11