Lezione 4 I processi: implementazioni
UNIX
Creazione di un processo Assegna al processo un identificatore univoco Alloca spazio per il processo Inizializza il PCB Predisponi gli opportuni agganci con strutture dati interessate 3
Creazione di un processo Il kernel gestisce due strutture dati per ogni processo attivo La tabella del processo Sempre residente in memoria centrale La User Area Scaricata su disco quando il processo non è in memoria 4
Tabella del processo Contiene le seguenti informazioni: Parametri di scheduling Parametri per la gestione della memoria e del codice Signal Altre: PID, PID del padre, Stato 5
U-Area Contiene le seguenti informazioni: Registri macchina Descrittori dei file Accounting Stack del kernel 6
Implementazione La creazione di un processo avviene per duplicazione di un processo già esistente p_id = fork() Genera un processo identico al processo che ha eseguito la fork(), l unica differenza è che il processo padre ha un p_id > 0, il figlio ha p_id = 0 Con execv è possibile modificare i dati e il codice 7
Processi in UNIX Process creation in UNIX. 8
SYSCALL s è un codice d errore pid è l identificatore del processo residual è il tempo che intercorrerà sino al prossimo segnale 9
Esempio di Shell 10
Il comando ls 11
12
Thread in POSIX The principal POSIX thread calls. 13
Flag per un clone Linux 14
La creazione dei processi Quando il computer viene acceso un programma residente in ROM, legge il contenuto del primo blocco del disco di boot e lo esegue Questo settore (Master boot record) contiene un programma di bootstrap e una partition table Il bootstrap viene eseguito e carica dalla partizione attiva il boot 15
La creazione dei processi Il boot carica, dopo averli individuati, nelle opportune zone di memoria: il kernel e altre parti del s.o. tra cui il primo processo utente di nome init Viene avviato il kernel che avvia i vari servizi e per ultimo il processo init Il processo init verifica quanti terminali sono connessi al sistema e per ciscuno di essi esegue una fork 16
La creazione dei processi Ogni figlio esegue poi il comando /usr/bin/getty che genera la linea login: Quando l utente inserisce nome e password viene richiamato il programma /usr/bin/login che verifica la correttezza dei dati Se i dati sono corretti viene richiamato il programma /bin/sh 17
W2000
Il sistema operativo 19
Oggetti 20
Tipi di oggetto 21
Processi e Thread 22
Processi e Thread 23
Processi Un processo viene creato quando un altro processo chiama la funzione API Win 32 CreateProcess Tutti i processi sono creati uguali, anche se esiste una gerarchia implicita nel fatto che al processo chiamante viene restituito un gestore del nuovo processo 24
Thread Ogni processo viene creato con un solo thread I thread sono creati con la funzione API Win32 CreateThread In W2000 i thread sono gestiti a livello di kernel 25
Implementazione dei processi La funzione CreateProcess chiama una procedura in kernel32.dll che svolge le seguenti azioni: Esamina del file eseguibile associato (POSIX, OS/2, MS-DOS, W2000) per predisporre il corretto ambiente di esecuzione; Chiama la Syscall NtCreateProcess per la creazione delle strutture dati, terminate le operazioni la syscall restituisce il controllo a kernel32.dll 26
Implementazione dei processi Chiama la syscall NtCreateThread per la creazione del thread iniziale Passa i parametri caratteristici del nuovo processo al relativo ambiente d esecuzione (Win32, MS-Dos, OS/2, ecc.), che provvede ad aggiornare i propri valori Il processo (thread) può ora andare in esecuzione 27
Job, Process, Thread & Fiber Mgmt. API Calls 28
La creazione dei processi Quando il computer viene acceso, un programma residente in ROM legge il contenuto del primo blocco del disco di boot e lo esegue Questo settore (Master boot record) contiene un programma di bootstrap e una partition table Il bootstrap individua la partizione attiva, legge il boot sector ed esegue il programma ivi presente: il boot 29
La creazione dei processi Il boot individua il file ntldr, lo carica in memoria e lo esegue Ntldr legge il file boot.ini che elenca tutte le versioni di hal.dll e ntoskrnl.exe disponibili e altri parametri relativi al sistema hw. Ntldr quindi seleziona i file hal.dll e ntoskrnl.exe più appropriati e i driver necessari per avviare il sistema e li carica in memoria Il controllo viene passato a ntoskrnl.exe Vengono chiamate le varie componenti dell esecutivo per provvedere all inizializzazione delle aree di memoria di loro competenza 30
La creazione dei processi Viene creato il primo processo: session manager (smss.exe) che provvede ad attivare: Il sottosistema Win32 (csrss.exe) Dll Winlogon.exe 31
La creazione dei processi Winlogon.exe provvede a: Identificare l utente Attivare il processo di autenticazione (lsass.exe) Attivare il processo services.exe che attiva tutti i processi demoni per lo spazio utente, e carica tutti i driver non ancora caricati 32
Booting Windows 2000 33
Environmental Subsystems (2) File fondamentali in W2K Modalita` d esecuzione Numero di chiamate di funzione esportate Contenuto principale di ciascun file Chiamate in win32k.sys non esportate formalmente Non chiamate direttamente 34