Ոչ կանխարգելիչ առաջնահերթություն


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

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

Ո՞րն է ոչ կանխարգելիչ առաջնահերթությունը:

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

CPU-ի անհրաժեշտ ժամանակի քանակը, գործողության նշանակությունը կամ գործընթացի հետ կապված վերջնաժամկետը կարող են ազդել գործընթացներին տրված առաջնահերթության արժեքի վրա: Կախված կոնկրետ իրականացումից կամ գործառնական համակարգից, առաջնահերթությունների նշանակման ճշգրիտ մեխանիզմը կարող է փոխվել:

Ոչ կանխարգելիչ առաջնահերթության պլանավորումն ունի այն թերությունը, որ կարող է առաջացնել մի պայման, որը հայտնի է որպես «սովածություն»: Քանի որ համակարգում միշտ գործում են ավելի բարձր առաջնահերթ գործընթացներ, սովը տեղի է ունենում, երբ ցածր առաջնահերթ գործընթացին երբեք հնարավորություն չի տրվում գործարկել: Որոշ իրականացումներ կարող են ունենալ ծերացման մեթոդներ, որոնք աստիճանաբար բարձրացնում են գործընթացի առաջնահերթությունը սպասելիս՝ կանխելով սովամահությունը՝ համոզվելով, որ բոլոր գործընթացներն ի վերջո գործելու հնարավորություն ունեն:

Ի՞նչ է գործընթացի առաջնահերթությունը և որո՞նք են դրա որոշ տարրերը:

Գործընթացների առաջնահերթությունը օպերացիոն համակարգում գործընթացներ տալու կամ ալգորիթմի առաջնահերթ արժեքների պլանավորման գործընթացն է: Գործընթացի կատարման հաջորդականությունը այլ գործընթացների հետ կապված որոշվում է դրան տրված առաջնահերթությամբ:

Ստորև բերված են գործընթացի առաջնահերթության որոշ կարևոր տարրեր

Առաջնահերթ նշանակման չափանիշներ − Գործընթացների առաջնահերթությունները որոշելիս կարող են հաշվի առնվել տարբեր չափանիշներ: Որոշ բնորոշ ստանդարտներ ներառում են-

  • CPU Burst Time – Քանի որ նրանք կարող են ավելի արագ ավարտել իրենց կատարումը, CPU-ի պայթյունի ավելի կարճ ժամանակահատվածներով գործընթացները կարող են ավելի բարձր առաջնահերթություն տրվել:

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

  • Վերջնաժամկետ պահանջներ − Խիստ ժամկետների սահմանափակումներով գործընթացները կարող են ավելի առաջնահերթ վերաբերմունք ստանալ՝ ժամանակին ավարտելու համար:

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

  • Կարևորություն – Իրենց բնույթի կամ կրիտիկականության պատճառով որոշ գործընթացներ կարող են դիտվել որպես ավելի կարևոր, քան մյուսները: Ավելի բարձր առաջնահերթություններ կարող են տրվել որոշակի ընթացակարգերի:

    Օրինակ − Կյանքին սպառնացող հանգամանքներին արագ արձագանքելու համար առաջնահերթություն է տրվում արտակարգ իրավիճակների ծառայության մշակման համակարգերին, ինչպիսիք են 911 զանգի կենտրոնները և շտապօգնության դիսպետչերական համակարգերը:

  • I/O ինտենսիվ ընդդեմ պրոցեսորի ինտենսիվ − Գործընթացները, որոնք մեծապես հիմնված են I/O գործառնությունների վրա, կարող են առաջնահերթ լինել այլ կերպ, քան պրոցեսորով կապված գործընթացները՝ կախված համակարգի բնութագրերից:

    Օրինակ − Արդյունքների արտադրությունն արագացնելու համար բարդ սիմուլյացիաներում առաջնահերթություն է տրվում պրոցեսորային ինտենսիվ գործողություններին:

Առաջնահերթության մակարդակները կամ միջակայքերը − Առաջնահերթությունները հաճախ արտահայտվում են որպես թվեր կամ առաջնահերթության մակարդակներ: Կախված կոնկրետ օպերացիոն համակարգից կամ պլանավորման մեխանիզմից, առաջնահերթության մակարդակների շրջանակը կարող է փոխվել: Համակարգը կարող է, օրինակ, օգտագործել 0-ից 99 արժեքների միջակայք, որտեղ ավելի մեծ թիվը նշանակում է ավելի բարձր առաջնահերթություն:

Առաջնահերթությունները կարող են լինել ստատիկ կամ դինամիկ՝ կախված իրավիճակից:

  • Ստատիկ առաջնահերթություն − Գործընթացներին իրենց կատարման ընթացքում տրվում է ֆիքսված առաջնահերթություն, որը երբեք չի փոխվում:

  • Դինամիկ առաջնահերթություն – Որոշակի հանգամանքների կամ դեպքերի հիման վրա առաջնահերթությունները կարող են տարբեր լինել ծրագրի գործարկման ընթացքում: Օրինակ, եթե գործընթացն օգտագործել է պրոցեսորի շատ ժամանակ, դրա առաջնահերթությունը կարող է ընկնել հետադարձ կապի վրա հիմնված պլանավորման մեխանիզմում:

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

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

Փոխգործակցություն այլ պլանավորման քաղաքականությունների հետ − Գործընթացների առաջնահերթությունը կարող է փոխազդել պլանավորման այլ ընթացակարգերի հետ, ինչպիսիք են փուլային փուլը կամ առաջինը, առաջինը սպասարկվողը (FCFS), ի թիվս այլոց: Օրինակ, բազմաստիճան հետադարձ հերթի պլանավորման մեթոդի դեպքում գործընթացներին սկզբում կարող են տրվել առաջնահերթություններ՝ ելնելով իրենց հատկանիշներից, այնուհետև այդ առաջնահերթությունները դինամիկ կերպով փոխվել՝ ելնելով իրենց վարքագծից:

Ինչպե՞ս կանխել սովը ոչ կանխարգելիչ առաջնահերթության պլանավորման առումով:

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

Ոչ կանխարգելիչ առաջնահերթության պլանավորման համատեքստում սովի կանխարգելման ռազմավարությունները ներառում են հետևյալը.

Ծերացում – Սպասման գործընթացների առաջնահերթության աստիճանական բարձրացումը ժամանակի ընթացքում երաշխավորում է, որ ավելի ցածր առաջնահերթություն ունեցող գործընթացներն ի վերջո հնարավորություն են ստանում իրականացնելու ավելի բարձր առաջնահերթ գործընթացների հետ մեկտեղ:

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

Fair Share Scheduling − Համակարգի ռեսուրսների համաչափ բաշխումը գործընթացների միջև կանխում է որևէ գործընթացի մենաշնորհը բոլոր ռեսուրսների վրա: Սա ապահովում է արդարություն և հավասար հնարավորություններ բոլոր գործընթացների համար:

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

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

Եզրակացություն

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

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