[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