logo

Systemsamtal i operativsystem (OS)

Ett systemanrop är ett sätt för ett användarprogram att samverka med operativsystemet. Programmet begär flera tjänster, och operativsystemet svarar genom att anropa en serie systemanrop för att tillgodose begäran. Ett systemanrop kan skrivas på assemblerspråk eller ett högnivåspråk som C eller Pascal . Systemanrop är fördefinierade funktioner som operativsystemet direkt kan anropa om ett högnivåspråk används.

I den här artikeln kommer du att lära dig om systemanropen i operativsystemet och diskutera deras typer och många andra saker.

Vad är ett systemsamtal?

Ett systemanrop är en metod för ett datorprogram att begära en tjänst från kärnan i operativsystemet som det körs på. Ett systemanrop är en metod för att interagera med operativsystemet via program. Ett systemanrop är en begäran från datorprogram till ett operativsystems kärna.

De Application Program Interface (API) kopplar operativsystemets funktioner till användarprogram. Det fungerar som en länk mellan operativsystemet och en process, vilket gör att program på användarnivå kan begära operativsystemtjänster. Kärnsystemet kan endast nås med systemanrop. Systemanrop krävs för alla program som använder resurser.

Hur görs systemsamtal?

När en datorprogramvara behöver komma åt operativsystemets kärna gör den ett systemanrop. Systemanropet använder ett API för att exponera operativsystemets tjänster för användarprogram. Det är den enda metoden för att komma åt kärnsystemet. Alla program eller processer som kräver resurser för exekvering måste använda systemanrop, eftersom de fungerar som ett gränssnitt mellan operativsystemet och användarprogrammen.

Nedan finns några exempel på hur ett systemanrop skiljer sig från en användarfunktion.

python-program för binär sökning
  1. En systemanropsfunktion kan skapa och använda kärnprocesser för att exekvera den asynkrona behandlingen.
  2. Ett systemanrop har större auktoritet än en standardsubrutin. Ett systemanrop med kernel-mode-behörighet körs i kärnskyddsdomänen.
  3. Systemanrop är inte tillåtna att använda delade bibliotek eller några symboler som inte finns i kärnskyddsdomänen.
  4. Koden och data för systemanrop lagras i det globala kärnminnet.

Varför behöver du systemsamtal i operativsystemet?

Det finns olika situationer där du måste kräva systemanrop i operativsystemet. Följande av situationerna är följande:

  1. Det måste krävas när ett filsystem vill skapa eller ta bort en fil.
  2. Nätverksanslutningar kräver att systemet ringer till att skicka och ta emot datapaket.
  3. Om du vill läsa eller skriva en fil måste du göra systemanrop.
  4. Om du vill komma åt hårdvaruenheter, inklusive en skrivare, skanner, behöver du ett systemanrop.
  5. Systemanrop används för att skapa och hantera nya processer.

Hur systemsamtal fungerar

Applikationerna körs i ett minnesområde som kallas användarutrymme. Ett systemanrop ansluter till operativsystemets kärna, som körs i kärnutrymmet. När ett program skapar ett systemanrop måste det först få tillstånd från kärnan. Den uppnår detta genom att använda en avbrottsbegäran, som pausar den aktuella processen och överför kontrollen till kärnan.

jämförbar sträng

Om begäran är tillåten utför kärnan den begärda åtgärden, som att skapa eller ta bort en fil. Som indata tar applikationen emot kärnans utdata. Ansökan återupptar proceduren efter att input har tagits emot. När operationen är klar returnerar kärnan resultaten till applikationen och flyttar sedan data från kärnutrymmet till användarutrymmet i minnet.

Ett enkelt systemanrop kan ta några nanosekunder att ge resultatet, som att hämta systemets datum och tid. Ett mer komplicerat systemsamtal, som att ansluta till en nätverksenhet, kan ta några sekunder. De flesta operativsystem lanserar en distinkt kärntråd för varje systemanrop för att undvika flaskhalsar. Moderna operativsystem är flertrådade, vilket innebär att de kan hantera olika systemsamtal samtidigt.

Typer av systemsamtal

Det finns vanligtvis fem typer av systemsamtal. Dessa är följande:

Systemsamtal i operativsystem
    Processkontroll Filhantering Enhetshantering Informationsunderhåll Kommunikation

Nu kommer du att lära dig om alla olika typer av systemsamtal en i taget.

Processkontroll

Processkontroll är systemanropet som används för att styra processerna. Några exempel på processkontroll inkluderar skapa, ladda, avbryta, avsluta, köra, bearbeta, avsluta processen, etc.

Filhantering

Filhantering är ett systemanrop som används för att hantera filerna. Några exempel på filhantering inkluderar att skapa filer, ta bort filer, öppna, stänga, läsa, skriva, etc.

Enhetshantering

Enhetshantering är ett systemanrop som används för att hantera enheter. Några exempel på enhetshantering inkluderar läs, enhet, skriv, hämta enhetsattribut, frigör enhet, etc.

Informationsunderhåll

Informationsunderhåll är ett systemanrop som används för att underhålla information. Det finns några exempel på informationsunderhåll, inklusive att hämta systemdata, ställa in tid eller datum, hämta tid eller datum, ställa in systemdata, etc.

Kommunikation

Kommunikation är ett systemanrop som används för kommunikation. Det finns några exempel på kommunikation, inklusive skapa, ta bort kommunikationsanslutningar, skicka, ta emot meddelanden, etc.

skillnaden mellan $ och $$

Exempel på Windows- och Unix-systemanrop

Det finns olika exempel på Windows- och Unix-systemanrop. Dessa är enligt nedan i tabellen:

Bearbeta Windows Unix
Processkontroll CreateProcess()
ExitProcess()
WaitForSingleObject()
Gaffel()
Utgång()
Vänta()
Filmanipulation CreateFile()
ReadFile()
WriteFile()
CloseHandle()
Öppen()
Läsa()
Skriva()
Stänga()
Enhetshantering SetConsoleMode()
ReadConsole()
WriteConsole()
Ioctl()
Läsa()
Skriva()
Informationsunderhåll GetCurrentProcessID()
SetTimer()
Sova()
Getpid()
Larm()
Sova()
Kommunikation CreatePipe()
CreateFileMapping()
MapViewOfFile()
Rör()
Shmget()
Mmap()
Skydd SetFileSecurity()
InitializeSecurityDescriptor()
SetSecurityDescriptorgroup()
Chmod()
umask()
Chown()

Här kommer du kort att lära dig om några metoder:

öppen()

De öppen() systemanrop låter dig komma åt en fil på ett filsystem. Den allokerar resurser till filen och ger ett handtag som processen kan referera till. Många processer kan öppna en fil på en gång eller endast med en enda process. Allt är baserat på filsystemet och strukturen.

läsa()

Den används för att hämta data från en fil i filsystemet. Den accepterar tre argument i allmänhet:

  • En filbeskrivning.
  • En buffert för att lagra läsdata.
  • Antalet byte att läsa från filen.

Filbeskrivningen för filen som ska läsas kan användas för att identifiera den och öppna den med hjälp av öppen() innan du läser.

vänta()

I vissa system kan en process behöva vänta på att en annan process slutförs innan den fortsätter. När en överordnad process gör en underordnad process, avbryts exekveringen av den överordnade processen tills den underordnade processen är klar. De vänta() systemanrop används för att avbryta den överordnade processen. När den underordnade processen har slutfört sin exekvering, återgår kontrollen till den överordnade processen.

flyta till snöre

skriva()

Den används för att skriva data från en användarbuffert till en enhet som en fil. Detta systemanrop är ett sätt för ett program att generera data. Det krävs tre argument i allmänhet:

  • En filbeskrivning.
  • En pekare till bufferten där data sparas.
  • Antalet byte som ska skrivas från bufferten.

gaffel()

Processer genererar kloner av sig själva med hjälp av gaffel() systemanrop. Det är ett av de vanligaste sätten att skapa processer i operativsystem. När en överordnad process skapar en underordnad process, avbryts exekveringen av den överordnade processen tills den underordnade processen är klar. När den underordnade processen har slutfört sin exekvering, återgår kontrollen till den överordnade processen.

stänga()

Den används för att avsluta filsystemåtkomst. När detta systemanrop anropas betyder det att programmet inte längre kräver filen, och buffertarna töms, filinformationen ändras och filresurserna avallokeras som ett resultat.

exec()

När en körbar fil ersätter en tidigare körbar fil i en redan körbar process, anropas denna systemfunktion. Eftersom en ny process inte byggs kvarstår den gamla processidentifieringen, men den nya processen ersätter data, stack, data, head, etc.

utgång()

De utgång() är ett systemanrop som används för att avsluta programexekveringen. Detta anrop indikerar att trådexekveringen är klar, vilket är särskilt användbart i flertrådiga miljöer. Operativsystemet tar tillbaka resurser som spenderats av processen efter användningen av utgång() systemfunktion.