Համատեքստ և գործընթացի բռնակ: Գործընթացի հայեցակարգ. Գործընթացների կառավարման օպերացիոն համակարգի ենթահամակարգ: Գործընթացի վիճակները. Գործընթացի համատեքստ և նկարագրիչ գործընթացների կառավարման ենթահամակարգ

Առաջադրանքների կառավարման համակարգը ապահովում է դրանց անցումը համակարգչով։ Կախված գործընթացի վիճակից, այն պետք է հատկացնի այս կամ այն ​​ռեսուրսը: Օրինակ, նոր գործընթաց պետք է տեղադրվի հիշողության մեջ՝ դրան հասցեական տարածք հատկացնելով. ներառել պրոցեսորի ժամանակի համար մրցակցող առաջադրանքների ցանկում:

Բազմածրագրային ՕՀ-ի հիմնական ենթահամակարգերից մեկը, որն ուղղակիորեն ազդում է համակարգչի աշխատանքի վրա գործընթացների և թելերի կառավարման ենթահամակարգ. Այն զբաղվում է դրանց ստեղծման և ոչնչացման հետ, ինչպես նաև բաշխում է պրոցեսորի ժամանակը համակարգում միաժամանակ առկա գործընթացների և թելերի միջև:

Երբ համակարգում միաժամանակ մի քանի առաջադրանքներ են աշխատում, չնայած թելերը ստեղծվում և կատարվում են ասինխրոն, դրանք կարող են փոխազդել, օրինակ՝ տվյալների փոխանակման ժամանակ: Հետևաբար, թելերի համաժամացումը գործընթացի և թելերի կառավարման ենթահամակարգի կարևոր գործառույթներից է:

Գործընթացների միջև հաղորդակցությունն իրականացվում է ընդհանուր փոփոխականների և հատուկ հիմնական գործողությունների միջոցով, որոնք կոչվում են պրիմիտիվներ.

Գործընթացների և թելերի կառավարման ենթահամակարգն ունի գործընթացների վրա հետևյալ գործողությունները կատարելու հնարավորություն.

– գործընթացի ստեղծում (ձվադրում)/ոչնչացում.

– դադարեցնել/վերսկսել գործընթացը;

- գործընթացի արգելափակում/արթնացում;

- սկսել գործընթացը;

- գործընթացի առաջնահերթության փոփոխություն;

Գործընթացների և թելերի կառավարման ենթահամակարգը պատասխանատու է գործընթացներին անհրաժեշտ ռեսուրսներով ապահովելու համար: ՕՀ-ն հիշողության մեջ պահպանում է հատուկ տեղեկատվական կառուցվածքներ, որոնցում արձանագրում է, թե որ ռեսուրսներն են հատկացվում յուրաքանչյուր գործընթացին: Ռեսուրսը կարող է վերագրվել գործընթացին միայնակ օգտագործման կամ այլ գործընթացների հետ համատեղ օգտագործման համար: Ռեսուրսների մի մասը հատկացվում է գործընթացին, երբ այն ստեղծվում է, իսկ որոշները բաշխվում են դինամիկ կերպով՝ հիմնվելով գործարկման ժամանակի հարցումների վրա: Ռեսուրսները կարող են վերագրվել գործընթացին իր ողջ կյանքի ընթացքում կամ միայն որոշակի ժամանակահատվածի համար: Այս գործառույթները կատարելիս գործընթացի կառավարման ենթահամակարգը փոխազդում է ռեսուրսների կառավարման համար պատասխանատու այլ ՕՀ ենթահամակարգերի հետ, ինչպիսիք են հիշողության կառավարման ենթահամակարգը, մուտքային/ելքային ենթահամակարգը և ֆայլային համակարգը:

1. Գործընթացների և թելերի ստեղծում և ջնջում

Գործընթաց ստեղծել նշանակում է առաջին հերթին ստեղծել գործընթացի բռնակ, որը մեկ կամ մի քանի տեղեկատվական կառուցվածք է, որը պարունակում է ողջ տեղեկատվությունը գործընթացի մասին, որն անհրաժեշտ է օպերացիոն համակարգի համար այն կառավարելու համար: Այս հարցը մանրամասնորեն քննարկվել է ավելի վաղ, այժմ մենք պարզապես հիշում ենք, որ նման տեղեկատվությունը կարող է ներառել, օրինակ, գործընթացի նույնացուցիչ, հիշողության մեջ գործարկվող մոդուլի գտնվելու վայրի վերաբերյալ տվյալներ, գործընթացի արտոնության աստիճանը (առաջնահերթություն և մուտքի իրավունքներ), և այլն:

Գործընթացի ստեղծումը ներառում է գործընթացի գործարկվող ծրագրի կոդերն ու տվյալները սկավառակից RAM-ի մեջ: Այս դեպքում գործընթացի կառավարման ենթահամակարգը փոխազդում է հիշողության կառավարման ենթահամակարգի և ֆայլային համակարգի հետ: Բազմաթելային համակարգում, երբ պրոցես է ստեղծվում, ՕՀ-ն յուրաքանչյուր գործընթացի համար ստեղծում է կատարման առնվազն մեկ շարան: Թելեր ստեղծելիս, ինչպես պրոցես ստեղծելիս, ՕՀ-ն ստեղծում է հատուկ տեղեկատվական կառուցվածք՝ թելի նկարագրիչ, որը պարունակում է թելի նույնացուցիչը, մուտքի իրավունքի և առաջնահերթության տվյալները, թելի վիճակը և այլն։ Ստեղծվելուց հետո շարանը (կամ պրոցեսը) գտնվում է կատարման պատրաստության վիճակում (կամ հատուկ նշանակության ՕՀ-ի դեպքում՝ պարապ վիճակում):

Առաջադրանքները ստեղծվում և ջնջվում են օգտատերերի համապատասխան հարցումների կամ այլ առաջադրանքների հիման վրա: Առաջադրանքը կարող է նոր առաջադրանք առաջացնել. շատ համակարգերում շարանը կարող է կապվել ՕՀ-ի հետ՝ այսպես կոչված ստեղծելու խնդրանքով: մանկական հոսքեր. Ստեղծող առաջադրանքը կոչվում է «նախահայր» կամ «ծնող», իսկ երեխայի առաջադրանքը՝ «հետնորդ» կամ «երեխայի առաջադրանք»: «Նախնին» կարող է կասեցնել կամ ջնջել իր երեխայի առաջադրանքը, մինչդեռ «երեխան» չի կարող կառավարել «նախահայրը»:

Տարբեր օպերացիոն համակարգեր տարբեր կերպ են կառուցում մանկական թելերի և նրանց ծնողների միջև հարաբերությունները: Որոշ օպերացիոն համակարգերում դրանց կատարումը համաժամանակացվում է (ծնող շարանը ավարտվելուց հետո նրա բոլոր երեխաները հեռացվում են կատարումից), մյուսներում երեխաները կատարվում են ասինխրոն կերպով՝ կապված մայր թեմայի հետ:

Գործընթացի ավարտից հետո ՕՀ-ն «մաքրում է» համակարգում իր ներկայության հետքերը՝ փակում է բոլոր ֆայլերը, որոնց հետ աշխատել է գործընթացը, ազատում է RAM-ի տարածքները, որոնք հատկացված են գործընթացի կոդերին, տվյալների և համակարգի տեղեկատվական կառուցվածքներին: ՕՀ-ի հերթերը և ռեսուրսների ցուցակները, որոնք հղումներ էին պարունակում ավարտվող գործընթացին, ուղղվում են:

2. Գործընթացների և թելերի պլանավորում և առաքում

Պլանավորման ռազմավարությունը որոշում է, թե որ գործընթացներն են ընտրվում՝ նպատակին հասնելու համար: Ռազմավարությունները կարող են տարբեր լինել, օրինակ.

- հնարավորության դեպքում ավարտեք հաշվարկները նույն հաջորդականությամբ, որով դրանք սկսվել են.

- նախապատվություն տալ ավելի կարճ գործընթացներին.

– տրամադրել բոլոր օգտատերերին (օգտագործողի առաջադրանքները) միևնույն ծառայություններով, ներառյալ սպասման նույն ժամանակը:

Գործընթացի կյանքի ընթացքում նրա թելերի կատարումը կարող է ընդհատվել և շարունակվել բազմիցս։

Մի թելի կատարումից մյուսին անցումը կատարվում է արդյունքում պլանավորումԵվ առաքում.

Պլանավորումթելերն իրականացվում են գործընթացի և թելերի նկարագրիչներում պահվող տեղեկատվության հիման վրա: Պլանավորելիս կարելի է հաշվի առնել թելերի առաջնահերթությունը, հերթում սպասելու ժամանակը, կատարման կուտակված ժամանակը, մուտքի/ելքի մուտքի ինտենսիվությունը և այլ գործոններ։ ՕՀ-ն պլանավորում է թելերը, որոնք պետք է կատարվեն՝ անկախ նրանից՝ դրանք պատկանում են միևնույն կամ տարբեր գործընթացներին: Պլանավորումը հասկացվում է որպես այնպիսի գործընթացների մի շարք ընտրելու խնդիր, որպեսզի դրանք կատարման ընթացքում հնարավորինս քիչ հակասեն և օգտագործեն հաշվողական համակարգը հնարավորինս արդյունավետ:

Տարբեր տեղեկատվական աղբյուրներում կան «պլանավորում» և «դիսպետչերական» հասկացությունների տարբեր մեկնաբանություններ: Այսպիսով, որոշ հեղինակներ պլանավորումը բաժանում են երկարաժամկետ (գլոբալ) և կարճաժամկետ (դինամիկ, այսինքն՝ ներկայիս ամենաարդյունավետ բաշխումը), իսկ վերջինս կոչվում է դիսպետչինգ։ Այլ աղբյուրների համաձայն, դիսպետչինգը հասկացվում է որպես պլանավորման փուլում ընդունված որոշման իրականացում: Մենք հավատարիմ կմնանք այս տարբերակին:

Պլանավորումներառում է երկու խնդրի լուծում.

ակտիվ շարանը փոխելու ժամանակի որոշում.

պատրաստի թելերի հերթից կատարվող թել ընտրելը:

Կան բազմաթիվ պլանավորման ալգորիթմներ, որոնք լուծում են այս խնդիրները տարբեր ձևերով: Հենց պլանավորման առանձնահատկություններն են որոշում օպերացիոն համակարգի առանձնահատկությունները: Եկեք նրանց նայենք մի փոքր ուշ:

Օպերացիոն համակարգերի մեծ մասում պլանավորումն իրականացվում է դինամիկ կերպով, այսինքն. որոշումներն ընդունվում են աշխատանքի ընթացքում՝ հիմնվելով ներկա իրավիճակի վերլուծության վրա: Թելերը և գործընթացները հայտնվում են պատահական ժամանակներում և ավարտվում անկանխատեսելիորեն:

ՍտատիկԺամանակացույցի տեսակը կարող է օգտագործվել մասնագիտացված համակարգերում, որոնցում նախապես սահմանված է միաժամանակ կատարվող առաջադրանքների ամբողջ փաթեթը (իրական ժամանակի համակարգեր): Ժամանակացույցը ստեղծում է ժամանակացույց՝ հիմնվելով մի շարք առաջադրանքների բնութագրերի իմացության վրա: Այս ժամանակացույցն այնուհետև օգտագործվում է օպերացիոն համակարգի կողմից ժամանակացույցի համար:

Դիսպետչերականբաղկացած է պլանավորման արդյունքում գտած լուծումն իրականացնելուց, այսինքն. մի գործընթաց մյուսին անցնելու ժամանակ: Դիսպետչերական առաքումը հանգում է հետևյալին.

պահպանելով ընթացիկ թեմայի համատեքստը, որը պետք է փոխվի.

գործարկելու համար նոր թեմա.

Թեմայի համատեքստը, առաջին հերթին, արտացոլում է համակարգչային տեխնիկայի վիճակը ընդհատման պահին (ծրագրի հաշվիչի արժեքը, ընդհանուր նշանակության ռեգիստրների բովանդակությունը, պրոցեսորի գործառնական ռեժիմը, դրոշները, ընդհատման դիմակները և այլ պարամետրերը: ), և երկրորդը, գործառնական միջավայրի պարամետրերը (բացված ֆայլերի հղումներ, անավարտ I/O գործառնությունների վերաբերյալ տվյալներ, համակարգային զանգերի տվյալ շղթայով կատարված սխալի կոդերը և այլն):

Թեմայի համատեքստում մենք կարող ենք տարբերակել մի մասը, որը ընդհանուր է տվյալ գործընթացի բոլոր շղթաների համար (հղումներ դեպի բաց ֆայլեր), և մի մասը, որը վերաբերում է միայն տվյալ շարանը (ռեգիստրների բովանդակությունը, ծրագրի հաշվիչը, պրոցեսորի ռեժիմ): Օրինակ, NetWare միջավայրում կան երեք տեսակի համատեքստեր՝ գլոբալ համատեքստ (գործընթացի համատեքստ), թեմայի խմբի համատեքստ և թեմայի անհատական ​​համատեքստ: Այս համատեքստերի տվյալների միջև կապը նման է ծրագրի գլոբալ և տեղական փոփոխականների միջև փոխհարաբերություններին: Համատեքստերի հիերարխիկ կազմակերպումը արագացնում է շղթաների անցումը. նույն գործընթացի ընթացքում մի խմբի թեմայից մյուս խմբի շարանը անցնելիս գլոբալ համատեքստը չի փոխվում, այլ փոխվում է միայն խմբի համատեքստը: Համաշխարհային համատեքստի փոխարկումը տեղի է ունենում միայն այն ժամանակ, երբ մի գործընթացի շարանը տեղափոխվում է մեկ այլ գործընթացի շարանը:

3. Պլանավորման ալգորիթմներ

Պլանավորման առաջին խնդիրը լուծելու տեսանկյունից (ակտիվ շարանը փոխելու ժամանակի պահն ընտրելը) պլանավորման ալգորիթմները բաժանվում են երկու մեծ դասի՝ կանխարգելիչ և ոչ կանխարգելիչ ալգորիթմների.

ոչ ռեպրեսիվ– ակտիվ շարանը կարող է գործարկվել այնքան ժամանակ, քանի դեռ նա ինքն է փոխանցել հսկողությունը համակարգին, որպեսզի այն ընտրի մեկ այլ պատրաստի շարանը հերթից.

տեղահանում– օպերացիոն համակարգը որոշում է փոխել կատարվող առաջադրանքը և պրոցեսորը տեղափոխում է այլ թեմա:

Պլանավորման այս ալգորիթմների հիմնական տարբերությունը թելերի պլանավորման մեխանիզմի կենտրոնացվածության աստիճանն է։ Դիտարկենք ալգորիթմների յուրաքանչյուր դասի հիմնական բնութագրերը, առավելություններն ու թերությունները:

Ոչ կանխարգելիչ ալգորիթմներ. Դիմումի ծրագիր, ստանալով ՕՀ-ից հսկողություն, այն ինքն է որոշում դրա կատարման հաջորդ ցիկլի ավարտի պահը և միայն այնուհետև հսկողությունը փոխանցում է ՕՀ-ին՝ օգտագործելով համակարգային ինչ-որ զանգ: Հետևաբար, հավելվածի օգտատերերի վերահսկողությունը կամայական ժամանակով կորչում է: Մշակողները պետք է հաշվի առնեն դա և ստեղծեն հավելվածներ, որպեսզի նրանք աշխատեն «մաս-մաս»՝ պարբերաբար ընդհատելով և փոխանցելով վերահսկողությունը համակարգին, այսինքն. Մշակման ընթացքում կատարվում են նաև ժամանակացույցի գործառույթները։

Առավելություններըայս մոտեցումը.

- անհարմար պահին հոսքի ընդհատումը բացառվում է.

– լուծված է տվյալների միաժամանակյա օգտագործման խնդիրը, քանի որ յուրաքանչյուր կատարման ցիկլի ընթացքում առաջադրանքը օգտագործում է դրանք բացառապես և վստահ է, որ ոչ ոք չի կարող փոխել դրանք.

– հոսքից հոսք անցնելու ավելի բարձր արագություն:

Թերություններըբարդ ծրագրերի մշակում և ծրագրավորողի որակավորման պահանջների ավելացում, ինչպես նաև պրոցեսորը մեկ շղթայի տիրանալու հնարավորությունը, եթե այն պատահաբար կամ միտումնավոր շրջվի:

Կանխարգելիչ ալգորիթմներ– ժամանակացույցի ցիկլային կամ շրջանաձև տեսակ, որի դեպքում օպերացիոն համակարգն ինքն է որոշում՝ ընդհատե՞լ ակտիվ հավելվածը և պրոցեսորը մի առաջադրանքից մյուսը տեղափոխում է այս կամ այն ​​չափանիշի համաձայն: Նման ալգորիթմներով համակարգում ծրագրավորողը կարիք չունի անհանգստանալու այն փաստի համար, որ իր հավելվածը կկատարվի այլ առաջադրանքների հետ միաժամանակ։ Օրինակները ներառում են UNIX, Windows NT/2000, OS/2 օպերացիոն համակարգերը: Այս դասի ալգորիթմները կենտրոնացած են հավելվածների բարձր արդյունավետության վրա:

Կանխարգելիչ ալգորիթմները կարող են հիմնված լինել քվանտացման հայեցակարգի կամ առաջնահերթության մեխանիզմի վրա:

Քվանտացման վրա հիմնված ալգորիթմներ. Յուրաքանչյուր թեմա տրվում է պրոցեսորի ժամանակի սահմանափակ շարունակական հատված (դրա արժեքը չպետք է լինի 1 ms-ից պակաս, սովորաբար մի քանի տասնյակ ms): Թելը վազող վիճակից տեղափոխվում է պատրաստ վիճակի, եթե քվանտը սպառված է: Քվանտան կարող է լինել նույնը բոլոր հոսքերի համար կամ տարբեր:

Թելին քվանտա հատկացնելիս կարող են օգտագործվել տարբեր սկզբունքներ. այդ քվանտները կարող են լինել ֆիքսված արժեք կամ փոփոխվել թելի կյանքի տարբեր ժամանակահատվածներում: Օրինակ, ինչ-որ կոնկրետ հոսքի համար առաջին քվանտը կարող է բավականին մեծ լինել, և դրան հատկացված յուրաքանչյուր հաջորդ քվանտ կարող է ունենալ ավելի կարճ տեւողություն (նվազեցում մինչեւ սահմանված սահմաններ): Սա առավելություն է ստեղծում ավելի կարճ թելերի համար, իսկ երկարաժամկետ առաջադրանքները տեղափոխվում են հետին պլան: Մեկ այլ սկզբունք հիմնված է այն փաստի վրա, որ գործընթացները, որոնք հաճախ կատարում են I/O գործողություններ, ամբողջությամբ չեն օգտագործում իրենց հատկացված ժամանակի հատվածները: Այս անարդարությունը փոխհատուցելու համար նման գործընթացներից կարող է առանձին հերթ գոյանալ, որն արտոնություններ ունի այլ թելերի նկատմամբ։ Հաջորդ շարանը կատարման համար ընտրելիս այս հերթը նախ սկանավորվում է, և միայն այն դեպքում, եթե այն դատարկ է, ընդհանուր հերթից ընտրվում է թեմա, որը պատրաստ է կատարման:

Այս ալգորիթմները չեն օգտագործում որևէ նախնական տեղեկատվություն առաջադրանքների վերաբերյալ: Ծառայությունների տարբերակում այս դեպքումհիմնված է համակարգում հոսքի «գոյության պատմության» վրա։

Երկրորդ պլանավորման խնդրի տեսանկյունից (հաջորդ շարանը կատարելու ընտրության սկզբունքը) ալգորիթմները պայմանականորեն կարելի է բաժանել նաև դասերի՝ ոչ առաջնահերթ և առաջնահերթ ալգորիթմներ։ Ոչ առաջնահերթ սպասարկման դեպքում հաջորդ առաջադրանքն ընտրվում է որոշակի կանխորոշված ​​հերթականությամբ՝ առանց հաշվի առնելու դրանց հարաբերական նշանակությունը և պահպանման ժամանակը: Առաջնահերթ դիսցիպլիններ իրականացնելիս որոշ առաջադրանքներ առաջնահերթություն են ստանում կատարման վիճակի մեջ մտնելու համար:

Հիմա եկեք տեսնենք պլանավորման ամենատարածված առարկաներից մի քանիսը:


Առաջին գալը, առաջինը սպասարկվել է ծառայություն. Պրոցեսորը հատկացվում է FIFO (First In First Out) սկզբունքով, այսինքն. սպասարկման հարցումների ստացման հերթականությամբ: Այս մոտեցումը թույլ է տալիս իրականացնել «հաշվարկները հնարավորության դեպքում ավարտել այն հերթականությամբ, որ դրանք հայտնվում են»: Այն առաջադրանքները, որոնք արգելափակվել են կատարման ժամանակ, պատրաստ վիճակում մտնելուց հետո հերթագրվում են այն առաջադրանքների դիմաց, որոնք դեռ չեն կատարվել։ Այսպիսով, ստեղծվում է երկու հերթ՝ մեկը դեռ չկատարված առաջադրանքներից, իսկ մյուսը՝ առկախ վիճակից անցած առաջադրանքներից:

Այս կարգապահությունը կիրառվում է որպես ոչ կանխարգելիչ, երբ առաջադրանքները կամավոր ազատում են պրոցեսորը:

ԱրժանապատվությունԱյս ալգորիթմը հեշտ է իրականացնել: Անբարենպաստություն– ծանր բեռի տակ կարճ առաջադրանքները ստիպված են երկար սպասել համակարգում: Հետևյալ մոտեցումը վերացնում է այս թերությունը.

Սկզբում մատուցվում է ամենակարճ գործընթացը:Ըստ այս ալգորիթմի, կատարման կողքին նշանակվում է այն շարանը, որն ունի իր աշխատանքը ավարտելու համար պահանջվող նվազագույն գնահատված ժամանակը: Այստեղ նախապատվությունը տրվում է այն թելերին, որոնց ավարտին քիչ ժամանակ է մնացել։ Սա նվազեցնում է համակարգում առկախ խնդիրների քանակը: Անբարենպաստությունգնահատված ժամանակները նախապես իմանալու անհրաժեշտությունն է, ինչը միշտ չէ, որ հնարավոր է: Որպես կոպիտ մոտավոր հաշվարկ, որոշ դեպքերում դուք կարող եք օգտագործել այն ժամանակը, որն անցկացրեց շարանը վերջին՝ ստանալով վերահսկողություն:

Ալգորիթմը պատկանում է ոչ կանխարգելիչ, առանց առաջնահերթության կատեգորիայի:

Անվանված ալգորիթմները կարող են օգտագործվել խմբաքանակի գործառնական ռեժիմների համար, երբ օգտագործողը չի ակնկալում, որ համակարգը կպատասխանի: Ինտերակտիվ հաշվարկների համար անհրաժեշտ է նախ և առաջ ապահովել արձագանքման ընդունելի ժամանակ և բազմատերմինալ համակարգերի համար հավասար սպասարկում: Մեկ օգտատիրոջ համակարգերի համար ցանկալի է, որ այն ծրագրերը, որոնց հետ ուղղակիորեն աշխատում են, արձագանքման ավելի լավ ժամանակներ ունենան, քան ֆոնային աշխատանքները: Ի լրումն, որոշ հավելվածներ, չնայած այն աշխատում են առանց օգտվողի անմիջական փոխազդեցության, դեռ պետք է երաշխավորված ստանան պրոցեսորի ժամանակի իրենց բաժինը (օրինակ, էլեկտրոնային փոստի ծրագիր): Նման խնդիրներ լուծելու համար օգտագործվում են առաջնահերթ սպասարկման մեթոդներ և քվանտացման հայեցակարգ:


Կարուսելի կարգապահություն, կամ շրջանաձևՌ.Ռ.(Round Robin): Այս կարգապահությունըվերաբերում է կանխարգելիչ ալգորիթմներին և հիմնված է քվանտացման վրա: Յուրաքանչյուր առաջադրանք ստանում է պրոցեսորի ժամանակը մասերով՝ քվանտա: Ժամանակի քվանտի ավարտից հետո առաջադրանքը հանվում է պրոցեսորից և տեղադրվում է կատարման համար պատրաստ պրոցեսների հերթի վերջում, իսկ հաջորդ առաջադրանքն ընդունվում է պրոցեսորի կողմից սպասարկման։ Համակարգի օպտիմալ աշխատանքի համար անհրաժեշտ է ճիշտ ընտրել օրենքը, ըստ որի առաջադրանքներին հատկացվում են ժամանակային հատվածներ:

Քվանտային արժեքը ընտրվում է որպես փոխզիջում օգտատերերի հարցումներին համակարգի արձագանքման ընդունելի ժամանակի (որպեսզի նրանց ամենապարզ հարցումները երկար սպասել չառաջացնեն) և հաճախակի փոփոխվող առաջադրանքների վերին ծախսերի միջև: Երբ ընդհատվում է, ՕՀ-ն պետք է պահպանի բավականաչափ մեծ քանակությամբ տեղեկատվություն ընթացիկ գործընթացի մասին, հերթի մեջ դնի չեղարկված առաջադրանքի բռնիչը և բեռնի նոր առաջադրանքի համատեքստը: Ժամանակի փոքր հատվածի և հաճախակի անջատումների դեպքում նման վերադիր ծախսերի հարաբերական մասնաբաժինը կդառնա մեծ, և դա կնվազեցնի համակարգի աշխատանքը որպես ամբողջություն: Եթե ​​ժամանակի հատվածը մեծ է, և պատրաստ առաջադրանքների հերթը մեծանում է, ապա համակարգի արձագանքը կդառնա վատ:

Որոշ օպերացիոն համակարգերում հնարավոր է հստակորեն նշել ժամանակային հատվածի արժեքը կամ դրա արժեքների թույլատրելի միջակայքը: Օրինակ, 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 վիճակի և մնում է դրանում այնքան ժամանակ, մինչև կա՛մ ինքը թողարկի պրոցեսորը՝ անցնելով ինչ-որ իրադարձության ՍՊԱՍՈՒՄ վիճակի, կա՛մ բռնի կերպով դուրս է մղվում պրոցեսորից, օրինակ՝ հատկացվածի սպառման պատճառով: այս գործընթացը CPU-ի ժամանակի քվանտ. Վերջին դեպքում գործընթացը վերադառնում է ՊԱՏՐԱՍՏ վիճակին: Գործընթացը անցում է կատարում այս վիճակին ՍՊԱՍԵԼՈՒ վիճակից՝ սպասվող իրադարձության տեղի ունենալուց հետո:

Հոդվածներ կարդալու համար.

Ծրագրավորման հիմունքներ. Գործընթացի կառավարում

գործընթացի մեկուսացում;
  • գործընթացների և թելերի կատարման պլանավորում (ընդհանուր առմամբ, մենք պետք է խոսենք նաև պլանավորման առաջադրանքների մասին);
  • թելերի առաքում;
  • միջգործընթացային փոխգործակցության կազմակերպում;
  • գործընթացների և թելերի համաժամացում;
  • գործընթացների և թելերի դադարեցում և ոչնչացում.
  • Հինգ հիմնական իրադարձությունները հանգեցնում են գործընթացի ստեղծմանը.

  • գործընթաց ստեղծելու ընթացիկ գործընթացի պահանջի կատարումը.
  • օգտատիրոջ խնդրանք՝ գործընթաց ստեղծելու համար, ինչպես օրինակ՝ ինտերակտիվ կերպով մուտք գործելիս.
  • խմբաքանակի աշխատանք սկսել;
  • օպերացիոն համակարգի կողմից ցանկացած ծառայությունների շահագործման համար անհրաժեշտ գործընթացի ստեղծում:
  • Սովորաբար, երբ OS-ի բեռնախցիկը սկսվում է, ստեղծվում են մի քանի գործընթացներ: Դրանցից մի քանիսը առաջնահերթ գործընթացներ են, որոնք փոխազդում են օգտատերերի հետ և կատարում հանձնարարված աշխատանք. Մնացած գործընթացները ֆոնային գործընթացներ են, դրանք կապված չեն կոնկրետ օգտվողների հետ, այլ կատարում են հատուկ գործառույթներ, օրինակ՝ կապված էլփոստի, վեբ էջերի, տպագրության, ցանցի միջոցով ֆայլերի փոխանցման, ծրագրերի պարբերական գործարկման հետ (օրինակ. սկավառակի դեֆրագրում) և այլն: Ֆոնային գործընթացները կոչվում են դևեր:

    Ընթացիկ գործընթացի պահանջով կարող է ստեղծվել նոր գործընթաց: Նոր գործընթացների ստեղծումը օգտակար է այն դեպքերում, երբ կատարվող առաջադրանքը կարող է ամենահեշտ ձևավորվել որպես փոխկապակցված, բայց, այնուամենայնիվ, անկախ, փոխազդող գործընթացների մի շարք: Ինտերակտիվ համակարգերում օգտատերը կարող է ծրագիր սկսել՝ ստեղնաշարի վրա հրաման մուտքագրելով կամ ծրագրի պատկերակը կրկնակի սեղմելով: Երկու դեպքում էլ ստեղծվում է նոր գործընթաց, և դրանում գործարկվում է ծրագիրը։ IN խմբաքանակի մշակման համակարգեր mainframes-ում օգտատերերը ներկայացնում են աշխատանք (հնարավոր է, օգտագործելով հեռահար մուտք), իսկ ՕՀ-ն ստեղծում է նոր գործընթաց և սկսում հաջորդ աշխատանքը հերթից, երբ անհրաժեշտ ռեսուրսներն ազատվեն:

    Տեխնիկական տեսանկյունից, այս բոլոր դեպքերում նույն ձևով ձևավորվում է նոր գործընթաց. ընթացիկ գործընթացը կատարում է նոր գործընթաց ստեղծելու համակարգի պահանջը: Գործընթացների և թելերի կառավարման ենթահամակարգը պատասխանատու է գործընթացներին անհրաժեշտ ռեսուրսներով ապահովելու համար: ՕՀ-ն հիշողության մեջ պահպանում է հատուկ տեղեկատվական կառուցվածքներ, որոնցում արձանագրում է, թե որ ռեսուրսներն են հատկացվում յուրաքանչյուր գործընթացին: Այն կարող է ռեսուրսներ հատկացնել գործընթացին միայնակ օգտագործման կամ այլ գործընթացների հետ համատեղ օգտագործման համար: Ռեսուրսների մի մասը բաշխվում է գործընթացին, երբ այն ստեղծվում է, իսկ որոշները դինամիկ կերպով բաշխվում են՝ հիմնվելով հարցումների ընթացքում։ կատարման ժամանակ. Ռեսուրսները կարող են հատկացվել գործընթացին ամբողջ կյանքի ընթացքում կամ միայն որոշակի ժամանակահատվածի համար: Այս գործառույթները կատարելիս գործընթացի կառավարման ենթահամակարգը փոխազդում է այլ ՕՀ ենթահամակարգերի հետ, որոնք պատասխանատու են ռեսուրսների կառավարումօրինակ՝ հիշողության կառավարման ենթահամակարգը, մուտքային/ելքային ենթահամակարգ, ֆայլային համակարգ.

    Գործընթացներին չխանգարելու համար ռեսուրսների բաշխում, և նաև չկարողացան վնասել միմյանց կոդերն ու տվյալները, ՕՀ-ի ամենակարևոր խնդիրն է մեկ գործընթացը մեկուսացնել մյուսից: Սրա համար օպերացիոն համակարգյուրաքանչյուր գործընթացին տրամադրում է առանձին վիրտուալ հասցեի տարածություն, որպեսզի ոչ մի գործընթաց չկարողանա ուղղակիորեն մուտք գործել մեկ այլ գործընթացի հրամաններ և տվյալներ:

    ՕՀ-ում, որտեղ առկա են պրոցեսներ և թելեր, գործընթացը համարվում է բոլոր տեսակի ռեսուրսների սպառման հարցում, բացառությամբ մեկ պրոցեսորի ժամանակի: Այս կրիտիկական ռեսուրսը օպերացիոն համակարգի կողմից բաշխվում է աշխատանքի այլ միավորների՝ թելերի միջև, որոնք իրենց անվանումն են ստացել այն պատճառով, որ դրանք ներկայացնում են հրամանների հաջորդականություն (կատարման թելեր): Մի թելի կատարումից մյուսին անցումը կատարվում է արդյունքում պլանավորումԵվ առաքում. Որոշելու, թե երբ պետք է ընդհատվի ընթացիկ շարանը, և այն շարանը, որը պետք է թույլատրվի աշխատել, կոչվում է պլանավորում: Թեմաների պլանավորումը կատարվում է գործընթացի և թելերի նկարագրիչներում պահվող տեղեկատվության հիման վրա: Պլանավորելիս դա հաշվի է առնվում թեմայի առաջնահերթություն, նրանց հերթում սպասելու ժամանակը, կուտակված կատարման ժամանակ, I/O մուտքի ինտենսիվությունը և այլ գործոններ:

    Դիսպետչինգը բաղկացած է պլանավորման արդյունքում հայտնաբերված լուծումը իրականացնելուց, այսինքն. պրոցեսորը մի թեմայից մյուսը փոխարկելիս: Դիսպետչերական առաքումը տեղի է ունենում երեք փուլով.

    • պահպանելով ընթացիկ թեմայի համատեքստը;
    • ժամանակացույցի արդյունքում ընտրված թեմայի համատեքստի բեռնում.
    • գործարկելու համար նոր թեմա.

    Երբ համակարգը միաժամանակ մի քանի անկախ առաջադրանքներ է կատարում, լրացուցիչ խնդիրներ են առաջանում: Թեև թելերը առաջանում և գործում են համաժամանակյա, դրանք կարող են փոխազդել, օրինակ՝ տվյալների փոխանակման ժամանակ: Իրար հետ շփվելու համար պրոցեսները և թելերը կարող են օգտագործել լայն հնարավորություններ՝ խողովակներ (UNIX-ում), փոստարկղեր (Windows), հեռավոր ընթացակարգային զանգեր, վարդակներ (Windows-ում դրանք միացնում են գործընթացները տարբեր մեքենաների վրա): Թելերի արագությունների համապատասխանեցումը նույնպես շատ կարևոր է մրցավազքի պայմանները (որտեղ մի քանի շղթաներ փորձում են փոփոխել նույն ֆայլը), փակուղիները և այլ բախումները, որոնք տեղի են ունենում ռեսուրսների փոխանակման ժամանակ:

    Համաժամացում threads-ը գործընթացի և թելերի կառավարման ենթահամակարգի կարևորագույն գործառույթներից մեկն է: Ժամանակակից օպերացիոն համակարգերն ապահովում են համաժամացման մի շարք մեխանիզմներ, ներառյալ սեմալիստները, մուտեքսները, կրիտիկական շրջանները և իրադարձությունները: Այս բոլոր մեխանիզմներն աշխատում են թելերով, ոչ թե պրոցեսներով։ Այսպիսով, երբ շարանը արգելափակվում է սեմաֆորի վրա, այդ գործընթացի մյուս թելերը կարող են շարունակել աշխատել:

    Ամեն անգամ, երբ պրոցեսը դուրս է գալիս՝ հետևյալ իրադարձություններից մեկի պատճառով՝ նորմալ ելք, սխալի ելք, ճակատագրական սխալի ելք, սպանություն մեկ այլ գործընթացով, ՕՀ-ն քայլեր է ձեռնարկում՝ մաքրելու իր հետքերը համակարգում: Գործընթացի կառավարման ենթահամակարգը փակում է բոլոր ֆայլերը, որոնց հետ աշխատել է գործընթացը՝ ազատելով RAM-ի տարածքները, որոնք հատկացված են գործընթացի կոդերին, տվյալների և համակարգի տեղեկատվական կառուցվածքներին: ՕՀ-ի բոլոր հնարավոր հերթերը և ռեսուրսների ցանկը, որոնք ունեին հղումներ դեպի դադարեցվող գործընթացին:

    Ինչպես արդեն նշվեց, աջակցել բազմածրագրավորում, ՕՀ-ն պետք է իր համար նախագծի աշխատանքի այն ներքին միավորները, որոնց միջև կբաժանվեն պրոցեսորը և համակարգչային այլ ռեսուրսները: Հարց է առաջանում՝ ո՞րն է աշխատանքի այս միավորների հիմնարար տարբերությունը, ի՞նչ բազմածրագրավորման էֆեկտ կարելի է ստանալ դրանց օգտագործումից, և ո՞ր դեպքերում պետք է ստեղծվեն այդ օպերացիոն համակարգի աշխատանքի միավորները։

    Ակնհայտ է, որ համակարգչային համակարգի ցանկացած գործողություն բաղկացած է ինչ-որ ծրագրի կատարումից: Հետևաբար, որոշակի ծրագրային կոդը կապված է և՛ գործընթացի, և՛ թելի հետ, որը թողարկվում է գործարկվող մոդուլի տեսքով։ Ամենապարզ դեպքում գործընթացը բաղկացած է մեկ թելից, և որոշ ժամանակակից օպերացիոն համակարգեր դեռևս ունեն այս իրավիճակը: ԲազմածրագրավորումՆման ՕՀ-ում այն ​​իրականացվում է գործընթացի մակարդակով: Երբ փոխազդեցությունն անհրաժեշտ է, գործընթացները դիմում են օպերացիոն համակարգին, որը, հանդես գալով որպես միջնորդ, նրանց տրամադրում է միջգործընթացային հաղորդակցության միջոցներ՝ ալիքներ, փոստի բաժնետոմսեր, ընդհանուր հիշողության բաժիններ և այլն:

    Այնուամենայնիվ, համակարգերում, որոնք չունեն թելի հասկացություն, խնդիրներ են առաջանում գործընթացի շրջանակներում զուգահեռ հաշվարկները կազմակերպելիս: Եվ նման անհրաժեշտություն կարող է առաջանալ. Բանն այն է, որ մեկ գործընթաց երբեք չի կարող ավելի արագ իրականացվել, քան մեկ ծրագրի ռեժիմում: Այնուամենայնիվ, մեկ գործընթացում աշխատող հավելվածը կարող է ունենալ ներքին զուգահեռություն, ինչը, սկզբունքորեն, կարող էր արագացնել դրա լուծումը։ Եթե, օրինակ, ծրագիրը նախատեսում է մուտք դեպի արտաքին սարք, ապա այս գործողության ընթացքում հնարավոր է ոչ թե արգելափակել ողջ գործընթացի կատարումը, այլ շարունակել հաշվարկները ծրագրի մեկ այլ ճյուղում։

    Մեկ ինտերակտիվ հավելվածում մի քանի աշխատատեղերի զուգահեռ կատարումը բարելավում է օգտատիրոջ արդյունավետությունը: Այսպիսով, տեքստային խմբագրիչի հետ աշխատելիս ցանկալի է, որ կարողանանք համատեղել նոր տեքստի մուտքագրումը այնպիսի երկարատև գործողությունների հետ, ինչպիսիք են տեքստի զգալի մասի վերափոխումը, այն պահելը տեղական կամ հեռավոր սկավառակի վրա:

    Դժվար չէ պատկերացնել կոմպիլյատորի ապագա տարբերակը, որը կարող է ավտոմատ կերպով կազմել սկզբնական կոդերի ֆայլերը դադարների ժամանակ՝ ծրագիր մուտքագրելիս: Այնուհետև նախազգուշացումներն ու սխալի հաղորդագրությունները կհայտնվեին իրական ժամանակում, և օգտատերը անմիջապես կտեսներ, թե որտեղ է սխալվել: Ժամանակակից աղյուսակներվերահաշվարկեք տվյալները հետին պլանում, հենց որ օգտատերը որևէ բան փոխի: Բառի պրոցեսորները տեքստը բաժանում են էջերի, ստուգում այն ​​ուղղագրության համար և քերականական սխալներ, ետին պլանում մուտքագրում, տեքստի պահպանում մի քանի րոպեն մեկ և այլն։ Այս բոլոր դեպքերում թելերն օգտագործվում են որպես հաշվարկների զուգահեռացման միջոց։

    Այս առաջադրանքները կարող են հանձնարարվել ծրագրավորողին, ով կգրի դիսպետչերական ծրագիր, որն իրականացնում է զուգահեռություն մեկ գործընթացում: Այնուամենայնիվ, սա շատ դժվար է, և ծրագիրը ինքնին շատ շփոթեցնող և դժվար է կարգաբերել:

    Մեկ այլ լուծում՝ զուգահեռներից յուրաքանչյուրի համար մեկ հավելվածի համար մի քանի գործընթաց ստեղծելն է

    Ցանկացած ժամանակակից բազմածրագրային ՕՀ-ի հիմնական ենթահամակարգերից մեկը, որն ուղղակիորեն ազդում է համակարգչի աշխատանքի վրա, գործընթացների և թելերի կառավարման ենթահամակարգն է: Այս ենթահամակարգի հիմնական գործառույթները.

      գործընթացների և թելերի ստեղծում;

      գործընթացների և թելերի ապահովում անհրաժեշտ ռեսուրսներով.

      գործընթացի մեկուսացում;

      գործընթացների և թելերի կատարման պլանավորում (ընդհանուր առմամբ, մենք պետք է խոսենք նաև պլանավորման առաջադրանքների մասին);

      թելերի առաքում;

      միջգործընթացային հաղորդակցության կազմակերպում;

      գործընթացների և թելերի համաժամացում;

      գործընթացների և թելերի դադարեցում և ոչնչացում.

    1. Հինգ հիմնական իրադարձությունները հանգեցնում են գործընթացի ստեղծմանը.

      գործընթաց ստեղծելու ընթացիկ գործընթացի պահանջի կատարումը.

      օգտատիրոջ խնդրանք՝ գործընթաց ստեղծելու համար, օրինակ՝ ինտերակտիվ կերպով մուտք գործելիս.

      խմբաքանակի աշխատանք սկսել;

      օպերացիոն համակարգի կողմից ցանկացած ծառայությունների շահագործման համար անհրաժեշտ գործընթացի ստեղծում:

    Սովորաբար, երբ OS-ի բեռնախցիկը սկսվում է, ստեղծվում են մի քանի գործընթացներ: Դրանցից մի քանիսը առաջնահերթ գործընթացներ են, որոնք փոխազդում են օգտատերերի հետ և կատարում հանձնարարված աշխատանք: Մնացած գործընթացները ֆոնային գործընթացներ են, դրանք կապված չեն կոնկրետ օգտվողների հետ, այլ կատարում են հատուկ գործառույթներ, օրինակ՝ կապված էլ. փոստի, վեբ էջերի, ելքի հետ: կնիք, ֆայլի փոխանցում Ըստցանց, ծրագրերի պարբերական մեկնարկ (օրինակ. սկավառակի դեֆրագրում) և այլն: Ֆոնային գործընթացները կոչվում են դևեր:

    Նոր գործընթաց կարող է ստեղծվել Ըստընթացիկ գործընթացի պահանջը: Նոր գործընթացների ստեղծումը օգտակար է այն դեպքերում, երբ կատարվող առաջադրանքը կարող է ամենահեշտ ձևավորվել որպես փոխկապակցված, բայց, այնուամենայնիվ, անկախ, փոխազդող գործընթացների մի շարք: Ինտերակտիվ համակարգերում օգտագործողկարող է գործարկել ծրագիր՝ ստեղնաշարի վրա հրաման մուտքագրելով կամ ծրագրի պատկերակը կրկնակի սեղմելով: Երկու դեպքում էլ ստեղծվում է նոր գործընթաց և մեկնարկըդրա մեջ կան ծրագրեր։ IN խմբաքանակի մշակման համակարգեր mainframes-ում օգտատերերը ներկայացնում են աշխատանք (հնարավոր է, օգտագործելով հեռահար մուտք), իսկ ՕՀ-ն ստեղծում է նոր գործընթաց և սկսում հաջորդ աշխատանքը հերթից, երբ անհրաժեշտ ռեսուրսներն ազատվեն:

    2. Տեխնիկական տեսանկյունից, այս բոլոր դեպքերում նույն ձևով ձևավորվում է նոր գործընթաց. ներկայիս գործընթացն իրականացնում է համակարգը. խնդրանքնոր գործընթաց ստեղծելու համար։ Գործընթացների և թելերի կառավարման ենթահամակարգը պատասխանատու է գործընթացներին անհրաժեշտ ռեսուրսներով ապահովելու համար. ՕՀ-ն հիշողության մեջ պահպանում է հատուկ տեղեկատվական կառուցվածքներ, որոնցում արձանագրում է, թե որ ռեսուրսներն են հատկացվում յուրաքանչյուր գործընթացին: Այն կարող է ռեսուրսներ հատկացնել գործընթացին միայնակ օգտագործման կամ այլ գործընթացների հետ համատեղ օգտագործման համար: Ռեսուրսների մի մասը հատկացվում է գործընթացին, երբ այն ստեղծվում է, իսկ որոշները հատկացվում են դինամիկ Ըստհարցումներ կատարման ժամանակ. Ռեսուրսները կարող են հատկացվել գործընթացին ամբողջ կյանքի ընթացքում կամ միայն որոշակի ժամանակահատվածի համար: Այս գործառույթները կատարելիս գործընթացի կառավարման ենթահամակարգը փոխազդում է այլ ՕՀ ենթահամակարգերի հետ, որոնք պատասխանատու են ռեսուրսների կառավարումօրինակ՝ հիշողության կառավարման ենթահամակարգը, մուտքային/ելքային ենթահամակարգ, ֆայլային համակարգ.

    3. Գործընթացներին չխանգարելու համար ռեսուրսների բաշխումև նաև չէին կարող վնասել միմյանց կոդերն ու տվյալները, ՕՀ-ի ամենակարևոր խնդիրն է մեկ պրոցեսը մեկուսացնել մյուսից. Սրա համար օպերացիոն համակարգյուրաքանչյուր գործընթացին տրամադրում է առանձին վիրտուալ հասցեի տարածություն, որպեսզի ոչ մի գործընթաց չկարողանա ուղղակիորեն մուտք գործել մեկ այլ գործընթացի հրամաններ և տվյալներ:

    4. ՕՀ-ում, որտեղ առկա են պրոցեսներ և թելեր, գործընթացը համարվում է բոլոր տեսակի ռեսուրսների սպառման հարցում, բացառությամբ մեկ պրոցեսորի ժամանակի: Սա ամենակարևորը ռեսուրսօպերացիոն համակարգի կողմից բաշխված աշխատանքի այլ ստորաբաժանումների՝ թելերի միջև, որոնք իրենց անվանումն են ստացել այն պատճառով, որ դրանք ներկայացնում են հրամանների հաջորդականություն (կատարման թելեր): Մի թելի կատարումից մյուսին անցումը կատարվում է արդյունքումպլանավորում Եվառաքում . Աշխատանք ԸստՈրոշել այն պահը, երբ ընթացիկ շարանը պետք է ընդհատվի և թե ինչ պետք է թույլատրվի աշխատել, կոչվում է պլանավորում: Թեմաների պլանավորումը կատարվում է գործընթացի և թելերի նկարագրիչներում պահվող տեղեկատվության հիման վրա:Պլանավորելիս դա հաշվի է առնվում թեմայի առաջնահերթություն, նրանց հերթում սպասելու ժամանակը, կուտակված կատարման ժամանակ, I/O մուտքի ինտենսիվությունը և այլ գործոններ:

    5. Դիսպետչինգը բաղկացած է պլանավորման արդյունքում գտնված լուծումն իրականացնելուց, այսինքն. պրոցեսորը մի թեմայից մյուսը փոխարկելիս: Դիսպետչերական առաքումը տեղի է ունենում երեք փուլով.

      պահպանելով ընթացիկ թեմայի համատեքստը;

      գործարկելու համար նոր թեմա.

    6. Երբ համակարգը միաժամանակ մի քանի անկախ առաջադրանքներ է կատարում, լրացուցիչ խնդիրներ են առաջանում: Թեև թելերը առաջանում և գործում են համաժամանակյա, դրանք կարող են փոխազդելու կարիք ունենալ, օրինակ՝ տվյալների փոխանակման ժամանակ։ Իրար հետ հաղորդակցվելու համար գործընթացները և թելերը կարող են օգտագործել լայն հնարավորություններ. UNIX), փոստարկղեր ( Windows), հեռակառավարման ընթացակարգի զանգ, վարդակներ (in Windowsմիացնել գործընթացները տարբեր մեքենաների վրա): Թելերի արագությունների համապատասխանեցումը նույնպես շատ կարևոր է մրցավազքի պայմանները կանխելու համար (որտեղ բազմաթիվ թելեր փորձում են փոխել նույնը ֆայլ), փակուղիներ և այլ բախումներ, որոնք տեղի են ունենում ռեսուրսների փոխանակման ժամանակ:

    7. Համաժամացում threads-ը գործընթացի և թելերի կառավարման ենթահամակարգի կարևորագույն գործառույթներից մեկն է:Ժամանակակից օպերացիոն համակարգերն ապահովում են համաժամացման մի շարք մեխանիզմներ, ներառյալ սեմալիստները, մուտեքսները, կրիտիկական շրջանները և իրադարձությունները: Այս բոլորը մեխանիզմներաշխատել թելերով, ոչ թե պրոցեսներով: Ահա թե ինչու երբ հոսքըբլոկներ սեմաֆորի վրա, այս գործընթացի այլ թելերը կարող են շարունակել աշխատել:

    8. Ամեն անգամ, երբ գործընթացը ավարտվում է, – և դա տեղի է ունենում հետևյալ իրադարձություններից մեկի պատճառով՝ նորմալ ելք, ելք Ըստսխալ, ելք Ըստճակատագրական սխալ, այլ գործընթացի ոչնչացում. ՕՀ-ն քայլեր է ձեռնարկում համակարգում իր ներկայության «հետքերը մաքրելու» ուղղությամբ: Գործընթացի կառավարման ենթահամակարգը փակում է բոլոր ֆայլերը, որոնց հետ աշխատել է գործընթացը՝ ազատելով RAM-ի տարածքները, որոնք հատկացված են գործընթացի կոդերին, տվյալների և համակարգի տեղեկատվական կառուցվածքներին: Կատարվել է ուղղումբոլոր տեսակի ՕՀ հերթերը և ցուցակըռեսուրսներ, որոնք պարունակում էին հղումներ դեպի դադարեցվող գործընթացին:

    Առանձին համակարգչի օպերացիոն համակարգի գործառույթները սովորաբար խմբավորվում են կամ ըստ տեղական ռեսուրսների տեսակների, որոնք կառավարում է ՕՀ-ն կամ ըստ հատուկ առաջադրանքների, որոնք վերաբերում են բոլոր ռեսուրսներին: Երբեմն ֆունկցիաների նման խմբերը կոչվում են ենթահամակարգեր։ Ռեսուրսների կառավարման ամենակարևոր ենթահամակարգերն են գործընթացի, հիշողության, ֆայլի և արտաքին սարքի կառավարման ենթահամակարգերը, իսկ բոլոր ռեսուրսների համար ընդհանուր ենթահամակարգերն են՝ օգտատիրոջ միջերեսը, տվյալների անվտանգությունը և կառավարման ենթահամակարգերը: Օպերացիոն համակարգի ամենակարևոր մասը, որն ուղղակիորեն ազդում է համակարգչի աշխատանքի վրա, գործընթացի կառավարման ենթահամակարգն է: Յուրաքանչյուր նորաստեղծ գործընթացի համար ՕՀ-ն ստեղծում է համակարգի տեղեկատվական կառուցվածքներ, որոնք պարունակում են տվյալներ համակարգչային համակարգի ռեսուրսների համար գործընթացի կարիքների, ինչպես նաև դրան իրականում հատկացված ռեսուրսների մասին: Այսպիսով, գործընթացը կարող է նաև սահմանվել որպես համակարգի ռեսուրսների սպառման որոշակի կիրառություն: Բազմածրագրային օպերացիոն համակարգում մի քանի գործընթացներ կարող են գոյություն ունենալ միաժամանակ: Որոշ գործընթացներ ստեղծվում են օգտատերերի և նրանց հավելվածների նախաձեռնությամբ, նման գործընթացները սովորաբար կոչվում են օգտագործողի գործընթացներ: Այլ գործընթացներ, որոնք կոչվում են համակարգային գործընթացներ, սկզբնավորվում են հենց օպերացիոն համակարգի կողմից՝ իրենց գործառույթները կատարելու համար: Օպերացիոն համակարգի կարևոր խնդիրն է պաշտպանել տվյալ գործընթացին հատկացված ռեսուրսները այլ գործընթացներից: Առավել խնամքով պաշտպանված գործընթացի ռեսուրսներից մեկը RAM-ի տարածքներն են, որտեղ պահվում են գործընթացի կոդը և տվյալները: Օպերացիոն համակարգի կողմից որևէ գործընթացին հատկացված RAM-ի բոլոր տարածքների ամբողջությունը կոչվում է նրա հասցեների տարածք: Ասում են, որ յուրաքանչյուր գործընթաց գործում է իր հասցեների տարածքում՝ նկատի ունենալով ՕՀ-ի կողմից տրամադրված հասցեների տարածքների պաշտպանությունը: Պաշտպանված են նաև ռեսուրսների այլ տեսակներ, ինչպիսիք են ֆայլերը, արտաքին սարքերը և այլն: Օպերացիոն համակարգը կարող է ոչ միայն պաշտպանել մեկ գործընթացին հատկացված ռեսուրսները, այլ նաև կազմակերպել դրանց փոխանակումը, օրինակ՝ թույլ տալով մուտք գործել որոշակի տարածք: Հիշողություն մի քանի գործընթացներով: Գործընթացի կյանքի ընթացքում դրա կատարումը կարող է ընդհատվել և շարունակվել բազմիցս։ Գործընթացի կատարումը վերսկսելու համար անհրաժեշտ է վերականգնել դրա գործառնական միջավայրի վիճակը: Գործառնական միջավայրի վիճակը որոշվում է ռեգիստրների և ծրագրի հաշվիչի վիճակով, պրոցեսորի գործառնական ռեժիմով, ֆայլերի բացման ցուցիչներով, չավարտված I/O գործառնությունների մասին տեղեկություններով, տվյալ գործընթացով կատարված համակարգային կանչերի սխալի կոդերով և այլն: . դ) Այս տեղեկատվությունը կոչվում է առաջընթացի համատեքստ: Նրանք ասում են, որ երբ գործընթացը փոխվում է, տեղի է ունենում համատեքստի փոխարկում: Այսպիսով, գործընթացի կառավարման ենթահամակարգը պլանավորում է գործընթացների կատարումը, այսինքն՝ այն բաշխում է պրոցեսորի ժամանակը համակարգում մի քանի միաժամանակ գոյություն ունեցող գործընթացների միջև, ստեղծում և ոչնչացնում է գործընթացները, ապահովում գործընթացներին անհրաժեշտ համակարգի ռեսուրսներով, պահպանում է գործընթացների համաժամացումը և նաև ապահովում է փոխազդեցությունը։ գործընթացների միջև:

    Կիսվեք ընկերների հետ կամ խնայեք ինքներդ.

    Բեռնվում է...