Systémové volání je způsob, jak se uživatelský program propojit s operačním systémem. Program požaduje několik služeb a OS reaguje vyvoláním řady systémových volání, aby požadavek splnil. Systémové volání může být napsáno v jazyce symbolických instrukcí nebo v podobném jazyce na vysoké úrovni C nebo Pascal . Systémová volání jsou předdefinované funkce, které může operační systém přímo vyvolat, pokud je použit jazyk vysoké úrovně.
V tomto článku se dozvíte o systémových voláních v operačním systému a proberete jejich typy a mnoho dalších věcí.
Co je systémové volání?
Systémové volání je metoda, kterou počítačový program žádá o službu z jádra operačního systému, na kterém běží. Systémové volání je metoda interakce s operačním systémem prostřednictvím programů. Systémové volání je požadavek z počítačového softwaru na jádro operačního systému.
The Aplikační programové rozhraní (API) propojuje funkce operačního systému s uživatelskými programy. Funguje jako spojovací článek mezi operačním systémem a procesem a umožňuje programům na uživatelské úrovni požadovat služby operačního systému. K systému jádra lze přistupovat pouze pomocí systémových volání. Systémová volání jsou vyžadována pro všechny programy, které využívají prostředky.
Jak se provádějí systémová volání?
Když počítačový software potřebuje získat přístup k jádru operačního systému, provede systémové volání. Systémové volání používá API k vystavení služeb operačního systému uživatelským programům. Je to jediný způsob přístupu k systému jádra. Všechny programy nebo procesy, které ke spuštění vyžadují prostředky, musí používat systémová volání, protože slouží jako rozhraní mezi operačním systémem a uživatelskými programy.
Níže je uvedeno několik příkladů, jak se systémové volání liší od uživatelské funkce.
sql výběr více tabulek
- Funkce systémového volání může vytvářet a používat procesy jádra k provádění asynchronního zpracování.
- Systémové volání má větší oprávnění než standardní podprogram. V doméně ochrany jádra se provede systémové volání s oprávněním režimu jádra.
- Systémová volání nesmějí používat sdílené knihovny ani žádné symboly, které nejsou přítomny v doméně ochrany jádra.
- Kód a data pro systémová volání jsou uložena v globální paměti jádra.
Proč potřebujete systémová volání v operačním systému?
Existují různé situace, kdy musíte vyžadovat systémová volání v operačním systému. Následující situace jsou následující:
- Je nutné jej vyžadovat, když chce souborový systém vytvořit nebo odstranit soubor.
- Síťová připojení vyžadují systémová volání pro odesílání a přijímání datových paketů.
- Pokud chcete číst nebo zapisovat soubor, musíte systémová volání.
- Pokud chcete získat přístup k hardwarovým zařízením, včetně tiskárny, skeneru, potřebujete systémové volání.
- Systémová volání se používají k vytváření a správě nových procesů.
Jak fungují systémová volání
Aplikace běží v oblasti paměti známé jako uživatelský prostor. Systémové volání se připojí k jádru operačního systému, které se provádí v prostoru jádra. Když aplikace vytvoří systémové volání, musí nejprve získat oprávnění od jádra. Dosahuje toho pomocí požadavku na přerušení, který pozastaví aktuální proces a předá řízení jádru.
Pokud je požadavek povolen, jádro provede požadovanou akci, jako je vytvoření nebo smazání souboru. Jako vstup přijímá aplikace výstup jádra. Po přijetí vstupu aplikace pokračuje v postupu. Po dokončení operace jádro vrátí výsledky aplikaci a poté přesune data z prostoru jádra do uživatelského prostoru v paměti.
Jednoduché systémové volání může trvat několik nanosekund, než poskytne výsledek, jako je získání systémového data a času. Složitější systémové volání, jako je připojení k síťovému zařízení, může trvat několik sekund. Většina operačních systémů spouští odlišné jádrové vlákno pro každé systémové volání, aby se zabránilo úzkým místům. Moderní operační systémy jsou vícevláknové, což znamená, že mohou zpracovávat různá systémová volání současně.
Typy systémových volání
Obvykle existuje pět typů systémových volání. Jedná se o následující:
Nyní se dozvíte o všech různých typech systémových volání jeden po druhém.
Kontrola procesu
Řízení procesů je systémové volání, které se používá k řízení procesů. Některé příklady řízení procesů zahrnují vytvoření, načtení, přerušení, ukončení, spuštění, zpracování, ukončení procesu atd.
Správa souborů
Správa souborů je systémové volání, které se používá ke zpracování souborů. Některé příklady správy souborů zahrnují vytváření souborů, mazání souborů, otevírání, zavírání, čtení, zápis atd.
ssh plná forma
Správa zařízení
Správa zařízení je systémové volání, které se používá pro práci se zařízeními. Některé příklady správy zařízení zahrnují čtení, zařízení, zápis, získání atributů zařízení, vydání zařízení atd.
Údržba informací
Údržba informací je systémové volání, které se používá k udržování informací. Existuje několik příkladů údržby informací, včetně získávání systémových dat, nastavení času nebo data, získání času nebo data, nastavení systémových dat atd.
Sdělení
Komunikace je systémové volání, které se používá pro komunikaci. Existuje několik příkladů komunikace, včetně vytváření, odstraňování komunikačních spojení, odesílání, přijímání zpráv atd.
Příklady systémových volání Windows a Unix
Existují různé příklady systémových volání Windows a Unix. Ty jsou uvedeny níže v tabulce:
Proces | Okna | Unix |
---|---|---|
Kontrola procesu | CreateProcess() ExitProcess() WaitForSingleObject() | Vidlička() Výstup() Počkejte() |
Manipulace se soubory | CreateFile() ReadFile() WriteFile() CloseHandle() | OTEVŘENO() Číst() Napsat() Zavřít() |
Správa zařízení | SetConsoleMode() ReadConsole() WriteConsole() | Ioctl() Číst() Napsat() |
Údržba informací | GetCurrentProcessID() SetTimer() Spát() | Getpid() Poplach() Spát() |
Sdělení | CreatePipe() CreateFileMapping() MapViewOfFile() | Trubka() Shmget() Mmap() |
Ochrana | SetFileSecurity() InitializeSecurityDescriptor() SetSecurityDescriptorgroup() | Chmod() umask() Chown() |
Zde se stručně seznámíte s některými metodami:
OTEVŘENO()
The OTEVŘENO() systémové volání umožňuje přístup k souboru v systému souborů. Přiděluje prostředky souboru a poskytuje popisovač, na který může proces odkazovat. Mnoho procesů může otevřít soubor najednou nebo pouze jedním procesem. Vše je založeno na systému souborů a struktuře.
css centrování obrázku
číst()
Používá se k získávání dat ze souboru v systému souborů. Obecně přijímá tři argumenty:
- Popisovač souboru.
- Vyrovnávací paměť pro ukládání přečtených dat.
- Počet bajtů ke čtení ze souboru.
K identifikaci a otevření souboru lze použít deskriptor souboru ke čtení OTEVŘENO() před čtením.
Počkejte()
V některých systémech může proces před pokračováním čekat na dokončení svého provedení jiný proces. Když nadřazený proces vytvoří podřízený proces, provádění nadřazeného procesu je pozastaveno, dokud nebude podřízený proces dokončen. The Počkejte() systémové volání se používá k pozastavení nadřazeného procesu. Jakmile podřízený proces dokončí své provedení, řízení se vrátí nadřazenému procesu.
napsat()
Používá se k zápisu dat z uživatelské vyrovnávací paměti do zařízení, jako je soubor. Toto systémové volání je jedním ze způsobů, jak program generovat data. Obecně to vyžaduje tři argumenty:
- Popisovač souboru.
- Ukazatel na vyrovnávací paměť, ve které jsou uložena data.
- Počet bajtů, které mají být zapsány z vyrovnávací paměti.
Vidlička()
Procesy generují své klony pomocí Vidlička() systémové volání. Je to jeden z nejběžnějších způsobů vytváření procesů v operačních systémech. Když nadřazený proces vytvoří podřízený proces, provádění nadřazeného procesu se přeruší, dokud se podřízený proces nedokončí. Jakmile podřízený proces dokončí své provedení, řízení se vrátí nadřazenému procesu.
zavřít()
Používá se k ukončení přístupu k systému souborů. Když je vyvoláno toto systémové volání, znamená to, že program již soubor nevyžaduje, a vyrovnávací paměti jsou vyprázdněny, informace o souboru jsou změněny a v důsledku toho jsou prostředky souboru zrušeny.
java lambda
exec()
Když spustitelný soubor nahradí dřívější spustitelný soubor v již spuštěném procesu, je vyvolána tato systémová funkce. Protože se nevytváří nový proces, stará identifikace procesu zůstává, ale nový proces nahrazuje data, zásobník, data, hlavu atd.
výstup()
The výstup() je systémové volání, které se používá k ukončení provádění programu. Toto volání označuje, že spuštění vlákna je dokončeno, což je užitečné zejména v prostředích s více vlákny. Operační systém získává zpět prostředky vynaložené procesem po použití výstup() funkce systému.