Rendszerhívás az operációs rendszerben (Operating System): Mi az, típusai és példái
Mi az a rendszerhívás Operating rendszer?
A rendszerhívás egy olyan mechanizmus, amely interfészt biztosít egy folyamat és az operációs rendszer között. Ez egy programozott módszer, amelyben egy számítógépes program szolgáltatást kér az operációs rendszer kernelétől.
A System call az operációs rendszer szolgáltatásait API-n (Application Programming Interface) keresztül kínálja a felhasználói programoknak. A rendszerhívások jelentik a kernelrendszer egyetlen belépési pontját.

Példa a rendszerhívásra
Például, ha programkódot kell írnunk az adatok olvasásához egy fájlból, másolja át az adatokat egy másik fájlba. Az első információ, amelyet a program igényel, a két fájl neve, a bemeneti és kimeneti fájlok.
Egy interaktív rendszerben az ilyen típusú programvégrehajtás bizonyos rendszerhívásokat igényel az operációs rendszertől.
- Az első hívás egy felszólító üzenet írása a képernyőn
- Másodszor, a két fájlt meghatározó karakterek beolvasása a billentyűzetről.
Hogyan működik a rendszerhívás?
Íme a System Call lépései az operációs rendszerben:
Amint az a fent megadott rendszerhívási példa diagramon látható.
Step 1) A felhasználói módban végrehajtott folyamatok mindaddig, amíg egy rendszerhívás meg nem szakítja azt.
Step 2) Ezt követően a rendszerhívás prioritási alapon kernel módban kerül végrehajtásra.
Step 3) A rendszerhívás végrehajtásának befejeztével a vezérlés visszatér felhasználói módba.
Step 4) A felhasználói folyamatok végrehajtása ben folytatódott Kernel mód.
Miért van szükség rendszerhívásokra az operációs rendszerben?
A következő helyzetek rendszerhívásokat igényelnek az operációs rendszerben:
- A fájlok olvasása és írása rendszerhívásokat igényel.
- Ha egy fájlrendszer fájlokat szeretne létrehozni vagy törölni, rendszerhívásokra van szükség.
- A rendszerhívások új folyamatok létrehozására és kezelésére szolgálnak.
- A hálózati kapcsolatokhoz rendszerhívásokra van szükség a csomagok küldéséhez és fogadásához.
- A hardvereszközök, például szkenner, nyomtató eléréséhez rendszerhívás szükséges.
A rendszerhívások típusai
Íme az öt rendszerhívás típus az operációs rendszerben:
- Folyamatirányítás
- Fájlkezelés
- Device Management
- Információk karbantartása
- távközlés
Folyamatirányítás
Ez a rendszerhívás végrehajtja a folyamat létrehozásának, folyamatleállításának stb.
Funkciók:
- Befejezés és megszakítás
- Betöltés és végrehajtás
- Folyamat létrehozása és folyamat befejezése
- Várj és Signal esemény
- Memória lefoglalása és felszabadítása
Fájlkezelés
A fájlkezelő rendszerhívások olyan fájlkezelési feladatokat kezelnek, mint a fájl létrehozása, az olvasás és az írás stb.
Funkciók:
- Hozzon létre egy fájlt
- Fájl törlése
- Fájl megnyitása és bezárása
- Olvass, írj és helyezz át
- Fájl attribútumok beszerzése és beállítása
Device Management
Az eszközkezelés elvégzi az eszközkezelés feladatát, mint például az eszköz puffereiből való olvasás, az eszközpufferekbe való írás stb.
Funkciók:
- Kérje és engedje el az eszközt
- Logikus eszközök csatlakoztatása/leválasztása
- Eszközattribútumok beszerzése és beállítása
Információk karbantartása
Kezeli az információkat és azok átvitelét az operációs rendszer és a felhasználói program között.
Funkciók:
- Szerezze be vagy állítsa be az időt és a dátumot
- Folyamat- és eszközattribútumok lekérése
Kommunikáció
Az ilyen típusú rendszerhívásokat kifejezetten a folyamatok közötti kommunikációhoz használják.
Funkciók:
- Kommunikációs kapcsolatok létrehozása, törlése
- Üzenet küldése, fogadása
- Segítség az OS-nek az állapotinformációk átviteléhez
- Távoli eszközök csatlakoztatása vagy leválasztása
A rendszerhívás paramétereinek átadásának szabályai
Íme a paraméterek rendszerhívásnak való átadásának általános szabályai:
- A paramétereket az operációs rendszernek kell benyomnia vagy ki kell emelnie a veremből.
- A paraméterek regiszterekben adhatók át.
- Ha több paraméter van, mint regiszter, akkor azt egy blokkban kell tárolni, és a blokkcímet paraméterként kell átadni egy regiszternek.
Az operációs rendszerben használt fontos rendszerhívások
várjon()
Egyes rendszerekben egy folyamatnak várnia kell egy másik folyamatra, hogy befejezze a végrehajtását. Ez a fajta helyzet akkor fordul elő, amikor egy szülőfolyamat utódfolyamatot hoz létre, és a szülőfolyamat végrehajtása felfüggesztve marad mindaddig, amíg az alárendelt folyamat le nem hajtja.
A szülőfolyamat felfüggesztése automatikusan megtörténik egy wait() rendszerhívással. Amikor a gyermekfolyamat befejezi a végrehajtást, a vezérlő visszakerül a szülőfolyamathoz.
Villa()
A folyamatok ezt a rendszerhívást használják olyan folyamatok létrehozására, amelyek önmaguk másolatai. Ennek a rendszernek a segítségével a Call szülő folyamat létrehoz egy gyermek folyamatot, és a szülő folyamat végrehajtása felfüggesztésre kerül, amíg a gyermek folyamat le nem fut.
végrehajt()
Ez a rendszerhívás akkor fut le, amikor egy végrehajtható fájl egy már futó folyamat keretében lecseréli a régebbi végrehajtható fájlt. Az eredeti folyamatazonosító azonban megmarad, mivel új folyamat nem épül fel, hanem a verem, az adatok, a fej, az adatok stb. helyébe az új folyamat lép.
megöl()
A kill() rendszerhívást az operációs rendszer arra használja, hogy befejező jelet küldjön egy folyamatnak, amely felszólítja a folyamatot a kilépésre. A kill rendszerhívás azonban nem feltétlenül jelenti a folyamat leállítását, és többféle jelentéssel bírhat.
kilépés ()
Az exit() rendszerhívás a programvégrehajtás leállítására szolgál. Különösen a többszálú környezetben ez a hívás határozza meg, hogy a szál végrehajtása befejeződött. Az operációs rendszer visszaszerzi a folyamat által használt erőforrásokat az exit() rendszerhívás használata után.
Összegzésként
Kategóriák | Windows | Unix |
---|---|---|
Folyamatirányítás | CreateProcess() Kilépési folyamat() WaitForSingleObject() |
Villa() kilépés () várjon() |
Eszköz manipuláció | SetConsoleMode() ReadConsole() WriteConsole() |
loctl() olvas() ír() |
Fájlkezelés | CreateFile() Fájl olvasása() WriteFile() CloseHandle() |
Nyisd ki() Olvas() ír() Bezárás!) |
Információk karbantartása | Get CurrentProcessID() SetTimer() Alvás() |
getpid() riasztás() alvás() |
Kommunikáció | CreatePipe() CreateFileMapping() MapViewOfFile() |
Cső() shm_open() mmap() |
Védelem | SetFileSecurity() InitializeSecurityDescriptvagy() Security beállításaDescriptvagyCsoport () |
Chmod() Umask() Chown() |