[OSy] Umisteni stacku

Martin Decky decky at dsrg.mff.cuni.cz
Tue Jan 9 12:39:57 CET 2007


> Ja si myslel, ze zmena adresnych prostoru probehne
> automaticky pri rozvrhovani, ne? Melo by nam postacit
> pri vytvoreni procesu zavolat thread_create_new_map()
> a pak alokovat pamet pomoci vmalloc()?

To ano, ale nove mapovani plati uvnitr vlakna, ktere bylo pomoci 
thread_create_new_map() vytvoreno, nesdili se mapovani s vlaknem (obecne 
kontextem), ktere tu funkci vyvolalo.

Takze naalokovat (presnejsi je asi "namapovat") pamet pro obraz procesu 
musite uvnitr toho nove vznikleho vlakna a take pouze tam muzete 
bezpecne do teto namapovane pameti obraz zkopirovat (nebo pouzit funkci 
copy_to_thread() pro kopirovani pameti mezi ruznymi adresnimi prostory).


BTW: Kdyz uz jsme u toho, tak pripominam, ze by bylo dobre, abyste 
spousteni noveho procesu udelali nejak univerzalne (prestoze se v praxi 
bude spoustet jen jeden proces), treba tak, ze si vytvorite funkci 
process_create() s vhodnymi parametry. Neni vhodne, abyste to 
"nabastlili" rovnou do kernelove main().


M.D.



More information about the NSWI004 mailing list