![]() |
Pages (8): « 1 2 3 4 [5] 6 7 8 » Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Sistemi operativi I (http://www.dsy.it/forum/forumdisplay.php?forumid=269)
-- [BRUSCHI] 13/04/07 primo compitino (http://www.dsy.it/forum/showthread.php?threadid=30079)
che spasso l'ultima videolezione quando perde una decina di minuti a far ripartire windows ^^
Originally posted by dani-dani
Ciao ragazzi..volevo chiedervi come faccio ad accedere alle videolezioni..cioè..che username e password serve..??
grazie mille..
Qualcuno mi sa dire :
1- nelle istruzioni tipo sseg mov (old_cs), eax viene copiato eax nella locazione di memoria puntata da old_cs nello stack segment ?
2- nella save:
mov dx, ss
mov ds, dx
mov es, dx
Qui cosa fa, cambia il segmento dati corrente con quello dello stack di kernel giusto? perchè?
3- jmp RETADR-P_STACKBASE(eax) il prof ha detto che con questa jump arrivo all'istruzione successiva a quella che ha chiamato la save... in che modo? RETADR E P_STACKBASE che valori hanno?
^^ grazie a chiunque riesca a rispondermi
RETADR-P_STACKBASE(eax) per questa devi vedere cosa vale RETADR-P_STACKBASE perche viene sommato a eax e poi fa la jump
si infatti stackbase dovrebbe puntare a qualcosa tipo la base dello stack... a cui aggiunge poi eax (che contiene il vecchio esp). a occhio mi sembra che si vada a prendere l'indirizzo che la "call save" ha memorizzato nello stack, prima di tutte le varie push, ma nn mi spiego bene come
reg_t retadr; /* return address for assembly code save() */
vai a cercare nel codice di minix retadr ti usciaranno fuori delle cose tipo la riga che ti ho messo.
ascolta ti vedo ferrato sul discorso, percui ti faccio delle domande.
Come avviene la chiamata eccezzione?
Ad esemip dopo avere incrementato il pc=pc+1 si controlla se il bit del segnale di int è attivo, in questo caso si deve trattare l'eccezzione, siamo a livello HardWare.
Ma a questo punto cosa succede? Non ho capito come si passa alla gestione dell'eccezione con le routine.
Poi altra cosa per il trattamento dell'eccesione vengono creati due stack? ma chi li crea e come?
Ciao
a quanto ho capito io, in exception.c ( _exception in assembler) viene presa la decisione se avviare un nuovo processo, continuare quello vecchio o interrompersi, quindi penso comprenda anche la risposta all'eccezione.
Non ne sono sicuro, ma dovrebbe quindi essere quando fa la chiamata call _exception la gestione della routine
Gli stack in tutto sono 3: quello della procedura che chiama, quello nuovo creato da cpu (hardware) e un altro creato dal kernel
ma come fa ad arrivare li
viene creato via hardware l'indirizzo della routine di risposta all'eccezione : nella IDT (interrupt descriptor table) è associato, per ogni eccezione, l'indirizzo della routine di risposta ( segmento + offset).
Ogni interrupt o eccezione è associato a un numero: hai 8 bit a disposizione ( quindi 2^8 = 256 eccezioni interrupt diversi) e questo numero è un indice nella tabella degli interrupt.
OK CHiaro.
Ma prima di arrivare li, sono già stati salvati sullo stack diversi registri. E' corretto? Se è cosi chi è che li ha salvati?
Ciao
E grazie di tutto
la cpu salva i registri in automatico nello stack, dopo ne aggiunge altri il sistema operativo con la save
Ora è più chiaro.
Quindi la cpu, quindi l'hardware si salva dei registri e poi chiama la routine di gestione dell'eccezione che richiama la save.
Ma la cpu li salva via hw?
si è automatico, non glielo dici tu in nessuna istruzione lo fa lei di suo
Grazie per la conferma.
Non ricordo proprio che il prof ne abbia parlato in dettaglio questa parte di salvataggio, ricordo solo che viene fatto e si ha il passaggio da user-mode a kernel mode.
Quindi
Stack processo in corso user-mode--->CPU---> salva in stack e passa in kernel MODE
Viene chiamata la save e vengono fatti altri aggiornamenti sullo stack sempre in kernel-mode.
Quindi in fine ho solo due stack o tre se considero:
1 stack quello fatto dalla CPU
2 stack quello fatto dalla procedura di save
3 stack quello necessario alla chiamato di trattamento dell'eccezione
ciao
E' utile ripassare in questo modo, almeno per me mi chiarisco diverse cose.
Scaricati la videolezione che lo spiega molto bene saltando la parte iniziale della fase di boot.
All times are GMT. The time now is 15:01. | Pages (8): « 1 2 3 4 [5] 6 7 8 » Show all 113 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.