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

Системот за управување со задачи обезбедува нивно минување низ компјутерот. Во зависност од состојбата на процесот, тој треба да распредели еден или друг ресурс. На пример, нов процес треба да се стави во меморијата со доделување адресен простор на него; вклучи во листата на задачи кои се натпреваруваат за време на процесорот.

Еден од главните потсистеми на повеќепрограмскиот ОС кој директно влијае на функционирањето на компјутерот е потсистем за управување со процеси и нишки. Се занимава со нивното создавање и уништување, а исто така го распределува времето на процесорот помеѓу истовремено постоечките процеси и нишки во системот.

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

Комуникацијата помеѓу процесите се врши со помош на споделени променливи и специјални основни операции наречени примитивци.

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

– создавање (мрестење)/уништување на процес;

– паузирајте/продолжете со процесот;

– блокирање/будење на процесот;

– започнете со процесот;

– промена на приоритетот на процесот;

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

1. Креирање и бришење процеси и нишки

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

Создавањето процес вклучува вчитување на кодовите и податоците на извршната програма на процесот од дискот во RAM меморијата. Во овој случај, потсистемот за управување со процесите е во интеракција со потсистемот за управување со меморијата и датотечниот систем. Во мулти-нишки систем, кога се креира процес, ОС создава најмалку една нишка на извршување за секој процес. При креирање на нишка, исто како и при креирање на процес, ОС генерира посебна информациска структура - дескриптор на нишка, кој го содржи идентификаторот на нишката, податоци за правата за пристап и приоритет, состојба на нишка итн. Откако ќе се создаде, нишката (или процесот) е во состојба на подготвеност за извршување (или во состојба на мирување во случај на оперативен систем со посебна намена).

Задачите се креираат и бришат врз основа на соодветни барања од корисници или други задачи. Задачата може да предизвика нова задача - во многу системи, нишката може да контактира со ОС со барање да се создаде т.н. детски потоци. Задачата за генерирање се нарекува „предок“ или „родител“, а задачата за дете се нарекува „потомок“ или „детска задача“. „Предок“ може да ја суспендира или избрише својата детска задача, додека „детето“ не може да управува со „предокот“.

Различни оперативни системи различно ја структурираат врската помеѓу детските нишки и нивните родители. Во некои оперативни системи, нивното извршување е синхронизирано (откако ќе заврши матичната нишка, сите нејзини деца се отстранети од извршување), во други, децата се извршуваат асинхроно во однос на матичната нишка.

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

2. Закажување и испраќање процеси и нишки

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

– ако е можно, завршете ги пресметките по истиот редослед по кој се започнати;

– давајте предност на пократки процеси;

– дајте им на сите корисници (кориснички задачи) исти услуги, вклучувајќи го истото време на чекање.

Во текот на животот на еден процес, извршувањето на неговите нишки може да се прекине и продолжи многу пати.

Преминот од извршување на една нишка во друга се врши како резултат на планирањеИ испраќање.

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

Во различни извори на информации постојат различни толкувања на концептите на „планирање“ и „испраќање“. Така, некои автори го делат планирањето на долгорочно (глобално) и краткорочно (динамично, т.е. сегашната најефикасна дистрибуција), а второто се нарекува диспечерирање. Според други извори, испраќањето се подразбира како спроведување на одлука донесена во фазата на планирање. Ќе се држиме до оваа опција.

Планирањевклучува решавање на два проблеми:

одредување на моментот на време за промена на активната нишка;

избирање нишка за извршување од редица подготвени нишки.

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

Во повеќето оперативни системи, се врши распоред динамички, т.е. одлуките се носат во текот на работата врз основа на анализа на моменталната состојба. Нишките и процесите се појавуваат по случаен избор и завршуваат непредвидливо.

Статичнитипот на распоред може да се користи во специјализирани системи во кои однапред е дефиниран целокупниот сет на задачи кои истовремено се извршуваат (системи во реално време). Распоредувачот создава распоред заснован на познавање на карактеристиките на збир на задачи. Овој распоред потоа се користи од оперативниот систем за закажување.

Испраќањесе состои во спроведување на решението најдено како резултат на планирањето, т.е. при префрлување на еден процес во друг. Испраќањето се сведува на следново:

зачувување на контекстот на тековната нишка што треба да се промени;

лансирање на нова нишка за извршување.

Контекстот на темата ја одразува, прво, состојбата на компјутерскиот хардвер во моментот на прекинот (вредноста на програмскиот бројач, содржината на регистрите за општа намена, режимот на работа на процесорот, знаменцата, маските за прекин и други параметри ), и второ, параметрите на оперативното опкружување (врски до отворени датотеки, податоци за недовршени I/O операции, шифри за грешки извршени од дадена нишка на системски повици итн.).

Во контекст на нишка, можеме да разликуваме дел што е заеднички за сите нишки од даден процес (врски до отворени датотеки) и дел што се однесува само на дадена нишка (содржината на регистрите, програмскиот бројач, режим на процесор). На пример, во околината NetWare постојат три типа на контексти - глобален контекст (процесен контекст), контекст на група на нишки и контекст на индивидуална нишка. Врската помеѓу податоците од овие контексти е слична на врската помеѓу глобалните и локалните променливи во програмата. Хиерархиската организација на контекстите го забрзува префрлувањето на нишките: кога се префрла од нишка на една група во нишка на друга група во рамките на истиот процес, глобалниот контекст не се менува, туку се менува само контекстот на групата. Префрлувањето на глобалниот контекст се случува само кога се движите од низата на еден процес до нишката на друг процес.

3. Алгоритми за планирање

Од гледна точка на решавање на првиот проблем со распоредот (избор на моментот на време за промена на активната нишка), алгоритмите за распоред се поделени во две големи класи - превентивни и непревентивни алгоритми:

нерепресивни– активната нишка може да се извршува додека самата не ја префрли контролата на системот за да избере друга подготвена нишка од редот;

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

Главната разлика помеѓу овие алгоритми за распоред е степенот на централизација на механизмот за распоред на нишки. Ајде да ги разгледаме главните карактеристики, предностите и недостатоците на секоја класа на алгоритми.

Алгоритми кои не се превентивни. Апликативна програма, откако доби контрола од ОС, самиот го одредува моментот на завршување на следниот циклус на неговото извршување и дури потоа ја пренесува контролата на ОС користејќи некој системски повик. Следствено, корисничката контрола на апликацијата се губи за произволен временски период. Програмерите треба да го земат предвид ова и да креираат апликации за да работат „во делови“, периодично прекинувајќи и пренесувајќи ја контролата на системот, т.е. За време на развојот се извршуваат и функциите на распоредувачот.

Предностиовој пристап:

– исклучен е прекин на протокот во незгоден момент;

– проблемот со истовремено користење на податоците е решен, бидејќи за време на секој циклус на извршување, задачата ги користи исклучиво и е сигурна дека никој друг не може да ги промени;

– поголема брзина на префрлување од поток во поток.

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

Превентивни алгоритми– цикличен или кружен тип на распоред, во кој самиот оперативен систем одлучува дали да ја прекине активната апликација и го префрла процесорот од една задача на друга во согласност со еден или друг критериум. Во систем со такви алгоритми, програмерот не мора да се грижи за фактот дека неговата апликација ќе се извршува истовремено со други задачи. Примерите ги вклучуваат оперативните системи UNIX, Windows NT/2000, OS/2. Алгоритмите од оваа класа се фокусирани на извршување на апликации со високи перформанси.

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

Алгоритми базирани на квантизација. Секоја нишка добива ограничено континуирано време на процесорот (неговата вредност не треба да биде помала од 1 ms - обично неколку десетици ms). Нишката се преместува од состојба на трчање во состојба на подготвеност ако квантот е исцрпен. Квантите може да бидат исти за сите текови или различни.

При доделување кванти на нишка, може да се користат различни принципи: овие кванти може да бидат со фиксна вредност или да се менуваат во различни периоди од животот на конецот. На пример, за некој специфичен тек, првиот квант може да биде доста голем, а секој следен квант кој му е доделен може да има пократко времетраење (намалување на одредени граници). Ова создава предност за пократки нишки, а долготрајните задачи се префрлаат во позадина. Друг принцип се заснова на фактот дека процесите кои често вршат I/O операции не ги користат целосно временските делови доделени за нив. За да се компензира оваа неправда, од таквите процеси може да се формира посебна редица, која има привилегии во однос на другите нишки. При изборот на следната нишка за извршување, оваа редица прво се скенира и само ако е празна, се избира нишка од општата редица подготвена за извршување.

Овие алгоритми не користат никакви претходни информации за задачите. Диференцијација на услуги во во овој случајсе заснова на „историјата на постоење“ на протокот во системот.

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

Сега да погледнеме некои од најчестите дисциплини за планирање.


Услуга прв дојден, прв услужен. Процесорот се доделува со помош на принципот FIFO (First In First Out), т.е. по редоследот по кој се примаат барањата за доставување. Овој пристап ви овозможува да ја имплементирате стратегијата за „завршување на пресметките по редоследот што тие се појавуваат секогаш кога е можно“. Оние задачи што беа блокирани при извршувањето, откако ќе влезат во готова состојба, се редат пред оние задачи што сè уште не се извршени. Така, се создаваат две редици: едната од задачите што сè уште не се извршени, а другата од задачите што преминале од состојбата на чекање.

Оваа дисциплина се спроведува како непревентивна кога задачите го ослободуваат процесорот доброволно.

ДостоинствоОвој алгоритам е лесен за имплементација. Недостаток– при големо оптоварување, кратките задачи се принудени да чекаат во системот долго време. Следниот пристап го елиминира овој недостаток.

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

Алгоритмот спаѓа во категоријата непревентивни, без приоритети.

Именуваните алгоритми може да се користат за сериски режими на работа, кога корисникот не очекува системот да одговори. За интерактивно пресметување, потребно е пред сè да се обезбеди прифатливо време на одговор и еднаква услуга за повеќетерминалните системи. За системи за еден корисник, пожелно е оние програми со кои се работи директно да имаат подобро време на одговор отколку заднинските работни места. Покрај тоа, некои апликации, иако работат без директна интеракција со корисникот, сепак мора да се гарантира дека ќе го добијат својот дел од времето на процесорот (на пример, програма за е-пошта). За да се решат ваквите проблеми, се користат методи на приоритетни услуги и концептот на квантизација.


Дисциплина на рингишпил, или круженР.Р.(Круг Робин). Оваа дисциплинасе однесува на превентивни алгоритми и се заснова на квантизација. Секоја задача добива процесорско време во делови - кванти. По завршувањето на временскиот квант, задачата се отстранува од процесорот и се става на крајот од редот на процеси подготвени за извршување, а следната задача се прифаќа за сервисирање од процесорот. За оптимално функционирање на системот, потребно е правилно да се избере законот според кој временските делови се распределуваат на задачите.

Квантната вредност е избрана како компромис помеѓу прифатливото време на одговор на системот на барањата на корисниците (така што нивните наједноставни барања не предизвикуваат долго чекање) и општите трошоци за често менување на задачите. Кога е прекинат, ОС мора да зачува доволно голема количина на информации за тековниот процес, да ја стави рачката на откажаната задача во редица и да го вчита контекстот на новата задача. Со мал временски дел и чести прекинувачи, релативниот удел на таквите трошоци ќе стане голем, а тоа ќе ги деградира перформансите на системот како целина. Ако временскиот дел е голем и се зголемува редот на готови задачи, одговорот на системот ќе стане слаб.

Во некои оперативни системи, можно е експлицитно да се определи вредноста на временскиот дел или дозволениот опсег на неговите вредности. На пример, во OS/2, датотеката CONFIG.SYS го користи операторот TIMESLICE за да ги специфицира минималните и максималните вредности за временскиот дел: TIMESLICE=32.256 покажува дека временскиот дел може да се смени од 32 на 256 милисекунди.

Оваа услужна дисциплина е една од најчестите. Во некои случаи, кога оперативниот систем не ја поддржува експлицитно дисциплината за распоред на тркалезни позиции, таквото одржување може да се организира вештачки. На пример, некои RTOS користат распоред со апсолутни приоритети, а кога приоритетите се еднакви, се применува принципот на редици. Односно, само задача со повисок приоритет може да отстрани задача од извршување. Доколку е потребно, организирајте услуга рамномерно и подеднакво, т.е. За да се осигури дека сите работни места добиваат исти временски делови, системскиот оператор може самиот да го спроведе таквото сервисирање. За да го направите ова, доволно е да ги доделите истите приоритети на сите задачи на корисникот и да креирате една задача со висок приоритет, која не треба да прави ништо друго освен да биде закажана за извршување на тајмер во одредени временски интервали. Оваа задача само ќе ја отстрани тековната апликација од извршување, таа ќе се пресели до крајот на редот, а самата задача веднаш ќе го напушти процесорот и ќе ја даде на следниот процес во редот.

Во својата наједноставна имплементација, дисциплината за услуга на рингишпил претпоставува дека сите работни места имаат ист приоритет. Доколку е неопходно да се воведе механизам за приоритетно сервисирање, обично се организираат неколку редици, во зависност од приоритетите, а сервисирањето на редот со понизок приоритет се врши само кога редот со повисок приоритет е празен. Овој алгоритам се користи за распоред во OS/2 и Windows NT системите.

Планирање според приоритети.

Важен концепт кој лежи во основата на многу превентивни алгоритми е превентивната услуга. Таквите алгоритми користат информации што се наоѓаат во дескрипторот на проток - неговиот приоритет. Различни системи различно го дефинираат приоритетот. Во некои системи, вредноста со највисок приоритет може да се смета нумерички највисока вредност, во други, напротив, највисок приоритет се смета за нула.

Вообичаено, приоритетот на нишката е директно поврзан со приоритетот на процесот во кој работи нишката. Приоритет на процесотдоделени од оперативниот систем кога е креиран, земајќи предвид дали процесот е системски или апликативен, каков е статусот на корисникот кој го започнал процесот и дали имало експлицитно корисничко упатство за доделување одреден приоритет на процесот. Вредноста на приоритетот е вклучена во рачката на процесот и се користи при доделување приоритет на нејзините нишки. Ако нишката не е иницирана од корисничка команда, туку како резултат на друга нишка што извршува системски повик, тогаш ОС мора да ги земе предвид параметрите на системскиот повик за да му додели приоритет.

Кога се планира одржување на програмата според претходно опишаните алгоритми, може да се појави ситуација кога некои контролни или управувачки задачи не можат да се спроведат подолг временски период поради зголеменото оптоварување во системот (особено во RTOS). Дополнително, последиците поради ненавременото завршување на таквите задачи може да бидат посериозни отколку поради неуспехот да се завршат некои програми со повисок приоритет. Во овој случај, би било препорачливо привремено да го промените приоритетот на задачите „итни“ (оние чие време за обработка истече), а по извршувањето да ја вратите претходната вредност. Воведувањето механизми за динамично менување на приоритетите овозможува да се имплементира побрз одговор на системот на кратки кориснички барања (што е важно за време на интерактивна работа), но во исто време гарантира исполнување на какви било барања.

Значи приоритет може да биде статични(фиксна) или динамичен(промена на системот во зависност од ситуацијата во него). т.н приоритет на основната нишкадиректно зависи од основниот приоритет на процесот што го генерирал. Во некои случаи, системот може да го зголеми приоритетот на нишката (и до различен степен), на пример, ако времето на процесорот што му е доделено не е целосно искористено или да го намали приоритетот на друг начин. На пример, ОС повеќе им дава приоритет на нишките кои чекаат влез од тастатурата и помалку на нишките што вршат операции на дискот. Во некои системи кои користат механизам за динамичен приоритет, се користат прилично сложени формули за промена на приоритетот, кои ги вклучуваат вредностите на основните приоритети, степенот на оптоварување на компјутерскиот систем, почетната приоритетна вредност одредена од корисникот итн. .

Постојат два вида на распоред на приоритети: одржување со релативни приоритетии услуга со апсолутни приоритети. Во двата случаи, изборот на нишка за извршување се врши на ист начин - се избира нишката со најголем приоритет, а моментот на промена на активната нишка се одредува поинаку. Во релативен приоритетен систем, активната нишка работи се додека не го напушти процесорот (или чека, се појавува грешка или нишката завршува). Во систем со апсолутни приоритети, прекин на активната нишка, покрај посочените причини, се јавува и доколку во редот на готови нишки се појави нишка со повисок приоритет од активниот. Потоа течената нишка се прекинува и се става во подготвена состојба.

Систем со релативен приоритетен распоред ги минимизира трошоците за префрлување, но една задача може да го окупира процесорот долго време. Овој режим на услуга не е погоден за системи за споделување време и во реално време, но во системите за сериска обработка (на пример, OS/360) е широко користен. Закажувањето на апсолутен приоритет е погодно за системи за управување со објекти каде што е важен брз одговор на настани.

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

РАЗВОЈ НА МОДУЛ НА ОПЕРАТИВЕН СИСТЕМ ЗА ОБУКА

Насоки

за дизајн на курсеви во дисциплината

"ОС"

за редовни студенти

правци

ВОВЕД 4

1. Теоретски дел. 4

1.1. Потсистем за контрола на процесите. 4

1.1.1. Контекст и процесна рачка. 5

1.1.2. Алгоритми за планирање на процесите. 6

1.1.3. Превентивни и непревентивни алгоритми за распоред. 9

1.1.4. Процесен модел и функции на потсистемот за управување со процеси на образовниот оперативен систем 12

1.2. Подсистем за управување со меморија.. 17

1.2.1. Дистрибуција на страници. 18

1.2.2. Дистрибуција на сегменти. 22

1.2.3. Дистрибуција на сегменти на страница. 23

1.2.4. Алгоритми за замена на страници. 24

1.3. Управување со датотеки. триесет

1.3.1. Имиња на датотеки. триесет

1.3.2. Типови на датотеки. 32

1.3.3. Физичка организација и адреса на досие. 33

2. Постапката за завршување на предметниот проект. 38

3. Опции за задачи. 39

Библиографија 42

ПРИЛОГ А... 43

ВОВЕД

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

Теоретски дел

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

Потсистем за контрола на процесот

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

За да може процесот да се изврши, оперативниот систем мора да му додели површина од RAM меморија за да ги смести кодот и податоците на процесот и да му го обезбеди потребното време на процесорот. Покрај тоа, на процесот може да му треба пристап до ресурси како што се датотеки и I/O уреди.

Во мултитаскинг систем, процесот може да биде во една од трите главни состојби:

RUNNING - активна состојба на процес, при што процесот ги има сите потребни ресурси и директно го извршува процесорот;

WAITING е пасивна состојба на процесот, процесот е блокиран, не може да се изврши од сопствени внатрешни причини, чека да се случи некој настан, на пример, завршување на I/O операција, примање порака од друг процес , или ослободување на некој ресурс што му е потребен;

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

Во текот на животниот циклус, секој процес се движи од една во друга состојба во согласност со алгоритмот за распоредување на процесите имплементиран во даден оперативен систем. Типичен графикон за состојбата на процесот е прикажан на слика 1.1.

Слика 1.1 - График на состојбата на процесот во опкружување со повеќе задачи

Во систем со еден процесор, може да има само еден процес во состојба RUNNING, а во секоја од состојбите WAITING и READY може да има неколку процеси; овие процеси формираат редици на чекање и подготвени процеси, соодветно.

Животен циклуспроцесот започнува со состојба READY, кога процесот е подготвен за извршување и чека да дојде редот. Кога е активиран, процесот оди во состојба RUNNING и останува во него додека или не го ослободи самиот процесор, влегувајќи во состојба на ЧЕКАЊЕ за некој настан, или е насилно исфрлен од процесорот, на пример, поради исцрпување на доделеното овој процесВременски квант на процесорот. Во вториот случај, процесот се враќа во состојба READY. Процесот преминува во оваа состојба од состојба на ЧЕКАЊЕ откако ќе се случи очекуваниот настан.

Статии за читање:

Основи на програмирање. Управување со процесите

изолација на процесот;
  • закажување на извршување на процеси и нишки (во принцип, треба да зборуваме и за задачи за распоред);
  • испраќање на конец;
  • организација на интерпроцесна интеракција;
  • синхронизација на процеси и нишки;
  • завршување и уништување на процеси и нишки.
  • Пет главни настани водат до создавање на процес:

  • исполнување на барањето на тековниот процес за креирање процес;
  • барање од корисник за создавање процес, како на пример при интерактивно најавување;
  • иницира сериска работа;
  • креирање од страна на оперативниот систем на процес неопходен за функционирање на какви било услуги.
  • Вообичаено, кога оперативниот систем се подига, се создаваат неколку процеси. Некои од нив се процеси со висок приоритет кои комуницираат со корисниците и извршуваат доделена работа. Останатите процеси се процеси во заднина, тие не се поврзани со одредени корисници, туку извршуваат посебни функции - на пример, поврзани со е-пошта, веб-страници, печатење, пренос на датотеки преку мрежата, периодично стартување на програми (на пример, дефрагментација на дискот) итн. Позадинските процеси се нарекуваат демони.

    Нов процес може да се креира на барање на тековниот процес. Создавањето нови процеси е корисно во случаите кога задачата што се извршува најлесно може да се формира како збир на поврзани, но сепак независни, интерактивни процеси. Во интерактивни системи, корисникот може да стартува програма со внесување команда на тастатурата или со двоен клик на иконата на програмата. Во двата случаи, се креира нов процес и во него се стартува програмата. ВО системи за сериска обработкана главните компјутери, корисниците поднесуваат работа (можеби со користење на далечински пристап), а ОС создава нов процес и ја започнува следната работа од редот кога ќе се ослободат потребните ресурси.

    Од техничка гледна точка, во сите овие случаи, нов процес се формира на ист начин: тековниот процес исполнува системско барање за создавање нов процес. Подсистемот за управување со процеси и нишки е одговорен за обезбедување на процесите со потребните ресурси. ОС одржува посебни информациски структури во меморијата, во кои евидентира кои ресурси се распределени на секој процес. Може да додели ресурси на процес за единствена употреба или за заедничка употреба со други процеси. Некои од ресурсите се распределуваат на процесот кога е креиран, а некои се распределуваат динамично врз основа на барањата за време на водечко време. Ресурсите може да се распределат на еден процес за целиот негов животен век или само за одреден период. При извршување на овие функции, потсистемот за контрола на процесот е во интеракција со други потсистеми на ОС одговорни за менаџирање со ресурси, како што е потсистемот за управување со меморијата, влезно/излезен потсистем, датотечен систем.

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

    Во оперативен систем каде што постојат процеси и нишки, процесот се смета како барање за трошење на сите видови ресурси освен едно време - процесорско време. Овој критичен ресурс оперативниот систем го дистрибуира меѓу другите единици на работа - нишки, кои го добиле своето име поради фактот што претставуваат секвенци (нишки на извршување) на команди. Преминот од извршување на една нишка во друга се врши како резултат на планирањеИ испраќање. Работата на одредување кога тековната нишка треба да се прекине и нишката што треба да се дозволи да работи се нарекува распоред. Распоредот на нишките се врши врз основа на информациите зачувани во процесот и дескрипторите на нишките. При планирањето се зема предвид приоритет на нишката, нивното време на чекање во редица, акумулирано водечко време, интензитет на влез/излезен пристап и други фактори.

    Диспечерството се состои од спроведување на решението најдено како резултат на планирањето, т.е. при префрлување на процесорот од една нишка во друга. Испраќањето се одвива во три фази:

    • зачувување на контекстот на тековната нишка;
    • вчитување на контекстот на нишката избрана како резултат на распоредот;
    • лансирање на нова нишка за извршување.

    Кога системот извршува повеќе независни задачи истовремено, се појавуваат дополнителни проблеми. Иако нишките се појавуваат и се извршуваат синхроно, тие можеби ќе треба да комуницираат, како на пример при размена на податоци. За да комуницираат едни со други, процесите и нишките можат да користат широк опсег на можности: цевки (во UNIX), поштенски сандачиња (Windows), повици за далечинска процедура, приклучоци (во Windows тие поврзуваат процеси на различни машини). Усогласувањето на брзините на нишките е исто така многу важно за да се спречат услови за трка (каде што повеќе нишки се обидуваат да ја изменат истата датотека), ќор-сокак и други судири што се случуваат при споделување ресурси.

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

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

    Како што веќе беше забележано, за поддршка мултипрограмирање, ОС мора да ги дизајнира за себе оние внатрешни единици на работа меѓу кои ќе се поделат процесорот и другите компјутерски ресурси. Се поставува прашањето: која е фундаменталната разлика помеѓу овие единици на работа, каков мултипрограмски ефект може да се добие од нивната употреба и во кои случаи треба да се создадат овие единици на работа на оперативниот систем?

    Очигледно, секоја операција на компјутерски систем се состои од извршување на некоја програма. Затоа, одреден програмски код е поврзан и со процесот и со нишката, која се издава во форма на извршен модул. Во наједноставниот случај, процесот се состои од една нишка, а некои модерни оперативни системи сè уште ја имаат оваа ситуација. Мултипрограмирањево таков ОС се спроведува на ниво на процес. Кога е неопходна интеракцијата, процесите се свртуваат кон оперативниот систем, кој, дејствувајќи како посредник, им обезбедува средства за меѓупроцесна комуникација - канали, споделувања на пошта, делови за заедничка меморија итн.

    Меѓутоа, во системите кои немаат концепт на нишка, се јавуваат проблеми при организирање на паралелни пресметки во рамките на еден процес. И може да се појави таква потреба. Поентата е дека еден процес никогаш не може да се изврши побрзо отколку во режим на една програма. Сепак, апликацијата што работи во рамките на еден процес може да има внатрешен паралелизам, што во принцип би можело да го забрза неговото решавање. Ако, на пример, програмата обезбедува пристап до надворешен уред, тогаш за време на оваа операција е можно да не се блокира извршувањето на целиот процес, туку да се продолжат пресметките во друга гранка на програмата.

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

    Не е тешко да се замисли идна верзија на компајлерот што може автоматски да ги компајлира датотеките со изворниот код за време на паузите додека пишувате програма. Потоа во реално време би се појавиле предупредувања и пораки за грешки, а корисникот веднаш би видел каде погрешил. Модерен табеларни пресметкиповторно пресметајте ги податоците во позадина веднаш штом корисникот промени нешто. Обработувачите на текст го кршат текстот на страници, го проверуваат за правопис и граматички грешки, пишување во заднина, зачувување текст на секои неколку минути итн. Во сите овие случаи, нишките се користат како средство за паралелизирање на пресметките.

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

    Друго решение е да се создадат неколку процеси за една апликација за секоја од паралелните

    Еден од главните потсистеми на секој модерен мултипрограмски оперативен систем кој директно влијае на функционирањето на компјутерот е потсистемот за управување со процеси и нишки. Главните функции на овој потсистем:

      создавање процеси и нишки;

      обезбедување на процеси и нишки со потребните ресурси;

      изолација на процесот;

      закажување на извршување на процеси и нишки (во принцип, треба да зборуваме и за задачи за распоред);

      испраќање на конец;

      организација на меѓупроцесна комуникација;

      синхронизација на процеси и нишки;

      завршување и уништување на процеси и нишки.

    1. Пет главни настани водат до создавање на процес:

      исполнување на барањето на тековниот процес за креирање процес;

      барање од корисник за создавање процес, како на пример при интерактивно најавување;

      иницира сериска работа;

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

    Вообичаено, кога оперативниот систем се подига, се создаваат неколку процеси. Некои од нив се процеси со висок приоритет кои комуницираат со корисниците и вршат доделена работа. Останатите процеси се процеси во позадина, тие не се поврзани со одредени корисници, туку извршуваат посебни функции - на пример, поврзани со е-пошта, веб-страници, излез на печат, пренос на датотеки Од страна намрежа, периодично стартување на програми (на пример, дефрагментација на дискот) итн. Позадинските процеси се нарекуваат демони.

    Може да се создаде нов процес Од страна набарање на тековниот процес. Создавањето нови процеси е корисно во случаите кога задачата што се извршува најлесно може да се формира како збир на поврзани, но сепак независни, интерактивни процеси. Во интерактивни системи корисникможе да стартува програма со внесување команда на тастатурата или со двоен клик на иконата на програмата. Во двата случаи се создава нов процес и лансираво него има програми. ВО системи за сериска обработкана главните компјутери, корисниците поднесуваат работа (можеби со користење на далечински пристап), а ОС создава нов процес и ја започнува следната работа од редот кога ќе се ослободат потребните ресурси.

    2. Од техничка гледна точка, во сите овие случаи, нов процес се формира на ист начин: тековниот процес го извршува системот барањеда се создаде нов процес. Подсистемот за управување со процеси и нишки е одговорен за обезбедување на процесите со потребните ресурси. ОС одржува посебни информациски структури во меморијата, во кои евидентира кои ресурси се распределени на секој процес. Може да додели ресурси на процес за единствена употреба или за заедничка употреба со други процеси. Некои од ресурсите се распределуваат на процесот кога ќе се креира, а некои се распределуваат динамично Од страна напрашања во водечко време. Ресурсите може да се распределат на еден процес за целиот негов животен век или само за одреден период. При извршување на овие функции, потсистемот за контрола на процесот е во интеракција со други потсистеми на ОС одговорни за менаџирање со ресурси, како што е потсистемот за управување со меморијата, влезно/излезен потсистем, датотечен систем.

    3. За да се спречи мешање на процесите распределба на ресурси, а исто така не можеа да ги оштетат кодовите и податоците меѓусебно, Најважната задача на ОС е да изолира еден процес од друг. За ова операционен системобезбедува секој процес со посебен виртуелен адресен простор, така што ниту еден процес не може директно да пристапи до командите и податоците на друг процес.

    4. Во оперативен систем каде што постојат процеси и нишки, процесот се смета како барање за трошење на сите видови ресурси освен едно време - процесорско време. Ова е најважно ресурсдистрибуирани од оперативниот систем помеѓу други единици на работа - нишки, кои го добиле своето име поради фактот што претставуваат секвенци (нишки на извршување) на команди. Преминот од извршување на една нишка во друга се врши како резултат напланирање Ииспраќање . Работа Од страна наОпределувањето на моментот во кој тековната нишка треба да се прекине и нишката што треба да се дозволи да тече се нарекува распоред. Распоредот на нишките се врши врз основа на информациите зачувани во процесот и дескрипторите на нишките.При планирањето се зема предвид приоритет на нишката, нивното време на чекање во редица, акумулирано водечко време, интензитет на влез/излезен пристап и други фактори.

    5. Диспечерството се состои во спроведување на решението најдено како резултат на планирањето, т.е. при префрлување на процесорот од една нишка во друга. Испраќањето се одвива во три фази:

      зачувување на контекстот на тековната нишка;

      лансирање на нова нишка за извршување.

    6. Кога системот извршува повеќе независни задачи истовремено, се појавуваат дополнителни проблеми. Иако нишките се појавуваат и се извршуваат синхроно, тие можеби ќе треба да комуницираат, на пример, при размена на податоци. За да комуницираат едни со други, процесите и нишките можат да користат широк опсег на способности: канали (во UNIX), поштенски сандачиња ( Windows), повик за далечинска процедура, приклучоци (во Windowsповрзете процеси на различни машини). Усогласувањето на брзините на нишките е исто така многу важно за да се спречат условите на трката (каде што повеќе нишки се обидуваат да го променат истото датотека), ќор-сокак и други судири што се случуваат кога ресурсите се споделуваат.

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

    8. Секој пат кога процесот завршува, – и тоа се случува поради еден од следните настани: нормално излез, излез Од страна нагрешка, излез Од страна нафатална грешка, уништување од друг процес - оперативниот систем презема чекори за да ги „исчисти трагите“ од неговото присуство во системот. Потсистемот за управување со процеси ги затвора сите датотеки со кои работел процесот, ослободувајќи области на RAM меморија наменети за кодови, податоци и системски информациски структури на процесот. Изведена корекцијасите видови на ОС редици и листаресурси кои содржеле врски до процесот што се завршува.

    Функциите на оперативниот систем на самостоен компјутер обично се групирани или според типовите на локални ресурси со кои управува ОС или според специфични задачи кои се однесуваат на сите ресурси. Понекогаш таквите групи на функции се нарекуваат потсистеми. Најважните потсистеми за управување со ресурси се потсистеми за управување со процеси, меморија, датотеки и надворешни уреди, а заеднички потсистеми за сите ресурси се корисничкиот интерфејс, безбедноста на податоците и потсистемите за администрација. Најважниот дел од оперативниот систем, кој директно влијае на функционирањето на компјутерот, е потсистемот за контрола на процесите. За секој новосоздаден процес, ОС генерира системски информациски структури кои содржат податоци за потребите на процесот за компјутерски системски ресурси, како и за ресурсите што всушност му се доделени. Така, процес може да се дефинира и како некоја апликација за трошење на системските ресурси. Во мултипрограмски оперативен систем, неколку процеси можат да постојат истовремено. Некои процеси се генерираат на иницијатива на корисниците и нивните апликации; таквите процеси обично се нарекуваат кориснички процеси. Другите процеси, наречени системски процеси, се иницијализирани од самиот оперативен систем за да ги извршуваат своите функции. Важна задача на оперативниот систем е да ги заштити ресурсите доделени на даден процес од други процеси. Еден од највнимателно заштитените процесни ресурси се областите на RAM меморијата во кои се складираат процесниот код и податоците. Множеството од сите области на RAM меморија доделени од оперативниот систем на еден процес се нарекува негов адресен простор. Се вели дека секој процес работи во својот адресен простор, што се однесува на заштитата на адресните простори обезбедени од ОС. Заштитени се и други видови ресурси, како што се датотеки, надворешни уреди итн. Оперативниот систем не само што може да ги заштити ресурсите доделени на еден процес, туку и да го организира нивното споделување, на пример, дозволувајќи пристап до одредена област на \u200меморија со неколку процеси. Во текот на животот на процесот, неговото извршување може да се прекинува и продолжи многу пати. За да се продолжи со извршувањето на процесот, неопходно е да се врати состојбата на неговата работна средина. Состојбата на оперативното опкружување се идентификува со состојбата на регистрите и програмскиот бројач, режимот на работа на процесорот, покажувачите за отворање датотеки, информациите за незавршените I/O операции, кодовите за грешки на системските повици извршени од даден процес итн. . г) Оваа информација се нарекува контекст на напредок. Тие велат дека кога процесот се менува, се случува промена на контекстот. Така, потсистемот за управување со процесите го закажува извршувањето на процесите, односно го дистрибуира времето на процесорот помеѓу неколку истовремено постоечки процеси во системот, создава и уништува процеси, обезбедува процеси со потребните системски ресурси, одржува синхронизација на процесите, а исто така обезбедува интеракција помеѓу процесите.

    Споделете со пријателите или заштедете за себе:

    Се вчитува...