Kas ir sistēmas zvans Linux un kā tas darbojas ar piemēriem

What Is System Call Linux



Sistēmas zvans ir funkcija, kas ļauj procesam sazināties ar Linux kodolu. Tas ir tikai programmatisks veids, kā datorprogramma var pasūtīt iekārtu no operētājsistēmas kodola. Sistēmas izsaukumi pakļauj operētājsistēmas resursus lietotāju programmām, izmantojot API (lietojumprogrammu saskarni). Sistēmas zvani var piekļūt tikai kodola ietvaram. Sistēmas izsaukumi ir nepieciešami visiem pakalpojumiem, kuriem nepieciešami resursi.

Linux kodols ir patentēta programmatūra, kas ielādē un darbojas ierīcē pēc iespējas mazāk. Tās uzdevums ir organizēt visu, kas notiek datorā, sākot no tastatūras, diskdziņa un tīkla notikumiem līdz laika šķēlīšu nodrošināšanai vienlaicīgai dažādu programmu izpildei. Programmatūras un aparatūras atdalīšana rada drošu burbuli, kas uzlabo aizsardzību un uzticamību. Priviliģētās lietojumprogrammas nevar piekļūt citas programmas krātuvei, un, ja kāda neizdodas, kodols aptur procesu, lai tas nesabojātu visu sistēmu.







Vafeļu plānais ietinējs:

Linux sistēmas izsaukumi noteiktās programmās netiek tieši atveidoti kodolam. Gandrīz visas programmas izmanto C pamata bibliotēku un piedāvā vieglu, bet būtisku iesaiņojumu Linux sistēmas zvaniem. Pēc tam repozitorijs nodrošina pievienoto Linux mašīnas izsaukumu pēc tam, kad ir nodrošināts, ka objekta parametri tiek tulkoti pareizajos procesoru reģistros. Ikreiz, kad ietinējs saņem datus no sistēmas izsaukuma, tas tos analizē un skaidri iekļauj programmā. Jebkura mašīnas interaktīva darbība programmā galu galā tiek pārveidota par sistēmas zvanu. Tātad, apskatīsim dažus no tiem. Ir liels Linux sistēmas zvanu saraksts, ko mēs varam izmantot mūsu Linux sistēmā. Šeit ir saraksts ar dažiem izplatītākajiem un visbiežāk izmantotajiem Linux sistēmas zvaniem.



  • Atvērt
  • Aizvērt
  • Izpildīt
  • Rakstīt
  • Lasīt
  • Lseek
  • Izvēlieties

Apspriedīsim dažus no Linux sistēmas zvaniem, izmantojot mūsu rakstā izmantoto C valodu, lai to praktiski izmantotu.



Atvērt sistēmas zvanu:

Mēs varam izmantot Open sistēmas izsaukumu mūsu Linux izplatīšanā, lai ātri atvērtu dokumentu, ko mēs norādīsim savā C valodas kodā. Vispirms palaidiet komandu termināli. Varat izmantot īsinājumtaustiņu Ctrl+Alt+T. Pieņemsim, ka mājas direktorijā ir teksta fails test.txt, un tajā ir kāds saturs. Tātad sākumā, izmantojot nano redaktoru, terminālī ir jāizveido jauns C tipa faila nosaukums new.c Tāpēc izmēģiniet zemāk esošo vienkāršo nano instrukciju.





$nanojauns.c

Tagad ir palaists Nano redaktors. Ierakstiet tajā zemāk redzamo kodu. Kodā ir divi failu apraksti. Abus failus var atvērt, izmantojot atvērtās sistēmas zvanu. Pirmais deskriptors satur lasīšanas zvanu, bet otrais - rakstīšanas funkciju. Pirmais atklātais zvans ir teksta faila test.txt atvēršana un tā satura saglabāšana faila deskriptorā fd. Otrais atvērtās sistēmas izsaukums ir faila izveide ar mērķi. Dokumenta mērķis ir atmaksāts fd1 faila deskriptoram. Rakstīšanas instrukcija tiek izmantota buferī esošo datu baitu pārrakstīšanai. Pieskarieties Ctrl+S, lai saglabātu kodu, un nospiediet īsinājumtaustiņu Ctrl+X, lai izietu no faila.



Izpildiet gcc kompilēšanas instrukciju, lai apkopotu šo C kodu.

$gccjauns.c

Izpildīsim kodu, izmantojot čaulā vienkāršo a.out vaicājumu:

$./a. ārā

Izejas dati ir pārsūtīti uz faila mērķi. Pārbaudīsim mērķa failu, izmantojot kaķa vaicājumu. Izvades ekrānā tiek parādīti 20 rakstzīmju dati mērķa failā.

$kaķismērķis

Izpildīt sistēmas zvanu:

Izpildes sistēmas zvans tiek atcelts, lai palaistu failu, kas pašlaik tiek apstrādāts. Iepriekšējais izpildāmais fails tiek aizstāts, un pašreizējais fails tiek darbināts ikreiz, kad tiek izsaukts izpildītājs. Izmantojot izpildes sistēmas izsaukumu, mēs varam pieņemt, ka šādi vecā dokuments vai lietojumprogramma ciklā tiks pārrakstīta ar jaunu. Jauna programmatūra tiek izmantota, lai ignorētu visa procesa materiālu. Dokuments, kura nosaukums ir norādīts paziņojumā, kad tiek izsaukts exec (), tiek aizstāts ar lietotāja informācijas sadaļu, kurā tiek izpildīts exec () sistēmas izsaukums (). Tāpēc atveriet komandu termināli un, izmantojot nano redaktoru, izveidojiet jaunu C tipa failu šādi:

$nanoeksp. c

Redaktors tagad ir atvērts. Ierakstiet tajā visu zemāk esošo C valodas kodu. Tajā ir iekļautas trīs galvenās bibliotēkas. Pēc tam galvenā funkcija ir parādīta. Drukātā paziņojumā ir parādīti virknes dati un faila exp.c procesa ID. Šim nolūkam ir izmantota funkcija getpid (). Tad mums ir rakstzīmju tipa masīvs ar dažām vērtībām. Izpildes sistēmas izsaukums ir izmantots, lai kā argumentu ņemtu faila nosaukumu un vienu rindu virs masīva. Tagad fails hello.c tiks apstrādāts. Pēc tam vēl viens drukāts paziņojums nonāk līdz šim, bet tas nekad netiks izpildīts. Nospiediet Ctrl+S, lai saglabātu šo failu. Lai izietu, nospiediet Ctrl+X.

Tagad ir pienācis laiks izveidot citu c failu hello.c, izmantojot nano redaktoru. Lai to izdarītu, izmantojiet apvalkā esošo vaicājumu.

$nanosveiki.c

Ierakstiet tajā zemāk esošo kodu. Šis kods satur divus drukas paziņojumus galvenajā funkcijā. Pirmais ir tikai tajā norādītās virknes drukāšana, bet otrs - virknes drukāšana, vienlaikus iegūstot pašlaik izmantotā faila procesa ID, kas ir hello.c.

Apkoposim abus failus vienu pēc otra, izmantojot gcc.

$gcc–O exp exp.c

$gcc- čau sveiks.c

Izpildot failu exp.c, tas izdos pirmo izdrukas paziņojumu no faila exp.c un abas drukas rindiņas no faila hello.c.

$./exp

Secinājums:

Mēs esam izstrādājuši visu Linux sistēmas zvanu koncepciju un to, kā tos var izmantot jūsu Linux sistēmā. Īstenojot šo koncepciju, esam izmantojuši Ubuntu 20.04.