Системски позиви

Шта је системски позив у Линуку и како то функционише са примерима

Шта је системски позив у Линуку и како то функционише са примерима

Системски позив је функција која омогућава процесу да комуницира са Линук језгром. То је само програмски начин на који рачунарски програм може наручити објект из језгра оперативног система. Системски позиви излажу ресурсе оперативног система корисничким програмима путем АПИ-ја (Апплицатион Программинг Интерфаце). Системски позиви могу приступити само оквиру језгра. Системски позиви су потребни за све услуге којима су потребни ресурси.

Линук језгро је заштићени софтвер који се учитава и ради на уређају у најмање потенцијалној фази. Његов посао је да организује све што се догађа на машини, од тастатуре, дисковног погона и мрежних догађаја до обезбеђивања временских резова за истовремено извршавање различитих програма. Одвајање софтвера и хардвера ствара сигуран облачић који побољшава заштиту и поузданост. Непривилеговане апликације не могу да дођу до складишта другог програма, а ако један не успе, кернел обуставља поступак тако да не оштети цео систем.

Танки омот за облатне:

Линук системски позиви се не приказују експлицитно језгру у одређеним програмима. Готово сви програми користе основну Ц библиотеку и нуде лаган, али неопходан омот преко Линук системских позива. Спремиште затим пружа пратећи Линук машински позив након што осигура да параметри функције буду преведени у праве регистре процесора. Кад год омотач прими податке из системског позива, он их анализира и јасно доприноси програму. Свака интеракција машине у програму се на крају претвара у системски позив. Дакле, погледајмо неке од њих. Дуга је листа системских позива Линук-а које можемо користити у нашем Линук систему. Ево листе неких уобичајених и најчешће коришћених Линук системских позива.

Хајде да разговарамо о неким Линук системским позивима који користе језик Ц у нашем чланку да бисмо се упознали са њим.

Отворени системски позив:

Можемо користити системски позив „Отвори“ у нашој Линук дистрибуцији за брзо отварање документа, који ћемо навести у нашем коду језика Ц. Прво покрените командни терминал. Можете да користите пречицу „Цтрл + Алт + Т“. Претпоставимо да имате „тест“ текстуалне датотеке.ткт “у матичном директоријуму и у њему се налази одређени садржај. Дакле, на почетку морате створити ново име датотеке типа Ц „ново.ц ”у терминалу преко нано уређивача. Стога, испробајте једноставна доња нано упутства.

$ нано ново.ц

Сада је покренут Нано едитор. У њега унесите доле приказан код. У коду имамо два дескриптора датотека. Обе датотеке се могу отворити помоћу отвореног системског позива. Први дескриптор садржи позив за читање, а други садржи функцију писања. Први отворени позив је отварање текстуалне датотеке „тест.ткт “и чување његовог садржаја у опису датотеке„ фд “. Други отворени системски позив је стварање датотеке под називом „таргет“. „Циљ“ документа надокнађен је опису датотеке „фд1“. Упута за писање користи се за транскрипцију бајтова података у међуспремник. Додирните „Цтрл + С“ да бисте сачували код и притисните тастер пречице „Цтрл + Кс“ да бисте изашли из датотеке.

Покрените упутство за компајлирање гцц да бисте саставили овај Ц код.

$ гцц ново.ц

Извршимо код користећи једноставно „а.упит “у љусци на следећи начин:

$ ./ а.напоље

Излазни подаци су пренесени у датотеку „таргет“. Проверимо „циљну“ датотеку помоћу упита „мачка“. Излазни екран приказује податке од 20 знакова у „циљној“ датотеци.

$ мачка мета

Екец системски позив:

Системски позив екец се одбацује ради покретања датотеке која се тренутно обрађује. Замењује се бивша извршна датотека, а тренутном се управља кад год се позове екец. Коришћењем екец системског позива можемо претпоставити да ће на тај начин стари документ или апликацију у петљи заменити нови. Нови софтвер се користи за поништавање целокупног материјала процеса. Документ чији је наслов дат у изјави сваки пут када је позивање на екец () замењено одељком о корисничким информацијама који покреће системски позив екец () (). Дакле, отворите командни терминал и, користећи нано едитор, креирајте нову датотеку типа Ц на следећи начин:

$ нано екп.ц

Уредник је сада отворен. У њега напишите читав доњи код језика Ц. У њега су укључене три главне библиотеке. Након тога је покренута главна функција. Изјава за испис приказује низ података и ИД процеса датотеке „екп.ц ”. У ту сврху је коришћена функција гетпид (). Тада имамо низ типова знакова са неким вредностима. Системски позив екец кориштен је за узимање имена датотеке и једног реда изнад низа као аргумента. Сада је датотека „здраво.ц ”биће обрађено. Након тога, засад долази још једна изјава за штампу, али она никада неће бити извршена. Притисните „Цтрл + С“ да бисте сачували ову датотеку. Притисните „Цтрл + Кс“ да бисте изашли.

Сада је време да креирамо још једну ц датотеку, „здраво.ц ”помоћу нано уређивача. Користите доњи упит у љусци да бисте то урадили.

$ нано здраво.ц

У њега напишите доњи код. Овај код садржи две изјаве за штампање у главној функцији. Први је само испис низа датог у њему, а други испис низа док се преузима ИД процеса тренутно кориштене датотеке, што је „здраво.ц ”.

Хајде да компајлирамо обе датотеке једну за другом користећи гцц.

$ гцц -о екп екп.ц

$ гцц -о здраво здраво.ц

Када извршимо екп.ц датотеку, она ће исписати први испис из екп-а.ц датотеку и обе линије за испис из хелло.ц датотека.

$ ./ екп

Закључак:

Разрадили смо читав концепт Линук системских позива и како се они могу користити у вашем Линук систему. Користили смо Убунту 20.04 током примене овог концепта.

Најбољи Линук Дистрос за игре у 2021
Линук оперативни систем далеко је превалио свој изворни, једноставни изглед заснован на серверима. Овај ОС се изузетно побољшао последњих година и сад...
Како снимити и стримовати своју играћу сесију на Линук-у
У прошлости се играње игара сматрало само хобијем, али с временом је играчка индустрија забележила огроман раст у погледу технологије и броја играча. ...
Најбоље игре за ручно праћење
Оцулус Куест је недавно представио сјајну идеју ручног праћења без контролера. Са све већим бројем игара и активности које извршавају подршку формално...