Systeemoproepen

Wat is een systeemaanroep in Linux en hoe werkt het met voorbeelden?

Wat is een systeemaanroep in Linux en hoe werkt het met voorbeelden?

Een systeemaanroep is een functie waarmee een proces kan communiceren met de Linux-kernel. Het is gewoon een programmatische manier voor een computerprogramma om een ​​faciliteit te bestellen vanuit de kernel van het besturingssysteem. Systeemaanroepen stellen de bronnen van het besturingssysteem bloot aan gebruikersprogramma's via een API (Application Programming Interface). Systeemaanroepen hebben alleen toegang tot het kernelframework. Systeemoproepen zijn nodig voor alle services die resources nodig hebben.

De Linux-kernel is propriëtaire software die in het minst potentiële stadium wordt geladen en op het apparaat werkt. Het is zijn taak om alles te organiseren wat er op de machine gebeurt, van het toetsenbord, de schijf en netwerkgebeurtenissen tot het leveren van tijdsegmenten voor gelijktijdige uitvoering van verschillende programma's. De scheiding van software en hardware creëert een veilige bubbel die de bescherming en betrouwbaarheid verbetert. Niet-bevoorrechte toepassingen kunnen de opslag van andere programma's niet bereiken, en als er een faalt, schort de kernel het proces op zodat het niet het hele systeem beschadigt.

Wafel dunne wikkel:

De Linux-systeemaanroepen worden in bepaalde programma's niet expliciet naar de kernel gerenderd. Bijna alle programma's gebruiken de standaard C-bibliotheek en bieden een lichtgewicht maar essentiële wrapper over de Linux-systeemaanroepen. De repository levert vervolgens de bijbehorende Linux-machineaanroep nadat ervoor is gezorgd dat de functieparameters zijn vertaald in de juiste processorregisters. Telkens wanneer de wrapper gegevens van de systeemaanroep ontvangt, analyseert hij deze en draagt ​​deze duidelijk bij aan het programma. Elke machine-interactieve bewerking in een programma wordt uiteindelijk omgezet in een systeemaanroep. Dus laten we er een paar bekijken. Er is een lange lijst met Linux-systeemaanroepen die we in ons Linux-systeem kunnen gebruiken. Hier is de lijst met enkele veelvoorkomende en meest gebruikte Linux-systeemaanroepen:.

Laten we enkele van de Linux-systeemaanroepen bespreken met behulp van de C-taal in ons artikel om ermee aan de slag te gaan.

Systeemoproep openen:

We kunnen de systeemaanroep "Open" in onze Linux-distributie gebruiken om het document snel te openen, wat we zullen specificeren in onze code van C-taal. Start eerst de opdrachtterminal. U kunt de sneltoets "Ctrl+Alt+T" gebruiken. Stel je hebt een tekstbestand “test.txt" in de homedirectory, en het bevat wat inhoud. Dus in het begin moet u een nieuwe bestandsnaam van het C-type "nieuw" maken.c" in de terminal via nano-editor. Probeer daarom de eenvoudige onderstaande nano-instructie uit:.

$ nano nieuw.c

Nu is de Nano-editor gelanceerd. Typ de hieronder getoonde code erin. We hebben twee bestandsbeschrijvingen in de code:. Beide bestanden kunnen worden geopend met behulp van de open systeemaanroep. De eerste descriptor bevat een leesaanroep en de tweede bevat de schrijffunctie. De eerste open oproep is het openen van het tekstbestand “test.txt" en de inhoud ervan opslaan in de bestandsdescriptor "fd". De tweede open systeemaanroep is het maken van een bestand met de naam "doel". Het document “target” is terugbetaald aan een “fd1” file descriptor. De schrijfinstructie wordt gebruikt om de bytes aan gegevens in de buffer te transcriberen. Tik op "Ctrl+S" om de code op te slaan en druk op de sneltoets "Ctrl+X" om het bestand af te sluiten.

Voer de gcc compile-instructie uit om deze C-code te compileren.

$ gcc nieuw.c

Laten we de code uitvoeren met de eenvoudige "a “.out”-query in de shell als volgt:

$ ./een.uit

De uitvoergegevens zijn verzonden naar het bestand "doel". Laten we het "doel"-bestand controleren met behulp van de "kat"-query. Het uitvoerscherm toont de gegevens van 20 tekens in het "doel" -bestand.

$ kat doel

Exec systeemoproep:

De exec-systeemaanroep wordt afgebroken om een ​​bestand uit te voeren dat momenteel wordt verwerkt. Het vorige uitvoerbare bestand wordt vervangen en het huidige bestand wordt gebruikt wanneer exec wordt aangeroepen. Door een exec-systeemaanroep te gebruiken, kunnen we aannemen dat dit het oude document of de oude toepassing in de lus zal overschrijven met een nieuwe. Er wordt nieuwe software gebruikt om het materiaal van het hele proces te overschrijven. Het document waarvan de titel wordt gegeven in de instructie wanneer exec() wordt aangeroepen, wordt vervangen door de sectie met gebruikersinformatie die de systeemaanroep exec() uitvoert (). Open dus de opdrachtterminal en maak met behulp van de nano-editor als volgt een nieuw C-type bestand:

$ nano-exp.c

De editor is nu geopend. Schrijf de hele onderstaande C-taalcode erin. Er zijn drie hoofdbibliotheken in opgenomen. Daarna is de hoofdfunctie geïnstantieerd. Het print statement toont de string data en de Process Id van het bestand “exp.c”. Hiervoor is de functie getpid() gebruikt. Dan hebben we een karaktertypearray met enkele waarden erin. De exec-systeemaanroep is gebruikt om de bestandsnaam en de array van één regel hierboven als argument te nemen. Nu het bestand "hallo".c” zal worden verwerkt. Daarna komt er nog een printopdracht, maar die wordt nooit uitgevoerd. Druk op "Ctrl+S" om dit bestand op te slaan. Druk op "Ctrl+X" om af te sluiten.

Nu is het tijd om nog een c-bestand te maken, "hallo.c” met behulp van de nano-editor. Gebruik de onderstaande query in de shell om dit te doen.

$ nano hallo.c

Schrijf de onderstaande code erin. Deze code bevat twee printinstructies in de hoofdfunctie. De eerste drukt alleen een string af die erin wordt gegeven, en de tweede drukt de string af terwijl de proces-ID van het momenteel gebruikte bestand wordt opgehaald, namelijk "hallo.c”.

Laten we beide bestanden een voor een compileren met gcc.

$ gcc -o exp exp.c

$ gcc -o hallo hallo.c

Wanneer we de exp . uitvoeren.c-bestand, zal het de eerste print-instructie van de exp.c-bestand en beide afdrukregels van de hallo.c bestand.

$ ./exp

Conclusie:

We hebben het hele concept van Linux-systeemaanroepen uitgewerkt en hoe ze in uw Linux-systeem kunnen worden gebruikt. We hebben Ubuntu 20 . gebruikt.04 tijdens het implementeren van dit concept.

Beste Linux-distributies voor gaming in 2021
Het Linux-besturingssysteem heeft een lange weg afgelegd van zijn oorspronkelijke, eenvoudige, servergebaseerde uiterlijk. Dit besturingssysteem is de...
Hoe u uw gamesessie op Linux kunt vastleggen en streamen
In het verleden werd het spelen van games alleen als een hobby beschouwd, maar met de tijd zag de game-industrie een enorme groei in termen van techno...
Beste spellen om te spelen met handtracking
Oculus Quest introduceerde onlangs het geweldige idee van handtracking zonder controllers. Met een steeds toenemend aantal games en activiteiten die f...