Հաճախ մշակողները, հատկապես անփորձները, շփոթվում են, երբ խնդրում են առաջադրանքների կատարման վերջնաժամկետ սահմանել: Սակայն պլանավորելու ունակությունը շատ օգտակար և անհրաժեշտ հմտություն է, որն օգնում է ոչ միայն աշխատանքում, այլև կյանքում։ Մենք որոշեցինք փորձագետներին հարցնել, թե ինչպես սովորել ճիշտ պլանավորել և ժամանակին իրականացնել նախագծերը:
Հակիրճ եզրակացությունները կարելի է գտնել հոդվածի վերջում:
Սովորաբար մշակողը պետք է հաշվի առնի մի քանի պարամետր՝ առաջադրանքն ավարտելու համար անհրաժեշտ ժամանակը գնահատելու համար.
- Նման առաջադրանքների կատարման և այս տեխնոլոգիական փաթեթի հետ աշխատելու փորձ: Եթե դուք պետք է ինչ-որ սկզբունքորեն նոր բան անեք, ապա պետք է հատկապես զգույշ լինեք ձեր գնահատականի նկատմամբ:
- Այս հաճախորդի հետ աշխատելու փորձ: Իմանալով հաճախորդին, դուք կարող եք մոտավորապես կանխատեսել որոշները լրացուցիչ պահանջներև խմբագրումների քանակը։
- Կոդի որակը, որի հետ դուք կաշխատեք: Սա ամենաազդեցիկ գործոնն է, որի պատճառով ամեն ինչ կարող է երկար տևել և ընդհանրապես չընթանալ պլանի համաձայն։ Եթե նախագիծն ունի թեստեր, ամենուր կան միայն բացահայտ կախվածություններ, և ֆունկցիոնալությունը լավ մեկուսացված է, ամեն ինչ այնքան էլ սարսափելի չէ: Շատ ավելի վատ է, եթե գործ ունես ժառանգական կոդի հետ՝ առանց թեստերի կամ անուղղակի կախվածություններով ծանրաբեռնված կոդի հետ: Նման բաները, ինչպիսիք են «կախարդական գործառույթները» (երբ դժվար է կոդից տեսնել զանգերի վերջնական փաթեթը) և կոդի կրկնօրինակումը (երբ որոշ գործառույթներ փոխելու համար անհրաժեշտ է խմբագրել մի քանի անկախ բաժիններ), կարող են նաև բարդացնել խնդիրները:
Սովորելու համար, թե ինչպես պատշաճ կերպով գնահատել աշխատանքային ժամկետները, դուք պետք է անընդհատ զբաղվեք: Աշխատանքիս սկզբում ես հենց սա էի անում. ես գնահատում էի ցանկացած մուտքային առաջադրանք կատարելու ժամանակը, նույնիսկ եթե ոչ ոք դա չէր պահանջում, և հետո նայեցի, թե որքան ճշգրիտ կարողացա մտնել իմ գնահատականի մեջ: Առաջադրանքը կատարելիս նա նշել է, թե որ գործողություններն ավելի երկար են տևել։ Եթե ինչ-որ բան էականորեն մեծացնում էր ժամանակահատվածը, ես հիշեցի այս պահը և հաշվի առա հաջորդ գնահատականներում։
Զուտ աշխատանքի համար անհրաժեշտ ժամանակի օբյեկտիվ գնահատմանը պետք է մի փոքր մարժա ավելացվի ֆորսմաժորային իրավիճակները լուսաբանելու համար: Հաճախ այն գնահատվում է որպես հիմնական առաջադրանքի կատարման տոկոս, բայց բոլորի համար տարբեր է՝ ոմանք ավելացնում են ժամանակի 20%-ը, ոմանք՝ 10%-ը, իսկ ոմանք՝ 50%-ը։
Օգտակար է նաև վերլուծել ժամկետների յուրաքանչյուր լուրջ խախտումից հետո բաց թողնված ժամկետների պատճառները: Եթե դուք չունեք բավարար որակավորում, դուք պետք է աշխատեք ձեր վրա թույլ կետեր. Եթե խնդիրը կազմակերպչական էր, հասկացեք, թե ինչն էր խանգարում այն նորմալ աշխատել։
Խթանել իջեցնել
, «Jet Infosystems» նորարարական տեխնոլոգիաների և լուծումների կենտրոնի տեխնիկական տնօրեն
Մեծ թվով հոդվածներ նվիրված են նախագծի աշխատանքի ինտենսիվությունը գնահատելու մեթոդներին, ներառյալ աշխատանքի տևողությունը և անհատական առաջադրանքները: Այնուամենայնիվ, սա դեռևս հակասություններ է առաջացնում ինչպես ծրագրի թիմի ներսում, այնպես էլ հաճախորդի հետ շփվելիս:
Գնահատման հիմնական օգնականը փորձն է: Փորձեք ինչ-որ կերպ համեմատել նոր առաջադրանքը արդեն իսկ կատարվածի հետ։ Եթե դուք հաշվետվություն եք պատրաստում, տեսեք, թե որքան ժամանակ է տևել նմանատիպ զեկույցը անցյալում: Եթե ինչ-որ նոր բան եք անում, փորձեք այն բաժանել հայտնի մասերի և գնահատել դրանք: Եթե առաջադրանքը բոլորովին նոր է, ժամանակ հատկացրեք ուսումնասիրելու համար (ավելի լավ՝ այս ժամանակը համաձայնեցրեք առաջադրանք տվողի հետ):
Ուշադրություն դարձրեք ուղեկցող փուլերին. եթե Ձեզ անհրաժեշտ է ծառայություն մշակել, ապա գնահատումը պետք է ներառի նաև միավորի թեստավորում (և գուցե ոչ միայն միավորի թեստավորում), թեստի տվյալների պատրաստումը որոշ ժամանակ կպահանջի: Դուք պետք է մտածեք այլ ծառայությունների հետ ինտեգրվելու մասին և այլն: Ժամանակ տրամադրեք ինքներդ ձեզ հայտնաբերած թերությունները շտկելու կամ փորձարկողների օգնությամբ: Շատ ժամանակ կարելի է վատնել «անտեսանելի» առաջադրանքների վրա։ Օրինակ, կա գնահատում մշակման համար և կա գնահատում փորձարկման համար, բայց փորձարկման համար արտեֆակտի փոխանցումը կարող է ներառել ստենդների տեղակայում: Հետևաբար, կարևոր է մտովի պատկերացնել ամբողջ գործընթացը, որպեսզի ոչինչ բաց չթողնեք:
Բարդությունը որոշելուց հետո անհրաժեշտ է օրացույցում ներառել նոր աշխատանք՝ չմոռանալով զուգահեռաբար ընթացող այլ խնդիրների ու գործողությունների մասին։
Եվ մի մոռացեք, որ ծրագրերն անօգուտ են, բայց պլանավորումն անգնահատելի է: Սովորեք ժամանակին շտկել պլանները, տեղեկացված պահել բոլոր ներգրավվածներին և ժամանակին ընդլայնել, որպեսզի բաց թողնված ժամկետները ոչ ոքի համար անակնկալ չլինեն:
Խթանել իջեցնել
Հարց, որին հնարավոր չէ պատասխանել կարճ ձև. Եթե պարզ լիներ, ապա ժամկետներ բաց թողնելու խնդիր չէր լինի։
Զարգացման ժամկետներն ավելի կանխատեսելի դարձնելու համար մենք նախ պետք է հասկանանք պատճառները, թե ինչու են ծրագրավորողները մշտապես սխալվում:
Առաջին պատճառն այն է, որ առաջադրանքների մեծ մասը, որ կատարում է ծրագրավորողը, այս կամ այն չափով եզակի են: Այսինքն, ամենայն հավանականությամբ, ծրագրավորողն առաջին անգամ կկատարի նմանատիպ խնդիր։ Նա լավ չի պատկերացնում, թե որքան կտևի այս աշխատանքը: Եթե սա ամուր փորձ ունեցող ծրագրավորող է, և նա պետք է կատարեր նմանատիպ առաջադրանք, ապա նրա գնահատականն ավելի մոտ կլինի իրականությանը։
Եկեք օգտագործենք պարզ անալոգիա. եթե դուք երբեք խրամատ չեք փորել, ապա չեք կարող հստակ ասել, թե որքան ժամանակ կպահանջվի 30 սմ լայնությամբ, 60 սմ խորությամբ և 20 մետր երկարությամբ խրամատ փորելու համար: Եթե նախկինում փորել եք, ապա աշխատանքային ժամանակի ձեր գնահատականը շատ ավելի մոտ կլինի աշխատանքի իրական տևողությանը:
Երկրորդ պատճառն այն է, որ ծրագրավորողները իրենց բնույթով լավատես են։ Այսինքն՝ առաջադրանքը քննարկելիս, դրա իրականացման տարբերակ ընտրելիս և բարելավումները գնահատելիս մշակողը ակնկալում է, որ ամեն ինչ կաշխատի այնպես, ինչպես ինքն է ակնկալում։ Եվ նա չի մտածում այն խնդիրների մասին, որոնց կհանդիպի ճանապարհին։ Հաճախ նա չի կարող կանխատեսել դրանք։ Օրինակ, կա խնդիր, որը ծրագրավորողը կարող է իրականացնել՝ օգտագործելով երրորդ կողմի բաց կոդով ծրագրային գրադարանը: Գնահատման փուլում նա գտել է այն ինտերնետում, կարդացել դրա նկարագրությունը՝ իրեն սազում է։ Եվ նա նույնիսկ ճիշտ գնահատեց այն աշխատանքի ծավալը, որը պետք է աներ այս գրադարանի օգտագործման համար կառուցելու համար: Բայց նա բոլորովին չէր կանխատեսում, որ իր շրջապատը ծրագրային արտադրանքայս գրադարանում սխալ կառաջանա:
Մշակողը պետք է ոչ միայն ներկառուցի գրադարանի օգտագործումը իր կոդի մեջ, այլև շտկի սխալը հենց գրադարանում: Եվ հաճախ ծրագրավորողը ժամանակ չի տրամադրում իր սխալներն ուղղելու համար։ Վիճակագրությունը ցույց է տալիս, որ սխալների փորձարկումն ու ուղղումը կարող է խլել կոդավորման վրա ծախսված ժամանակի մոտ 50%-ը: Ցուցանիշը կախված է մշակողի որակավորումներից, շրջակա միջավայրից և մշակման կիրառվող պրակտիկաներից (օրինակ, միավորի թեստերը զգալիորեն նվազեցնում են այս ժամանակը, իսկ մշակման առաջադրանքի վերջնական տևողությունը/աշխատանքի ինտենսիվությունը ավելի քիչ է):
Եթե վերադառնանք փորողի հետ համեմատությանը, ապա փորողը չէր սպասում, որ իր բահը կկոտրվի, և նա պետք է երկու ժամ ծախսի նոր կտրվածք փնտրելու համար։
Երրորդ պատճառը չնախատեսված պահանջներն են։ Նյութական արտադրության ոչ մի այլ ոլորտում, որի հետ հաճախորդներն այդքան սիրում են համեմատել ծրագրային ապահովման մշակումը, նոր պահանջների նման հոսք չկա: Պատկերացրեք փորողի անցումը, ով 20-ից 19 մետր է փորել և հաճախորդից ցանկություն է լսել, որ խրամատը ուղիղ գծով չանցնի, այլ 97 սանտիմետր թեւերի երկարությամբ օձի մեջ:
Ինչպե՞ս վարվել այս ամենի հետ և ինչպե՞ս ապրել նման անորոշության պայմաններում։ Անորոշության նվազեցում և ժամանակի պաշարների ավելացում:
Ձեր ակնկալիքներն իրականությանը մոտեցնելու ամենադյուրին ճանապարհն է օգտագործել Pi-ի խաղային կանոնը: Մշակողից գնահատական ստանալով (ժամանակի կամ աշխատանքի ինտենսիվության առումով), դուք պետք է այն բազմապատկեք Pi-ով (= 3.14159): Որքան ավելի փորձառու մշակողը կատարի գնահատումը, այնքան ցածր կարող է լինել այս հարաբերակցությունը:
Բնօրինակ խնդիրը 4 ժամից ոչ ավելի ծավալով փոքր առաջադրանքների տարրալուծման պրակտիկան պարտադիր է: Որքան ավելի մանրամասն է տարրալուծումը, այնքան մեծ է հավանականությունը, որ գնահատումը մոտ կլինի իրական բարդությանը/տեւողությանը:
Եթե վերադառնանք պահուստի հատկացմանը, ապա այս ժամանակը պետք է հատկացվի ծրագրի ավարտին։ Վատ պրակտիկա է ռեզերվ անելը և այն ներառել յուրաքանչյուր առաջադրանքի համար։ Պարկինսոնի օրենքը «Աշխատանքը լրացնում է իրեն հատկացված ամբողջ ժամանակը» խստորեն պահպանվում է:
Համառոտ ամփոփելու համար, աշխատանքի ավարտման ժամկետները ճիշտ որոշելու համար օգտակար կլինեն հետևյալ գործողությունները.
- կատարել աշխատանքի տարրալուծում, առաջադրանքը բաժանելով հնարավորինս մանրամասն քայլերի.
- իրականացնել նախատիպավորում;
- սահմանափակել նախկինում չնախատեսված պահանջների կատարումը. Սա չի նշանակում, որ դրանք չպետք է արվեն, բայց նպատակահարմար է ընդգծել այս պահանջները և հաճախորդի հետ պայմանավորվել դրանց իրականացման ժամկետների և ծախսերի փոփոխության վերաբերյալ.
- հաշվի առնել լուծումը կայունացնելու համար անհրաժեշտ ժամանակը.
- օգտագործել կոդերի որակը բարելավելու պրակտիկա, օրինակ՝ միավորի թեստեր գրելը.
- սահմանել ընդհանուր ռեզերվ.
Դե, հիշեք, որ եթե փաստը գերազանցում է ձեր գնահատականը 30%-ով, ապա սա շատ լավ արդյունք է։
Խթանել իջեցնել
Առավել ճշգրիտ գնահատման համար անհրաժեշտ է իրական զարգացման փորձ, և մասնավորապես կոնկրետ ոլորտում: Բայց կա նաև ընդհանուր կանոններ, ինչը կօգնի խուսափել պլանավորման մեջ սխալներից և գործը պատվիրատուին հանձնելիս խնդիրներից։ Այս կանոնները ես կբնութագրեի այսպես.
Նախ, դուք պետք է հասկանաք խնդիրը: Սա ակնհայտ է թվում և ուղղակիորեն չի առնչվում ժամանակային գնահատականներին, բայց իրականում դա առանցքային կետ է: Նույնիսկ լուրջ խոշոր նախագծերՁախողման և ուշացման հիմնական գործոններից մեկը պահանջների սահմանման խնդիրն է: Սկսնակ ծրագրավորողների համար, ցավոք, սա լուրջ խնդիր է. նրանք չեն կարդում տեխնիկական բնութագրերը կամ շատ ընտրովի են կարդում և հասկանում (տասը կետերից նրանք հիշել և լրացրել են հինգը, իսկ մնացածը հիշել են արդյունքը ներկայացնելիս): Հասկանալի է, որ սխալ հասկացված առաջադրանքը չի կարող ժամանակին ճիշտ իրագործվել։
Հաջորդը պետք է գնահատել զարգացման ժամանակը: Ծրագրավորման առանձնահատկությունն այն է, որ բացարձակապես նույնական առաջադրանքներ չկան։ Սա մեր աշխատանքն ավելի հետաքրքիր է դարձնում, բայց ժամկետների գնահատումն ավելի դժվար է։ Այստեղ քայքայումը լավ է աշխատում, այսինքն. բարդ, եզակի խնդիրը փոքր, ծանոթ ենթաառաջադրանքների հաջորդականության բաժանելը: Եվ դրանցից յուրաքանչյուրն արդեն կարելի է միանգամայն ադեկվատ գնահատել ժամերի ընթացքում։ Եկեք գումարենք ենթաառաջադրանքների գնահատականները և ստացենք գնահատական ամբողջ առաջադրանքի համար:
Որպես կանոն, նման գնահատումը ներառում է միայն ինքնին կոդավորման ծախսերը: Սա, իհարկե, զարգացման ամենակարևոր մասն է, բայց հեռու միակից (և հաճախ ոչ ամենածավալուն): Առաջադրանքի ամբողջական կատարումը ներառում է նաև ճշգրտման ընթերցում և պարզաբանում, հանդիպումներ գործընկերների կամ հաճախորդի հետ, վրիպազերծում և փորձարկում, փաստաթղթերի կազմում, արդյունքի առաքում (ցուցադրում հաճախորդին և հնարավոր փոփոխությունները նրա մեկնաբանությունների հիման վրա): Միայն փորձը ձեզ կասի, թե կոնկրետ որքան ժամանակ կպահանջվի այս գործողություններն ավարտելու համար: Սկզբում կարևոր է նվազագույնը չմոռանալ դրանք հաշվի առնել հաշվարկներում, իսկ ավելի փորձառու գործընկերներից կարող եք ժամանակի մոտավոր գնահատում խնդրել:
Այսպիսով, մենք վերցնում ենք աշխատանքային ծախսերի նախահաշիվը կոդավորման համար, ավելացնում ենք ծախսերի նախահաշիվը լրացուցիչ աշխատանք- և մենք ստանում ենք առաջադրանքը կատարելու համար անհրաժեշտ ժամանակի գնահատումը: Բայց սա դեռ ամենը չէ։ Դուք պետք է նշեք առաջադրանքի ավարտման պլանավորված ամսաթիվը: Սխալ կլինի պարզապես աշխատանքի ծախսերը (ժամերով) բաժանել 8 ժամով և ավելացնել ընթացիկ ամսաթվին։ Իրական պրակտիկայում մշակողը երբեք (լավ, գրեթե երբեք) ժամանակի 100%-ով չի աշխատում մեկ կոնկրետ առաջադրանքի վրա: Դուք անպայման ժամանակ կծախսեք այլ աշխատանքի վրա՝ կարևոր, բայց ոչ ուղղակիորեն կապված հիմնականի հետ։ Օրինակ՝ օգնել գործընկերներին, վերապատրաստվել, հաշվետվություններ գրել և այլն: Սովորաբար, պլանավորելիս ենթադրվում է, որ աշխատանքային ժամանակի 60-70%-ը ուղղակիորեն ծախսվում է ընթացիկ նախագծի վրա: Բացի այդ, դուք պետք է հաշվի առնեք հնարավոր ուշացումները, որոնք կխանգարեն ձեզ շարունակաբար աշխատել առաջադրանքի վրա: Օրինակ, եթե դրա համար անհրաժեշտ է շփվել այլ մարդկանց (գործընկերների, հաճախորդների) հետ, ապա հաշվի առեք նրանց հասանելիությունը, աշխատանքային գրաֆիկը և այլն։
Ահա հիմնական կանոնները, որոնք, իմ կարծիքով, կօգնեն մշակողին խուսափել ժամկետների գնահատման և պահպանման հետ կապված խնդիրներից: Բացի այդ, հիմնականը սեփական փորձի կուտակումն է ինչպես առաջադրանքների կատարման, այնպես էլ գնահատման մեջ: Օրինակ, առաջադրանքն ավարտելուց հետո շատ օգտակար է ձեր նախնական գնահատականը համեմատել իրական ժամկետների հետ և ապագայի համար եզրակացություններ անել: Եվ, իհարկե, արժե ուսումնասիրել այլ մարդկանց փորձը: Ես խորհուրդ կտայի Ս. ՄակՔոնելի «Ինչ արժե ծրագրային ապահովման նախագիծը» և Ս. Արխիպենկովի «Դասախոսություններ ծրագրային ապահովման նախագծերի կառավարման մասին» գրքերը։
Խթանել իջեցնել
Ժամկետները գնահատելիս և պլանավորելիս դուք պետք է.
- Խնդիրը տարրալուծեք փոքր ֆունկցիոնալ մասերի այնպես, որ հստակ պատկերացվի, թե որքան ժամանակ կպահանջվի յուրաքանչյուր այդպիսի կտոր մշակելու համար:
- Քայքայմանը զուգահեռ, անշուշտ լրացուցիչ հարցեր կծագեն ֆունկցիոնալության հետ կապված, որոնք նկարագրված չեն խնդրի հայտարարության մեջ: Նման հարցերի պատասխանները պետք է ստանալ, քանի որ դա ուղղակիորեն վերաբերում է աշխատանքի ծավալին և, հետևաբար, ժամանակին:
- Վերջնական գնահատմանը ավելացրեք ռիսկերի որոշակի տոկոս: Սա որոշվում է էմպիրիկ կերպով: Դուք կարող եք սկսել, օրինակ, 10-15% ռիսկերից:
- Հասկացեք, թե օրական քանի ժամ է ծրագրավորողը պատրաստ տրամադրել առաջադրանքը կատարելուն:
- Վերջնական գնահատականը մենք բաժանում ենք օրական հատկացված ժամերի քանակի վրա և ստանում ենք իրականացման համար անհրաժեշտ օրերի քանակը:
- Մենք կենտրոնանում ենք օրացույցի վրա և պահանջվող քանակավարտելու օրեր: Մենք հաշվի ենք առնում հանգստյան օրերը և այլ օրերը, երբ ծրագրավորողը չի կարողանա աշխատել առաջադրանքի վրա, ինչպես նաև աշխատանքի մեկնարկի ամսաթիվը (մշակողը միշտ չէ, որ պատրաստ է առաջադրանքը ստանձնել նույն օրը): Այսպիսով, մենք ստանում ենք աշխատանքի մեկնարկի և ավարտի ամսաթիվը:
Խթանել իջեցնել
Մեր ընկերությունում առաջադրանքների պլանավորումը միշտ անցնում է մի քանի փուլով: Բիզնեսի մասով մենք ձևակերպում ենք տարվա 5-6 ռազմավարական նպատակներ։ Սրանք բարձր մակարդակի առաջադրանքներ են, օրինակ՝ որոշ պարամետրի այդքան տոկոսով մեծացում։ Հաջորդը, ընկերության տարբեր ստորաբաժանումները ձևակերպում են բիզնես առաջադրանքներ ՏՏ բոլոր թիմերի համար: Այս առաջադրանքների վերջնաժամկետները ստանում են նախնական մոտավոր գնահատական, որը հաճախ ձևավորվում է թիմի բոլոր անդամների կողմից՝ մենեջեր, վերլուծաբան, մշակող և փորձարկող: Ստանալով այս գնահատականը՝ բիզնեսը առաջնահերթություն է տալիս առաջադրանքներին՝ հաշվի առնելով ռազմավարական նպատակներընկերություններ։ Դրանցում օգնում են խաչաձև ռազմավարական նպատակները, ակնհայտ է դառնում, որ մենք բոլորս աշխատում ենք ինչ-որ ընդհանուր գործի համար, երբ ինչ-որ մեկը միայն իր ուղղությամբ է ձգում: Մենք սպրինտեր ենք հավաքում ժամկետների առումով ճշգրիտ գնահատված առաջադրանքներից: Որոշ թիմերի համար դրանք եռամսյակային են, մյուսների համար՝ ամսական։ Մի քանի առաջադրանքների համար, որոնք, ըստ նախնական գնահատականների, կանցնեն հաջորդ սպրինտին, թիմերը ճշգրիտ գնահատական են տալիս: Խոշոր առաջադրանքները բաժանվում են ավելի ցածր մակարդակի, որոնցից յուրաքանչյուրի համար պատասխանատու է կոնկրետ կատարողը, և հենց նա է տալիս ճշգրիտ գնահատականը:
Միացված է այս փուլումԿարևոր է չմոռանալ հավելյալ ժամանակ ավելացնել սխալները շտկելու համար, քանի որ միայն նրանք, ովքեր ոչինչ չեն անում, չեն սխալվում: Սա շատ լավ հասկանում են և՛ Ապրանքի սեփականատերերը, և՛ բիզնես հաճախորդները: Միևնույն ժամանակ, պահանջվող ժամանակը պետք է լինի համարժեք. ոչ ոք չի հասկանա ծրագրավորողին, ով վերջնաժամկետ է սահմանում մի պարզ առաջադրանքի համար, որը շատ երկար է, նրան կխնդրեն հիմնավորել որոշումը: Ամենադժվարը բիզնեսին բացատրելն է, թե ինչու է ժամանակ պահանջվում վերամշակման համար: Մենք երախտապարտ ենք մեր ընկերությանը, որ ժամանակ առ ժամանակ մեզ դա հաջողվում է, քանի որ, ի վերջո, վերամշակումը հանգեցնում է ենթակառուցվածքի պարզեցմանը և կոդը կարգի բերելուն, ինչը մեծացնում է համակարգի կայունությունը և կարող է զգալիորեն արագացնել զարգացումը։ նոր գործառույթներից։
Երբեմն գնահատման սխալները դեռ տեղի են ունենում: զարգացման բաժինը խոշոր ընկերություններԶարգացած ենթակառուցվածքով սրանից լիովին խուսափել հնարավոր չէ, իմ կարծիքով։ Այս դեպքում կարևոր է, որ մշակողը անհապաղ տեղեկացնի իր մենեջերին կատարվածի մասին, և նա, իր հերթին, հասցնի նախազգուշացնել բիզնեսին և «վերարտադրել» ինչ-որ բան ընկերության գլխավոր ծրագրերում: Այս ռեժիմով աշխատելը շատ ավելի ճիշտ է, քան խելահեղ փորձը 3 օրվա ընթացքում անել այն, ինչ տևում է 5, իսկ հետո խեղդվելը մեծ քանակությամբնման շտապողականության հետևանքով առաջացած սխալները.
Խթանել իջեցնել
Հարցի երկու մասերի ճիշտ պատասխանը [ինչպես սովորել, թե ինչպես ճիշտ պլանավորել և ժամանակին մատուցել նախագիծը. Կարմիր.] - փորձ. «Զենը ճանաչելու» այլ եղանակներ չկան։ Որոշումների տեսության համաձայն՝ ցանկացած ճշգրիտ եզրակացություն կարելի է անել միայն մի շարք արդեն առկա տվյալների վերլուծության հիման վրա։ Եվ որքան շատ տվյալներ լինեն, այնքան ճշգրիտ կլինի վերջնական կանխատեսումն ու գնահատականը։
Հերբերտ Շոուի խոսքերով. «Փորձն այն դպրոցն է, որտեղ մարդը սովորում է, թե ինչ հիմար է եղել նախկինում»: Սա հանգեցնում է բավականին պարզ եզրակացության. եթե ծրագրավորողն արդեն ունի փորձ, որը կապված է առաջադրանքի հետ, նա կարող է ապավինել դրա վրա, եթե ոչ, ապա նա կարող է ապավինել իր «գործընկերների» փորձին.
Հաջորդը, դուք պետք է հասկանաք, որ ժամկետների ուղղակի պլանավորումը խնդիր է, որը մարդիկ շատ, շատ վատ են հաղթահարում, հատկապես զարգացման մեջ: Վճարման ժամկետները գնահատելիս լավ պրակտիկա է համարվում սկզբնական գնահատման մեջ «ճշգրտման գործոնների» ներմուծումը: Այս չափիչը կարող է տատանվել 1,5-ից մինչև 3՝ կախված մշակողի փորձից և նախագծի շրջանակներում լուծվող առաջադրանքների անորոշության աստիճանների ամբողջությունից:
Խթանել իջեցնել
Ժամկետները որոշելիս կարևոր է հաշվի առնել բազմաթիվ գործոններ:
Օրինակ՝ աշխատանքային փորձ։ Որքա՞ն հստակ եք հասկանում առաջիկա աշխատանքի շրջանակը: Դուք նախկինում նման բան արե՞լ եք: Հասկանալի է, որ որքան մեծ փորձառություն, այնքան ավելի արագ կավարտվի աշխատանքը։
Լավ գրված պլանը էական դեր է խաղում վերջնաժամկետների որոշման հարցում: տեխնիկական առաջադրանքը. Սրա հետ կապված գործերը շատ դժվար են մեր տարածքում: Հաճախ հաճախորդն ինքն էլ չգիտի, թե ինչ է ուզում, ուստի խորհուրդ եմ տալիս ծախսել լրացուցիչ մեկ-երկու օր, բայց հաճախորդին հստակ պատկերացնել. ցանկալի արդյունք. Կարևոր է, որ այս ըմբռնումը փոխադարձ լինի։ Եվ միայն դրանից հետո կարող եք սկսել բանակցել գումարի և պայմանների շուրջ:
Բացի այդ, միշտ ներառեք ռիսկերը: Սկսնակների համար խորհուրդ եմ տալիս բազմապատկել ավարտման գնահատված ժամանակը երկուսով: Ի վերջո, ավելի լավ է նախագիծը ժամանակից շուտ մատուցել և հաճախորդի աչքում աճել որպես մասնագետ, այլ ոչ թե հետո մատուցել և փչացնել քո հեղինակությունը:
Խթանել իջեցնել
Ընդհանուր առաջարկություն - մշակողը պետք է սովորի, թե ինչպես ճիշտ քայքայել առաջադրանքները, միշտ փնտրել հնարավոր որոգայթներ, ապավինել սեփական փորձըև մի մոռացեք ժամանակին զգուշացնել հաճախորդներին և գործընկերներին, եթե խնդիրը հնարավոր չէ լուծել նշված ժամկետում:
Հստակ պլան կառուցելը շատ ավելի դժվար է, քան մեկ առաջադրանքի ավարտի վերջնաժամկետը որոշելը: Միևնույն ժամանակ, կարևոր է ոչ միայն նախագիծը ժամանակին մատուցելը, այլ նաև ապահովել, որ ձեր մշակած համակարգը ճիշտ լուծում է բիզնեսի խնդիրները: Այստեղ ՏՏ թիմերին օգնում են ծրագրային ապահովման մշակման տարբեր մեթոդոլոգիաներ՝ RUP-ից և MSF-ից մինչև SCRUM և այլ Agile ձևաչափեր: Գործիքների ընտրությունը շատ ընդարձակ է, և մեր հաճախորդներից շատերը ցանկանում են նախապես հասկանալ, թե ինչպես ենք մենք աշխատելու իրենց հետ նախագծում, ինչ սկզբունքներով ենք հավատարիմ մնալու:
Ի դեպ, Agile-ի թեման այսօր մոտենում է և՛ բիզնեսին, և՛ նույնիսկ առանձին նախագծերում հանրային հատվածին, քանի որ այս մեթոդաբանության սկզբունքները հնարավորություն են տալիս շատ արագ իրականացնել նախագծեր՝ կառավարելով հաճախորդների սպասելիքները յուրաքանչյուր կրկնության ժամանակ: Օրինակ, Agile թիմում հաճախորդի հետ գործնականում երկարատև քննարկումներ չկան: Մոռացեք տասնյակ էջերի մասին, որոնք նկարագրում են ավելորդ տեխնիկական մանրամասները, օրինակ, թե որքան արագ է հայտնվում բացվող ցուցակը: Հաճախորդին հնարավորություն տվեք փորձել համակարգի միջանկյալ տարբերակը, այդ դեպքում ձեզ համար շատ ավելի հեշտ կլինի հասկանալ միմյանց։
Agile թիմը պլանավորում է ամեն ինչ միասին և որոշում օպտիմալ մակարդակաշխատանքային ծախսերը, որոնք անհրաժեշտ կլինեն որոշակի խնդրի լուծման համար: Օրինակ, տեխնիկաներից մեկը կոչվում է «Պոկերի պլանավորում», որտեղ յուրաքանչյուր մասնակից անանուն տալիս է իր գնահատականը որոշակի առաջադրանքի համար պահանջվող աշխատանքային ծախսերի վերաբերյալ: Դրանից հետո թիմը որոշում է առաջադրանքի միջին կշիռը պատմության միավորներով կամ աշխատաժամանակներով և առաջադրանքները բաշխում է «ով ինչ է սիրում» սկզբունքով։ Միևնույն ժամանակ, ամեն օր թիմը հավաքվում է 15 րոպեանոց հանդիպման, երբ բոլորը մի քանի րոպեում խոսում են իրենց ընթացիկ առաջադրանքների կարգավիճակի մասին, այդ թվում՝ զեկուցելով առաջացած դժվարությունների մասին: Թիմը արագ շտկում է հայտնաբերված խնդիրը, ուստի հաճախորդը հնարավորինս արագ նայում է ծրագրավորողի աշխատանքի հաջորդ փուլին: Մշակողները չեն հետաձգում առաջադրանքների կատարումը թիմին ևս մեկ անգամ անհանգստացնելու դժկամության կամ դա ինքնուրույն պարզելու ապարդյուն փորձերի պատճառով՝ սպանելով թանկարժեք ժամանակը: Ի դեպ, նման մինի-ստատուսներում ծրագրավորողները ցանկություն ունեն ապացուցելու իրենց լավագույն կողմը, ցույց տվեք, որ պատասխանատվությամբ եք մոտենում ձեր աշխատանքին։ Դա իսկապես մոտիվացնում և ինքնակարգավորում է:
Ներածություն
Արտադրության կազմակերպման սեմինարի նպատակն է ընդլայնել և խորացնել տեսական գիտելիքները, սերմանել անհրաժեշտ հմտություններ՝ արտադրության կազմակերպման և պլանավորման հետ կապված պրակտիկայում առավել հաճախ հանդիպող խնդիրների լուծման համար:
Սեմինարը ներառում է առաջադրանքներ դասընթացի հիմնական բաժինների համար: Յուրաքանչյուր թեմայի սկզբում ներկայացվում են համառոտ մեթոդական ցուցումներ և տեսական տեղեկատվություն, լուծումների բնորոշ խնդիրներ և ինքնուրույն լուծման խնդիրներ:
Հասանելիություն յուրաքանչյուր թեմայում մեթոդական ցուցումներև համառոտ տեսական տեղեկատվությունը թույլ է տալիս օգտագործել այս սեմինարը հեռավար ուսուցման համար:
Արտադրության ցիկլի տեւողության հաշվարկ
Որպես արդյունավետության ցուցանիշ արտադրական գործընթացարտադրական ցիկլի տեւողությունն է։
Արտադրության ցիկլը- արտադրության գործընթացում աշխատանքի օբյեկտների գտնվելու ժամանակահատվածը հումքի գործարկման պահից մինչև պատրաստի արտադրանքի թողարկման պահը.
Արտադրության ցիկլը բաղկացած է աշխատանքային ժամերը,որի ընթացքում ծախսվում է աշխատուժը և ընդմիջման ժամանակներ. Ընդմիջումները, կախված դրանց պատճառած պատճառներից, կարելի է բաժանել.
1) վրա բնականկամ տեխնոլոգիական - դրանք որոշվում են արտադրանքի բնույթով.
2) կազմակերպչական(ընդմիջումներ հերթափոխի միջև):
Արտադրության ցիկլի տևողությունը բաղկացած է հետևյալ բաղադրիչներից.
T ցիկլ = տդրանք + տուտում է + տ tr + տկ.կ. + տմ.օ. + տմ.ծ.
Որտեղ տդրանք- տեխնոլոգիական գործողությունների ժամանակը.
չի ուտում -բնական պրոցեսների ժամանակ (չորացում, սառեցում և այլն);
t tr –աշխատանքի օբյեկտների տեղափոխման ժամանակը.
t k.k. –որակի վերահսկման ժամանակ;
t m.o –միջվիրահատական խնամքի ժամանակ;
տ մ.գ. –պահեստավորման ժամանակը միջխանութային պահեստներում.
(տերեք տկ.կ. կարող է համակցվել տ m.o):
Արտադրության ցիկլի ժամանակի հաշվարկը կախված է արտադրության տեսակից: Զանգվածային արտադրության մեջ արտադրական ցիկլի տեւողությունը որոշվում է արտադրանքի արտադրության ժամանակով, այսինքն.
T ցիկլ = տՄ–ում,
Որտեղ տՎ- կաթվածի ազատում;
Մ- աշխատատեղերի քանակը.
Տակ ազատել կաթվածըանհրաժեշտ է հասկանալ մեկ արտադրված արտադրանքի և հաջորդ արտադրանքի թողարկման միջև ընկած ժամանակահատվածը:
Ազատման կաթվածը որոշվում է բանաձևով
t in = Teff / V,
Որտեղ Թեֆ- աշխատողների ժամանակի արդյունավետ ֆոնդը հաշվարկային ժամանակաշրջան(հերթափոխ, օր, տարի);
IN– նույն ժամանակահատվածի արտադրանքի ծավալը (բնական միավորներով):
Օրինակ՝ T սմ = 8 ժամ = 480 րոպե; T մեկ = 30 րոպե; → Teff = 480 – – 30 = 450 min.
B = 225 հատ; → տ in = 450/225 = 2 րոպե:
Սերիական արտադրության մեջ, որտեղ վերամշակումն իրականացվում է խմբաքանակով, տեխնոլոգիական ցիկլի տեւողությունը որոշվում է ոչ թե ապրանքի միավորի, այլ ամբողջ խմբաքանակի համար։ Ավելին, կախված խմբաքանակի արտադրության մեջ մտնելու եղանակից, մենք ստանում ենք տարբեր ցիկլի ժամանակներ։ Արտադրության մեջ ապրանքները տեղափոխելու երեք եղանակ կա՝ հաջորդական, զուգահեռ և խառը (շարային-զուգահեռ):
Ի. ժամը հաջորդականՇարժվող մասերը յուրաքանչյուր հաջորդ գործողություն սկսվում է միայն նախորդի ավարտից հետո: Մասերի հաջորդական շարժման ցիկլի տևողությունը հավասար կլինի.
Որտեղ n - վերամշակվող խմբաքանակի մասերի քանակը.
տ հատես- վիրահատության ժամանակի տոկոսադրույքը;
C i- աշխատատեղերի քանակը մեկ եսրդ վիրահատություն;
մ- տեխնոլոգիական գործընթացի գործողությունների քանակը.
Տրվում է ապրանքների խմբաքանակ՝ բաղկացած 5 կտորից։ Խմբաքանակը հաջորդաբար փոխանցվում է 4 գործողությունների միջոցով. առաջին գործողության տեւողությունը 10 րոպե է, երկրորդը՝ 20 րոպե, երրորդը՝ 10 րոպե, չորրորդը՝ 30 րոպե (նկ. 1)։
Նկար 1
Տցիկլ = Տվերջին = 5·(10+20+10+30) = 350 ր.
Շարժվող մասերի հաջորդական մեթոդն ունի այն առավելությունը, որ ապահովում է սարքավորումների աշխատանքը առանց պարապուրդի: Բայց դրա թերությունն այն է, որ արտադրական ցիկլի տեւողությունն այս դեպքում ամենաերկարն է։ Բացի այդ, աշխատանքային տեղամասերում ստեղծվում են մասերի զգալի պաշարներ, ինչը պահանջում է լրացուցիչ արտադրական տարածք:
II. ժամը զուգահեռԽմբաքանակի տեղաշարժի ընթացքում առանձին մասերը չեն պահվում աշխատատեղերում, այլ առանձին-առանձին տեղափոխվում են հաջորդ գործողության անմիջապես՝ չսպասելով ամբողջ խմբաքանակի մշակման ավարտին: Այսպիսով, մասերի խմբաքանակի զուգահեռ շարժումով յուրաքանչյուր աշխատավայրում միևնույն խմբաքանակի տարբեր մասերի վրա միաժամանակ կատարվում են տարբեր գործողություններ:
Արտադրանքի զուգահեռ շարժով խմբաքանակի մշակման ժամանակը կտրուկ կրճատվում է.
դլ .
Որտեղ n n- մասերի քանակը փոխանցման խմբաքանակ(տրանսպորտային խմբաքանակ), այսինքն. մի գործողությունից մյուսը միաժամանակ փոխանցվող ապրանքների քանակը.
Երկարությունը - ամենաերկար գործառնական ցիկլը:
Զուգահեռաբար արտադրանքի խմբաքանակ գործարկելիս ամբողջ խմբաքանակի մասերը շարունակաբար մշակվում են միայն այն աշխատատեղերում, որտեղ երկար գործողությունները հաջորդում են կարճին: Այն դեպքերում, երբ կարճ գործողությունները հաջորդում են երկարին, այսինքն. ավելի երկար (մեր օրինակում, երրորդ գործողությունը), այս գործողությունները կատարվում են ընդհատված, այսինքն. սարքավորումները պարապ են. Այստեղ մասերի խմբաքանակը չի կարող անմիջապես մշակվել, առանց ուշացումների, քանի որ նախորդ (երկար) գործողությունը դա թույլ չի տալիս:
Մեր օրինակում. n= 5, տ 1 = 10; տ 2 = 20; տ 3 = 10; տ 4 = 30; Հետ= 1.
Տգոլորշու = 1·(10+20+10+30)+(5-1)·30=70+120 = 190 ր.
Դիտարկենք մասերի զուգահեռ շարժման դիագրամը (նկ. 2).
Նկար 2
III. Բոլոր գործողություններում խմբաքանակի առանձին մասերի մշակման ընդհատումները վերացնելու համար օգտագործեք զուգահեռ-սերիալկամ խառըգործարկման մեթոդ, որով մասերը (մշակումից հետո) մեկ առ մեկ տեղափոխվում են հաջորդ շահագործման կամ «տրանսպորտային» խմբաքանակների (մի քանի կտոր) տեսքով այնպես, որ գործողությունների կատարումը չընդհատվի որևէ աշխատավայրում: Խառը մեթոդում մշակման շարունակականությունը վերցվում է հաջորդական մեթոդից, իսկ մասի անցումը շահագործումից գործառնությունից անմիջապես հետո՝ զուգահեռ մեթոդից։ Արտադրության մեկնարկի խառը եղանակով ցիկլի տևողությունը որոշվում է բանաձևով
միջուկը .
որտեղ է կոր. - ամենակարճ գործառնական ցիկլը (յուրաքանչյուր զույգ հարակից գործողությունների);
մ-1 – համակցությունների քանակը.
Եթե հաջորդ գործողությունը նախորդից ավելի երկար է կամ ժամանակով հավասար է, ապա այս գործողությունը սկսվում է անհատապես՝ նախորդ գործողության առաջին մասը մշակելուց անմիջապես հետո։ Եթե, ընդհակառակը, հետագա գործողությունն ավելի կարճ է, քան նախորդը, ապա կտորների տեղափոխման ժամանակ այստեղ ընդհատումներ են լինում։ Դրանք կանխելու համար անհրաժեշտ է կուտակել այնպիսի ծավալի տրանսպորտային ռեզերվ, որը բավարար է հետագա շահագործման ընթացքում աշխատանքն ապահովելու համար: Գրաֆիկի վրա այս կետը գործնականում գտնելու համար անհրաժեշտ է խմբաքանակի վերջին մասը տեղափոխել և դրա կատարման տևողությունը տեղափոխել աջ։ Խմբաքանակի մյուս բոլոր մասերի մշակման ժամանակը գծագրված է գրաֆիկի ձախ կողմում: Առաջին մասի մշակման սկիզբը ցույց է տալիս այն պահը, երբ նախորդ գործողությունից տրանսպորտային կուտակումները պետք է փոխանցվեն այս գործողությանը:
Եթե հարակից գործողությունները տևողությամբ նույնն են, ապա դրանցից միայն մեկն է համարվում կարճ կամ երկար (նկ. 3):
Նկար 3
Տվերջին զույգեր = 5·(10+20+10+30)-(5-1)·(10+10+10) = 350-120 = 230 ր.
Արտադրության ցիկլի ժամանակը նվազեցնելու հիմնական ուղիներն են.
|
2) աշխատանքային գործընթացների ռացիոնալ կազմակերպում, աշխատատեղերի կազմակերպում և սպասարկում՝ հիմնված մասնագիտացման և համագործակցության, արտադրության լայն մեքենայացման և ավտոմատացման վրա.
3) աշխատավայրում տարբեր պլանավորված և չպլանավորված ընդմիջումների կրճատում՝ սկզբունքների ռացիոնալ օգտագործման հիման վրա. գիտական կազմակերպությունարտադրական գործընթաց:
4) ռեակցիաների արագացում ճնշման, ջերմաստիճանի բարձրացման, շարունակական գործընթացի անցնելու արդյունքում և այլն.
5) փոխադրման, պահպանման և հսկողության գործընթացների կատարելագործում և դրանց ժամանակին համադրում մշակման և հավաքման գործընթացի հետ.
Արտադրական ցիկլի տեւողության կրճատումը արտադրության կազմակերպման լուրջ խնդիրներից է, քանի որ ազդում է շրջանառության վրա շրջանառու միջոցներ, նվազեցնելով աշխատուժի ծախսերը, կրճատելով պահեստային տարածքը, տրանսպորտի կարիքները և այլն:
Առաջադրանքներ
1 Որոշել արտադրական գործընթացում հաջորդական, զուգահեռ և սերիական զուգահեռ տիպերով 50 մասերի մշակման ցիկլի տևողությունը։ Մասերի մշակման գործընթացը բաղկացած է հինգ գործողություններից, որոնց տևողությունը, համապատասխանաբար, րոպե է. տ 1 =2; տ 2 =3; տ 3 =4; տ 4 =1; տ 5 = 3. Երկրորդ գործողությունը կատարվում է երկու մեքենաների վրա, իսկ մյուսներից յուրաքանչյուրը՝ մեկի վրա։ Տրանսֆերային լոտի չափը 4 հատ։
2 Որոշել արտադրական գործընթացում հաջորդական, զուգահեռ և սերիական զուգահեռ տիպերով 50 մասերի մշակման ցիկլի տևողությունը։ Մասերի մշակման գործընթացը բաղկացած է չորս գործողություններից, որոնց տևողությունը, համապատասխանաբար, րոպե է. տ 1 =1; տ 2 =4; տ 3 =2; տ 4 = 6. Չորրորդ վիրահատությունը կատարվում է երկու մեքենաների վրա, իսկ մյուսներից յուրաքանչյուրը՝ մեկի։ Տրանսֆերային լոտի չափը 5 հատ։
3 Արտադրության գործընթացում 200 հատ մասերի խմբաքանակը մշակվում է զուգահեռ-հաջորդական շարժումով։ Մասերի մշակման գործընթացը բաղկացած է վեց գործողությունից, որոնց տևողությունը, համապատասխանաբար, րոպե է. տ 1 =8; տ 2 =3; տ 3 =27; տ 4 =6; տ 5 =4; տ 6 = 20. Երրորդ գործողությունը կատարվում է երեք մեքենաների վրա, վեցերորդը երկուսի վրա, իսկ մնացած գործողություններից յուրաքանչյուրը մեկ մեքենայի վրա։ Որոշեք, թե ինչպես կփոխվի մասերի խմբաքանակի մշակման ցիկլի տևողությունը, եթե արտադրության մեջ շարժման զուգահեռ-հաջորդական տարբերակը փոխարինվի զուգահեռ տարբերակով: Տրանսֆերային լոտի չափը 20 հատ։
4 300 հատ մասերի խմբաքանակը մշակվում է զուգահեռ-հաջորդական շարժումով արտադրության գործընթացում։ Մասերի մշակման գործընթացը բաղկացած է յոթ գործողությունից, որոնց տևողությունը, համապատասխանաբար, րոպե է. տ 1 =4; տ 2 =5; տ 3 =7; տ 4 =3; տ 5 =4; տ 6 =5; տ 7 = 6. Յուրաքանչյուր գործողություն կատարվում է մեկ մեքենայի վրա: Տրանսֆերային խմբաքանակ – 30 հատ: Արտադրության տեխնոլոգիայի կատարելագործման արդյունքում երրորդ գործողության տեւողությունը կրճատվել է 3 րոպեով, յոթերորդը՝ 2 րոպեով։ Որոշեք, թե ինչպես է փոխվում մասերի խմբաքանակի մշակման ցիկլը:
5 Տրվում է բլանկների խմբաքանակ՝ բաղկացած 5 կտորից։ Խմբաքանակն անցնում է 4 գործողություն՝ առաջինի տևողությունը 10 րոպե, երկրորդը՝ 20 րոպե, երրորդը՝ 10 րոպե, չորրորդը՝ 30 րոպե։ Որոշեք ցիկլի տևողությունը հաջորդական շարժումով վերլուծական և գրաֆիկական մեթոդներով:
6 Տրվում է չորս կտորից բաղկացած բլանկների խմբաքանակ։ Խմբաքանակն անցնում է 4 գործողություն՝ առաջինի տևողությունը 5 րոպե, երկրորդը՝ 10 րոպե, երրորդը՝ 5 րոպե, չորրորդը՝ 15 րոպե։ Որոշեք ցիկլի տևողությունը զուգահեռ շարժումով վերլուծական և գրաֆիկական մեթոդներով:
7 Տրվում է բլանկների խմբաքանակ՝ բաղկացած 5 կտորից։ Խմբաքանակն անցնում է 4 գործողություն՝ առաջինի տևողությունը 10 րոպե, երկրորդը՝ 20 րոպե, երրորդը՝ 10 րոպե, չորրորդը՝ 30 րոպե։ Որոշեք ցիկլի տևողությունը սերիական-զուգահեռ շարժման վերլուծական և գրաֆիկական մեթոդներով:
8 Որոշեք 180 հատ արտադրանքի խմբաքանակի մշակման տեխնոլոգիական ցիկլի տևողությունը: իր շարժման զուգահեռ և հաջորդական տարբերակներով։ Կառուցեք մշակման գործընթացի գրաֆիկները: Տրանսֆերային լոտի չափը 30 հատ։ Գործողությունների ժամանակի չափորոշիչները և աշխատատեղերի քանակը հետևյալն են.
(աշխատանքից սկսած ժամանակը ներառվում է մինչև այն ավարտվի պարբերական գործունեության դեպքում, կամ մինչև համակարգը արձագանքի և ինտերակտիվ գործունեության դեպքում առաջին օգտագործողի ելքը չհանձնի); կամ մաքսիմալացում արդարադատություն(Յուրաքանչյուր գործընթացի համար պրոցեսորի ժամանակի հավասար քանակություն, կամ ավելի ընդհանուր առմամբ համապատասխան ժամանակներ՝ ըստ յուրաքանչյուր գործընթացի առաջնահերթության և ծանրաբեռնվածության): Գործնականում այս նպատակները հաճախ հակասության մեջ են (օրինակ. թողունակությունըընդդեմ ուշացման), այնպես որ ժամանակացույցը կկատարի համապատասխան փոխզիջում: Նախապատվությունը չափվում է վերը նշված խնդիրներից որևէ մեկով` կախված օգտագործողի կարիքներից և նպատակներից:
OS/360 և իրավահաջորդներ
AIX
AIX տարբերակում 4-ում կան երեք հնարավոր կարգավորումներ շղթաների պլանավորման քաղաքականության համար.
- Նախ, առաջինը դուրս. Երբ պլանավորվում է այս քաղաքականության հետ կապված շարանը, այն ավարտվում է, եթե այն արգելափակված չէ, այն կամովին կհրաժարվի պրոցեսորի վերահսկողությունից, կամ ավելի առաջնահերթ շարանը դառնում է առաքելի: Միայն ֆիքսված առաջնահերթ թեմաները կարող են ունենալ FIFO պլանավորման քաղաքականություն:
- Round Robin. Սա նման է AIX տարբերակի 3-ի միացման ժամանակացույցին, որը շրջագծում է 10 ms ժամանակային հատվածների հիման վրա: Երբ PP շարանը կառավարում է ժամանակային հատվածի վերջում, այն տեղափոխվում է թելերի հերթի պոչը՝ նույն առաջնահերթությամբ: Միայն ֆիքսված առաջնահերթ թեմաները կարող են ունենալ Round Robin պլանավորման քաղաքականություն:
- ԱՅԼ. Այս քաղաքականությունը սահմանված է POSIX1003.4a-ով: AIX Տարբերակ 4-ում այս քաղաքականությունը սահմանվում է որպես RR-ին համարժեք, բացառությամբ, որ այն կիրառվում է ոչ ֆիքսված առաջնահերթության շղթաների համար: Յուրաքանչյուր ընդհատման համար ընթացիկ շղթայի առաջնահերթության արժեքի վերահաշվարկը նշանակում է, որ շարանը կարող է կորցնել վերահսկողությունը, քանի որ դրա առաջնահերթության արժեքը բարձրացել է մեկ այլ շղթայի համեմատ: Սա AIX տարբերակ 3-ի վարքագիծն է:
Թեմաները հիմնականում հետաքրքրում են հավելվածներին, որոնք ներկայումս բաղկացած են բազմաթիվ ասինխրոն գործընթացներից: Այս հավելվածները կարող են թեթև ծանրաբեռնվածություն առաջացնել համակարգի վրա, եթե դրանք վերածվեն բազմաթելային կառուցվածքի:
AIX 5-ն իրականացնում է պլանավորման հետևյալ քաղաքականությունը. FIFO քաղաքականությունը բաղկացած է երեք տարբեր իրականացումներից՝ FIFO, FIFO2 և FIFO3: Robin-ի շուրջօրյա քաղաքականությունը կոչվում է SCHED_RR AIX-ում, իսկ արդար շրջագայության քաղաքականությունը կոչվում է SCHED_OTHER:
Linux
Linux 2.4
Brain Fuck Scheduler (BFS), որը նույնպես ստեղծվել է Kolivas-ի կողմից, CFS-ի այլընտրանքն է:
FreeBSD
FreeBSD-ն օգտագործում է հետադարձ կապի բազմամակարդակ հերթ՝ 0-255 միջակայքում առաջնահերթություններով: 0-63-ը վերապահված է ընդհատումների համար, 64-127-ը՝ միջուկի վերին կեսի համար, 128-159-ը՝ իրական ժամանակի օգտատերերի շղթաների համար, 160-223-ը՝ ժամանակի փոխանակման օգտատերերի շղթաների համար, և 224-255-ը՝ անգործուն օգտագործողների շղթաների համար: Նաև, ինչպես Linux-ը, այն օգտագործում է ակտիվ հերթի կարգավորում, բայց ունի նաև անգործուն հերթ:
Այն ամենը, ինչ նկարագրված էր նախորդ մի քանի բաժիններում, ավելի շատ կենտրոնացած էր գործընթացի սեփական ժամանակի խնդրի վերաբերյալ հետագա հետազոտություններ կատարելու վրա և շատ ավելի փոքր չափով. գործնական կիրառություններ. Լրացնելով այս բացը, մենք կուրվագծենք գործընթացի ճիշտ ժամանակը հաշվարկելու եղանակներից մեկը՝ հիմնվելով դրա էվոլյուցիայի վիճակագրական տվյալների վրա:
Դիտարկենք միաչափ պրոցես, որի վիճակը բնութագրվում է իրական x փոփոխականով։ Ենթադրենք, որ գործընթացի դինամիկայի դիտարկումները կատարվում են t աստղագիտական ժամանակում, այնպես որ t = t k և x = x k, k =1, ..., n դիտման ֆիքսված պահեր և համապատասխան արժեքներ են: գործընթացում ասվում է. Կան շատ տարբեր մաթեմատիկական մեթոդներ, ինչը հնարավորություն է տալիս կառուցել կորեր, որոնք կամ անցնում են կետերով (t k, Xk), կամ դրանց «լավագույն մոտեցում»: Այս կերպ ստացված x = x(t) ֆունկցիաները մեր մտքերում տպավորություն են ստեղծում, որ դիտարկվող գործընթացը կախված է երկնային մարմինների մեխանիկական շարժումից և, հետևաբար, դրա վիճակն արտահայտվում է աստղագիտական t ժամանակի միջոցով։ Այս եզրակացությունը կարելի էր հաշվի առնել. եթե գործընթացի հետագա ընթացքը կանխատեսելիս անընդհատ դժվարություններ չառաջանային։ Մեծ թվով տարբեր գործընթացների համար, որոնք անմիջականորեն կապված չեն երկնային մարմինների մեխանիկական շարժումների հետ, դիտման միջակայքից դուրս x = x(t) ֆունկցիայի օգտագործմամբ ստացված տեսական կանխատեսումները սկսում են զգալիորեն շեղվել հետագա փորձարարական տվյալներից: Նրանք սովորաբար փորձում են բացատրել տեսության և փորձի միջև անհամապատասխանության պատճառը անհաջող մշակման մեթոդով, բայց դա կարող է լինել հարցի էությունը:
Մեզ հետաքրքրող ցանկացած գործընթաց տեղի է ունենում Տիեզերքում: Նա, անշուշտ, «զգում է» երկնային մարմինների շարժման ազդեցությունը։ Այնուամենայնիվ, այս ազդեցությունը կարող է «ոչ կոշտ» լինել, ոչ որոշիչ: Սա, մասնավորապես, կարող է դրսևորվել նրանով, որ աստղագիտական ժամանակի որոշակի ընդմիջումներով գործընթացի վիճակը մնում է անփոփոխ։ Այս առումով հիշենք արտաքին աշխարհից մեկուսացված փակ դատարկ սենյակի ավելի վաղ օրինակը։ Թող միայն մեկ կենդանի թռչի սենյակ: Մի քանի օրվա ընթացքում «room-fly» համակարգի վիճակի փոփոխությունները կախված կլինեն ճանճի շարժումներից, քանի որ սենյակի վիճակի փոփոխություն չի կարելի սպասել: Միաժամանակ, դժվար է պատկերացնել, որ ճանճի վարքագիծը խստորեն կապված է աստղագիտական ժամանակի ընթացքի հետ։
Այսքան երկար շեղում կատարելով՝ եկեք անցնենք գործընթացի սեփական ժամանակը հաշվարկելու ալգորիթմի նկարագրությանը:
Այս ալգորիթմում որպես ժամանակի բնական չափիչ ընտրվում է տեղական մաքսիմումների հաշվարկման միավորը։ Բացի այդ, հաշվի են առնվում գործընթացի անշարժ վիճակի հնարավոր հատվածները, որոնց վրա, ինչպես նշվեց ավելի վաղ, դադարում է համապատասխան ժամանակը: Քանի որ երկու վիճակների ինքնությունը կարելի է ասել միայն չափման ճշտության սահմաններում, հետևում օգտագործվում է որոշակի դրական թիվ e՝ չափման թույլատրելի սխալ։
Այսպիսով, ալգորիթմի համար մուտքային տվյալները n բնական թիվն են, դրական թիվը՝ 8, զանգվածները (tk) և (x k), k = 1, ..., n Ծրագրավորման հեշտության համար ալգորիթմը ներկայացված է ձևով չորս հաջորդաբար կատարված մոդուլներից:
Մոդուլ 1,օգտագործելով p, e, t k), (x k) տվյալները, ընդհանուր դեպքում, ձևավորում է նոր զանգվածներ 7 = (7+ X = (X t) և շատ կոնկրետ ուղեկցող զանգված P = (?), որտեղ 1 = 1, ..., t, և t<Сп. Основное назначение этого модуля -- выявление в массиве x k) последовательностей идентичных состояний процесса, сохранение первых элементов в таких последовательностях и удаление всех остальных и, наконец, уменьшение по определенному, правилу исходного интервала наблюдения от t до на сумму тех промежутков времени, в которых процесс протекает стационарно.
Մոդուլ 1-ը ներառում է հետևյալ ընթացակարգերը.
p: = 1, t: = 0, k: = 1:
էջերում Ներկայացվում են 1, 2 հաշվիչներ հատուկ սկզբնական արժեքներով.
էջերում 3, 4 հաշվիչի արժեքները մեծանում են 1-ով:
Ստուգեք վիճակը k^n. Եթե այն ավարտված է, ապա անցեք քայլ 6-ին, հակառակ դեպքում գնացեք 11-րդ քայլին:
Ստուգեք x k --x k = e անհավասարությունը, ապա անցեք 7-րդ քայլին, հակառակ դեպքում անցեք 9-րդ քայլին:
7. tii = ti - (tkl - tk), i = k1, ..., p.
Այս ընթացակարգը նշանակում է, որ եթե Xk-ի և Xk 1-ի արժեքները սխալի շրջանակներում չեն տարբերվում, ապա tk-ից սկսած բոլոր ժամանակային կետերը կրճատվում են tki-tk-ով:
r = r. Վերադարձ դեպի 4 կետ։
Tv = t k; X v:=x k ; p = p v = v+l., այսինքն. ձևավորվում են T, X, P զանգվածների տարրերը և վերագրվում է հաջորդ v արժեքը։
- 10. Վերցրեք (t k, ..., t n AND (Xk, - X n) որպես n--k 1 + 1 չափման սկզբնական զանգվածներ և այնուհետև վերադարձեք քայլ 2:
- 11. Տպել m, (T), (X,) և (P,), որտեղ i = l, ..., t.
Եկեք բացատրենք ուղեկցող P զանգվածի տարրերի նշանակությունը: Նախորդ տեքստից հետևում է, որ pk-ի արժեքը հավասար է զանգվածի այն տարրերի թվին (xk), որոնք ուղղակիորեն հաջորդում են և տարբերվում x pi+-ից ... +, + e-ից պակաս Մենք նաև նշում ենք, որ pi+ ... +p m = n:
Օրինակ 1. Տրված է՝ n = 20, (/*) = (2, 4, 7, 10, 12, 13, 15, 17, 20, 22, 24, 25,
- 27, 30, 32, 33, 34, 35, 36) և (x,)= (4, 4, 6, 6, 6, 3, 2, 4, 3, 3, 3, 2, 2, 4, 5 , 5,
- 5, 4, 3), տես նկ. 9, ա.
Մոդուլ 1-ի կատարման արդյունքում ստացվում է m = 11,
(G) = (2, 3, 4, 6, 8, 11, 1-2, 15, 17, 18, 19) = (4, 6, 3, 2, 4, 3, 2); 4,5,4,3)
i(d.) = (2, 4, 1, 1, 1.3, 2, 1.3, 1, 1), տես նկ. 9, բ.
Մոդուլ 2.Դրա համար մուտքային տվյալները բնական թիվ են m, ինչպես նաև զանգվածներ (7+ (X L), = 1, ..., m: Այս մոդուլը զանգվածում (TJ-ն նույնացնում է ժամանակի պահերը [TM a], 1 = 1: մ (մլ Օրինակ 2. m, (Ть) և (X,] արժեքները փոխառված են նախորդ օրինակից: Մոդուլ 2-ն ավարտելուց հետո մենք ստանում ենք ml = 3, m2 = 8, (Ш,) = (3, 8, 17): ), (Т*) = (3, 4, 6, 8, 11, 12, 15, 17), տես նաև նկ. 9, բ. Մոդուլ 3.Մուտքային տվյալներ ml, m2, (TM n), 1 = 1, ..., ml, (G*), /2 = 1, ..., gn2: Այս մոդուլը նախատեսված է բանաձևով զանգված (t(-r) կառուցելու համար Որտեղ է TV 6-ը [TMp, TMn+i] t փոփոխականը x փոփոխականի փոփոխության արդյունքում առաջացած ճիշտ ժամանակն է: Դրա բնական չափումը տեղական մաքսիմումների հաշվարկման միավորն է: Օրինակ 3. T 2) նախնական տվյալները նույնն են, ինչ մլ, m2 ITM արժեքները, իսկ օրինակ 2-ում: Համապատասխան հաշվարկներից հետո մենք ստանում ենք Н = (0; 0.2; 0.6; 1;
1,33; 1,78; 2). Մոդուլ 4.Արդյունքների արդյունք է առաջացնում՝ համապատասխանություն հաստատելով m-ի և զանգվածի x տարրերի միջև (xk): Օրինակ 4. 2-րդ և 3-րդ օրինակների տվյալների հիման վրա ստացվում է հետևյալ արդյունքը, տես նկ. 9, մեջ: t: 0; 0.2; 0,6; 1; 1.33; 1.44; x: 6; 3; 2; 4; 3T 0 2; Այսպիսով, դիտարկված ալգորիթմը մեզ թույլ է տալիս զարգացնել գործընթացի սեփական ժամանակի հայեցակարգը՝ հիմնվելով աստղագիտական ժամանակային մասշտաբով արձանագրված գործընթացի վիճակի փոփոխությունների մասին տեղեկատվության վրա: Միանգամայն պարզ է, որ դուք կարող եք օգտագործել այլ ալգորիթմներ, որոնք հիմնված են, օրինակ, տեղական նվազագույնների հաջորդականության կամ տեղական առավելագույնից և նվազագույնից բաղկացած խառը հաջորդականության հաշվարկի վրա: Փորձարարական տվյալների մշակման ժամանակ, հավանաբար, պետք է փորձարկվեն տարբեր տարբերակներ: Եթե ինչ-ինչ պատճառներով փորձարարն ընտրել է հատուկ ժամանակներից մեկը և ստացել զանգվածներ (t4 և (xk), ապա հաջորդ փուլում նա պետք է օգտագործի որոշ մաթեմատիկական մեթոդներ՝ փորձարարական կետերը (t*, x) մոտավոր աշխարհի ինչ-որ մոտավոր գծով մոտավորելու համար։ գործընթացի x = x(t) Այս տողն էքստրապոլյացիայի ենթարկելով սկզբնական դիտարկման շրջանից՝ նա կարող է կանխատեսումներ անել գործընթացի հետագա ընթացքի վերաբերյալ: Հետաքրքիր է նշել հաշվողական փորձը, որը նախատեսված է գնահատելու առաջարկվող ալգորիթմի օգտագործման հեռանկարները: Որպես փորձարարական նյութ ընտրվել են գետերի տարեկան հոսքերի տվյալները: Վախշ (Տաջիկստան) նախորդ 40 տարիների ընթացքում. Նույն ժամանակահատվածում տեղեկատվություն է վերցվել Գայլի թվի դինամիկայի մասին՝ արեգակնային ակտիվության ամենահաճախ օգտագործվող ինտեգրալ ցուցանիշը: Վերջինս հիմք հանդիսացավ արեգակնային ակտիվության գործընթացի պատշաճ ժամանակի մշակման համար։ Ժամանակակից ժամանակներում գետերի ծախսերի մասին տեղեկատվությունը փոխվել է: Վախշը, իսկ հետո դիտարկման ժամանակաշրջանում տրվել է ջրի հոսքի տեսական կախվածություն՝ որպես արեգակնային ակտիվության պատշաճ ժամանակի ֆունկցիա։ Ստացված գրաֆիկի բնորոշ առանձնահատկությունը առավելագույն և նվազագույն ծախսերի գրեթե պարբերական վարքն է: Ծախսերը, սակայն, անփոփոխ չեն մնում։ Նախորդ ալգորիթմի փոխարկված տարբերակը կատարման ամենակարճ մնացած ժամանակի ալգորիթմն է: Համաձայն այս ալգորիթմի, ժամանակացույցն ամեն անգամ ընտրում է կատարման մնացած ամենակարճ ժամանակով գործընթացը: Այս դեպքում անհրաժեշտ է նաև նախապես իմանալ առաջադրանքի կատարման ժամանակը։ Երբ նոր առաջադրանք է գալիս, դրա կատարման ընդհանուր ժամանակը համեմատվում է ընթացիկ առաջադրանքի կատարման մնացած ժամանակի հետ: Եթե նոր առաջադրանքի կատարման ժամանակն ավելի կարճ է, ընթացիկ գործընթացը կասեցվում է, և վերահսկողությունը փոխանցվում է նոր առաջադրանքին: Այս սխեման թույլ է տալիս արագ սպասարկել կարճ հարցումները: Երեք մակարդակի պլանավորում Խմբաքանակի մշակման համակարգերը թույլ են տալիս եռաստիճան պլանավորում, ինչպես ցույց է տրված նկարում: Երբ նոր առաջադրանքները գալիս են համակարգ, դրանք նախ տեղադրվում են սկավառակի վրա պահվող հերթում: Մուտք մուտքի ժամանակացույց
ընտրում է առաջադրանք և փոխանցում համակարգին: Մնացած առաջադրանքները մնում են հերթում: Աշխատանքը համակարգ մտնելուց հետո դրա համար կստեղծվի համապատասխան գործընթաց, և այն կարող է անմիջապես մրցակցել պրոցեսորին հասանելիության համար: Այնուամենայնիվ, հնարավոր է, որ շատ գործընթացներ կան, և դրանք բոլորը չեն տեղավորվում հիշողության մեջ, այնուհետև դրանցից մի քանիսը կտեղադրվեն սկավառակի վրա: Պլանավորման երկրորդ մակարդակը որոշում է, թե որ գործընթացները կարող են պահվել հիշողության մեջ, և որոնք կարող են պահվել սկավառակի վրա: Սա այն է, ինչ նա անում է հիշողության ժամանակացույց
. Հիշողության ժամանակացույցը պարբերաբար դիտարկում է սկավառակի վրա գտնվող գործընթացները՝ որոշելու համար, թե որոնք տեղափոխել հիշողություն: Ժամանակացույցի կողմից օգտագործվող չափանիշներից են հետևյալը. 1. Որքա՞ն ժամանակ է անցել այն պահից, երբ գործընթացը փոխարինվեց սկավառակի վրա կամ բեռնվեց սկավառակից: 2. Որքա՞ն ժամանակ է գործընթացն օգտագործում պրոցեսորը: 3. Որքա՞ն է գործընթացի չափը (փոքր գործընթացները չեն խանգարում): 4. Ո՞րն է գործընթացի կարևորությունը: Պլանավորման երրորդ մակարդակը պատասխանատու է պատրաստ վիճակում գտնվող գործընթացներին պրոցեսոր մուտք գործելու հնարավորություն տալու համար: Երբ մենք խոսում ենք «ժամանակացույցի» մասին, մենք սովորաբար նկատի ունենք Պրոցեսորի ժամանակացույց
. Այս ժամանակացույցն օգտագործում է իրավիճակին հարմար ցանկացած ալգորիթմ՝ ինչպես ընդհատումներով, այնպես էլ առանց ընդհատումների: Մենք արդեն դիտարկել ենք այս ալգորիթմներից մի քանիսը, իսկ մյուսների հետ կծանոթանանք ավելի ուշ։ Պլանավորում ինտերակտիվ համակարգերում: Ցիկլային պլանավորում. Ամենահին, ամենապարզ, ամենաարդար և ամենահաճախ օգտագործվողներից մեկը ցիկլային պլանավորման ալգորիթմն է: Յուրաքանչյուր գործընթացին տրվում է պրոցեսորի որոշակի ժամանակ, այսպես կոչված, ժամանակի հատված: Եթե գործընթացը դեռ աշխատում է ժամանակի հատվածի վերջում, այն դադարեցվում է, և վերահսկողությունը փոխանցվում է մեկ այլ գործընթացի: Իհարկե, եթե գործընթացը արգելափակվում է կամ վաղաժամ ավարտվում, այս պահին վերահսկման անցում է տեղի ունենում: Շրջանակային պլանավորման իրականացումը պարզ է. Ժամանակացույցը միայն պետք է պահպանի գործընթացների ցանկը պատրաստ վիճակում: Երբ գործընթացը հասնում է իր ժամկետի սահմանին, այն ուղարկվում է ցուցակի վերջ: Այս ալգորիթմի միակ հետաքրքիր կողմը քվանտի երկարությունն է։ Մի գործընթացից մյուսին անցնելը որոշակի ժամանակ է պահանջում. անհրաժեշտ է պահպանել և բեռնել ռեգիստրները և հիշողության քարտեզները, թարմացնել աղյուսակներն ու ցուցակները, պահպանել և վերաբեռնել հիշողության քեշը և այլն: Եզրակացությունը կարելի է ձևակերպել հետևյալ կերպ. չափազանց փոքր քվանտ կհանգեցնի գործընթացների հաճախակի փոխարկումը և փոքր արդյունավետությունը, բայց չափազանց մեծ քվանտը կարող է դանդաղ արձագանքել կարճ ինտերակտիվ հարցումներին: Մոտ 2 0 -5 0 ms քվանտային արժեքը հաճախ ողջամիտ փոխզիջում է: Առաջնահերթության պլանավորում. Շրջանակային պլանավորումն ունի կարևոր ենթադրություն, որ բոլոր գործընթացները հավասար են: Մեծ թվով օգտատերեր ունեցող համակարգչի իրավիճակում դա չի կարող լինել: Օրինակ՝ բուհում նախ պետք է սպասարկեն դեկաններին, հետո դասախոսներին, քարտուղարներին, հավաքարարներին, հետո միայն ուսանողներին։ Նման արտաքին գործոնները հաշվի առնելու անհրաժեշտությունը հանգեցնում է առաջնահերթության պլանավորման: Հիմնական գաղափարը պարզ է. յուրաքանչյուր գործընթացին տրվում է առաջնահերթություն, և վերահսկողությունը փոխանցվում է ամենաբարձր առաջնահերթություն ունեցող պատրաստ գործընթացին: Մի քանի հերթեր. Առաջին առաջնահերթ ժամանակացույցներից մեկը ներդրվել է CTSS համակարգում (համատեղելի ժամանակային համակարգում CTSS համակարգի հիմնական խնդիրն այն էր, որ գործընթացի անցումը չափազանց դանդաղ էր, քանի որ IBM 7094 համակարգիչը կարող էր պահել միայն մեկ գործընթաց հիշողության մեջ): Յուրաքանչյուր անջատիչ նշանակում էր ընթացիկ գործընթացի բեռնաթափում սկավառակի վրա և կարդալ նոր գործընթացը սկավառակից: CTSS-ի մշակողները արագ հասկացան, որ արդյունավետությունն ավելի մեծ կլիներ, եթե պրոցեսորով սահմանափակված գործընթացներին տրվեր ավելի մեծ ժամանակ, քան եթե նրանց տրվեին փոքր ժամանակային հատվածներ, բայց հաճախ: Սա մի կողմից կնվազեցնի հիշողությունից սկավառակ փոխանցումների քանակը, իսկ մյուս կողմից՝ կհանգեցնի արձագանքման ժամանակի վատթարացման, ինչպես արդեն տեսանք։ Արդյունքում մշակվել է լուծում առաջնահերթ դասերով։ Ամենաբարձր առաջնահերթ դասի գործընթացներին հատկացվել է մեկ քվանտ, հաջորդ դասի պրոցեսներին հատկացվել է երկու քվանտ, հաջորդ դասի պրոցեսներին հատկացվել է չորս քվանտ և այլն: Երբ պրոցեսը սպառել է իր ամբողջ հատկացված ժամանակը, այն տեղափոխվել է ավելի ցածր դաս. Որպես օրինակ, դիտարկենք մի գործընթաց, որը պետք է հաշվարկի ավելի քան 100 քվանտա: Սկզբում նրան կտրվի մեկ քվանտ, հետո այն կմղեն սկավառակի վրա։ Հաջորդ անգամ նա ստանում է 2 քվանտա, այնուհետև 4, 8,16, 32, 64, թեև 64-ից նա օգտագործում է միայն 37-ը: Այս դեպքում 100-ի փոխարեն կպահանջվի ընդամենը 7 փոխանցում (ներառյալ նախնական բեռը), ինչը կլինի: անհրաժեշտ է՝ օգտագործելով շրջանաձև ալգորիթմը: Բացի այդ, քանի որ գործընթացն ավելի է խորանում առաջնահերթության հերթում, այն կսկսվի ավելի ու ավելի քիչ՝ պրոցեսորին տալով ավելի կարճ գործընթացներ: «Ամենակարճ գործընթացը հաջորդն է» Քանի որ «Առաջին ամենակարճ առաջադրանքը» ալգորիթմը նվազագույնի է հասցնում խմբաքանակի մշակման համակարգերի միջին շրջադարձային ժամանակը, կարելի է այն օգտագործել նաև ինտերակտիվ համակարգերում: Որոշակի չափով դա հնարավոր է։ Ինտերակտիվ գործընթացներն ամենից հաճախ հետևում են «հրամանի սպասելու, հրամանի կատարման, հրամանի սպասման, հրամանի կատարման...» օրինակին, եթե յուրաքանչյուր հրամանի կատարումը վերաբերվում է որպես առանձին առաջադրանք, կարող եք նվազագույնի հասցնել ընդհանուր միջին պատասխանը: ժամանակ՝ նախ կատարելով ամենակարճ առաջադրանքը: Միակ խնդիրն այն է հասկանալն է, թե սպասման գործընթացներից որն է ամենակարճը: Մեթոդներից մեկը հիմնված է գործընթացի երկարության գնահատման վրա՝ հիմնվելով գործընթացի նախորդ վարքագծի վրա: Այս դեպքում մեկնարկում է ամենակարճ գնահատված ժամանակով գործընթացը։ Ենթադրենք, որ հրամանի կատարման ակնկալվող ժամանակը T 0 է, իսկ հաջորդ կատարման ակնկալվող ժամանակը T 1 է: Հնարավոր է բարելավել ժամանակի գնահատումը` հաշվի առնելով այս ժամանակների կշռված գումարը T 0 + (1 - a)T 1: Ընտրելով a-ի համապատասխան արժեքը՝ մենք կարող ենք այնպես անել, որ գնահատման ալգորիթմը արագ մոռանա նախորդ գործարկումների մասին կամ, ընդհակառակը, երկար հիշի դրանք։ Հաշվի առնելով a = 1/2, մենք ստանում ենք մի շարք գնահատականներ. T 0, T 0/2 + T 1/2, T 0/4 + T 1/4 + T 2/2, T 0/8 + T 1/8 + T 2/4 + T 3/2: Երեք վազքից հետո գնահատման մեջ T 0-ի կշիռը կնվազի մինչև 1/8: Շարքի հաջորդ արժեքը գնահատելու մեթոդը նախորդ արժեքի և նախորդ գնահատման միջին կշռված միջինի միջոցով հաճախ կոչվում է ծերացում: Այս մեթոդը կիրառելի է շատ իրավիճակներում, երբ անհրաժեշտ է գնահատել նախորդ արժեքներից: Ծերացումը իրականացնելու ամենահեշտ ձևը a = 1/2-ն է: Ամեն քայլափոխի ձեզ պարզապես անհրաժեշտ է Ընթացիկ գնահատականին ավելացրեք նոր արժեք և գումարը բաժանեք կիսով չափ (1 բիթով աջ տեղափոխելով): Երաշխավորված պլանավորում: Պլանավորման սկզբունքորեն տարբեր մոտեցում է օգտատերերին իրական խոստումներ տալն ու հետո դրանք կատարելը: Ահա մի խոստում, որը հեշտ է ասել և հեշտ պահել. եթե պրոցեսորով կիսվեք n օգտագործողների հետ, ձեզ կտրվի պրոցեսորի հզորության 1/n-ը: Իսկ մեկ օգտվող և n պրոցեսոր աշխատող համակարգում յուրաքանչյուրը կստանա 1/n պրոցեսորային ցիկլ: Այս խոստումը կատարելու համար համակարգը պետք է հետևի պրոցեսների միջև CPU-ի բաշխմանը յուրաքանչյուր գործընթացի ստեղծման պահից: Համակարգն այնուհետև հաշվարկում է պրոցեսորի ռեսուրսների քանակը, որոնց իրավունքը տրված է գործընթացին, օրինակ՝ ստեղծման պահից ի վեր ժամանակը բաժանված n-ի: Այժմ մենք կարող ենք հաշվարկել գործընթացին տրված ժամանակի հարաբերակցությունը այն ժամանակին, որն իրավունք ունի: Ստացված 0.5 արժեքը նշանակում է, որ գործընթացը ստացել է իր հատկացված գումարի միայն կեսը, իսկ 2.0 նշանակում է, որ գործընթացը ստացել է երկու անգամ ավելի, քան ենթադրվում էր։ Այնուհետև սկսվում է ամենափոքր հարաբերակցությամբ գործընթացը, մինչև այն չի դառնա ավելի մեծ, քան իր մոտակա հարևանինը: Վիճակախաղի պլանավորում. Ալգորիթմը հիմնված է տարբեր ռեսուրսների, այդ թվում՝ պրոցեսորի, պրոցեսների վրա վիճակախաղի տոմսերի բաշխման վրա: Երբ պլանավորողը պետք է որոշում կայացնի, վիճակախաղի տոմսը ընտրվում է պատահականության սկզբունքով, և դրա սեփականատերը հասանելի է դառնում ռեսուրսին: Ինչ վերաբերում է պրոցեսորի հասանելիությանը, «վիճակախաղը» կարող է տեղի ունենալ վայրկյանում 50 անգամ, իսկ հաղթողը ստանում է 20 մս պրոցեսորի ժամանակ: Ավելի կարևոր գործընթացներին կարելի է լրացուցիչ տոմսեր տրամադրել՝ շահելու հավանականությունը մեծացնելու համար։ Եթե կա ընդամենը 100 տոմս, և դրանցից 20-ը մեկ գործընթացում են, ապա այն կստանա պրոցեսորի ժամանակի 20%-ը։ Ի տարբերություն առաջնահերթության ժամանակացույցի, որտեղ շատ դժվար է գնահատել, թե ինչ է նշանակում, ասենք, առաջնահերթություն 40, վիճակախաղի ժամանակացույցում ամեն ինչ ակնհայտ է։ Յուրաքանչյուր գործընթաց կստանա ռեսուրսների տոկոս, որը մոտավորապես հավասար է իր ունեցած տոմսերի տոկոսին: Վիճակախաղի պլանավորումն ունի մի քանի հետաքրքիր հատկություններ. Օրինակ, եթե ստեղծման ընթացքում պրոցեսը մի քանի տոմս է ստանում, ապա հաջորդ վիճակախաղում նրա շահելու հնարավորությունները համաչափ են տոմսերի քանակին։ Հաղորդակցման գործընթացները կարող են անհրաժեշտության դեպքում փոխանակել տոմսեր: Այսպիսով, եթե հաճախորդի գործընթացը հաղորդագրություն է ուղարկում սերվերի գործընթացին, այնուհետև արգելափակում է, այն կարող է իր բոլոր տոմսերը փոխանցել սերվերի գործընթացին՝ սերվերի գործարկման հնարավորությունը մեծացնելու համար: Երբ սերվերի գործընթացն ավարտվի, այն կարող է հետ վերադարձնել բոլոր տոմսերը: Արդար պլանավորում. Մինչ այժմ մենք ենթադրում էինք, որ յուրաքանչյուր գործընթաց վերահսկվում է անկախ նրանից, թե ով է դրա սեփականատերը: Հետևաբար, եթե օգտվող 1-ը ստեղծում է 9 պրոցես, իսկ օգտվող 2-ը՝ 1 պրոցես, ապա օգտագործելով շրջանաձև պլանավորում կամ հավասար առաջնահերթությունների դեպքում, օգտվող 1-ը կստանա պրոցեսորի 90%-ը, իսկ օգտվող 2-ը՝ միայն 10-ը: Նման իրավիճակներից խուսափելու համար որոշ համակարգեր նախքան պլանավորումը ուշադրություն են դարձնում գործընթացի սեփականատիրոջը: Այս մոդելում յուրաքանչյուր օգտատեր ստանում է պրոցեսորի որոշակի մասնաբաժին, և ժամանակացույցը ընտրում է գործընթաց՝ ըստ այդ փաստի։ Եթե մեր օրինակում յուրաքանչյուր օգտվող ուներ խոստացել է պրոցեսորի 50%-ը, հետո պրոցեսորի 50%-ը կստանան՝ անկախ պրոցեսների քանակից։ Պլանավորում իրական ժամանակի համակարգերում: Իրական ժամանակի համակարգերում ժամանակը էական դեր է խաղում: Շատ հաճախ, մեկ կամ մի քանի արտաքին ֆիզիկական սարքեր ստեղծում են մուտքային ազդանշաններ, և համակարգիչը պետք է համապատասխան կերպով արձագանքի դրանց որոշակի ժամանակահատվածում: Իրական ժամանակի համակարգերը բաժանված են իրական ժամանակի դժվար համակարգեր
, ինչը նշանակում է յուրաքանչյուր առաջադրանքի խիստ ժամկետների առկայություն (դրանք պետք է կատարվեն), և իրական ժամանակի ճկուն համակարգեր
, որտեղ ժամանակացույցի խախտումներն անցանկալի են, բայց ընդունելի։ Երկու դեպքում էլ ծրագիրը բաժանված է մի քանի գործընթացների, որոնցից յուրաքանչյուրը կանխատեսելի է։ Այս գործընթացները հաճախ կարճ են և ավարտում են իրենց աշխատանքը մեկ վայրկյանում: Երբ արտաքին ազդանշան է հայտնվում, ժամանակացույցի պահպանումը պետք է ապահովի ժամանակացույցը: Արտաքին իրադարձությունները, որոնց համակարգը պետք է արձագանքի, կարելի է բաժանել պարբերական(կանոնավոր պարբերականությամբ տեղի է ունենում) և ոչ պարբերական(առաջանում է անկանխատեսելիորեն): Կարող են լինել իրադարձությունների մի քանի պարբերական հոսքեր, որոնք համակարգը պետք է մշակի: Կախված յուրաքանչյուր իրադարձության մշակման ժամանակից, համակարգը կարող է չկարողանալ ժամանակին մշակել բոլոր իրադարձությունները: Առնչվող տեղեկություններ.