>>> stránka zatím rozpracována a bude ještě měněna <<<
PROCESS - Proces
Soubory: INCLUDE\KERNEL\PROCESS.INC, KERNEL\PROCESS.ASM.
Procesem nazýváme skupinu výkonných vláken procesoru operujících ve stejné paměťové oblasti, sdílejících stejnou virtuální paměť a společné systémové prostředky. Procesy jsou organizovány hierarchicky do stromové struktury. Jeden proces může vlastnit více jiných procesů - potomků. Potomci procesu dědí od svého rodiče přístupová práva a systémové prostředky.
Datové struktury a makra
|
Struktura PROCESS je popisovač jednoho procesu. Na začátku struktury je struktura kořene RB-stromu paměťových regionů. Makro PROC_RegNum slouží ke zjištění počtu paměťových regionů v procesu. Jedná se o interní položku struktury RBROOT a proto nesmí být měněna. PROC_TaskNum je počet úloh (vláken), které patří k tomuto procesu. PROC_TaskList je seznam úloh v tomto procesu. PROC_ProcLink je větev stromového seznamu procesů v systému. PROC_VMMutex je mutexový zámek přístupu k virtuální paměti procesu. PROC_VMLock je meziprocesorový zámek k uzamknutí přístupu k virtuální paměti.
PROC_UserProc je položka seznamu procesů patřících jednomu uživateli. PROC_PGDir je ukazatel na globální popisovač adres PDE (pro jádro systému je tato položka vynulovaná, použije se globální systémový popisovač adres). PROC_VMCache je uschovaný ukazatel na naposledy použitý region. Položka slouží ke zrychlení vyhledávání regionů. Nula představuje neplatný ukazatel. PROC_Pages je čítač alokovaných stránek procesu a slouží k omezení prostředků procesu. PROC_HeapStart je adresa počátku haldy procesu. PROC_HeapEnd je adresa konce haldy procesu.
PROC_User je ukazatel na popisovač uživatele USER, kterému tento proces patří. PROC_UserID je identifikační číslo uživatele, kterému proces patří. PROC_Flags jsou příznaky procesu. Příznak PROC_ADMIN znamená, že uživatelem je administrátor a proces má tedy administrátorská (tedy neomezená) práva.
|
Makro PROCESSINI slouží k vytvoření inicializované struktury PROCESS. Parametrem makra je ukazatel na aktuálního uživatele, kterému proces patří. Ostatní položky struktury jsou inicializovány programově.
|
Makro CURRENT_PROC vyhledá popisovač aktivního procesu. Parametrem makra je jméno registru, ve kterém bude navrácen ukazatel na popisovač procesu PROCESS. Při vyhledání popisovače se využívá makro CURRENT, které navrátí ukazatel na aktuální úlohu. Ze struktury aktuální úlohy je načten ukazatel na proces, který je vlastníkem aktuální úlohy.