logo

Системски позиви у оперативном систему (ОС)

Системски позив је начин на који кориснички програм комуницира са оперативним системом. Програм захтева неколико услуга, а ОС одговара позивањем низа системских позива да би задовољио захтев. Системски позив може бити написан у асемблерском језику или језику високог нивоа као што је Ц или Пасцал . Системски позиви су унапред дефинисане функције које оперативни систем може директно да позове ако се користи језик високог нивоа.

У овом чланку ћете научити о системским позивима у оперативном систему и разговарати о њиховим типовима и многим другим стварима.

Шта је системски позив?

Системски позив је метод за рачунарски програм да затражи услугу од језгра оперативног система на којем је покренут. Системски позив је метода интеракције са оперативним системом преко програма. Системски позив је захтев рачунарског софтвера до кернела оперативног система.

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

Како се врше системски позиви?

Када рачунарски софтвер треба да приступи кернелу оперативног система, он упућује системски позив. Системски позив користи АПИ за излагање услуга оперативног система корисничким програмима. То је једини начин за приступ систему кернела. Сви програми или процеси који захтевају ресурсе за извршење морају да користе системске позиве, јер служе као интерфејс између оперативног система и корисничких програма.

Испод су неки примери како се системски позив разликује од корисничке функције.

јава излазни знакови
  1. Функција системског позива може креирати и користити процесе кернела за извршавање асинхроне обраде.
  2. Системски позив има већи ауторитет од стандардног потпрограма. Системски позив са привилегијом режима језгра се извршава у домену заштите кернела.
  3. Системским позивима није дозвољено да користе дељене библиотеке или било које симболе који нису присутни у домену заштите језгра.
  4. Код и подаци за системске позиве се чувају у глобалној меморији кернела.

Зашто су вам потребни системски позиви у оперативном систему?

Постоје различите ситуације у којима морате захтевати системске позиве у оперативном систему. Следеће ситуације су следеће:

  1. То је неопходно када систем датотека жели да креира или избрише датотеку.
  2. Мрежне везе захтевају системске позиве за слање и пријем пакета података.
  3. Ако желите да прочитате или напишете датотеку, потребно је да извршите системске позиве.
  4. Ако желите да приступите хардверским уређајима, укључујући штампач, скенер, потребан вам је системски позив.
  5. Системски позиви се користе за креирање и управљање новим процесима.

Како функционишу системски позиви

Апликације се покрећу у области меморије познатој као кориснички простор. Системски позив се повезује са језгром оперативног система, које се извршава у простору кернела. Када апликација креира системски позив, прво мора да добије дозволу од кернела. То постиже помоћу захтева за прекид, који паузира тренутни процес и преноси контролу на језгро.

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

Једноставан системски позив може потрајати неколико наносекунди да пружи резултат, као што је преузимање системског датума и времена. Сложенији системски позив, као што је повезивање са мрежним уређајем, може потрајати неколико секунди. Већина оперативних система покреће посебну нит кернела за сваки системски позив како би се избегла уска грла. Савремени оперативни системи су вишенитни, што значи да могу истовремено да обрађују различите системске позиве.

Врсте системских позива

Обично постоји пет типова системских позива. Ово су следеће:

Системски позиви у оперативном систему
    Контрола процеса Управљање датотекама Управљање уређајем Одржавање информација Комуникација

Сада ћете научити о свим различитим типовима системских позива један по један.

низ дужине

Контрола процеса

Контрола процеса је системски позив који се користи за усмеравање процеса. Неки примери контроле процеса укључују креирање, учитавање, прекид, завршетак, извршење, процесирање, прекид процеса итд.

Управљање датотекама

Управљање датотекама је системски позив који се користи за руковање датотекама. Неки примери управљања датотекама укључују креирање датотека, брисање датотека, отварање, затварање, читање, писање итд.

Управљање уређајем

Управљање уређајима је системски позив који се користи за рад са уређајима. Неки примери управљања уређајем укључују читање, уређај, писање, преузимање атрибута уређаја, ослобађање уређаја итд.

Одржавање информација

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

Комуникација

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

Примери Виндовс и Уник системских позива

Постоје различити примери Виндовс и Уник системских позива. Они су наведени у табели испод:

Процес Виндовс Уник
Контрола процеса ЦреатеПроцесс()
ЕкитПроцесс()
чекај за један објекат()
виљушка()
Екит()
Чекати()
Филе Манипулатион ЦреатеФиле()
РеадФиле()
ВритеФиле()
ЦлосеХандле()
Опен()
Читати()
напиши()
Близу()
Управљање уређајем СетЦонсолеМоде()
РеадЦонсоле()
ВритеЦонсоле()
Иоцтл()
Читати()
напиши()
Одржавање информација ГетЦуррентПроцессИД()
СетТимер()
спавај()
Гетпид()
Алармни()
спавај()
Комуникација ЦреатеПипе()
ЦреатеФилеМаппинг()
МапВиевОфФиле()
Цев()
Схмгет()
Ммап()
Заштита СетФилеСецурити()
ИнитиализеСецуритиДесцриптор()
СетСецуритиДесцрипторгроуп()
Цхмод()
умаск()
Цховн()

Овде ћете укратко научити о неким методама:

кмл коментар

опен()

Тхе опен() системски позив вам омогућава да приступите датотеци у систему датотека. Он додељује ресурсе датотеци и обезбеђује рукохват на који се процес може односити. Многи процеси могу отворити датотеку одједном или само једним процесом. Све је засновано на систему датотека и структури.

читати()

Користи се за добијање података из датотеке у систему датотека. Генерално прихвата три аргумента:

  • Дескриптор датотеке.
  • Бафер за чување прочитаних података.
  • Број бајтова за читање из датотеке.

Датотечни дескриптор датотеке која се чита може се користити за њену идентификацију и отварање помоћу опен() пре читања.

чекати()

У неким системима, процес ће можда морати да сачека да други процес заврши своје извршење пре него што настави. Када родитељски процес направи подређени процес, извршење надређеног процеса се суспендује док се процес подређени не заврши. Тхе чекати() системски позив се користи за суспендовање родитељског процеса. Када се подређени процес заврши са извршавањем, контрола се враћа родитељском процесу.

напиши()

Користи се за писање података из корисничког бафера на уређај као што је датотека. Овај системски позив је један од начина да програм генерише податке. Генерално, потребна су три аргумента:

  • Дескриптор датотеке.
  • Показивач на бафер у којем се чувају подаци.
  • Број бајтова који ће бити уписани из бафера.

виљушка ()

Процеси генеришу своје клонове користећи виљушка () системски позив. То је један од најчешћих начина за креирање процеса у оперативним системима. Када родитељски процес произведе подређени процес, извршење надређеног процеса се прекида све док се подређени процес не заврши. Када се подређени процес заврши са извршавањем, контрола се враћа родитељском процесу.

хасхмап

Близу()

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

екец()

Када извршна датотека замени ранију извршну датотеку у процесу који се већ извршава, ова системска функција се позива. Како нови процес није изграђен, стара идентификација процеса остаје, али нови процес замењује податке, стек, податке, главу итд.

излаз()

Тхе излаз() је системски позив који се користи за завршетак извршавања програма. Овај позив указује да је извршење нити завршено, што је посебно корисно у окружењима са више нити. Оперативни систем враћа ресурсе које је процес потрошио након употребе излаз() функција система.