Portál AbcLinuxu, 6. května 2025 16:34

vfork

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 forku. 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: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.