Operační systém UNIX a jazyk C

Jan Brodský
Luděk Skočovský

SNTL Nakladatelství technické literatury Praha 1989, ISBN 80-03-00049-1

10. Implementace


V této kapitole se budeme zabývat tím, jak je Unix naprogramován. Soustředíme se přitom na jádro. Příklady tabulek jádra jsou uvedeny obecně, bez nároku na správnost či úplnost pro určitou verzi Unixu. Skutečné tabulky se v detailech liší. V popisu tabulek rovněž uvádíme komentáře česky, včetně diakritických znamének.

10.1 Struktura jádra

Jádro Unixu tvoří vrstvu mezi technickým vybavením použitého počítače a vrstvou procesů (obr. 10.1). Ze strany technického vybavení přijímá žádosti o obsluhu periferních a chybových přerušení, ze strany procesů žádosti o služby, volání jádra. Použitým mechanismem je rovněž přerušení. Podrobněji bude mechanismus obsluhy přerušení probrán v kap. 12.

[OBR. 10.1]

Styková rutina přepne proces do jeho systémové fáze a okopíruje argumenty volání do systémového zásobníku procesu (tedy z adresového prostoru procesu do adresového prostoru jádra). Dále vybere patřičné pokračování obsahu volání v jádře. Po návratu z obslužné funkce styková rutina přepíše výsledky volání zpět do adresového prostoru procesu a obnoví jeho uživatelskou fázi.

Souborový podsystém je dvouúrovňový. Správa souborů obsluhuje volání open, close, read, write a lseek. Jde-li o práci s obyčejným souborem, využije systémových vyrovnávacích pamětí (disková cache), jde-li o práci s periferním zařízením, obrátí se přímo na příslušný ovládač.

Správa procesů potřebuje pro naplnění adresového prostoru procesu, resp. odložení jeho obsahu na disk (swapping) služby příslušného doskového ovládače. Správa procesů rovněž rozhoduje o tom, který z procesů bude na procesoru prováděn.

Správa terminálů obsluhuje funkce, které se využívají v ovládačích všech terminálů; jde např. o práci se znakovými frontami.