Ժամանակաբաշխում

Հաշվարկներում **ժամանակաբաշխումը** մի քանի օգտագործողների միջև հաշվողական ռեսուրսների միաժամանակ բաշխումն է բազմածրագրավորման և բազմախնդրության միջոցով։ Դրա ներկայացումը 1960-ականներին և որպես հաշվարկման մշտական մոդելի հզորացում 1970-ականներին հաշվարկման պատմության մեջ մեծագույն տեխնոլոգիական վերելք էր։ Թույլ տալով մի քանի օգտագործողների համաժամանակյա օգտագործել միևնույն համակարգիչը` ժամանակաբաշխումը կտրականապես իջեցրեց հաշվարկային կարողությունների գները և հնարավոր դարձրեց անհատներին և կազմակերպություններին օգտագործել համակարգիչ` առանց ձեռքի տակ ունենալու այն։

## Պատմություն
### Փաթեթային վերամշակում
Վաղ համակարգիչներ չափազանց թարկարժեք սարքեր էին և չափազանց դանդաղ էին աշխատում նոր մոդելների համեմատությամբ։ Մեքենաներ սովորաբար հատուկ առաջադրանքների հաջորդականություն կատարելու համար էին ստեղծված և աշխատում էին ղեկավարման վահանակի միջոցով։ Օպերատորը ձեռքով մտնում էր ծրագրեր անջատիչների միջոցով, որպեսզի բեռնեն և աշխատեցնեն ծրագրաշարերը։ Այս ծրագրերը կարող էին խլել ժամեր, անգամ շաբաթներ աշխատելու համար։ Ինչքան համակարգիչների գործարկման արագությունը աճեց, աշխատաժամանակը նազեց, անհանգստության պատճառ էր մնում հաջորդ ծրագիրը սկսելու համար օգտագործող ժամանակը։ Զարգացան փաթեթային վերամշակման մեթոդները, որպեսզի նվազեցնեն անցման համար օգտագործվող ժամանակը` ծրագրերը հերթի մեջ գցելով այնպես, որ մեկը սկսեր աշխատանքը մյուսի ավարտելուն պես։

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

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

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

Այս գաղափարը առաջին անգամ նկարագրվել է 1954 թվականին MIT-ի ամառային դասընթացների ժամանակ Ջոն Բաքուսի կողմից։ Հետագայում Բոբ Բեմերը իր` *Automatic Control Magazine-*ում տպված «Ինչպես դիտարկել համակարգիչը» հոդվածում խոսել է այդ մասին։ 1958-ին տպագրված թերթում Վ. Ֆ. Բաուերը գրում է. «Համակարգիչները պետք է մի քանի խնդիրներ միաժամանակ լուծեն։ Բոլոր կազմակերպությունները պետք է ներածման-արտածման համակարգեր տեղադրեն իրենց տարածքներում և ժամանակ գնեն համակարգչում ճիշտ այնպես, ինչպես ցանկացած տնային տնտեսություն էլեկտրաէներգիա կամ ջուր է գնում համապատասխան ընկերություններից»։

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

Առաջին նախագիծը, որ իրականացնում էր ժամանակաբաշխ համակարգ, MIT-ում նախաձեռնել է Ջոն ՄաքՔարթին 1959-ին։ Այն նախագծված էր IBM 704-ի վրա, իսկ հետագայում լրացուցիչ փոփոխությունների արդյունքում ստեղծվեց IBM 709-ը, որը ժամանակաբաշխման համար բավականաչափ հզորություն ունեցող առաջին համակարգիչներից էր։ Նախագծի արդյունքներից էր *Compatible Time-Sharing System*-ը կամ CTSS-ը, որը ցուցադրվեց 1961-ի նոյեմբերին։ CTSS-ը առաջին ժամանակաբաշխ համակարգն էր, որ գործածության մեջ մնաց մինչև 1973 թվականը։ Առաջին ցուցադրված ժամանակաբաշխ համակարգերից էր PLATO II-ը, որը ստեղծվել էր 1961-ին Դոնալդ Բիթզերի կողմից։ Բայց սա հատուկնպատակային համակարգ էր։ Բիթերը երկար ժամանակ ասել է, որ PLATO նախագիծը կստանար ժամանակաբաշխման արտոնագիր, եթե միայն Իլինոյսի համալսարանը չկորցներ 2 տարվա արտոնագիրը։ JOSS- ը սկսել է ժամանակաբաշխման ծառայությունը 1964 թվականի հունվարին։

Առևտրային լուրջ հաջողություններ ունեցող առաջին ժամանակաբաշխ համակարգը Dartmouth-ն էր։

### Զարգացում
Ուշ 1960-ականների և 1970-ականների ընթացքում համակարգչային տերմինալները բազմակողմանիորեն համալրվեցին մեծ կամակերպչական հիմնամասային համակարգիչներով, որտեղ շատ իրականացումներում անընդեմջ հարցվում էր` տեսնելու, թե որևէ լրացուցիչ ինֆորմացիա հասանելի է, կամ որևէ գործողության համար դիմում եղել է օգտագործողների կողմից։ Հետագայում տեխնոլոգիաները փոխկապակցված էին ընդմիջման պայմաններով, և նրանցից ոմանք օգտագործում էին զուգահեռ տվյալների փոխանցման տեխնոլոգիաները, ինչպիսին է IEEE 488 ստանդարտը։ Ընդհանուր առմամբ, համակարգչային տերմինալները օգտագործվել են համակցված հատկությունների վրա, ճիշտ այնպես, ինչպես սեղանի համակարգիչները կամ անձնական համակարգիչները։ Անհատական համակարգիչների վաղ օրերին շատերը, իրականում, օգտագործվում էին որպես ժամանակակից համակարգերի համար խելացի տերմինալներ։

Dartmouth ժամանակաբաշխ համակարգի ստեղծողը 1968-ին ասել է. «արձագանքման համար օգտագործվող 10 վայրկյանից ավելի ցանկացած ժամանակը ավերում է սեփական համակարգիչ ունենալու երաանքը»։ Եվ հակառակը` ժամանակաբաշխ համակարգի օգտագործողները կարծում էին, որ իրենց տերմինալը համակարգիչն է։ 1980-ականներին միկրոհաշվարկման զարգացմանը զուգընթաց` ժամանակաբաշխումը ստվերվեց, քանի որ միկրոպրոցեսրները բավական էժան էին, և յուրաքանչյուրը կարող էր օգտագործել CPU-ի ժամանակը իր կարիքների համար, անգամ եթե անգործության մեջ է։ Այնուամենայնիվ, համացանցը ժամանակաբաշխման ընդհանուր գաղափարը նորից արդիական դարձրեց։ Թանկարժեք կորպորատիվ սերվերները, որոնք միլիոններ արժեն, կարող են ընդունել հազարավոր հաճախորդներ, որոնք կիսում են ընդհանուր ռեսուրս։ Վաղ շրջանի հաջորդական տերմինալներով վեբ կայքերը հիմնականում լինում են գործունեության մեջ, որին հետևում է անգործության շրջանը։ Այս «պայթող» բնույթը թույլատրում է, որ ծառայությունը օգտագործվի միաժամանակ մի քանի հաճախորդների կողմից` սովորաբար առանց կանխատեսված հաղորդակցման ուշացումների, մինչև սերվերները չափազանց զբաղված չլինեն։

### Ժամանակաբաշխումը որպես բիզնես
1960-ականներին մի շարք ընկերություններ սկսեցին մատուցել ժամանակաբաշխման ծառայություններ` որպես ծառայողական գրասենյակներ։ Վաղ շրջանի համակարգերը օգտագործում էին Model 33 KSR, ASR, Teletype Model 35 KSR կամ ASR մեքենաներ ASCII միջավայրերում և IBM ընտրովի գրելու հիմքով տերմինալներ (հատկապես` IBM 2741)` երկու տարբեր յոթբիթանի կոդերով։ Նրանք միանում էին կենտրոնական համակարգչին Bell 103A մոդեմի միջոցով կամ մի քանի միակցված մոդեմների միջոցով, որոնք կարող էին վայրկյանում 10–15 սիմվոլի հետ աշխատել։ Ավելի ուշ համակարգերում տերմինալներն ու մոդեմները սատարում էին վայրկյանում 30–120 սիմվոլ։ Ժամանակաբաշխման համակարգը պետք է ապահովեր ամբողջովին գործուն միջավայր, ներառյալ ծրագրավորման լեզուների տարբեր պրոցեսրներ, տարբեր ծրագրային համալիրներ, ֆայլերի պահեստներ, անգվածային տպագրություն և ոչ առցանց պահեստավորում։ Օգտագործողները վճարում էին տերմինալների համար, առանձին վճար կար միանալու յուրաքանչյուր ժամի համար, CPU-ի ժամանակի համար և սկավառակի պարունակության յուրաքանչյուր ամսվա սպառած կիլոբայթերի համար։

Համընդհանուր օգտագործվող ժամանակաբաշխ համակարգերից են SDS 940-ը, PDP-10-ը և IBM 360-ը։ Ծառայություններ մատուցող ընկերություններից են GE's GEISCO-ը, IBM-ի մասնաճյուղ համարվող The Service Bureau Corporation-ը, Tymshare-ը (1966-ին է հիմնադրվել), National CSS (հիմնադրվել է 1967-ին), Bolt-ը, Beranek-ը և Newman-ը (BBN): Մինչև 1968 թվական, միայն US National Institutes of Health (NIH)-ին սատարող 32 այդպիսի ծառայություններ կային։ *Auerbach Guide to Timesharing-ը* (1973) lists ցուցակով ներկայացնում է ժամանակաբաշխում օգտագործող իրարից 125 տարբեր նծառայություններ`այնպիսի գործիքներ օգտագործող, ինչպիսին են Burroughs-ը, CDC-ը, DEC-ը, HP-ն, Honeywell-ը, IBM-ը, RCA-ը, Univac-ը, and XDS-ը։

#### Վայրիվերումներ
1975-ին խոսվում էր` սուպեր-մինի համակարգիչների հսկայածավալ արտադրությունը օգտագործում էր ժամանակաբաշխում։ Ինչ վերաբերում է DEC-երին` մի ժամանակ IBM-ից հետո երկրորդ խոշորագույն համակարգչային ընկերությանը, նրանց PDP-10—ը և IBM-ի 360/67-ը լայնորեն կիրառվում էին կոմերցիոն ժամանակաբաշխ ծառայություններից, ինչպիսին են CompuServe-ը, On-Line Systems-ը (OLS) և Rapidata-ն։

#### Rapidat-ն` որպես օրինակ
Չնայած ժամանակաբաշխման շատ ծառայություններ փակվեցին, Rapidata-ն մնաց և դարձավ National Data Corporation-ի մի մասը։ 1982-ին բավականին հետաքրքրություն կար նրա վերաբերյալ։ Անգամ նրանից ստացվող եկամուտների` 66% կրճատվելու և National Data-ի կողմից սեփական խնդիրները մշակելու դեպքում էլ քայլեր էին արվում այս ժամանակաբաշխման բիզնեսը պահելու համար։

### Համակարգչային սպասարկման ծրագիր
1964-ին ստեղծվելով` Multics օպերացիոն համակարգը նախագծված էր որպես հաշվարկային սպասարկող ծրագիր`մոդելավորված էլեկտրոնային կամ հեռախոսային ծրգրերի վրա։ 1970-ական թվականներին Թեդ Նելսոնի օրիգինալ «Xanadu» հիպերտեքստային պահոցը նախատեսված էր որպես այդպիսի ծառայություն։ Թվում էր, թե համակարգչային արդյունաբերությունը աճել է, երբ հաշվապահական ռեսուրսների նման համախմբումը չի հանդիսանա որպես ժամանակաբաշխ համակարգ։ 1990-ական թվականներին գաղափարը, սակայն, վերափոխվեց որոշ ամպային հաշվարկների։

### Անվտանգություն
Ժամանակաբաշխումը առաջին դեպքն էր, երբ տարբեր օգտագործողների մի քանի պրոցեսներ աշխատում էին միևնույն մեքենայի վրա, և պրոցեսները կարող էին խանգարել իրար։ Օրինակ` մի պրոցեսը կարող է փոփոխել բոլոր պրոցեսների կողմից օգտագործվող ընդհանուր ռեսուրսը, ինչպիսին հիշողության որևէ փոփոխականն է։ Երբ միայն մի օգտագործող էր համակարգում, սա կարող է սխալ արդյունքի բերել։ Մի քանի օգտագործողնեի դեպքում մյուսները չեն տեսնում այն ինֆորմացիան, որի համար դիմում են։ Սա կանխելու համար օպերացիոն համակարգը կարիք ունի մտածելու, թե յուրաքանչյուր պրոցես ինչ նախապատվություններ ունի։ Օրինակ` օպերացիոն համակարգը կարող է թույլ չտալ, որ կոնկրետ պրոցես դիմի կոնկրետ փոփոխականի։

Համակարգչային անվտանգության վերաբերյալ առաջին միջազգային համաժողովը անցկացվել է 1971-ին Լոնդոնում և հիմնականում անցկացվում էր ժամանակաբաշխման արտադրության և իր հաճախորդների համար։

## Նշանավոր ժամանակաբաշխ համակարգեր
Վաղ շրջանի կարևորագույն համակարգերը․

* Allen-Babcock RUSH (Remote Users of Shared Hardware) Time-sharing System on IBM S/360 hardware (1966) → Tymshare
* AT&T Bell Labs Unix (1971) → UC Berkeley BSD Unix (1977)
* BBN PDP-1 Time-sharing System → Massachusetts General Hospital PDP-1D → MUMPS
* BBN TENEX → DEC TOPS-20, Foonly FOONEX, MAXC OS at PARC, Stanford Low Overhead Timesharing System (LOTS)
* Berkeley Timesharing System at UC Berkeley Project Genie → Scientific Data Systems SDS 940 (Tymshare, BBN, SRI, Community Memory) → BCC 500 → MAXC at PARC
* Burroughs Time-sharing MCP → HP 3000 MPE
* Cambridge Multiple Access System was developed for the Titan, the prototype Atlas 2 computer built by Ferranti for the University of Cambridge. This was the first time-sharing system developed outside the United States, and which influenced the later development of UNIX.
* Compower Ltd., a wholly owned subsidiary of the National Coal Board (later British Coal Corporation) in the UK. Originally National Coal Board (NCB) Computer Services, it became Compower in 1973 providing computing and time-share services to internal NCB users and as a commercial service to external users. Sold to Philips C&P (Communications and Processing) in August 1994.
* CompuServe, also branded as Compu-Serv, CIS.
* Compu-Time, Inc., on Honeywell 400/4000, started in 1968 in Ft Lauderdale, Florida, moved to Daytona Beach in 1970.
* CDC MACE, APEX → Kronos → NOS → NOS/VE
* Dartmouth Time Sharing System (DTSS) → GE Time-sharing → GEnie
* DEC PDP-6 Time-sharing Monitor → TOPS-10 → BBN TENEX → DEC TOPS-20
* DEC TSS-8 → RSTS-11, RSX-11 → VAX/VMS
* HP 2000 Time-Shared BASIC
* HP 3000 series
* IBM CALL/360, CALL/OS - using IBM System/360 Model 50
* IBM CP-40 → CP-67 → CP-370 → CP/CMS → VM/CMS
* IBM TSO for OS/MVT → for OS/VS2 → for MVS → for z/OS
* IBM TSS/360 → TSS/370
* International Timesharing Corporation on dual CDC 3300 systems.
* MIT CTSS → MULTICS (MIT / GE / Bell Labs) → Unix
* MIT Time-sharing System for the DEC PDP-1 → ITS
* McGill University MUSIC → IBM MUSIC/SP
* Michigan Terminal System, on the IBM S/360-67, S/370, and successors.
* Michigan State University CDC SCOPE/HUSTLER System
* National CSS VP/CSS, on IBM 360 series; originally based on IBM's CP/CMS.
* Oregon State University OS-3, on CDC 3000 series.
* Prime Computer PRIMOS
* RAND JOSS → JOSS-2 → JOSS-3
* RCA TSOS → Univac / Unisys VMOS → VS/9
* Service in Informatics and Analysis (SIA), on CDC 6600 Kronos.
* System Development Corporation Time-sharing System, on the AN/FSQ-32.
* Stanford ORVYL and WYLBUR, on IBM S/360-67.
* Stanford PDP-1 Time-sharing System → SAIL → WAITS
* Time Sharing Ltd. (TSL) on DEC PDP-10 systems → Automatic Data Processing (ADP), first commercial time-sharing system in Europe and first dual (fault tolerant) time-sharing system.
* Tone (TSO-like, for VS1), a non-IBM Time-sharing product, marketed by Tone Software Co; TSO required VS2.
* Tymshare SDS-940 → Tymcom X → Tymcom XX
* Unisys/UNIVAC 1108 EXEC 8 → OS 1100 → OS 2200
* UC Berkeley CAL-TSS, on CDC 6400.
* XDS UTS → CP-V → Honeywell CP-6

## Ծանոթագրություններ

## Արտաքին հղումներ
* "Time Sharing Supervisor Programs" 
* "The Computer Utility As A Marketplace For Computer Services" 
* Reminiscences on the Theory of Time-Sharing 
* Origins of timesharing   
* "40 years of Multics, 1969-2009" 
* "Mainframe Computers: The Virtues of Sharing"
* "Mainframe Computers: Timesharing as a Business"

Կատեգորիա:Մարդ-համակարգիչ փոխազդեցություն
Կատեգորիա:Տեխնոլոգիաներ օպերացիոն համակարգերում
Կատեգորիա:Օպերացիոն համակարգեր