Domanda JOS - indirizzo KSTACKTOP Clicca QUI per vedere il messaggio nel forum |
Elisabeth |
Premetto che sto guardando le slide del Bruschi dell'anno 2013/2014 ed anche i sorgenti di JOS dell'anno 2014...nelle prime trovo che l'indirizzo di inizio dello stack del kernel è a partire dall'indirizzo KERNBASE - PTSIZE, nei sorgenti lo stack parte da KERNBASE...qualcuno mi illumina? :/
Da dove parte questo benedetto stack? |
IforgotPSW |
uhm strano.. io sto studiando sulle slide, e lì è abbastanza chiaro nel definire KSTACKTOP = KERNBASE - PTSIZE .. con lo stack che cresce verso il basso quindi da
KSTACKTOP verso KSTACKTOP - PTSIZE ... c'è anche una figura che mostra l'area di memoria compresa tra KSTACKTOP e KERNBASE come invalid memory ..
edit: mi riferisco alle pagine 80 e 64 |
Cronovirus |
Ciao a tutti,
Come sapete lo stack quando alloca memoria va verso indirizzi "più bassi", mentre quando ci scrivete l'ordine è inverso. Tanto per intenderci se avete un buffer tra l'indirizzo 1000 e 900, quando ci scrivete si parte da 900 andando verso l'alto, quindi verso 1000. JOS negli indirizzi sopra KERNBASE come sapete ci mette il kernel. Cosa succederebbe se usiamo routine di scrittura non sicure quali "gets"? Buffer overflow e bye bye kernel. Per questo jos mette il top dello stack a KERNBASE-PTSIZE, dove tra KERNBASE-PTSIZE e KERNBASE c'è una pagina segnata come "non valida", quindi quando si prova ad accedervi.. TRAP!!
E' una protezione del kernel.
Venendo alla tua domanda.. mi sa proprio che al mit hanno cambiato layout (anche se il file è aggiornato al lab 2.. mi sembra assurdo che nei lab successivi lo cambiano ma.. boh). Quello che ti posso assicurare è che nell'ultima edizione del corso c'è
KERNSTACKTOP = KERNBASE-PTSIZE
ciao :) |
|
|
|