|
Andrea86CD |
.amico.
Registered: Oct 2008
Posts: 27 (0.00 al dì)
Location: milano
Corso: Comunicazione Digitale
Anno: 1
Time Online: 4:10:33 [...]
Status: Offline
Edit | Report | IP: Logged |
non so quanto possano essere utili visto che sono abbastanza all inizio XD cmq posto lo stesso
20.04.09 THREADS
Os-mantis:è un os (con architettura ridotta all’osso) con il kernel che coincide con lo schedulatore
Clock handler: gestisce gli interrupts fisici e ne ricava delle informazioni
Più auc in gestione sono indirizzate mediante una tabella vettoriale che contiene in ogni elemento tutte le info del thread/processo (stato – se sono collegate risorse –etc..)
User thread: svolgono operazioni per il sistema operativo
Ad ogni thread corrisponde una parte di memoria nello stack per consentire una separazione per i thread
Quando si crea un thread si richiede uno spazio di memoria x allocare il thread
Stack pointer: puntatore che punta al top della pila
ST: comunicatore di stato del thread per l os
Priority: priorità dell esecuzione del thread
Waiting for pointer: il thread è sospeso fino a al verificarsi di un evento al quale punta il puntatore
Next pointer: in una lista linkata punto al thread successivo
Differenza tra stack e lista dinamica: nella prima devo allocare prima lo spazio se pur virtualmente (è statica ma uso meno spazio) la seconda è dinamica però occupa + memoria
Quando inizializziamo il sistema inizializziamo tutti i campi dei threads
STATO DEI THREADS
Running: la cpu lo sta utilizzando
Spleep block: è un interruzione periodica la prima (finisce il tempo di slice), nella seconda è in attesa di un evento entrambi sono in attesa di essere spostati in ready
Ready: pronti per l esecuzione
Empty: è stato inizializzato senza valori
Thread.new: creo il thread e lo metto in ready
Thread.execute: esegue termina e toglie dallo stack il thread
Schedulatore: è un insieme di funzioni che gestisce i thread e i loro stati tramite degli algoritmi ed il dispatcher
Dispatch: funzione dello schedulatore che esegue la scelta di quale thread mandare in esecuzione (smette di funzionare quando non ci sono + thread in esecuzione)
Thread idle: è un thread che è sempre in funzione
Stato del thread: insieme dei registri associato alla computazione del thread in quel determinato momento
Computazione nel contesto del thread: quando un thread andrà sospeso momentaneamente viene salvato lo stato del thread nella stack in modo da essere richiamato dopo dalla cpu e riprendere da quel che stava facendo
Lez 13
Bit di modo: supporto architetturale che distingue tra l esecuzione di codice in modalità user o kernel
Mod kernel: tutte le operazioni della macchina sono eseguibili
Mod user: viene eseguita un operazione alla volta e per le altre c’è una transazione tra kernel e user mode
Processor Modes (MIPS):
registro di stato
registro di causa
baddvaddr,and
ecp
Kernel : serie di funzioni per la gestione del sistema (utilizzate in mod kernel), crea e gestisce i thread
Interruzione sincrona : (es. trap) eseguita a livello macchina
Interruzione asincrona: (es. chiamata i/o) eseguita a livello sw
Le eccezioni si possono dividere nei seguenti tipi:
* interrupt: richiesta spesso asincrona e di provenienza esterna al microprocessore che forza il sistema operativo a interrompere il programma in esecuzione;
* system call: chiamate di un programma ad una funzione del sistema operativo, ad esempio per eseguire una operazione su un file o su un processo.
Processo : macchina astratta che simula la macchina di VN, ha un proprio spazio di indirizzamento virtuale.
La differenza tra win e unix sono le chiamate di sistema
Process manager:schema astratto di O.S. simile a unix
Program manager: insieme di programmi che prendono in lavorazione dei processi
Fasi aricamento O.S.: carica il kernel, inizializza il process manager, esegue i thread principali
Process control block:sono degli slot che contengono le info dei processi (id,processo padre/figli, puntatori etc)
Modelli multi threading
Molti- 1 + user th posso essere mappati in un kernel th (solaris green thread,gnu portable thread)
1 – 1 un user per un kernel (win nt/xp/2000, linux, solaris)
Molti – molti permette di mappare + user in + kernel e quindi permette allo s di creare abbastanza kernel th (Windows NT/2000 con the ThreadFiber package)
2 level mode: come molti molti ma permette il confinamento di un user in un kernel
Come evitare che i thread sprechino le risorse della cpu:
*tramite la chiamata di sistema yeld() che sostituisce il th che sta cessando l esecuzione con uno in ready
*attraverso degli interrupt periodici al os in modo che lo scheduler controlli lo stato dei th
in questo link ho trovato dei pdf con delle cose riguardanti il nostro corso spiegate in italiano..se volete darci un occhiata male non vi fa
http://www.di.unipi.it/~susanna/SO_04/
|