Sistemos skambučiai

Kas yra sistemos iškvietimas sistemoje „Linux“ ir kaip jis veikia su pavyzdžiais

Kas yra sistemos iškvietimas sistemoje „Linux“ ir kaip jis veikia su pavyzdžiais

Sistemos iškvietimas yra funkcija, leidžianti procesui bendrauti su „Linux“ branduoliu. Tai tiesiog programinis būdas kompiuterinei programai užsisakyti objektą iš operacinės sistemos branduolio. Sistemos skambučiai atskleidžia operacinės sistemos išteklius vartotojo programoms per API („Application Programming Interface“). Sistemos skambučiai gali pasiekti tik branduolio sistemą. Sistemos skambučiai reikalingi visoms paslaugoms, kurioms reikalingi ištekliai.

„Linux“ branduolys yra patentuota programinė įranga, įkelianti ir veikianti įrenginyje mažiausiai potencialioje stadijoje. Jo užduotis yra organizuoti viską, kas vyksta kompiuteryje, pradedant klaviatūra, diskų įrenginiu ir tinklo įvykiais, ir pateikiant laiko skiltis vienu metu vykdant įvairias programas. Atskyrus programinę ir techninę įrangą, sukuriamas saugus burbulas, kuris pagerina apsaugą ir patikimumą. Nepriklausomos programos negali pasiekti kitos programos saugyklos, o jei nepavyksta, branduolys sustabdo procesą, kad jis nepažeistų visos sistemos.

Plonas vaflių vyniotuvas:

„Linux“ sistemos iškvietimai tam tikrose programose nėra aiškiai perduodami branduoliui. Beveik visos programos naudoja pagrindinę C biblioteką ir siūlo lengvą, bet būtiną „Linux“ sistemos skambučių paketą. Tada saugykla pateikia lydimąjį „Linux“ kompiuterio iškvietimą, įsitikinęs, kad funkcijos parametrai bus išversti į tinkamus procesoriaus registrus. Kai paketas gauna duomenis iš sistemos skambučio, jis juos analizuoja ir aiškiai įtraukia į programą. Bet kuri mašinoje sąveikaujanti operacija programoje galiausiai paverčiama sistemos iškvietimu. Taigi, pažvelkime į kai kuriuos iš jų. Yra ilgas „Linux“ sistemos skambučių sąrašas, kurį galime naudoti savo „Linux“ sistemoje. Čia pateikiamas kai kurių įprastų ir dažniausiai naudojamų „Linux“ sistemos skambučių sąrašas.

Aptarkime kai kuriuos „Linux“ sistemos skambučius naudodami C kalbą mūsų straipsnyje, kad galėtume su ja susidoroti.

Atidaryti sistemos skambutį:

„Linux“ paskirstyme galime naudoti „Open“ sistemos skambutį, kad greitai atidarytume dokumentą, kurį nurodysime savo C kalbos kodu. Pirmiausia paleiskite komandų terminalą. Galite naudoti spartųjį klavišą „Ctrl + Alt + T“. Tarkime, kad turite tekstinį failą „testas“.txt “namų kataloge ir jame yra tam tikro turinio. Taigi, pradžioje turite sukurti naują C tipo failo pavadinimą „naujas.c “terminale per nano redaktorių. Todėl išbandykite paprastą žemiau pateiktą nano instrukciją.

$ nano naujas.c

Dabar paleistas „Nano“ redaktorius. Įveskite žemiau parodytą kodą. Kode turime du failų aprašus. Abu failus galima atidaryti naudojant atvirosios sistemos skambutį. Pirmajame apraše yra skaitymo skambutis, o antrame - rašymo funkcija. Pirmasis atviras kvietimas atveria teksto failą „testas.txt “ir išsaugodamas jo turinį failo deskriptoriuje„ fd “. Antrasis atvirosios sistemos iškvietimas sukuria failą pavadinimu „target“. Dokumentas „target“ buvo grąžintas failo aprašui „fd1“. Rašymo instrukcija naudojama duomenų baitams perrašyti buferyje. Norėdami išsaugoti kodą, palieskite „Ctrl + S“ ir paspauskite spartųjį klavišą „Ctrl + X“, kad išeitumėte iš failo.

Norėdami sukompiliuoti šį C kodą, paleiskite „gcc compile“ instrukciją.

$ gcc naujas.c

Vykdykime kodą naudodami paprastą „a.out “užklausa apvalkale taip:

$ ./ a.išėjo

Išvesties duomenys buvo perduoti į failą „target“. Patikrinkime failą „target“ naudodami užklausą „cat“. Išvesties ekrane rodomi 20 „target“ failo simbolių duomenys.

$ katės taikinys

„Exec“ sistemos skambutis:

„Exec“ sistemos skambutis atmetamas, kad būtų paleistas šiuo metu apdorojamas failas. Ankstesnis vykdomasis failas pakeičiamas, o dabartinis failas valdomas, kai iškviečiama „exec“. Naudodami „exec“ sistemos skambutį galime manyti, kad tai atlikus senas dokumentas ar programa bus perrašyta cikle su nauju. Nauja programinė įranga naudojama norint pakeisti viso proceso medžiagą. Dokumentas, kurio pavadinimas pateikiamas sakinyje, kai iškviečiama „exec“ (), pakeičia vartotojo informacijos skyrių, kuriame vykdomas „exec“ () sistemos iškvietimas (). Taigi atidarykite komandų terminalą ir naudodami „nano“ redaktorių sukurkite naują C tipo failą taip:

$ nano exp.c

Redaktorius atidarytas dabar. Jame išrašykite visą žemiau C kalbos kodą. Į jį įtrauktos trys pagrindinės bibliotekos. Po to buvo išaiškinta pagrindinė funkcija. Spausdinimo ataskaitoje rodomi eilutės duomenys ir failo proceso ID „exp.c “. Tam buvo naudojama funkcija getpid (). Tada mes turime simbolių tipo masyvą su kai kuriomis reikšmėmis. „Exec“ sistemos iškvietimas buvo naudojamas kaip failo pavadinimas ir vienos eilutės virš masyvo argumentas. Dabar failas „labas.c “bus apdorotas. Po to dar vienas spausdintas pareiškimas ateina, bet jis niekada nebus vykdomas. Norėdami išsaugoti šį failą, paspauskite „Ctrl + S“. Paspauskite „Ctrl + X“, kad išeitumėte.

Dabar atėjo laikas sukurti dar vieną c failą „labas.c “naudojant nano redaktorių. Norėdami tai padaryti, naudokite žemiau pateiktą užklausą apvalkale.

$ nano labas.c

Į jį įrašykite žemiau esantį kodą. Šiame kode yra dvi pagrindinės funkcijos spausdinimo sakiniai. Pirmasis spausdina tik jame pateiktą eilutę, o antrasis - spausdindamas eilutę, kol gauna šiuo metu naudojamo failo proceso ID, kuris yra „labas“.c “.

Kompiliuokime abu failus vienas po kito naudodami gcc.

$ gcc -o exp exp.c

$ gcc -o labas labas.c

Kai vykdysime eks.c failą, jis išves pirmąjį atspausdintą pareiškimą iš exp.c failą ir abi spausdinimo eilutes iš labas.c failą.

$ ./ exp

Išvada:

Mes išsiaiškinome visą „Linux“ sistemos skambučių koncepciją ir tai, kaip juos galima naudoti jūsų „Linux“ sistemoje. Mes naudojome „Ubuntu 20“.04 įgyvendinant šią koncepciją.

„SuperTuxKart“, skirta „Linux“
„SuperTuxKart“ yra puikus pavadinimas, sukurtas nemokamai suteikti „Mario Kart“ patirtį jūsų „Linux“ sistemoje. Tai gana sudėtinga ir smagu žaisti, yr...
„Battle for Wesnoth“ pamoka
„Battle for Wesnoth“ yra vienas populiariausių atvirojo kodo strateginių žaidimų, kurį šiuo metu galite žaisti. Šis žaidimas ne tik buvo kuriamas laba...
0 A.D. Pamoka
Iš daugybės strateginių žaidimų 0 A.D. sugeba išsiskirti kaip išsamus pavadinimas ir labai gilus, taktinis žaidimas, nepaisant to, kad yra atviro kodo...