INFORMATICA 1/1980 MULTIPROGRAMIRANJE IN MULTIPROCESI R AN JE NA VELIKIH RAČUNALNIŠKIH SISTEMIH BURROUGHS KONRAD STEBLOVNIK UDK: 681.3:519.682.6 TGO GORENJE, VELENJE Članek na kratko opisuje izvedbo posla in osnovno podatkovno zgradbo na velikem Burroughsovem računalniku B6700. Opisani so tudi multiprogramski pripomočki, ki Jih lahko uporabljamo v okviru sistemske programske opreme na tem računalniku. MULTIPROGRAMMING AND MULTIPROCESSING ON LARGE SCALE BURROUGHS'S COMPUTERS. The paper describes the concept of the job and basic data structure for liurrough3's large scale coraputer B6700. Multiprogramming facilities, wich can be used in the environment of sistem software of this oomputer, are described alao. OVOD V letu 1961 je združenje Burroughe priželo proizva­ jati vrsto obsežnih računalniških sistemov, katerih organizacija Be je radikalno razlikovala od konven- oionalnih von Neumanovih strojev. Razvoj ee je pri- £el s sistemom imenovanim B^OOO. Njegova modifika­ cija je bil B5500. V letu I969 je ta sistem doživel veliko novosti pod imenom B650O. Še kanneje sta ta dva sistema preimenovana v B67OO. Današnja izvedba velikih Burroughsovlh računalniških sistemov je B680O. Našteta generacija računalnikov Burroughs se bistveno razlikuje od ostalih tako po organizaciji kot programski strojni opremi. Isti sistemi BO bili med prvimi, ki so nudili učinkovito multlprograml- ranje in multiprocesiranje - cilj današnjih velikih računalniških slr.temov in tudi večine manjših. Na­ črtovalci teh sistemov so uporabili za algoritme opsratlvnega sistema blokovno zgradbo. Te algoritme 80 zapisali v razširjenem programskem jeziku Algol 60. ki lahko opisuje takšno blokovno zgradbo. Cep- rav ni namen tega zapisa opis strojne arhitekture Blateoa B6700, naj le omenimo najzanimivejšo poseb­ nost - vhodno Izhodni podsistem ter njegova poveza­ va, po kateri se pretakajo informacije (V/I oross- bnr matrika) med statičnimi moduli (pomnilnik) In aktivnimi enotami (procesorji). Članek opisuje in navaja oultlprogramske pripomočke, ki jih lahko uporabljamo v okviru sistemske prog­ ramske opreme na računalniku BČ700, kakor tudi na vseh ostalih računalnikih Burroughs, ki spadajo k tej družini. Razširjeni programnkl jezik Algol 60, [ij ga navaja tudi pod Imenom Burroughsov Algol, vsebuje naslednje multlprogramske pripomočke 1 do­ godki (evant), procesi (proce^is', task), pridevki procesov (task attribute), programske prekinitve (software Intarrupt) in kritičen del (procure .... llberate). Z uporabo teh elementov multlprograml- ranja (multltasklng) lahko sočasno Izvajamo na enem ali več dejanskih procesorjih, ki so vgrajeni v aparaturno opreuio, več sočasnih procesov (taskov). Sistem, ki ga bomo opisali, ima zelo svojeko Izved­ bo poola (job) In prl]^adajočo podatkovno zgradbo. Ne kratko bomo prikazali poleg omenjenih multipro- gramaklh pripomočkov, tudi posel tega računalnika, ki se lahko Izvaja na enem ali več procesorjih, ter pripadajočo podatkovno zgradbo. 1. rOSEL V RAČUNALNIKU Bf>700 Posel tega računalnlkti sestavljata časovno nespre­ menljivi algoritem in časovno spremenljiva podat­ kovna zgradba, ki je zapis izvajanja tega algoritma. Algoritem sestavlja skupek nespremnljivih zakodlra- nih segmentov, ki so neposredno naslovljlvl. Zapis Izvajanja Je mnogonamenska podatkovna zgradba^ ki v kateremkoli trenutku podaja: •) stanje izvajanja posla vključno z vrednostmi Ea vse spremenljivke; b) naslovljlvo okolje, kl ga stvarni procesor lahko dosega, ko Izvaja posel. Možno je doseganje vai okolij! c) nadzor nad preteklim sodelovanjem med bloki, pO': cvl>; commeut glavni proces eprozi svojega potomca; 6uralt2 (num, O, n - 1, resultl, null); comment glavni proces kliče proceduro Bumit2; wait (evl); comment sistemska operacija; print (resultl + reeultZ); comment aistemBka operacija; end Slika 5« Algoritem za program v. Burrougheovem Algo-' lu, kjer določeno opravilo izvajata dva istočasna procesa.. Na sliki 5 je v vrsticah 3, 5. 1°, I**, in 16 večina novih sintaktičnih enot, ki omogočajo enostavno vsklajevanje med procesi. V vrstici 3 je deklarira«; 32 na BpreBBnljivk« "ev I" tipa ovant (dogodek) kot oenova za vaklajovanje oziroma ainhronleiranje. V vrntlol 5 je deklariran prilagodltvenl formalni pa- raneter z imenom "done" za postopek sumlt2. Burrou- ghaov Algol uvaja tudi kljuSno beaedo proaeen. da . razlikuje kilo proceaa (vratloa \k) od obliajnega klica poatopka (vrstlea 15). Kile procesa posreduje postopku sumita dejanski parameter, da lahko poto- o«e preko njega signalizira slavnemu procesu, da je zakljuSll svoje opravilo. To opravi prek sistemske operacijo cause (vrstica 10). Potem , ko je glavni program sprožil proces v vrstici \k, kot svojega potomca, Izvede običajni klic postopka sumita, ki posreduje referenco null kot sintaktižnoga statista za formalni parameter done. Po izvedbi postopka po- kližo sistemsko operacijo wait« ki se izvaja toliko Saša, dokler dejanski parameter evl ne doseže vred­ nosti, ki se lahko interpretira kot: "dogodek se je zgodil" (N-not happend, H-happend). Po zaključku sistemske operacije wait algoritem poklife operaci­ jo print ta izpis vsote dveh vrednosti resultl in result2. Slika 6 prikazuje podatkovno zgradbo za algoritem iz slike 5 v trenutku, ko glavni program Izvaja klic postopka 8urait2 v vratioi 15, njegov potomec pa vrstico 6. Glavni skUd Besednjak Sklad ta. 2 glavni proces, r-»f I »lOTT 3E: reSulU r«siill2. iJiTn ajmi lumiU. Sklad Ed potomca Lpoiolnca/ 'iV EP Slika 6. Podatkovna zgradba za algoritem iz slike 5 Spremenljivke'tipa event so strukturirane in eno polje v tej zpirndbl je binarno stikalo, ki se ime­ nuje dogodkovnl bit. Začetna vrednost tega bita je: "dogodek se ni zgodil" (H) in operacija cause ga postavi na vrednost: "dogodek ae ja zgodil" (H). Slika 7 prikazuje dejansko vključitev nažih proce­ sov v sistem E5700 in v njegov,nadzorni program. Sklad za glAvni proces , , •'pivceso. EUH: ® 2I r«»vUi 23 ratuUi. (Wyrb)llJ 3i: <® evi Sklad Ea poiomea JKuU plr to ewT~ popisa Jprocosa dftna I Slika 7. Dejanska vključitev algoritma iz slike 5 v sistem računalnika B67OO. Sklad za vsnk nov proces se prične s področjem opi­ sa procesa (task description area), ki ima stalno širino. Temu sledi prvi zapis aktiviranja. Kombina- olja aparaturne opreme in sistemskih programov za­ gotovi, da je to področje dostopno samo nadzornemu programu. Eden od ključnih delov informacije tega posebnega področja je nit (thread - Q), s pomočjo katere se proces lahko naveže na glavni seznam (list head), ki definira stanje razvrstitve (queue atate) procesa. Če je proces pripravljen (ready),je nit Q navezana (črta označeno z 1 na sliki 7) na vrh (head - R) v glavnem skladu. Z uporabo takSne povezave, lahko sistemski nadzorni program izbira procese, ki se naj izvajajo. Povratni naslov za vsak proces je no sliki 6 ozna­ čen z null. To bi pomenilo, da preide vsak proces ob svojem zaključku na izvajanje stavka null. Dejan­ sko je na sistemu B67OO podana namesto vrednosti null vstopna točka v sistemsko nadzorno proceduro. Zapis aktiviranja za sistemsko proceduro, ki zaklju- il proces, se doda glavnemu skladu. 3. 2. Pridevki procesov Da dosežemo večji nadzor in/ ali možnost sodelova­ nja znotraj družine procesov, so vsakemu procesu dodeljene strukturirane spremenljivke, katere ele­ menti definirajo različne lastnosti procesov. V času sprožitve procesa morn biti deklarirana spremenljivka tipa task. Zaradi tega Je algoritem na sliki 5 sintaktično nepravilno zapisan. Pravilen zapis vrstice \h tega algoritma bi bil v Burroughs- ovem Algolu tale: procesa sumit 2 (nun, n, 2 x n-1, reBult2, evl) [charlie] ; če je Charlie ime tega procesa. Predhodno pa Je potrebno deklarirati še spremenlji­ vko Charlie tipa task: task oharll« Spremenljivka tipa task ima stalno zgradbo in je dodeljena v informacijsko področje procesa kot del 33 sklada procesa v času, ko ae proces kliče. V času, ko Je proces kJican, dobijo njegovi pridev­ ki neko znčetno vrednost. Ta začetna vrednost lahko I kasneje v času, ko je proces aktiven, ostune nespre^ nenjenn, lahko Jo epremoni proces s«ni ali pa določet nI drugi procesi iz družine, navadno procesi, ki ga kličejo. Ko je sprožen proces, ae lahko nanj predhodno nave­ žejo različni pridevki. V primeru procesa Charlie, bi lahko zapisali takšne pridevka na tale način: ' 12.1 Charlie. priority •»-5i 12.2 Charlie. maxprootiiiie "»^SO} comnient in sacondsj 12.3 Charlie. etaokslze »"2 } Skupek pridevkov procesa, ki so zapisani v vrsticah 12.1, 12.2 in 12.3, razpozna sistem, začetne vred­ nosti pa postavi proces, ki ga je sprofil« Te vred­ nosti upošteva aistemnki algoritem za razvršSevanJe, ali drugi moduli za upravljanje z viri siateina. Posebne medsebojne odnose med različnimi procesi do» oežemo z nekaterimi ključnimi pridevki procesov. Opisali bomo štiri različne pridevke tega tipal ata» tuB, exeptiontask, exeptlonevent in partner. Pridevek status opisuje trenutno stanje izvedbo do- , ločenega procesa. Proces je lahko razvrščen, akti­ ven, začasno ustavljen, zaključen. Ta pridevek je dostopen kateremukoli procesu v družini, za katere­ ga je i»e procesa (Charlie) vidno, to Je procesu, ki ga je sprožil ali kateremukoli nasledniku, za ka» terega je Charlie globalen. Takšni procesi lahko ''' prek spremenljivke status vsilijo določeno stanje procesu Charlie: lahko ga začasno ustavijo, zaklju­ čijo itd. Npr. ray8elf• status —suspanded Proces, ki je sprožil proces (npr. Charlie ali kate­ rikoli drug proces, ki lahko "vidi" spremenljivke procesa Charlie), lahko deluje kot Charliejev nad­ zornik ali "starejši brat", ker takšen proces (ra­ zen Charlieja samega) lahko spreminja ali žita nje­ gove pridevke. Če je npr. proces Pete sprožil Char­ lieja, ga lahko aktivira, začar.no uatnvi ali pa za- kl.luči in tako lahko nadz,oruje njPcroT,-! stanje prak pridevka Charlie. status. S pomočjo pridevka. exc8p- tiontaak pa lahko kaimeje prenesemo funkcijo nadzo­ ra nad procesom Charlie, ki ga je od začetka imel Pate in sam Charlie, na drug proces z naslednjim stavk oaii mjrself, eiceptiontask-« brotUsi-tom; Na ta način se lahko dva procesa povežetn v zaklju­ čeno verigo. S pomočjo pridevka partner lahko omogočimo, da dvR procesa delujeta sinhrono kot sosladnjl oparaoijl. Procesa A in B lahko delujeta kot soslodnji opera­ ciji potem, ko priredimo: A. partner <= B in B.part- ner •> A. Če sedaj proces A Izvede stavek oontlnue; ea proces A ustavi in proces C se prične izvajati tam, kjer so jo untavil ob nastopu continua stavka. Trije ali več procesov lahko delujejo kot soslednje operacije tako, da npr. tvorijo obroč: A.partner-»-B, B.partner ••>•• C ) C,partner "=~-A. Kadar ue zahteva kakri?nak6li operacija nad temi pri« davki, sistemnki razvrščevalnik odloči, kdaj se bo to izvrfillo. Kasneje lahko saino prcoeai, ki so obve­ ščani o tej operaciji, izvršijo naoprotno akcijo, 3. 3. Primer V prejiinjem poKlavJu smo iiodeli setsantlko tipremen- Ijivk procesov in pridevkov procesov In sedaj z nji­ hovo pomočjo rešimo naeledujl problom. Predpostavimo, da imamo tri Identične krmilnike (con« troller) pretoka, ki lahko sodelujejo med sabo in ji, vplivajo drug na drugega. Vsak krmilnik lahko nadzo­ ruje pretok, ki ni gn zamislimo kot pretok olja, vo­ de ali zrnatega materiala ali pa kot pretok števil. , Vsak krmilnik dovoljuje nadzorovani pretok v zbiral-,, nik ter pozna nakopičeno vrednost v zbiralniku', ker ' lahko stalno meri vrednost; pretoka. Naloga vsakega . krmilnika je, da nnj v sodelovanju z ostalimi dovo- . Ijuje približno enako velikost pretoka, kot se tre­ nutno prevaja preko ostalih. Za zapia računalniškega programa, ki ustreza takšni situaciji, predpostavimo da se pretnka zaporedje celih spremenljivk, ki se ia. vhodno datoteka čitajo kot konstantne vrednosti. Z« ' poenostavitev predpostavimo, da krmilni program A mori pretok enostavno tako, da generira vsoto celih , vhodnih spremenljivk. To vnoto imenujemo SA. Krmilni, program A pozna nakopičeno vrednost v ostalih dveh • zbiralnikih, ker ima dostop do generiranlh vsot SB In SC ostalih dveh krmilnikov. Prav tako lahko A periodično nadzoruje pogoj: SA > 3B and SA > SB o true in če Jo pogoj izpolnjen, lahko prekine pretok v svoj zbiralnik. Predpostavimo, da lahko krmilni program A učinkovito sporoči najmanj enemu od osta-. lih dveh to, da je začasno ustavljen. Če pa pogoj nI izpolnjen, pa A nadaljuje s pretokom v svoj zbi­ ralnik. Ko krmilni program A ugotovi, da Jo pogoj SA > IHMAX izpolnjen, lahko zaključi z Izvajanjem in preneha obstajati. Ta opis velja seveda za vsak krmilnik A, B in C. Možnih je več rešitev. Vsakemu krmilniku priredimo , lasten proces in ti procesi sodelujejo med sabo. Lahko bi jih tudi izvedli kot soslednje operacije. Na sliki 8 je algoritem, ki uporablja procesna pri­ devka status in exeptiontask. Ko dani krmilnik ugo­ tovi, da prehiteva ostala dva krmilnika, ju obvesti o tem vedno po round robin algorltmui A •- B, B<»-C in C •• A. Proces, ki je Kačatmo untavil namoga sebe (vrstica 12) lahko ponovno sproži Ramo drug proces, ki je iijegov izjemni proces (exeptiontaBk), to je na slik^ S v vrstici 11. Opisane spremenljivke procesov in njihovi pridevki za ncdzor i;i kornunlciranje med procesi niso vse. ' Literatura [li navaja, da obstaja Se več drugih pri« deirkov pj-oooGov npr. pridevok locked tipa Boolean ' o).i pridevek taskvalue tipa real.Ta kratek pregled - nas lahko prepriča, da ima programer močno orodje za tvorbo kompleksnih podsistemov v obliki družine procesov. Sintaktične poglavju, 1, so jih tiave Biiranja. Pr programHkom ram, s tem procesom), ko iniciali Jo hiti vgii konstrukte, ki ahko na kratko p dli drugi avtorj iporaoček imenova jeziku-Modula I da se Izvaja soč ki ga je klical, zirani samo v gl tjzdeni. smo jih spoznali rimerjanio z rešit i na področju mult n proces,je podan 2] in Je podobe« asno s programom Procesi so v Hod avnem procesu in v tem vami, ki iprogro4 tudi v'i procedu^ (oziromi ull lah4 ne morei Sinhronizacijo med procesi lahko v našem primeru dosežemo s spremenljivkami tipa event kot argument« operacij "wait" in "cauee" (čakaj na dogodek, povzro* :čl dogodek), V programskem jeziku Modula lahko pri­ merjamo s tema dvema operacijama operaciji "wait" in "aend" (čakaj na signal, pošlji signal), medtem ko bi dogodku odgovarjala spremenljivka tipa signal. Signalu pa pri Hoarju ['(j odgovarja pojem pogoja, pri Ilaneenu pa pojem vrste. Pri Koduli je vpliv n« potek procesov dosežen z upo-j rabo sigiKilov in skupnih oziroma deljenih sproraen- IJivk. Na BC700 lahko v Burroughsovem Algolu doseže­ mo tnksen vpliv z dogortkovniffll spremenljivkami in pridevki procesov. Kritični deli procesov^ jd delu­ jejo nad skupnimi »premenijlvkami, so v Moduli de- 34 No. 1 2 ^ 1» 5 6 7 8 9 beRin inteRer SA,SB,SC, INMAX; taek A, B, i; i event doneABC; £rocedure controllcrl (B1, S2, BJ, n,dono)5 value nj inte^er si, B2, BJ, ni event aone; begin intefrer VAL; label Lj L: If al > B2 and el > B3 then bejjin [print valueo of al, 62, and aj in 10 11 12 1? 14 15 16 17 18 19 20 21 22 23 2k 25 26 27 28 29 50 appropriate oolumna of a table, based on the value of nJ; (niyeelf • eKeptiontask). atatuB «- "wakeup"; myBelf .status-o- "auspended"; go to Lj end elee begin [input a value of VAL from input file n]; B1 «•- B2 + VAL i Ijf BKINMAK then go to L else causaCdone); end end controllerl ; A.exeptiontask •- B; B.exeptionta6k *-C; C.exeptiontaek ••• A; [input a value for INMJiXlj SA-i- SB->- SC*Oi process controllerl(SA,Sn,SC,l,doneABC)lA] ; proceas controllerl(SB,SA,SC,2,doneABC)[B]) procesa controllerl(SC,SA,SB,3,doneABC)[Clt «ait(doneABC); end Slika 8. Program za krmiljenje pretoka števil v tri zbiralnike. klarirani kot vmesniške vmosniških modulih (moni V našem primeru se take trolo siatemskega nadzor da ne pride do konfliktu procesov lahko torej ramo potek procesov. Kas možnost vpliva na potek skimi prekinitvami. procedure in so zbrani v tor pri Hoaru in Hanaenu). operacije izvajajo pod kon- nega programa, ki poskrbi, ih situacij. S pridevki aeprotju z Modulo kontroli- neje bomo spoznali še eno procesov, to je e program- TO-sklad TTva mt-sklad tcUŠA TnA.c-sklad rn.&d Slika 9. Drevesna zgradba družine procesov. V nasprotju ?, Modulo lahko v Burroughsovem Algolu tvorimo družino procesov, ki imajo drevesno zgradbcv Takšen, zelo poenostavljen primer je prikazan no sliki 9. Na tej sliki je na lovi ntrani drevesna '-•truktura, na desni pa poenontavljena povezava po­ sameznih zapisov izvajanja, ki imajo skladovno zgrad­ bo in jih sestavljajo posnmeKni zapisi aktiviranja. Iti 80 statično povezani. Prav tako so statično po­ vezani posamezni procesi in sicer tako, da je npr. proces m.a.a. statično nave/.an na m.a. sklad na za­ pise aktiviranja ^,3,2 in 1 ne pa na 5,6 in 7. Za­ pis aktiviranja ali blok s številko 4 v m.a. skladu se imenuje kritičen blok za ra.a.a. sklad. Ko so pro­ ces Tn.a. konča ali se kako drugače neha izvaja­ ti, njegov naslednik ne more več eksistirati, ker nima več dostopa do okolja svojega predhodnika. Za­ radi toga mora proces, Vi konča, končati tudi vse Bvoje potomce, 3.4. Programske prekinitve Programska prekinitev ima nekatere podobnosti z ožičeno prekinitvijo. Izvor programske prekinitve se nahaja v nekem drugem procesu iz družine proce­ sov in proces, kateremu je prekinitev naraonjens, preide, ko prejme prekinitev, na izvajanjo neko v- i naprej definirane procedure (prekinitvene procedurel Prejemnik prekinitve jo lahko ignorira taVco, da za­ časno onemogoči programsko prekinitev. Če se pa pro­ ces, kateremu je namenjena prekinitev, trenutno ne izvaja, sistemski nadzorni program poskrbi, da se prekinitveni signal postavi v vrsto in se obravnava v trenutku, ko sf odgovarjajoči proces prične ponov" no izvajati. PrekinitoT deklariramo v B67OO Algolu z naslednjim stavkom: interrupt (name of interrupt procedure) ;(6tateraent)5 Če zapišemo; interrupt il; begin . . . end; pomeni, da je to prekinitvona procedura z imimom il Prekinitvena procedura se lahko naveže na dogodkov- no spremenljivko H stavkom: attach (name of interrupt procedure) to (event vari« able); Priraor: 1 event ev; 2 interrupt il; begin ... end; 3 attach il; t£ ev; 4 enahle il; V vrstici 1 je deklarirana dogodkovna cpri^inenljivka, ev; vrstica 2 deklarira prekinitVeno procenuro z imenom il; vrstica 3 naveže prekinitvono proceduro il na dogodkovno spremenljivko ev; vrRtica 4 pa omo­ goči prekinitev, ki se povzroči preko sprimen!jivke ev. Prekinitev lahko onemogočimo s stavkom: disable il; Na začetku se privzame, če ne vključimo stavka ena- ble, da je prekinitev omogočena. Dogodkovna spremenljivka se lahko onemogoči a stav­ kom: detach il; nakar lahko navežemo na prekinitev il katerikoli drug dogodek. 3.5. Doseganje virov- Kot smo že na kratko omenili, si morajo procesi, ki ae odvijajo na nokem računalniškem sistemu, učinko­ vito razpodeliti uporabo računalniških virov. V ča­ su, ko proces zahteva določen vir, se mora izvesti kritičen del programa, ki ga uvaja Dijketra [3] . Predhodno smo dogodke opisovali kot dvostanjske s stanji: "dogodek sn je zgodil" in "dogodek se nI zgodil". Ha eistemu B67OO lahko dogodke interpreti­ ramo še na naslednji način: " dogodek je na razpo­ lago" ali "dogodek ni na razpolago". 35 Proces, ki Izvaja stavek: procure(ev); je začasno uetavljen, če dogodek ev ni na razpolago, v nasprotnem pa izvede nasljednji stavek zaporedja, ki sledi. Kritičen del se v Burroughsovem Algolu zapiše na nasljednji način: prooure(ev); liberate(ev); Operaciji "proeure" in "liberate" torej lahko pri­ merjamo z operacijama "P" in "V", ki se izvajajo nad semaforjem in jih je uvedel Dljkstra. * LITERATURA [1] Elliot J. Organlcki Computer System Organlsa- . tlon, Academic Press 1973. New York and London. [2] H. Virth: Modula: a Language for Modular Multi- programming, Softwar8-Practiee and Exporience, vol. 7, 335 (1977). [3] Dljkstra E. W.: Cooperating Sequential proco- sses, In Programming languages, ed. Qenuys, Academio Press I968. [4] C. A. R. Hoare: Honitors-an Operatlng Syotem Structuring Conoopt, Com. of the ACM, vol. 17, no. 10 (Det. 197'»). SKLEP Iz tega zapisa in nekaterih opisanih primerov vidi­ mo, da so načrtovalci programske opreme Burroughs- ovih računalnikov že zelo zgodaj razvili učinkovite pripomočke za multlprogramlranje na računalnikih, ki so tudi multiprocesorskl. Čeprav so verjetno svo­ jo opremo razvijali ločeno od ostalih teoretikov multiprogramlranja, lahko napravimo primerjavo med posameznimi rešitvami. ,^ .,.