Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Systémové hovory sú základným rozhraním medzi užívateľským programom a jadrom operačného systému. Umožňujú programom požadovať služby z jadra, ako je prístup k hardvéru, riadenie procesov a interakcia so súborom. Tu je zrútenie toho, ako fungujú:
1. Žiadosť používateľa:
* Používateľský program, ktorý beží v priestore používateľa, potrebuje konkrétnu službu, napríklad čítanie súboru, vytvorenie nového procesu alebo prístup k zariadeniu.
* Program používa na podanie žiadosti funkciu knižnice (napr. `Open ()`, `Fork ()`, `ret ()`).
2. Volanie funkcie knižnice:
* Funkcia knižnice je zodpovedná za vytvorenie špecifickej štruktúry systému volania. Táto štruktúra obsahuje informácie o požadovanom volaní systému (napr. Číslo funkcie, argumenty).
* Táto štruktúra sa potom odovzdáva na jadro pomocou špeciálnej inštrukcie známeho ako prerušenie volania systému (často `int 0x80` alebo` sysCall`).
3. Manipulácia s jadrom:
* Prerušenie spôsobuje prepínač kontextu, ktorý prenáša ovládanie z používateľského programu do jadra.
* Jadro identifikuje požadovaný systémový hovor na základe jeho čísla.
* Jadro potvrdzuje argumenty volania systému a kontroluje povolenia.
* Jadro vykonáva požadovanú službu, ktorá potenciálne zahŕňa interakcie s hardvérom, systémom súborov alebo inými procesmi.
4. Návratová hodnota:
* Akonáhle jadro dokončí požadovanú službu, vráti stavový kód a potenciálne údaje do užívateľského programu.
* Funkcia knižnice interpretuje stavový kód a vráti výsledok do používateľského programu.
5. Odpoveď používateľského programu:
* Používateľský program dostáva výsledok, spracováva ho a pokračuje vo svojom vykonávaní.
Kľúčové body:
* Systémové hovory sú základnými stavebnými blokmi pre akýkoľvek operačný systém podobný UNIX.
* Poskytujú štandardizované, bezpečné a kontrolované rozhranie medzi užívateľskými programami a jadrom.
* Jadro chráni systémové zdroje a zaisťuje, že programy nemajú prístup alebo úpravu komponentov na úrovni systému bez povolenia.
* Rozhranie systémového hovoru je vo všeobecnosti konzistentné v rôznych systémoch podobných UNIX, čím sa zabezpečuje prenosnosť aplikácií.
Príklad:
Zoberme si systémové volanie „read ()`. Program môže použiť funkciu knižnice `ret ()` na čítanie údajov zo súboru. Táto funkcia:
1. Zostavuje štruktúru systémového hovoru pomocou čísla `read ()`, deskriptor súboru, adresa vyrovnávacej pamäte a počet bajtov na čítanie.
2. Vykonáva prerušenie prenosu systému na prenos kontroly do jadra.
3. Jadro potvrdzuje argumenty, načíta údaje zo súboru a skopíruje ich do vyrovnávacej pamäte poskytovanej používateľom.
4. Jadro vracia počet bajtov prečítaných do používateľského programu.
5. Užívateľský program prijíma výsledok a podľa potreby používa údaje.
Pochopenie toho, ako volá systémy, je nevyhnutné na pochopenie vnútorného fungovania operačných systémov podobných UNIX a programov písania, ktoré efektívne interagujú s jadrom.