PROCESSI PROCESSO E lunit di lavoro allinterno del
- Slides: 21
PROCESSI
PROCESSO E’ l’unità di lavoro all’interno del Computer E’ programma in esecuzione e comprende l’attività Corrente: • Sezione del codice (code section) • Program counter • Registri • Stack • Sezione Dati • Heap
Modello PROCESSO Single flusso di controllo delle operazioni (THREAD) Il processo può eseguire una operazione alla volta
Ciclo di Vita Processo NEW END READY RUN WAIT Time Slice = 100 ms
IDENTIFICAZIONE PROCESSO PROCESS CONTROL BLOCK (PCB) • Stato del Processo • Program Counter • Registri CPU • Info Scheduling • Info Gestione Memoria • Info Accounting • Info I/O
Schedulatore PROCESSO Componente del SO che decide quale processo Mandare in esecuzione Code di Schedulazione (Job queue, ready queue, wait queue)
Bilanciamento PROCESSI Processi: I/O-bound o CPU-bound Long Term Scheduler Short Term Scheduler
Context Switching Il contesto di un processo è contenuto nella PCB Rallentamento del sistema (10 ms)
Operazioni sui Processi Creazione (system call) Creatore: Processo Padre Creato: Processo Figlio Risorse condivise Risorse indipendenti Esecuzione: Concorrente o sequenziale Indirizzamento: Figlio=Padre o Figlio ≠ Padre
UNIX #include <stdio. h> #include <unistd. h> int main(int argc, char *argv[]) { int pid; /* creazione nuovo processo */ pid=fork(); if (pid < 0) {/* errore */ printf(stderr, ”Errore Fork”); exit(-1); } else if (pid == 0) { /* processo figlio */} execlp(“/bin/ls”, ”ls”, NULL); } else {/* processo padre */} wait(NULL); exit(0) } }
UNIX Padre #include <stdio. h> #include <unistd. h> int main(int argc, char *argv[]) { int pid; /* creazione nuovo processo */ pid=fork(); if (pid < 0) {/* errore */ printf(stderr, ”Errore Fork”); exit(-1); } else if (pid == 0) { /* processo figlio */} execlp(“/bin/ls”, ”ls”, NULL); } else {/* processo padre */} wait(NULL); exit(0) } }
UNIX Figlio Padre #include <stdio. h> #include <unistd. h> int main(int argc, char *argv[]) { int pid; /* creazione nuovo processo */ pid=fork(); if (pid < 0) {/* errore */ printf(stderr, ”Errore Fork”); exit(-1); } else if (pid == 0) { /* processo figlio */} execlp(“/bin/ls”, ”ls”, NULL); } else {/* processo padre */} wait(NULL); exit(0) } }
Operazioni sui Processi Terminazione (system call) Processo Padre ABORT(pid) Processo Figlio EXIT(num) Morte del Padre ? Terminazione a cascata o Assegnazione init (UNIX)
Processi Cooperanti • Condivisione Informazioni • Velocizzare Calcolo • Modularità • Convenienza Produttore - Consumatore
Processi Cooperanti Produttore BUFFER Sincronizzazione (IPC) (shared memory, message passing ) Consumatore
Message Passing Send(message) , Receive(message) A ------------ canale B • Comunicazione diretta o indiretta • Comunicazione sincrona o asincrona • Bufferizzazione automatica o esplicita
Comunicazione diretta Dati A (mittente) e B (destin. ) due processi Send(B, message) , Receive(A, message) Canale di comunicazione: • Automatico con i nomi dei processi • una connessione associata a due processi • due processi hanno 1 ed 1 sola connessione Simmetrico: sia il mittente/destinatario deve usare il nome del processo destinatario/mittente Asimmetrico: send(B, message) receive(&id, message)
Comunicazione indiretta Comunicazione avviene attraverso MAILBOX o PORTE Send(MBX, message) , Receive(MBX, message), (Create e Delete) Canale di comunicazione: • Mailbox Condivisa (muore con il creatore) • una connessione associata a più di due processi • due processi possono avere più connessioni P 1 (mittente) e P 2, P 3 (receive) Connessione solo con 2 processi, solo 1 processo fa receive, Arbitrario.
Comunicazione Sincrona, Asincrona Dati A (mittente) e B (destin. ) due processi Send() , Receive() Bloccante, non Bloccante Bufferizzazione (zero, limitata, illimitata)
Mac OS X Creazione Processo: MBX_Kern, MBX_Ntfy msg_send() , msg_receive() Creazione MBX: port_allocate() (send e receive) coda (8 msg) modalità FIFO msg: header e dati (variabili) send invia anche la mbx coda piena?
Windows XP Local Procedure Call (LPC) Porte di connessione (object) e Porte di comunicazioni Object visibili a tutti i processi 1. 2. 3. 4. Client apre un object Client invia richiesta di connessione Server crea 2 porte private e invia id al client Client e Server usano i due id: send, callback e receive Short msg (256 byte) o section object (indir. Send con short msg)
- Reyneri introduzione alla sociologia del mercato del lavoro
- Sociologia dei processi culturali sapienza
- Foramen ischiadicum majus
- Processo non spontaneo
- Processi metabolici
- Calometria
- Diapiri magmatici
- Scheduling dei processi
- Processi cognitivi freddi
- Processi semantici matematica
- Processi sequenziali
- La stregoneria nel medioevo
- Processi cognitivi
- Mappatura processi anticorruzione esempio
- Processi sequenziali
- Apparound sorgenia
- Sifead ministero del lavoro
- Slide sulla ricerca attiva del lavoro
- Elementi essenziali del contratto di lavoro
- Legge di say
- Borsa continua del lavoro
- Maestri del lavoro reggio emilia