«Բազմախնդրություն»–ի խմբագրումների տարբերություն
Content deleted Content added
չ Ռոբոտ․ Տեքստի ավտոմատ փոխարինում (- <ref +<ref) |
չ Բոտ: կոսմետիկ փոփոխություններ |
||
Տող 1.
Հաշվողական համակարգերում '''բազմախնդրությունը'''
Բազմախնդրությունը ծրագրավորման մեջ լուծում է նաև [[պլանավորում (հաշվարկային)|պլանավորման]] խնդիրները, այսինքն, երբ տվյալ առաջադրանքները կարող են կատարվել
Երբ կոնտեքստային փոխանջատումները հաճախ են տեղի ունենում, ապա [[զուգահեռ հաշվարկների|զուգահեռության]]
Նույնիսկ մեկից ավելի պրոցեսորներ ունեցող համակարգիչների դեպքում, (հայտնի
Օպերացիոն համակարգերը կարող են ընդունել տարբեր [[Պլանավորում (հաշվողական)|պլանավորման ստրատեգիաներ]], որոնք սովորաբար բաժանվում են հետևյալ կատեգորիաների՝
* ''[[Բազմածրագրային]]'' համակարգերում, կատարվող
*
* ''[[Իրական ժամանակի հաշվողական|Իրական ժամանակի]]'' համակարգերում, որոշ առաջադրանքներ, որոնք սպասման վիճակում են գտնվում, երաշխավորված են, որ կընդունվեն պրոցեսորի կողմից, երբ տեղի է ունենում տվյալ արտաքին իրադարձությունը։ Իրական ժամանակի համակարգերը նախատեսված են ղեկավարելու մեխանիկական սարքերը, այնպիսիք, ինչպիսիք են արդյունաբերական ռոբոտները, որոնք պահանջում են ճիշտ ժամանակին մշակում։
''Ժամանակի բաշխիչ'' տերմինը շատ չի օգտագործվում, քանի որ փոխարինվել է
== Բազմածրագրավորում ==
Տող 19.
Առաջին համակարգիչը, որն օգտագործեց բազմածրագրային համակարգեր, բրիտանական ''[[LEO (համակարգիչ)#Ծրագրեր և Իրավահաջորդներ|ԼԵՈ III]]'' համակարգիչներն էին, որ պատկանում էին [[Ջ. Լեոնսին և Ընկերությանը]]. Մի քանի տարբեր ծրագրային փաթեթներ բեռնված էին համակարգչի հիշողության մեջ և նրանցից առաջինը սկսում է աշխատել։ Երբ առաջին ծրագիրը հասանելի է դառնում արտաքին սարքերին, այս ծրագրի համատեքստը արդեն հետ է պահպանվում և հիշողությունում գտնվող հաջորդ ծրագիրը հնարավորություն է ստանում կատարվելու։ Այս պրոցեսը շարունակվում է այնքան ժամանակ, մինչև բոլոր ծրագրերի աշխատանքներն ավարտվում են։
Բազմածրագրավորումը ոչ մի երաշխիք չի տալիս, որ ծրագիրը կաշխատի ճիշտ ժամանակին։ Իսկապես, ամեն առաջին ծրագիր կարող է ժամերով շատ լավ աշխատել, առանց մուտքի դեպի արտաքին սարքեր։ Որքան էլ, որ չլինեն օգտվողներ, որոնք սպասում են ինտերակտիվ տերմինալի, ոչ մի խնդիր
Բազմածրագրավորումը մեծապես կրճատում է սպասման ժամանակը, երբ բազմաթիվ տվյալների փաթեթներ են մշակվում։
== Համատեղ բազմախնդրություն/ժամանակի բաշխիչ ==<!-- Այս հատվածը կապված է [[Apple IIGS]]ի հետ -->
Երբ համակարգչի օգտագործումը փաթեթային ռեժիմից փոխվել է ինտերակտիվ ՝ փոխադարձ ռեժիմի, բազմածրագրավորումը արդեն հարմար մոտեցում չէ։ Յուրաքանչյուր օգտվող կցանկանար տեսնել իր ծրագրի աշխատանքը համակարգչում այնպես, կարծես դա միակն է համակարգչում։ Ժամանակի բաշխման օգտագործումը սա հնարավոր դարձրեց այն որակավորմամբ, որ համակարգիչը այնքան արագագործ չի լինի ամեն մի օգտվողի համար, որքան, որ այն իսկապես կլիներ, եթե կատարեր միայն մեկ օգտվողի ծրագիրը։
Վաղ բազմախնդրային համակարգերը օգտագործում էին այնպիսի դիմումներ, որոնք ինքնակամ զիջում էին ժամանակը միմյանց։
Քանի որ համատեղ բազմախնդրային համակարգը հիմնված է ամեն մի պրոցեսի վրա, որը կանոնավոր կերպով ապահովում է ժամանակ համակարգում գտնվող այլ պրոցեսների համար, այդ դեպքում մի որևէ թույլ կազմակերպված պրոցես կարող է ծախսել պրոցեսորի ամբողջ ժամանակը իր վրա կամ բերել նրան, որ ամբողջ համակարգը [[hang (computing)|դադարի աշխատել]]:Սերվերային միջավայրում սա վտանգավոր է, քանի որ ողջ ցանցը դառնում է փխրուն և խոցելի։ Բոլոր ծրագրերը պետք է գնահատված և հստակեցված լինեն թեստային միջավայրում օգտագործվելու համար, նախքան տեղադրվելը գլխավոր սերվերի վրա, հակառակ դեպքում սերվերի ձախողված ծրագիրը դանդաղ է աշխատում, կամ
Չնայած համատեղ բազմախնդրային համակարգերի նախագծման և իրականացման բարդություններին, հարկադրված ժամանակի, իրական ժամանակի ներդրված համակարգերը
== Առաջնահերթ բազմախնդրություն/ժամանակի բաշխիչ ==
{{Գլխավորը|Առաջնահերթություն (հաշվողական)}}
Առաջնահերթ բազմախնդրությունը թույլ
Օպերացիոն համակարգերը մշակվեցին ` օգտվելու ապարատային այս հնարավորություններից և աշխատեցնել մի քանի պրոցեսներ ըստ առաջնայնության։ Օրինակ, առաջնահերթ բազմախնդրությունը իրականացվել է[[Unixի]]<ref>[http://www.ibiblio.org/team/intro/unix/what.html The Digital Research Initiative<!-- Bot generated title -->]</ref> վաղ տարբերակներում
Ցանկացած ժամանակ պրոցեսները խմբավորվում են 2 կատեգորիաներում։ Նրանք, որոնք սպասում են մուտքի կամ ելքի (հայտնի որպես "[[I/O սահման]]"), և նրանք, որոնք ամբողջությամբ օգտագործում են պրոցեսորը։("[[CPU սահման]]"): Պարզ համակարգերում ծրագրային ապահովումը հաճախ լինում է հարցումային "[[Polling (համակարգչային տերմինալոգիայով)|poll]]", կամ "[[սպասողական|busywait]]", հարցված մուտքի սպասման ժամանակ (ինչպես օրինակ սկավառակը, ստեղնաշարը կամ ցանցային մուտքերը): Այս ընթացքում համակարգը չի իրականացնում օգտակար աշխատանք։ Ընդհատումների և առաջնահերթ բազմախնդրության ի հայտ գալով
Վաղ առաջնահերթ բազմախնդրային օպերացիոն համակարգը, որը մատչելի էր դարձել սովորական օգտվողների համար
Նման մոդելները օգտագործվում են [[Windows 9x]] և [[Windows NT|Windows NT ընտանիքի]] համակարգերում, որտեղ առաջնային 32-բիտանի դիմումները առաջնահերթ
== Իրական ժամանակ ==
Բազմախնդրության պատճառներից է համարվում [[իրական ժամանակի հաշվողական]] համակարգերի նախագծումը, որտեղ կան մի շարք հնարավոր իրար հետ կապ չունեցող արտաքին գործողություններ, որոնց անհրաժեշտ է վերահսկել միակ պրոցեսորային համակարգի միջոցով։
Նման համակարգերում հիերարխիկ ընդհատման համակարգը զուգակցվում է առաջնահերթ պրոցեսի հետ, որպեսզի հիմնական գործողություններին տրվեն առկա պրոցեսի ժամանակի ավելի մեծ հատված։
Տող 50.
Քանի որ բազմախնդրությունը մեծապես բարելավեց համակարգիչների արտադրողականությունը, ծրագրավորողները սկսեցին աշխատեցնել ծրագրերը որպես համատեղ պրոցեսների հավաքածուներ (օրինակ մի պրոցեսը հավաքագրում է մուտքային տվյալները, մեկ այլ պրոցես մշակում է մուտքային տվյալները, մյուսը դուրս է գրում արդյունքները սկավառակի վրա): Ինչևիցե, պահանջվում են որոշակի սարքեր, որպեսզի թույլատրեն պրոցեսներին արդյունավետ փոխանակել տվյալները։
[[Հոսք (համակարգչային գիտություն)|Հոսքերի]] հիմնական գաղափարը կայանում է նրանում, որ պրոցեսների համատեղման ամենաարդյունավետ ճանապարհը տվյալների փոխանակման համար, դրանց ողջ հիշողության տարածքի բաժանումն է։ Այսպիսով, հոսքերը հիմնականում պրոցեսներ են, որոնք իրականանում են հիշողության նույն կոնտեքստում։ Հոսքերը բնութագրվում են որպես
Մինչ հոսքերը պլանավորվում էին ըստ առաջնահերթության, որոշ օպերացիոն համակարգեր ապահովում էին հոսքերի մի տարբերակ,
Որոշ համակարգեր ուղղակիորեն աջակցում են
== Հիշողության պաշտպանություն ==
{{Գլխավորը|Հիշողության պաշտպանություն}}
Երբ հիշողությունում առկա են բազմաթիվ ծրագրեր, մի որևէ վատ ձևակերպված ծրագիր կարող է
Ուստի օպերացիոն համակարգը սահմանափակում է կատարվող ծրագրի հիշողության մատչելիությունը։ Ծրագիրը, որը փորձում է մատչելի դարձնել հիշողությունը իր թույլատրելի սահմաններից դուրս, անմիջապես կդադարեցվի նախքան կկարողանա փոխել մեկ այլ պրոցեսի պատկանող հիշողությունը։
Մեկ այլ կարևոր նորամուծություն էր արտոնության մակարդակների գաղափարը։ Ստորին արտոնությամբ առաջադրանքներին չի թույլատրվում հիշողության մատչելիության որոշակի տեսակներ և չի թույլատրվում կատարել որոշակի հրահանգներ։ Երբ առաջադրանքը փորձում է կատարել մի որևէ արտոնյալ գործողություն, առաջանում է
== Հիշողության փոխանակում ==
[[Վիրտուալ հիշողության|Փոխանակման ֆայլերի]] կամ փոխանակման բաժանմունքների օգտագործումը օպերացիոն համակարգի համար մի ճանապարհ են՝ տրամադրելու ավելի մեծ հիշողություն, քան ֆիզիկապես կարող է հասանելի լինել պահելով հիմնական հիշողությունից մասնաբաժիններ [[երկրորդական պահեստում]]: Մինչ բազմախնդրությունը և հիշողության փոխանակումը 2 ամբողջովին իրար հետ կապ չունեցող տեխնիկաներ են, սակայն դրանք շատ հաճախ օգտագործվում են միասին, քանի որ հիշողության փոխանակումը թույլատրում է ավելի շատ առաջադրանքներ բեռնել միաժամանակ։
== Ծրագրավորումը բազմախնդրային միջավայրում ==
Պրոցեսները, որոնք լիովին անկախ են, շատ բարդություններ չեն առաջացնում ծրագրում։ Բարդությունների մեծ մասը բազմախնդրային համակարգերում առաջանում է առաջադրանքների միջև համակարգչային ռեսուրսների բաշխման անհրաժեշտությունից և առաջադրանքների համատեղման գործողությունների սինխրոնիզացման պահանջներից։
Տարբեր [[մրցակից հաշվողական]] տեխնիկաներ են օգտագործվում, որպեսզի խուսափեն հնարավոր պրոբլեմներից, որոնք առաջանում են բազմաթիվ առաջադրանքների՝ միևնույն ռեսուրսը իրենց ենթարկելու փորձերից։
Մեծամասշտաբ համակարգերը երբեմն կառուցվել են կենտրոնական
Տարիների ընթացքում բազմախնդրային համակարգերը կատարելագործվել են։ Ժամանակակից օպերացիոն համակարգերը ընդհանուր առմամբ ներառում են մանրակրկիտ մեխանիզմներ՝ պրոցեսների առաջնայնությունը որոշելու համար, այն ժամանակ, երբ
== Նշումներ ==
|