Բազմախնդրություն

Վիքիպեդիայից՝ ազատ հանրագիտարանից

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

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

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

  • Բազմածրագրային համակարգերում, կատարվող առաջադրանքը միշտ աշխատում է այնքան ժամանակ, քանի դեռ այն իրագործում է գործողություններ, որոնք պահանջում են արտաքին իրադարձության սպասում (օրինակ ժապավենից ընթերցանություն) կամ այնքան ժամանակ, քանի դեռ համակարգչի պլանավորման համակարգը հարկադրաբար բաժանում է կատարվող առաջադրանքը կենտրոնական պրոցեսորից: Բազմածրագրային համակարգերը ստեղծված են , որպեսզի առավելագույնի հասցնեն պրոցեսորի օգտագործումը:
  • Ժամանակի բաշխիչ համակարգերում, կատարվող առաջադրանքից պահանջվում է հրաժարվել պրոցեսորից, կամավոր կամ արտաքին իրադարձության միջոցով, ինչպես օրինակ սարքավորումների ընդհատումը. Ժամանակի բաշխիչ համակարգերը նախատեսված են , որպեսզի թույլատրեն մի քանի ծրագրերի միաժամանակյա կատարում: 'Ժամանակի բաշխում'արտահայտությունը սովորաբար օգտագործվում է, որպեսզի նկարագրի այն համակարգիչները, որոնք բաժանում են տեղեկատվության ներածման և արտածման սարքերը տերմինալների առումով, ըստ ինտերակտիվ օգտվողների, ինչպես օրինակ IBM-ի TSO, և VM/CMS տարբերակները:
  • Իրական ժամանակի համակարգերում, որոշ առաջադրանքներ, որոնք սպասման վիճակում են գտնվում, երաշխավորված են , որ կընդունվեն պրոցեսորի կողմից , երբ տեղի է ունենում տվյալ արտաքին իրադարձությունը: Իրական ժամանակի համակարգերը նախատեսված են ղեկավարելու մեխանիկական սարքերը, այնպիսիք, ինչպիսիք են արդյունաբերական ռոբոտները, որոնք պահանջում են ճիշտ ժամանակին մշակում:


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

Բովանդակություն

[խմբագրել] Բազմածրագրավորում

Հաշվողական համակարգի վաղ ժամանակաշրջանում պրոցեսորի ժամանակը շատ թանկ արժեր, իսկ արտաքին սարքերը շատ դանդաղագործ էին: Երբ համակարգիչը մի որևէ ծրագիր էր աշխատեցնում , որը պահանջում էր մուտք դեպի արտաքին սարքեր, կենտրոնական վերամշակման միավորը (CPU) պետք է դադարեցներ ծրագրային սարքավորումների աշխատանքը, մինչև արտաքին սարքերը կմշակեին տվյալները:


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

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


[խմբագրել] Համատեղ բազմախնդրություն/ժամանակի բաշխիչ

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


Վաղ բազմախնդրային համակարգերը օգտագործում էին այնպիսի դիմումներ, որոնք ինքնակամ զիջում էին ժամանակը միմյանց: Այս մոտեցումը, որն օժանդակում էին բազմաթիվ համակարգչային օպերացիոն համակարգեր, այսօր հայտնի է որպես համատեղ բազմախնդրություն: Չնայած այն հիմա հազվադեպ է օգտագործվում ավելի մեծամասշտաբ համակարգերում, այդուհանդերձ համատեղ բազմախնդրությունը սխեմաների պլանավորում էր իրենից ներկայացնում, որն օգտագործվում էր Microsoft Windowsում (մինչև Windows 95 և Windows NT) և Mac OSում (մինչև Mac OS X) և այսպիսով հնարավոր էր լինում միաժամանակ գործարկելու բազմակի դիմումներ: Windows 9xը նույնպես օգտագործում էր համատեղ բազմախնդրությունը, բայց միայն 16 կարգանի դիմումների համար, այնպես, ինչպես Mac OS X-ի pre-Leopard PowerPC տարբերակները օգտագործեցին դրանք Classic դիմումների համար: NetWare ցանցային օպերացիոն համակարգերը օգտագործում էին համատեղ բազմախնդրությունը մինչև NetWare 6.5: Համատեղ բազմախնդրությունը այսօր էլ դեռ օգտագործվում է RISC OS համակարգերում:


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

[խմբագրել] Առաջնահերթ բազմախնդրություն/ժամանակի բաշխիչ

Կաղապար:Գլխավորը

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

Օպերացիոն համակարգերը մշակվեցին ` օգտվելու ապարատային այս հնարավորություններից և աշխատեցնել մի քանի պրոցեսներ ըստ առաջնայնության: Օրինակ, առաջնահերթ բազմախնդրությունը իրականացվել էUnixի [1] վաղ տարբերակներում 1969թվականին, և դարձել է ստանդարտ Unix and Unix-ի նմանությամբ օպերացիոն համակարգերում, ներառյալ Linuxը, Solarisը և BSD-ն իր ածանցյալների հետ:

Ցանկացած ժամանակ պրոցեսները խմբավորվում են 2 կատեգորիաներում: Նրանք, որոնք սպասում են մուտքի կամ ելքի (հայտնի որպես "I/O սահման"), և նրանք, որոնք ամբողջությամբ օգտագործում են պրոցեսորը:("CPU սահման"): Պարզ համակարգերում ծրագրային ապահովումը հաճախ լինում է հարցումային "poll", կամ "busywait", հարցված մուտքի սպասման ժամանակ (ինչպես օրինակ սկավառակը, ստեղնաշարը կամ ցանցային մուտքերը): Այս ընթացքում համակարգը չի իրականացնում օգտակար աշխատանք: Ընդհատումների և առաջնահերթ բազմախնդրության ի հայտ գալով I/O սահմանափակ պրոցեսները կարող են "արգելափակվել", կամ սպասման մեջ դրվել, մինչև անհրաժեշտ տվյալների ի հայտ գալը, թույլ տալով մնացած պրոցեսներին օգտագործել պրոցեսորը: Երբ պահանջվող տվյալները հայտնվում են , առաջանում է ընդհատում և արգելափակված պրոցեսները կարող են ժամանակին վերադառնալ կատարման:

Վաղ առաջնահերթ բազմախնդրային օպերացիոն համակարգը, որը մատչելի էր դարձել սովորական օգտվողների համար Sinclair QDOS-ն է Sinclair QL-ի հիման վրա , որը լույս տեսավ 1984 թվականին, բայց շատ քչերը կարողացան գնել այդ մեքենան: Commodore-ի հզոր Amiga տեխնոլոգիան, որը հրապարակվեց հաջորդ տարի, առաջին ֆինանսական առումով հաջողակ համակարգիչն էր, որն օգտագործեց այդ տեխնոլոգիան և նրա մուլտիմեդիա հնարավորությունները դարձնում էին նրան անհատական համակարգիչների ժամանակակից բազմախնդրության հստակ նախահայրը: 1990-ական թվականների սկզբին Microsoftը առաջնահերթ բազմախնդրությունը դարձրեց իր օպերացիոն համակարգերի հիմնական բնութագրիչը, այն ժամանակ , երբ զարգանում էին Windows NT 3.1-ը և հետո Windows 95-ը:Ավելի ուշ այն ընդունվեց Apple Macintosh Mac OS 9.x-ի կողմից [2] որպես լրացուցիչ API, այսինքն դիմումները կարող էին ծրագրավորվել` օգտագործելով առաջնահերթ կամ կոոպերատիվ մոդելները և ավելի վաղ դիմումները դառնում էին կոոպերատիվ բազմախնդրային միակ պրոցեսի շրջանակներում: Mac OS X-ը, լինելով Unix-ին նման համակարգ, օգտագործում է առաջնահերթ բազմախնդրությունը, բոլոր առաջնային դիմումների համար, չնայած Classic դիմումները համատեղ բազմախնդրային են Mac OS 9 միջավայրում, որն աշխատում է ինչպես OS X պրոցեսը (և ենթակա է առաջնայնության, ինչպես մյուս OS X պրոցեսները):

Նման մոդելները օգտագործվում են Windows 9x և Windows NT ընտանիքի համակարգերում, որտեղ առաջնային 32-բիտանի դիմումները առաջնահերթ բազմախնդրային են , իսկ ավելի վաղ 16-բիտանի դիմումները Windows 3.x համատեղ բազմախնդրային են միակ գործընթացի շրջանակներում, չնայած NT ընտանիքում հնարավոր է ստիպել 16 բիտանի դիմումներին աշխատել որպես առանձին առաջնահերթ բազմախնդրային պրոցես:[3] Windows-ի 64-բիտանի հրատարակությունները,և x86-64, և Itanium տարբերակների համար, այլևս չեն օժանդակում ավելի հին 16 կարգանի դիմումներին և այսպիսով ապահովում են առաջնահերթ բազմախնդրություն բոլոր օժանդակ դիմումների համար:


[խմբագրել] Իրական ժամանակ

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


[խմբագրել] Բազմահոսքայնություն

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

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

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

Որոշ համակարգեր ուղղակիորեն աջակցում են բազմահոսքայնությանը համակարգչային տեխնիկայում:

[խմբագրել] Հիշողության պաշտպանություն

Կաղապար:Գլխավորը

Երբ հիշողությունում առկա են բազմաթիվ ծրագրեր, մի որևէ վատ ձևակերպված ծրագիր կարող է (պատահական կամ միտումնավոր) վերագրանցել հիշողությունը, որը պատկանում է մեկ այլ ծրագրի, կամ նույնիսկ օպերացիոն համակարգի:

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

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

[խմբագրել] Հիշողության փոխանակում

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

[խմբագրել] Ծրագրավորումը բազմախնդրային միջավայրում

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

Մեծամասշտաբ համակարգերը երբեմն կառուցվել են կենտրոնական պրոցեսոր(ներ)ով և մի շարք այլ I/O պրոցեսորներով, որոնք անհամաչափ բազմամշակման տեսակ են:

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

[խմբագրել] Նշումներ

[խմբագրել] Ինչպես նաև

Կաղապար:Օպերացիոն համակարգ Կաղապար:Զուգահեռ հաշվարկային

Անձնական գործիքներ
Անվանատարածքներ

Տարբերակներ
Գործողություններ
Նավարկում
Մասնակցել
Գործիքներ
Այլ լեզուներով