Системаҳои оператсионӣ: Се дона осон. Қисми 2: Абстраксия: Раванд (тарҷума)

Муқаддима ба системаҳои оператсионӣ

Салом, Хабр! Мехохам ба диццати шумо як катор макола-тарчимахои як адабиётро пешкаш намоям, ки ба назари ман — ОСТЕП. Дар ин мавод кори системаҳои оператсионии ба unix монанд, яъне кор бо равандҳо, графикҳои гуногун, хотира ва дигар ҷузъҳои шабеҳ, ки ОС-и муосирро ташкил медиҳанд, хеле амиқ омӯхта мешавад. Шумо метавонед асли ҳамаи маводҳоро дар ин ҷо бинед дар ин ҷо. Лутфан қайд кунед, ки тарҷума ғайрикасбӣ (хеле озодона) анҷом дода шудааст, аммо ман умедворам, ки ман маънои умумиро нигоҳ доштам.

Корҳои лабораторӣ дар ин мавзӯъро дар ин ҷо пайдо кардан мумкин аст:

Қисмҳои дигар:

Шумо инчунин метавонед канали маро дар ин ҷо санҷед телеграмма =)

Биёед абстраксияи асоситаринеро, ки ОС ба корбарон пешкаш мекунад, бубинем: раванд. Таърифи раванд хеле содда аст - он аст барномаи иҷрошаванда. Худи барнома як чизи беҷонест, ки дар диск ҷойгир аст - ин маҷмӯи дастурҳо ва эҳтимолан баъзе маълумотҳои статикӣ мебошанд, ки интизори оғоз шудан мебошанд. Ин ОСест, ки он байтҳоро мегирад ва онҳоро иҷро мекунад ва барномаро ба чизи муфид табдил медиҳад.
Аксар вақт корбарон мехоҳанд дар як вақт зиёда аз як барномаро иҷро кунанд, масалан, шумо метавонед дар ноутбуки худ браузер, бозӣ, плеери медиа, муҳаррири матн ва монанди инҳоро иҷро кунед. Дар асл, як системаи маъмулӣ метавонад дар як вақт даҳҳо ё садҳо равандро иҷро кунад. Ин далел истифодаи системаро осон мекунад, шумо ҳеҷ гоҳ хавотир нашавед, ки оё CPU ройгон аст, шумо танҳо барномаҳоро иҷро мекунед.

Ин мушкилотро ба миён меорад: чӣ гуна тасаввуроти бисёр CPU-ҳоро таъмин кардан мумкин аст? Чӣ тавр OS метавонад тасаввуроти тақрибан беохири CPU-ро эҷод кунад, ҳатто агар шумо танҳо як CPU-и физикӣ дошта бошед?

OS ин иллюзияро тавассути виртуализатсияи CPU эҷод мекунад. Бо оғози як раванд, баъд қатъ кардани он, оғоз кардани раванди дигар ва ғайра, ОС метавонад тасаввуротеро нигоҳ дорад, ки CPU-ҳои виртуалӣ зиёданд, дар ҳоле ки дар асл як ё якчанд протсессори физикӣ мавҷуданд. Ин техника номида мешавад тақсимоти захираҳои CPU аз рӯи вақт. Ин техника ба корбарон имкон медиҳад, ки шумораи зиёди равандҳои ҳамзамонро, ки мехоҳанд, иҷро кунанд. Арзиши ин ҳалли маҳсулнокӣ аст - зеро агар CPU бо якчанд равандҳо тақсим карда шавад, ҳар як раванд сусттар коркард мешавад.
Барои татбиқи виртуализатсияи CPU ва махсусан барои хуб иҷро кардани он, OS ҳам ба дастгирии сатҳи паст ва ҳам дар сатҳи баланд ниёз дорад. Дастгирии сатҳи паст даъват карда мешавад механизмхо усулҳо ё протоколҳои сатҳи паст мебошанд, ки қисми зарурии функсияҳоро амалӣ мекунанд. Намунаи чунин функсияҳо коммутацияи контекстӣ мебошад, ки ба ОС имкон медиҳад, ки як барномаро қатъ кунад ва барномаи дигарро дар протсессор иҷро кунад. Ин тақсимоти вақт дар ҳама системаҳои оператсионии муосир амалӣ карда мешавад.
Дар болои ин механизмҳо як мантиқи дар OS сохташуда дар шакли "сиёсат" мавҷуд аст. сиёсати як алгоритми муайяни қабули қарор барои системаи оператсионӣ мебошад. Чунин сиёсатҳо, масалан, муайян мекунанд, ки кадом барнома бояд аввал оғоз шавад (аз рӯйхати фармонҳо). Ҳамин тавр, масалан, ин мушкилот тавассути сиёсате ҳал карда мешавад нақшакаш (сиёсати банақшагирӣ) ва ҳангоми интихоби роҳи ҳалли он, он аз рӯи чунин маълумотҳо роҳнамоӣ карда мешавад: таърихи оғозёбӣ (кадом барнома дар дақиқаҳои охир дарозтарин оғоз карда шудааст), ин раванд чӣ гуна сарборӣ дорад (кадом намуди барномаҳо оғоз карда шуд), ченакҳои самаранокӣ (оё система барои муоширати интерактивӣ ё барои интиқол оптимизатсия карда шудааст) ва ғайра.

Абстраксия: раванд

Абстраксияи барномаи иҷрошавандаи аз ҷониби системаи оператсионӣ иҷрошаванда он чизест, ки мо онро меномем раванди. Тавре ки дар боло зикр гардид, раванд танҳо як барномаи иҷрошаванда дар ҳар як давраи фаврӣ мебошад. Барномае, ки бо он мо метавонем маълумоти мухтасарро аз захираҳои гуногуни система ба даст орем, ки ин барнома ҳангоми иҷрои он ба онҳо дастрасӣ дорад ё таъсир мерасонад.
Барои фаҳмидани ҷузъҳои раванд, шумо бояд ҳолати системаро фаҳмед: барнома дар давоми кори худ чиро хонда метавонад ё тағир диҳад. Дар вақти дилхоҳ шумо бояд фаҳмед, ки кадом унсурҳои система барои иҷрои барнома муҳиманд.
Яке аз унсурҳои равшани система изҳор мекунад, ки раванд дар бар мегирад память. Дастурҳо дар хотира ҷойгиранд. Маълумоте, ки барнома мехонад ё менависад, инчунин дар хотира ҷойгир аст. Ҳамин тариқ, хотирае, ки раванд метавонад ба он муроҷиат кунад (фазои суроғавӣ номида мешавад) як қисми раванд мебошад.
Инчунин як қисми ҳолати система реестрҳо мебошанд. Бисёр дастурҳо ба тағир додани арзиши реестрҳо ё хондани арзиши онҳо нигаронида шудаанд ва аз ин рӯ регистрҳо низ як ҷузъи муҳими амалиёти раванд мешаванд.
Бояд гуфт, ки долати мошиндо низ аз баъзе регистрдои махсус ташкил карда мешавад. Барои намуна, IP - нишондиҳандаи дастур — ишора ба дастуре, ки барнома айни замон иҷро мекунад. Инчунин вуҷуд дорад нишоннамои анбора ва ба он вобаста аст нишондиҳандаи чаҳорчӯба, ки барои идоракунӣ истифода мешаванд: параметрҳои функсия, тағирёбандаҳои маҳаллӣ ва суроғаҳои бозгашт.
Ниҳоят, барномаҳо аксар вақт ба ROM (хотираи танҳо барои хондан) дастрасӣ пайдо мекунанд. Ин иттилооти "Ворид/баромад" бояд рӯйхати файлҳоеро дар бар гирад, ки айни замон бо раванд кушода мешавад.

API-и раванд

Барои беҳтар кардани фаҳмиши мо дар бораи чӣ гуна кор кардани раванд, биёед мисолҳои зангҳои системаро омӯзем, ки бояд ба ҳама гуна интерфейси системаи оператсионӣ дохил карда шаванд. Ин APIҳо дар ин ё он шакл дар ҳама гуна ОС дастрасанд.

сохтан (офариниш): OS бояд баъзе усулҳоро дар бар гирад, ки ба шумо имкон медиҳад равандҳои нав эҷод кунед. Вақте ки шумо фармонро ба терминал ворид мекунед ё барномаро бо ду маротиба пахш кардани нишона оғоз мекунед, занг ба ОС фиристода мешавад, то раванди навро эҷод кунад ва сипас барномаи муайяншударо оғоз кунад.
Тоза кардан: Азбаски интерфейси эҷоди раванд вуҷуд дорад, OS бояд инчунин қобилияти маҷбур кардани нест кардани равандро таъмин кунад. Аксари барномаҳо табиатан ҳангоми кор худашон оғоз ва қатъ мешаванд. Дар акси ҳол, корбар мехоҳад онҳоро бикушад ва аз ин рӯ интерфейс барои боздоштани раванд муфид хоҳад буд.
интизор шудан (интизорӣ): Баъзан интизор шудан барои анҷоми раванд муфид аст, аз ин рӯ баъзе интерфейсҳо пешбинӣ шудаанд, ки қобилияти интизориро таъмин мекунанд.
Назорати гуногун (назорати гуногун): Илова ба куштан ва интизории раванд, инчунин дигар усулҳои гуногуни назорат мавҷуданд. Масалан, аксари системаҳои оператсионӣ қобилияти ях кардани равандро таъмин мекунанд (иҷроиши онро барои як давраи муайян қатъ кардан) ва сипас онро дубора оғоз кардан (иҷроро идома додан)
Статуси (ҳолат): Интерфейсҳои гуногун барои ба даст овардани баъзе маълумот дар бораи ҳолати раванд вуҷуд доранд, ба монанди он, ки чӣ қадар вақт кор мекунад ё ҳоло дар кадом ҳолат аст.

Системаҳои оператсионӣ: Се дона осон. Қисми 2: Абстраксия: Раванд (тарҷума)

Эҷоди раванд: Тафсилот

Яке аз чизҳои ҷолиб он аст, ки чӣ гуна барномаҳо ба равандҳо табдил меёбанд. Хусусан, чӣ гуна OS барномаро қабул мекунад ва иҷро мекунад. Чӣ тавр маҳз раванд офарида шудааст.
Пеш аз ҳама, ОС бояд коди барнома ва додаҳои статикиро ба хотира (ба фазои адреси раванд) бор кунад. Барномаҳо одатан дар диск ё гардонандаи сахт дар баъзе форматҳои иҷрошаванда ҷойгир мешаванд. Ҳамин тариқ, раванди ба хотира бор кардани барнома ва додаҳои статикӣ аз ОС талаб мекунад, ки он байтҳоро аз диск хонад ва онҳоро дар ҷое дар хотира ҷойгир кунад.

Дар системаҳои оператсионии ибтидоӣ, раванди боркунӣ бо шавқу ҳавас анҷом дода мешуд, ки ин маънои онро дорад, ки тамоми код пеш аз оғози барнома ба хотира бор карда шудааст. Системаҳои оператсионии муосир ин корро бо танбал анҷом медиҳанд, яъне қисмҳои код ё маълумотро танҳо вақте ки барнома ҳангоми иҷроиш талаб мекунад, бор мекунад.

Пас аз он ки код ва маълумоти статикӣ ба хотираи ОС бор карда мешаванд, пеш аз он ки раванд иҷро шавад, чанд корҳои дигар бояд анҷом дода шаванд. Барои стек миқдори муайяни хотира бояд ҷудо карда шавад. Барномаҳо стекро барои тағирёбандаҳои маҳаллӣ, параметрҳои функсия ва суроғаҳои бозгашт истифода мебаранд. OS ин хотираро ҷудо мекунад ва онро ба раванд медиҳад. Стекро инчунин бо баъзе аргументҳо ҷудо кардан мумкин аст, махсусан он параметрҳои функсияи main() -ро пур мекунад, масалан бо массиви argc ва argv.

Системаи оператсионӣ инчунин метавонад каме хотираро ба тӯдаи барнома ҷудо кунад. Геп аз ҷониби барномаҳо барои дархост кардани маълумоти ба таври динамикӣ ҷудошуда истифода мешавад. Барномаҳо ин фосиларо тавассути занги функсия дархост мекунанд malloc () ва онро ба таври возеҳ тавассути даъват кардани функсия тоза мекунад озод (). Тӯда барои сохторҳои додаҳо, аз қабили варақаҳои алоқаманд, ҷадвалҳои хэш, дарахтҳо ва ғайра лозим аст. Дар аввал, миқдори ками хотира ба тӯда ҷудо карда мешавад, аммо бо мурури замон, вақте ки барнома иҷро мешавад, теппа метавонад хотираи бештарро тавассути китобхонаи API занги malloc() дархост кунад. Системаи оператсионӣ дар раванди ҷудо кардани хотираи бештар барои қонеъ кардани ин зангҳо иштирок мекунад.

Системаи оператсионӣ инчунин вазифаҳои оғозёбиро иҷро хоҳад кард, алахусус онҳое, ки бо I/O алоқаманданд. Масалан, дар системаҳои UNIX, ҳар як раванд бо нобаёнӣ 3 дескриптори файли кушода барои вуруд, баромад ва хатогиҳои стандартӣ дорад. Ин дастаҳо ба барномаҳо имкон медиҳанд, ки вурудро аз терминал хонанд ва инчунин маълумотро дар экран намоиш диҳанд.

Ҳамин тариқ, тавассути бор кардани код ва додаҳои статикӣ ба хотира, сохтан ва ба кор андохтани стек ва иҷрои дигар корҳое, ки бо иҷрои вазифаҳои I/O алоқаманданд, ОС марҳиларо барои иҷрои раванд омода мекунад. Ниҳоят, як вазифаи охирин боқӣ мондааст: иҷро кардани барнома тавассути нуқтаи вурудаш, ки функсияи main() номида мешавад. Бо иҷрои вазифаи main(), ОС идоракунии CPU-ро ба раванди навтаъсис интиқол медиҳад ва ҳамин тавр барнома ба иҷроиш оғоз мекунад.

Ҳолати раванд

Акнун, ки мо каме фаҳмидем, ки раванд чӣ гуна аст ва чӣ гуна он офарида шудааст, биёед равандҳоеро номбар кунем, ки он метавонад дар он бошад. Дар шакли соддатарин, раванд метавонад дар яке аз ин ҳолатҳо бошад:
якбора. Ҳангоми кор, раванд дар протсессор кор мекунад. Ин маънои онро дорад, ки дастурҳо иҷро мешаванд.
тайёр. Дар ҳолати омода, раванд барои иҷро омода аст, аммо бо баъзе сабабҳо ОС онро дар вақти муайяншуда иҷро намекунад.
Блогистон. Дар ҳолати басташуда, раванд баъзе амалҳоро иҷро мекунад, ки то рух додани ягон ҳодиса омодагии онро ба иҷро намедиҳад. Як мисоли маъмул ин аст, ки вақте ки раванд амалиёти IO-ро оғоз мекунад, он баста мешавад, то ягон раванди дигар протсессорро истифода барад.

Системаҳои оператсионӣ: Се дона осон. Қисми 2: Абстраксия: Раванд (тарҷума)

Шумо метавонед ин ҳолатҳоро дар шакли график тасаввур кунед. Тавре ки мо дар расм мебинем, ҳолати раванд метавонад бо салоҳдиди OS дар байни РУННИНГ ва READY тағир ёбад. Вақте ки ҳолати ҷараён аз ТАЙЁР ба ИДАВАД тағйир меёбад, ин маънои онро дорад, ки раванд ба нақша гирифта шудааст. Дар самти муқобил - аз тарҳ хориҷ карда шудааст. Дар лаҳзае, ки раванд БАЛОМ мешавад, масалан, ман амалиёти IO-ро оғоз мекунам, OS онро то рӯй додани ягон ҳодиса, масалан, анҷом ёфтани IO дар ин ҳолат нигоҳ медорад. дар айни замон гузариш ба ҳолати ТАЙЁР ва эҳтимолан фавран ба ҳолати ДАВОР, агар OS чунин қарор диҳад.
Биёед мисолеро бубинем, ки чӣ гуна ду раванд тавассути ин ҳолат мегузарад. Барои оғоз, биёед тасаввур кунем, ки ҳарду раванд иҷро мешаванд ва ҳар яке танҳо CPU-ро истифода мебарад. Дар ин ҳолат, давлатҳои онҳо чунин хоҳад буд.

Системаҳои оператсионӣ: Се дона осон. Қисми 2: Абстраксия: Раванд (тарҷума)

Дар мисоли зерин, раванди аввал, пас аз чанд вақт кор кардан, IO-ро дархост мекунад ва ба ҳолати Блокшуда дохил мешавад ва имкон медиҳад, ки раванди дигар иҷро шавад (расми 1.4). OS мебинад, ки раванди 0 CPU-ро истифода намекунад ва раванди 1-ро оғоз мекунад. Ҳангоми иҷро шудани раванди 1, IO анҷом меёбад ва ҳолати раванди 0 ба ТАЙЁР табдил меёбад. Ниҳоят, раванди 1 анҷом ёфт ва пас аз анҷомёбӣ раванди 0 кори худро оғоз, иҷро ва анҷом медиҳад.

Системаҳои оператсионӣ: Се дона осон. Қисми 2: Абстраксия: Раванд (тарҷума)

Сохтори маълумот

Худи ОС як барнома аст ва мисли ҳама гуна барномаи дигар, он дорои баъзе сохторҳои асосии додаҳо мебошад, ки қисмҳои гуногуни иттилоотро пайгирӣ мекунанд. Барои пайгирии ҳолати ҳар як раванд, OS баъзеҳоро дастгирӣ мекунад рӯйхати раванд барои ҳамаи равандҳо дар ҳолати ТАЙЁР ва баъзе маълумоти иловагӣ барои пайгирии равандҳое, ки ҳоло иҷро мешаванд. Инчунин, ОС бояд равандҳои басташударо назорат кунад. Пас аз ба итмом расидани IO, OS бояд раванди заруриро бедор кунад ва онро дар ҳолати омода барои кор гузорад.

Масалан, ОС бояд ҳолати регистрҳои протсессорро нигоҳ дорад. Дар лаҳзаи қатъ шудани раванд ҳолати регистрҳо дар фазои суроғаи раванд нигоҳ дошта мешавад ва дар лаҳзаи идомаи кори он, арзишҳои регистрҳо барқарор карда мешаванд ва ҳамин тавр иҷрои ин раванд идома меёбад.

Илова ба давлатҳои омода, басташуда, иҷрошаванда, баъзе давлатҳои дигар мавҷуданд. Баъзан, ҳангоми эҷод, раванд метавонад дар ҳолати INIT бошад. Ниҳоят, равандро дар ҳолати ХОТИМАВӢ ҷойгир кардан мумкин аст, вақте ки он аллакай анҷом ёфтааст, аммо маълумоти он ҳанӯз тоза нашудааст. Дар системаҳои UNIX ин ҳолат номида мешавад раванди зомби. Ин ҳолат барои ҳолатҳое муфид аст, ки раванди волидайн мехоҳад рамзи баргардонидани кӯдакро бидонад, масалан, одатан 0 муваффақиятро нишон медиҳад ва 1 хатогиро нишон медиҳад, аммо барномасозон метавонанд рамзҳои баромади иловагиро барои сигнали мушкилоти гуногун бароранд. Вақте ки раванди волидайн қатъ мешавад, он занги ниҳоии системаро ба мисли интизорӣ () мекунад, то қатъ шудани раванди кӯдакро интизор шавад ва ба OS сигнал медиҳад, ки он метавонад ҳама гуна маълумоти марбут ба раванди қатъшударо тоза кунад.

Системаҳои оператсионӣ: Се дона осон. Қисми 2: Абстраксия: Раванд (тарҷума)

Нуқтаҳои асосии лексия:

раванди — абстракцияи асосии барномаи коркунанда дар ОС. Дар ҳар лаҳзаи додашуда, равандро аз рӯи ҳолати он тавсиф кардан мумкин аст: мундариҷаи хотира дар фазои суроғаи он, мундариҷаи регистрҳои протсессор, аз ҷумла нишондиҳандаи дастур ва нишондиҳандаи стек ва иттилооти IO, ба монанди файлҳои кушодаи хондан ё навишташаванда.
API-и раванд аз зангҳое иборат аст, ки барномаҳо метавонанд ба равандҳо анҷом диҳанд. Одатан инҳо эҷод, нест кардан ё дигар зангҳо мебошанд.
● Раванд дар яке аз бисёр ҳолатҳо, аз ҷумла иҷрошаванда, омода ва баста аст. Ҳодисаҳои гуногун, аз қабили банақшагирӣ, истисноҳо аз банақшагирӣ ё интизорӣ метавонанд ҳолати равандро аз як ба дигар иваз кунанд.
Рӯйхати раванд дорои маълумот дар бораи тамоми равандҳои система. Ҳар як вуруд дар он блоки идоракунии раванд номида мешавад, ки дар асл сохторест, ки тамоми маълумоти заруриро дар бораи як раванди мушаххас дар бар мегирад. 

Манбаъ: will.com

Илова Эзоҳ