Portál AbcLinuxu, 6. května 2025 16:34
vfork
je systémové volání jádra pro efektivní spuštění programu.
Spuštění programu v Unixu probíhá ve dvou základních krocích. Nejprve je vytvořen nový proces voláním fork. Tento nový proces pak zavolá některou funkci z rodiny exec(3)
, čímž začne vykonávat nový program.
Takový postup ale není úplně efektivní. Volání fork(2)
musí totiž sestavit kopii volajícího procesu, i když paměťový prostor této kopie bude vzápětí zahozen a nahrazen novým programem. Kdysi, než začal být pro tento paměťový prostor běžně používán mechanismus copy-on-write, to představovalo velké plýtvání. Ale i dnes fork
kopíruje tabulky stránek v tomto případě vlastně zbytečně.
Proto byl zaveden vfork(2)
jako specializovaná varianta fork
u. Voláním vfork
se sice vytvoří nový proces, ale jeho paměť může být sdílená s rodičovským procesem. Takto vytvořený proces je poněkud zkriplený a nesmí dělat nic jiného než začít vykonávat nový program voláním exec
(pak teprve se z něj stane plnohodnotný proces se vším všudy), nebo se ukončit voláním _exit(2)
. Cokoliv jiného vyústí v nedefinované chování.
Dokument vytvořil: YYY, 9.5.2008 12:45 | Poslední úprava: michich, 21.3.2009 08:01 | Historie změn | Zobrazeno: 664×
Další pojmy: vanilla - VCS - VDPAU - vfork - Vim - VM - Vulkan
Filtr: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.