INERTNA STRUKTURA UNIX ZDRUŽLJIVEGA 8-BITNEGA OPERACIJSKEGA SISTEMA INFORMATICA 1/88 UDK 681.3.06 Ivan Pepelnjak Jernej Vi rent Marjan Bradeško Nikolaj Zimic Fakulteta za elektrotehniko, Ljubljana Izvleček : Razvoj mikroračunalniške tehnologije zahteva uporabo vse zmogljivejših diskovnih enot in tiskalnikov. Takšne zmogljivosti lahko učinkovito izrabimo le v računalniški mreži. Za uspešno implementacijo mreže mikroračunalnikov rabimo operacijski sistem, ki podpira poddirektorije, zaščito datotek ipd. V članku je predstavljen operacijski sistem, ki izpolnjuje vse navedene zahteve, poleg tega je UNIX in CP/M zdručljiv. Opisana- je struktura datotek na disku in interna zgradba operacijskega sistema. Abstract : The development of coraputer teohnology reguires use of more and more sophisticated disk units and printers. This resources can be effectively used only in a local area network. To successfully Implement microcomputer local area netvork, an operating system supporting subdirectorl'es, file protection and users separation Is needed. In the paper wo present an operating system which meets ali bf the stated reguirements along with UNIX and CP/M compatlbility. Disk structure and internal data structures used are presented. 1. UVOD 1.1 Opis problema Vse hitrejši razvoj mikroračunalniške tehnolo­ gije omogoča prodor mikroračunalnikov v vsa področja družbenega življenja. Kakor hitro pa hočemo mikroračunalnik uporabiti v poslovni sferi, se srečamo s količinskimi problemi : - prisotnost velikih baz podatkov - velika količina izpisov ki jih lahko rešimo samo z zahtevno in še vedno drago tehnologijo (trdi diski, hitri tiskal­ niki). Poleg tega morajo biti podatkovne baze v takšnih okoljih praviloma deljene med več upo­ rabnikov, ki hkrati dosegajo podatke iz podat­ kovne baze. Če hočemo rešiti takšen problem Je najbolje, da povežemo več mikroračunalnikov v mrežo, znotraj katere si lahko delijo zmogljivosti (trdi disk) in Izmenjujejo sporočila. Tako dosežemo večjo hitrost delovanja celotnega sistema (inteligenca Je razdeljena med več delovnih mest) in manjšo ceno sistema na enoto zmogljivosti. 1.2 Naša realizacija cenene mikroračunalniške mreže Mikroračunalniške mrežo lahko s stališča prog­ ramske opreme realiziramo na več načinov : - vsi računalniki lahko zahtevajo podatke z vseh računalnikov - nekateri računalniki so delovne postaje, drugi so strežniki Prvi pristop je zanimiv v primeru, ko imamo na razpolago že obstoječ (dokaj drag) mikroraču­ nalnik s trdim diskom. Ta implementacija ima nekatere slabe lastnosti, saj je operacijski sistem takšnega računalnika zahtevnejši, poleg tega zaradi servisiranja zahtev z drugih voz­ lišč upade hitrost lokalnega dela. Drugi pristop je boljši v primeru, ko lahko sami razvijemo svoj mikroračunalnik, saj se lahko odločimo za posebno Izpeljanko mikroraču­ nalnika, ki vsebuje samo krmilnik za trdi disk in enostaven zaslonski krmilnik za diagnostiko ter tako dosežemo cenejšo izvedbo mikroračunal­ nika. Delitev vozlišč na strežna vozlišča in delovne postaje poleg tega prinese Se dodatne prednosti, saj se vsako vozlišče ukvarja iz­ ključno z eno nalogo, ki jo zaradi tega oprav­ lja bolje in hitreje. Kot osnovo naše mikroračunalniške mreže smo vzeli mikroračunalnik DIALOG z operacijskim sistemom FEDOS (CP/M združljiv operacijski sistem) in mikroprocesorjem ZBO. Ko smo preudarjali, kakšen naj bi bil opera­ cijski sistem strežnega računalnika smo ugoto­ vili naslednje : - operacijski sistem mora podpirati zaščito datotek med uporabniki - operacijski sistem mora podpirati drevesno strukturo kazala datotek 31 |i|i lili iliiiflliliili ^|i)S&^^ywŠil|;| III llllli flilliiliiiiili iJlinfEDosiPii;-; lilliiiiiiii 0. DAtfiit/KiTM s B|FKB(lM(i«apiw|^i|p :?;.ii;:^;;::•^:^^i::^;;^^:^^:;;™^::;i^•W>^:š^^^;;^;?• liiiiKiilf^*iii*lli ||iTOtK«i|^|P»BK||i ||-|||;ji:;||ipf||s|||lj| •iBiiii iiiiiii«wiS liiiBaii« iiiBilMIiiliil ;|||Bi«|i|^Slli^B • IBlillil lliliillli llBilSi>atixi;:i::||;lll g^;;«gs|y»*8|W|;||i||||i II iiiiiiif; ||il||;s?ii^MSpMX* ittSi iiiitia Slika 1.1 Struktura mikroračunalniške mreže V naslednjih razdelkih si bomo zaporedoma ogle­ dali - Strukturo diska, kot Jo podpira FENIX opera­ cijski sistem - notranjo zgradbo FENIX operacijskega sistema Ce smo hoteli v okviru mreže podpirati standar­ dno CP/M programsko opremo, smo morali vsaj logično obdržati CP/M diskovno strukturo in GP/M diskovne funkcije. Tako smo prišli do naslednje strukture mikroračunalniške mreže : - v strežnem računalniku teče operacijski sistem FENIX, ki podpira večino funkcij, ki Jih mora imeti večuporabniški operacijski sistem (zaščita datotek, drevesna struktura kazala, podpora večih uporabnikov ipd). - v delovnih postajah teče lokalno operacijski sistem FEDOS (CP/M združljiv) in vmesnik na lokalno mrežo DANTE/NET, ki pošilja zahteve preko lokalne mreže strežnemu računalniku 2. STRUKTURA SISTEMA DATOTEK 2.1 Uvod Operacijski sistem, ki podpira hkratno ali zaporedno delo večih uporabnikov, mora zadovol­ jevati sledeče zahteve : - omogočati mora ločitev datotek različnih uporabnikov, da omogoči vsakemu uporabniku pregled nad njegovimi datotekami in prepreči nehoteno izgubo podatkov zaradi napake v delu enega od uporabnikov - omogočati mora zaščito datotek pred drugimi uporabniki, da bi preprečili zlorabo podat­ kov ali neunerno povzročeno izgubo podatkov. Poleg teh zahtev mora operacijski sistem izpol­ njevati še naslednje zahteve, ki jih narekuje optlmalnost delovanja računalniškega sistema : - omogočati mora obstoj zelo majhnih datotek, saj Je v razvojnem okolju večina datotek majhna (100 bytov - lOK bytov). Osnovna enota dodeljevanja prostora na disku mora biti torej čim manjša, najbolje en fizični sektor. - omogočati mora obstoj zelo velikih datotek (omejitev mora biti velikost diskovnega pomnilnika), saj podatkovne baze navadno potrebujejo Izredno velike datoteke. - v razvojnem okolju Je ugodno, če lahko upo­ rabnik svoje datoteke razdeli v logične skupine. - omogočati mora hiter naključen dostop do datotek. Praktično vsi operacijski sistemi imajo dostop do datotek organiziran preko kazala datotek. Le to vsebuje najmanj dva podatka : - ime datoteke - Informacijo o tem, kje se datoteka nahaja na disku Informacija o položaju datoteke na disku je lahko spravljena na tri različne načine : - v kazalu datotek - v posebnem delu diska • - deli datoteke so med seboj povezani v verigo Ce izberemo tretjo možnost imamo še vedno dve različici : - informacija o nadaljevanju verige je skrita v vsakem sektorju. - informacija o nadaljevanju verige je zapi­ sana v posebni tabeli. Vse tri rešitve imajo svoje dobre in slabe lastnosti : 2.1.1 Zapis položaja datoteke v kazalu datotek Dobre lastnosti : - položaj datoteke ugotovimo takoj, ko najdemo ustrezen zapis v kazalu datotek. Tako prih­ ranimo en dostop do diska - takšen način zapisa je najlažje realizirati Slabe lastnosti : - Velikost zapisa v kazalu datotek je velika, zato potrebujemo za iskanje zapisa v kazalu več dostopov do diska. - Pojavi se problem velikih datotek, ki Jih navadno rešujemo z ui>orabo več zapisov v kazalu datotek, kar še povečuje že tako veliko kazalo 32 2.1.2 Zapis položaja datoteke v posebnem delu diska Dobre lastnosti : - kazalo datotek je majhno, kar omogoča hitro iskanje Slabe lastnosti : - dostop do informacije o položaju datoteke zahteva še en dostop do diska in praviloma tudi premik glave. 2.1.3 Povezava v verigo Dobre lastnosti : 2.2.3 FILES-11 struktura (RSX-11 in VMS) FlLES-11 Struktura Je sorazmerno precej zah­ tevna diskovna struktura. Omogoča drevesno strukturo datotek, zaščito datotek med uporab­ niki, omogoča neomejeno število uporabnikov. Vsi parametri diskovne strukture (število dato­ tek, velikost datoteke ipd.) so neomejeni, omejitev Je le fizična' velikost diskovne enote. Informacija o položaju datotek na disku je zapisana v posebnih sektorjih (FILB HEAOER), ki so zbrani v datoteki (0,0)INDEXF.SYS, kar poe­ nostavi kontrolo pravilnosti diskovne strukture in omogoča iskanje izgubljenih datotek. Opera­ cijski sistem edini med naštetimi podpira ver­ zije datotek. 2.3 Naša izbira strukture datotek - kazalo datotek Je majhno - v. primeru uporabe posebne tabele so vse informacije o položaju datotek zbrane na enem mestu Slabe lastnosti : - shranjevanje kazalcev v podatkovnih blokih izredno upočasni naključni dostop do dato­ teke in ga v bistvu degenirira v sekvenčnega - uporaba posebne tabele navadno povzroči probleme zaradi njene velikosti (za 40M bytni disk pri velikosti enote dodeljevanja IK byt ta tabela velika 80K bvtov). 2.2 Pregled obstoječih rešitev Oglejmo si sedaj nekatere obstoječe operacijske sisteme, posebno tiste, ki so primerljivi z našim sistemom. 2.2.1 CP/M Operacijski slsteift CP/M ima vse infonnacije o datotekah zbrane v skupnem kazalu datotek. Informacija o položaju datoteke je zapisana kar v kazalu datotek, za velike datoteke uporablja CP/M več zapisov v kazalu datotek. Osnovna enota dodeljevanja je odvisna od velikosti diska in se giblje od IK byt do 8K bytov. Velikost kazala datotek Je omejena, torej Je omejeno tudi skupno Število datotek na celotnem disku. Zaščita datotek Je omejena na Read-Only at­ ribut, ki ga lahko nastavlja vsak uporabnik. Delno je torej preprečeno nenamerno brisanje datotek, namerne poškodbe podatkov ne moremo preprečiti. Operacijski sistem podpira 16 uporabnikov, vendar ne nudi nobene zaščite med uporabniškimi področj i. 2.2.2 MS-DOS Ob izbiri strukture datotek smo se skušali Izogniti večini slabih strani vseh sistemov. Tako smo dobili strukturo, ki dokaj optimalno izpolnjuje večino ciljev, ki smo si Jih zadali v začetku tega poglavja, vendar je omejena z uporabljeno tehnologijo (Z80 procesor in 64K bvtov pomnilnika), ki nam je onemogočala reali­ zacijo bolj zahtevne in bolj optimalne strukture. Velikost sektorja na disku je 1024 bytov, veli­ kost logičnega sektorja, kot ga vidi uporab­ niški program pa Je 128 bytov, da ohranimo združljivost a CP/M operacijskim sistemom. Ves dostop uporabniškega programa do datotek poteka preko logičnih sektorjev velikosti 128 bytov. Informacija o imenu datotek je zbrana v kazalu datotek. Kazalo datotek je datoteka tako kot vsaka druga datoteka, zato je lahko kazalo neomejeno veliko. Operacijski sistem podpira drevesno strukturo kazala, vsako vozlišče v drevesni strukturi Je spet datoteka. Tako smo dosegli enoten pristop do vseh datotek v opera­ cijskem sistemu, kar poenostavi pisanje sistem­ skih programov a tudi samega operacijskega sistema. Poleg tega obstajata v vsakem kazalu posebni datoteki . in .. (trenutno in predhodno kazalo), kar še olajša sistematski pristop do drevesne strukture kazala. Za definicijo poti do posameznega vozlišča Je uporabljena UNIX sintaksa (npr. /USR/SAMPLE/TEST). Kot vidimo, je v kazalu datotek zapisano samo ime datoteke, njena zaščita in položaj ostalih informacij o datoteki. S tem dosežemo, da Je velikost enega zapisa samo 16 bytov, torej spravimo v en fizičen sektor (IK byt) 64 zapi- m* Kai« ; Strtngr <9) Prot»cttoo s Arx«y U.-«) ot nlbbl« It«a«rvM Byt« : Bjrta Operacijski sistem MS-DOS podpira drevesno strukturo kazala, vendar Je velikost glavnega kazala fiksna. Ne podpira uporabnikov, prav tako ne podpira zaščite datotek. Osnovna enota dodeljevanja Je odvisna od velikosti diska in se giblje od IK do 4K.: Skupno število datotek na disku ni omejeno. Informacija o položaju datoteke na disku se nahaja v posebni tabeli na začetku diska (FAT), posamezni elementi v tej tabeli so povezani s kazalci. Vsak. element predstavlja en cluster (enoto dodelJ evanJ a prostora). Slika 2.1 Struktura zapisa v kazalu datotek sov, kar Je dovolj za večino primerov, torej lahko celotno kazalo večinoma dosežemo z enim samim dostopom do diska, kar bistveno vpliva na hitrost odpiranja datotek. Zaščita datoteke Je razdeljena v štiri dele : - uporabnik (USER_ID datoteke Je, enak USER_ID uporabnika) - uporabniška skupina (GROUP_ID datoteke Je enak GROUP_ID uporabnika) - ostali svet (USER_ID in GROUP_lD datoteke in uporabnika se razlikujeta) - privilegirani sistemski uporabnik (USER_ID = 0). Za takšnega uporabnika sistem ne testira zaščite datotek. 33 Vsaka skupina uporabnikov (OWNER, GROUP, WORLD) Ima v dveh zlogih zaščite prirejene 4 bite, ki predstavljajo dovoljenja posamezne skupine upo­ rabnikov : - READ -- uporabnik lahko datoteko bere - WR1TE -- uporabnik lahko datoteko piše - EKECUTE -- uporabnik lahko datoteko Izvaja - DELETE — uporabnik lahko datoteko briše Za kazala, ki so po definiciji tudi datoteke, Je pomen posameznih bitov nekoliko spremenjen : DESCRIPTOR_POINTER Je tabela kazalcev na sektorje, ki vsebujejo razširjen opis datoteke. DATA_POINTER Je tabela kazalcev na prvih 256 podatkovnih sektorjev. S takšno zasnovo opisa položaja datoteke na disku smo dosegli nasled­ nje omejitve : - velikost diska največ 64M bytov - velikost, datoteke največ 128M bytov, torej več od velikosti diska, kar pomeni, da je velikost datoteke dejansko omejena z veli­ kostjo diska. - READ -- uporabnik lahko bere kazalo - WRITE -- uporabnik lahko kreira ali brlš^ datoteke - EXECUTE — uporabnik lahko odpira datoteke - DELETE — uporabnik lahko briše kazalo Četrta skupina štirih bitov je neuporabljena za zaščito datotek in služI kot opis dodatnih lastnosti datoteke : - DIRECTORY — datoteka Je kazalo - 6YSTEM -- datoteka Je sistemska datoteka Z implementacijo zaščite nad kazali datotek lahko uvedemo nekatere zanimive izvedbe zaščite datotek : lahko samo pregleduje kazalo, more odpreti datoteke v kazalu uporabnik vendar ne (READ) uporabnik lahko odpre datoteko, če pozna njeno ime, vendar ne more izpisati imen datotek (EXECUTE) uporabnik lahko samo lista kazalo in odpira datoteke (READ in EXECUTE) uporabnik lahko samo kreira nove datoteke, ko je datoteko enkrat kreiral, je ne more več brati (URITE). Preprečevanje brisanja datotek dosežemo z ustrezno zaščito datotek pri kreiranju. Ker ima velika večina danes dostopnih diskov, primernih za vgraditev v mikroračunalnik, kapa­ citeto manjšo od 64M bytov, ta omejitev veli­ kosti diska ne bi smela predstavljati resne ovire. Ce želimo uporabljati večji disk, ga lahko razdelimo na partlcije velikosti 64M bytov in ga uporabljamo kot več logičnih diskov velikosti 64M bytov. Zasedenost diska Je zapisana v posebni datoteki (/BITMAP.SVS). Z uporabo posebne datoteke dosežemo bistveno manjši zagonski čas sistema v primerjavi s sistemi, ki ob zagonu računalnika gradijo tabelo zasedenosti diska v spominu (CP/M). Poleg tega je gradnja takšne tabele v pogojih drevesne strukture kazala praktično nemogoča, saj bi zasedla preveč spomina. Edina slabost takšne zasnove bitne tabele se pokaže ob izpadu sistema, saj Je takrat tabela poško­ dovana in potrebujemo poseben program, ki Jo popravi nazaj v korektno stanje. Za vzpostavitev vseh sistemskih struktur potre­ bujemo še dva kazalca : - kazalec na opis datoteke / (vrh drevesne strukture kazala) - kazalec na opis datoteke /BITMAP.SVS (za lažje delo, čeprav bi ga lahko dobili iz datoteke /). Informacija o položaju datoteke na disku je zbrana v dveh podatkovnih strukturah : - Za prvih 256K bytov datoteke v opisu dato­ teke (FILE DESCRIPTOR) — en sektor. V tem sektorju so zbrane tudi vse ostale informa­ cije o datoteki. - Za podatke preko 256K bytov datoteke v raz­ širjenem opisu datoteke (EXTENDED FILE DESCRIPTOR) — en sektor za vsakih 512K bytov Ta dva kazalca sta zapisana v HOME BLOCK sek­ torju diska (sektor 1 v 0. stezi), ki ima sledečo strukturo tvpa Ho*4 Slock • tla^ati VoIoM^ltaM .• Stvin« (U> Bitiup^St*« i tnt«0*r Ena .• tfp* irit«j)«acriptor • Op«n Cbuat - UatiTlD OrOuEittl - Lut^Slbc* ' Ac««»»_0«t« ' -UpdAit« Dat«, - , - ', , Cr*»t«3i«t» OMerlptor^Volnt tu,%4 Polatar ' _, Sod J r R«cor4 : Byt« ,• Bsrt* t Byt« *. Docbl« ; 0*t« ; OAte •. O«*« '; D«t« *r.- Arr«y BACKUP_DATE). Datum je natan­ čen do sekund. 34 1 i iTi^; ;i:KOJi|f«fe«i||i||i^E^ Ilit&ft, ft', ,ft|| *•*' 'S • : i;.-«:•••?^U ^ •v • .•'š.:: ,: .-. t:;; :n:^ •vK- ;>•:-•• I:" -;^ ••'•••. ;f :3.- ti -r Slika 2.4 Struktura prve steze diska Za Ilustracijo zgoraj navedenih pojmov si og­ lejmo še primer strukture diska, ki ima v glav­ nem kazalu samo dva poddlrektorlja /BIN In /USR. Prikazane so vse povezave med podatkov­ nimi strukturami na disku In način kako opera­ cijski sistem doseže določene podatkovne strukture. » .:-;:! M • -i: •f^-i'yi''"^ii:>^/^; • .^:;:;;. HiJMBl BtO^: Ji-:; •..:• '.^••^r--y •%::. ;•';;.:• . ;,-:•-•;• i::,; l-Ši'-^••::^ i; i..GLAVNKGX:-.:i^;':. ti:'^f !ll*|-:Snii itt; iriai K'š'ž -^i-n^i S' •:..,;,p.n:V, ii :m:• ;:;,,&.>:. •;&••:;?:;#. •• :•: •¥^ ': ii. •• ;;..;•: •:!!;;:•&•:;:!• .V '4::'^ !••<-. •«*;;•:!;• :•: W: •.;; i :••-'H••^K??;;!;:|;:;|^T.fis:•:l •.«11 ilii|-iy •i;. ;;j|:viv;'';g:^r i:' i:^'-:' ff 3il BitdAp.srait;:':- BIH;,:|Si.-;;";\yls; Siiillli ||:la«t;pt•)t•i:;^::::| ;•;/: • 'i -.:.^ !«» :s-i^-.;:,::;-. ... iV ,| •• ,•: i^- •:».:• ••..:;«.*;•-. . ••,••:.i ;i..l ;•; i ;:.i; ;| i ii :•.•:::':.•: ::j:iy ?S- li;' ;;.::;/v: , :> ' (Sf.;..-v;/ !iii ;>i«''',.:-:. :::S:::Sv:-::^' l:i-i!lll fii it§S'M .• : :• ,' vf? .••-;.- •.:•'; :3 •ili^: ^vi;-: ^ fX} > ;..r- ;: m OPIS • •:TABE3-E ,: : tASEDENOSTi"' DISKA,:; j;. -i? W^-t^ MWj-^ iflbATOtEKK'*;:;. ^ • : •: 1 • ! ,;;; i--^ i';: •;.. ;- ••. - ^1 •'1 Slika 2.5 Primer diskovne strukture Ii*!'iiliR"S*'MTBKE >;»•• •• ?|C^LE;i»T||;i ::;::0PI5?_J|;i| ^KAZALCi;iH*>(3š5!' R/rslJUEMltpPlŠ SEKTORJISS:;: 'OOOSsirpIt*:';; • ISBWbWŽI,ii:: •• i •fi m^^mn m iSKKTbltTIf;? msm. WexKŠ WM :|i55i|fOR jilJ^li :;:^' -f^^' i-\^ IsSBrt^e« SEKTOH SEKTOR ;;SHft0R ac^s: :^«?i piO-r 062-: :iS»ŠEKTORJl SO, FizlCKI: SEJtTORJt NA DISKU (IK) i ~J;51V|l;;KASl.07r:;SO V HEXABECIMAtNW";2M>ISU b. Slika 2.6 Primer zelo velike datoteke 35 I/aataoat voiiJ«)»t kai«],« valikoct tapls« v kajalu dravasna atruktura' fcaaala zapis poloaaja datotaka At dlalcu Aakalaalna valikoat .' daMtak* Sloblna ku«l« ' stavilo uporabnikov taaclta ddtptak «««ovna omaka oanovna enot« dodeljavanja prostora CP/K omajana 3Z,byto«. »E' v kazaiu 32M bytas' ... IS KS - DA <2) 2-4K Opomba : Omaka naomajeno poeianl. da «a našo prljMriavo naOMjano KS-S08 glavBo lc«**le 32 bjtov DA v«rla» {tt,X) velikost dlak« naooejeno ... m OA <2> 1-« Isa panuiatar vaUka. MUS-U 16 iiytOV MB xa asx>u. DA «a VM& v »IL« SBASES' vaukost disk* 2 s« S»'U MK >a IISX-11 neoaajaoo VMS DA tlA (4> O.W FEWtt neoaiAJeii« • 1« bjftov , DA v opisu datoiake . 6«H bjrtes naoaaieno 25» DA tJA <*} IK tako veliko vrednost« da je Slika 2.7 Primerjava diskovne strukture sistema FENIX z drugimi operacijskimi sistemi 3. Struktura operacijskega sistema FENIX 3.1 Uvod Operacijski sistem FENIX je samostojen program, ki teče v glavnem računalniku mreže DANTE/NET. Njegova edina naloga Je odgovarjati na zahteve drugih računalnikov v mreži. Glavna zanka ope­ racijskega sistema Je zato zasnovana tako imtialis* SpitaB- tuveat . ' Cet, (tatatotk ataksa^a »roo««s •»••sg« '(Mttd, limUKt* aeaaiag«' : UntU: Shutdona S*er Pirat De»crlptor Flrat fiuff«r Curr«nt Oe«crlptor Current Butfer PCB SeAsphor« K«xt Polnter Pr*v">oint«r ProtsctloD Noa« ID FCB Flags Kccea« Count End ; R«cord . Byte : Strlnp (8) • String (3) . loteger : ZntttOftr ^ BYt« : Xnt«{;«r : Byto : Bvt« : lot*g*r : lAt«0*r ; Byta . »rt* • »Tt« ; BytB :; , "• '• ' .- .. ^ • • i ^ ] -';:•• -- . -. ••.•.-• - ,' Slika 3.4 Opis odprte datoteke Opis posameznih polj : Disc Drive File Name diskovna enota, na kateri je odprta datoteka ime datoteke 3.2.3 Dodeljevanje in vzdrževanje vmesnikov Modul skrbi za dodeljevanje in vzdrževanje vseh dinamičnih sistemskih podatkovnih struktur : - vmesniki za delo z diskom - opis odprte datoteke (FCB) - opis večkratno odprte datoteke (XFCB) Natančen algoritem dodeljevanja teh struktur je opisan v razdelku SISTEMSKE PODATKOVNE STRUKTURE. File_Type tip datoteke Sequence_Nurober zaporedna številka uporabe tega elementa. Ko operacijski sistem odvzame FCB uporabniku, ki ga že dolgo ni uporabljal, poveča sequence number in tako onemo­ goči ponovno uporabljanje odvze­ tega FCB-ja 37 Fir8t_Desorlptor Številka sektorja na disku, ki vsebuje opis datoteke First_Buffer Številka vmesnika, ki vsebuje opis datoteke ali O, če opisa datoteke ni v spominu Current_Descrlptor Številka sektorja na disku, ki vsebuje razširjeni opis datoteke za zadnji prebrani sektor. To polje se uporablja le če beremo datoteke, ki. so večje od 256K .bytov, drugače Je enako First_De8crlptor Current_Buffer Številka vmesnika, ki vsebuje sektor, na katerega kaže Current_Descrlptor. Ce tega sek­ tor J a ni v spominu, vsebuje to polje O. FCB_Seraaphore neuporabljeno Next_Polnter Prev_Pointer Kazalci za algoritma implementacijo LRU Protection bit O — 3 zaščita datoteke, ki je odvisna od zaščite datoteke v opisu datoteke In uporabnika in grupe računalnika, ki Je odprl datoteko, bit 4—7 dodatni atributi datoteke Node_lD Številka računalnika, odprl datoteko ki Je FCB_Flags Zastavice, ki povedo stanje FCB-ja bit 7 FCB Je zaklenjen'v spominu bit 6 polje Flrst_Descriptor Je OK bit 5 FCB Je neveljaven bit 4 FCB Je uporabljen Access_Count Števec dostopov do FCB-Ja. Šte­ vec se poveča ob vsakem OPEN ukazu in zmanjša ob vsakem CLOSE ukazu. Ko doseže vrednost števca O, operacijski sistem izvede dokončno CLOSE datoteke. 3.3.1.1 Dodeljevanje FCB-jev Operacijski sistem zahteva nov FCB ob DOS funkciji, ki mora za svoje delo odpreti novo datoteko (OPEN, MAKE, DELETE, RENAME, GET FILE SIZE ipd.). Če je na razpolago proist FCB, ga modul za dodeljevanje vmesnikov zaseže, vpiše v FCB_FLAGS bit 7 in 4 ter ga vrne DOS modulu. Ce operacijski sistem ne more najti prostega FCB-ja, poišče zadnji FCB v listi, ki ni zak­ lenjen v spomin, zapre datoteko, ki ji ta FCB pripada in ga vrne DOS modulu. Da bi preprečili dostop do tujih podatkov in zlorabo operacijskega sistema, poveča operacij­ ski sistem ob vsakem OPEN klicu polje SEC3UENCE_NUMBER v FCB-ju. Če hoče uporabniški program brati ali pisati datoteko, mora poleg številke FCB-ja v paketu, ki ga pošlje preko mreže podati še zaporedno številko v FCB-ju. Ce se ti dve številki ne ujemata. Je bila datoteka medtem zaprta in uporabniški program mora po­ novno izvršiti OPEN klic. Ta protokol je imple­ mentiran že v mrežnem delu CP/M operacijskega sistema ha ostalih računalnikih v mreži in je tako za končnega uporabnika neviden. Ker bi lahko uporabnik uganil pravilno zapo­ redno številko v FCB-Ju primerja operacijski sistem poleg zaporedne številke še številko vozll'šča s katerega Je bila datoteka odprta~ in številko vozlišča s katerega Je.prišla zahteva za branje oz. pisanje Operacijski sistem vzdržuje v vsakem FCB-Ju polje Access_Count ki šteje število OPEN klicev izvršenih na tem . FCB-Ju. Ko Je polje Access_Count pri CLOSE klicu enako O, lahko operacijski sistem izvrši dokončen CLOSE dato­ teke. Operacijski sistem tedaj sprosti FCB, ki je pripravljen za naslednji OPEN klic. Ce več uporabnikov hkrati odpre Isto dato­ teko, vrne operacijski sistem prvemu uporabniku številko FCB-ja, s katerim Je odprl to •dato­ teko, za vse naslednje uporabnik pa uporabi operacijski sistem novo podatkovno strukturo XFCB. Takšen algoritem omogoča vodenje evidence o odpiranju datotek in preprečuje izgubo podat­ kov zaradi brisanja in hkratnega branja oz. pisanja datoteke (če bi vodili le evidenco o prvem vozlišču, ki je odprlo datoteko, bi lahko zbrisali datoteko, ki jo dosega več uporabnikov ali pa bi preprečili brisanje datoteke, ki Jo je en uporabnik večkrat odprl). S stališča uporabniškega programa se XFCB ne razlikuje od FCB-Ja, razlika je le v tem, da ima XFCB zapo­ redno številko od 128 do 255. Opomba Dodeljevanje FCB-jev je še oteženo zaradi slabega sloga programiranja v večini CP/M programov, ki praviloma ne zapirajo datotek, ki jih ne rabijo več, tako, da mora operacijski sistem hevrlstično določati katere datoteke program še uporablja in katere lahko zapre. Napake v tem hevrlstičnem pro­ cesu privedejo do ponovne uporabe zaprte datoteke in ponovnega OPEN klica, ki je, kot smo že poudarili, neviden za uporabniški program. 3.3.2 XFCB — opis večkrat odprte datoteke 6 Tjrt>*i5«iift SlfflSJV^^pi«! iSiicSiliSa^^^^ Slika 3.5 Struktura XFCB ja Operacijski sistem kreira enega ali več XFCB za vsako datoteko, ki jo hkrati odpre več kot en uporabnik. Prvi uporabnik uporablja za dostop do datoteke številko FCB-ja, vsi naslednji uporabniki uporabljajo za dostop do datoteke številko XFCB-ja, ki kaže na pravilni FCB. S takšnim pristopom je omogočeno vodenje natančne evidence o odpiranju datotek, poleg tega je število uporabnikov, ki lahko hkrati odprejo eno datoteko neomejeno. 3.3.2.1 Dodeljevanje XFCB : Operacijski sistem dodeli nov XFCB vsakič ko uporabnik poskuša odpreti datoteko, ki Jo Je že odprl drug uporabnik. Ce modul za dodelje­ vanje vmesnikov ugotovi, da ne more dobiti prostega XFCB-Ja, odvzame enega od uporabljenih XFCB-jev, zapre FCB, ki ga je ta XFCB naslav­ ljal (in tako zmanjša ACCESS_COUNT) In vrne nov XFCB modulu za obdelavo DOS funkcij. Ob CLOSE ukazu operacijski sistem sprosti XFCB in izvede CLOSE ukaz na ustreznem FCB-Ju. Obdelava odvzetih XFCB-Jev, ki Jih uporabnik hoče ponovno uporabiti Je enaka kot za odvzete FCB-je. 38 3.3.3 Vmesnik za delo z diskom - t2i» »i«k Wt*« '^ 8:4c4i^4 .Drlv« ttp^c«! 9xoclF ^ «fit*i: - ^ir«y;,W»int«)t , Aeotmm CcMint *pitt«o_n(»B tJ4S* "«n« ; ' ' .' rttjtt* '•' tnt4niw tm* • i ttit* • HSf*« * Byt* 5 »yt« Slika 3.6 Struktura vmesnika za delo z diskom Polji Drlve in Loglcal_Block opredelita diskov­ no enoto In zaporedno Številko sektorja na tej enoti. Polji Next_Pointer In Prev_Polnter služita za implementacijo LRU algorltmaT Polja Access_Count služI za štetje Števila dostopov do tega vmesnika. Polje Wrltten_F\ag služi*^ za indikacijo vpiso­ vanja v ta vmesnik in vsebuje 1 bit za vsak logični blok (128 bytov) znotraj fizičnega sektorja (1 K byte). V polju FLAGS operacijski sistem hrani stanje tega vmesnika : Bit 7 Vmesnik je zaklenjen v spomin Bit 6 Vsebina vmesnika je spremenjena Bit 5 Modul za povezavo z diski piSo vmesnik na disk Bit 4 Vmesnik bo zamenjan Bit 3 Modul za povezavo z diski bere vmesnik z diska Bita 5 In 3 služita za sinhronizacijo med mo­ dulom za delo z diskovnimi enotami in ostalimi moduli operacijskega sistema, saj bi se ob uporabi prekinitev in zakasnjenega pisanja na disk zlahka zgodilo, da bi modul za obdelavo DOS funkcij uporabljal vmesnik, ki še ni bil prebran z diska ali ki se ravnokar vpisuje na disk. Bit 4 služi za sinhronizacijo med modul za dodeljevanje vmesnikov in modulom za obdelavo DOS funkcij, saj preprečuje uporabo vmesnika, ki ga bo modul za dodeljevanje vmesnikov zamen­ jal. Opisi vmesnikov so zbrani v tabeli, ki vse­ buje 256 elementov, sami vmesniki ae nahajajo v ostanku spomina ali v drugih spominskih bankah v mikroračunalnikih, ki imajo več kot 64K bytov spomina. 3.3.3.1 Dodeljevanje vmesnikov : Modul za obdelavo DOS funkcij zahteva določen logični blok z diska. Ce je ta blok že v enem od vmesnikov, ga modul za dodeljevanje vmesni­ kov vrne in ga premakne v LRU vrsti, drugače poišče modul za dodeljevanje vmesnikov prost vmesnik In zahteva branje tega vmesnika z diska. Ce modul za dodeljevanje vmesnikov ne more najti prostega vmesnika, poskuša najti popolnoma .zapisan vmesnik (Written_Flag = 255) in ga zapiše na disk, zahteva branje vmesnika in ga vrne. če nobeden od vmesnikov ni popolnoma poln, modul zapiše na disk prvi dostopen vmesnik in zahteva branje novega vmesnika. Ce so vsi vmesniki zasedeni (LOCKED), modul sprosti vse vmesnike, ki so bili dodeljeni odprtim datotekam za opis datoteke in označi v vseh FCB-jih, da niso več pravilno nastavljeni. Po tej operaciji modul ponovno poskuša dobiti prazen vmesnik s pomočjo zgornjih treh točk. Ce je med iskanjem vmesnika modul za dodelje­ vanje vmesnikov zašel pregloboko v listo vmes­ nikov, torej je so vmesniki že precej zasedeni, bo modul zahteval zapis vseh popolnoma vpisanih vmesnikov (Wrltteh_Flag = 255) na disk. Ce na ta 'način ne pridobi dovolj vmesnikov, bo modul zahteval še zapis vseh delno napolnjenih vmes­ nikov na disk. Ob hkratnem delu modula za delo z diskovno enoto in ostalega operacijskega sistema ter dovoljšnjera Številu vmesnikov (več kot 128) lahko s tem algoritmom dovolj zgodaj ugotovimo možno zasičenje sistema in zahtevamo vpis pol­ nih vmesnikov na disk preden pride do popolnega zasičenja sistema. Takšno vpisovanje vmesnikov na disk poteka hkrati z ostalim delom sistema in dela sistema praktično ne prekinja. Zapiso­ vanje vmesnikov na disk ob zasičenju sistema blokira sistem do konca zapisovanja in tako zmanjša hitrost delovanja sistema. 3.3.4 Opis uporabnika Vsako vozlišče, ki se lahko pojavi v mreži, ima v glavnem računalniku ustrezno podatkovno strukturo, ki definira uporabnika, ki dela na tem vozlišču. V tej podatkovni strukturi so zbrani vsi podat­ ki o uporabniku, ki Jih operacijski sistem potrebuje za svoje delo : Ime uporabnika Tfp« U«*f &4<:or4 - flftcord Ul*C NdJM y»«y_jo • Group 10 ' : Mtcmat* U»«r„XB J u.i:*r&«t> Crou; tO Sff^stlv«-«««: 10 , StCftCtlv* Group 10 Prlrll««« H«»k " • Dlao T*bl«. KniJ : StrlD« « SlMDOunt Fiaj T«t Offlin« DOS Inlt C03~KnttY eitaap rtt»t IIttB*p~Count HltMp~Bu(fBr »l.tB«p~PointBr» Ena ; Rncord ! Bjt« •• Bjt« -. Strlng (8) J lnt*g«r •' I<>te««r •• Byt» : Byt« : Int«s«r : In<:e««r *. Inccgar t Brt« 1 Byt» ;^ Integer ; Art«y (O.,7) ot Inleger Slika 3.8 Opis diskovne enote Opis diskovne enote vsebuje vse informacije ki jih operacijski .sistem potrebuje za delo z diskom : - ime diska (samo za informacijo uporabnika) - kazalec na opis glavnega kazala - kazalec na opis tabele zasedenosti diska in . njena velikost - naslov procedure za - testiranje prisotnosti diska - inicializacijo diska - izvedbo DOS funkcije na tem disku - Polja za .vnaprejšnje dodeljevanje prostih sektorjev Naslova procedure za inicializacijo diska in izvedbo DOS funkcije na disku omogočata modu­ larno izvedbo diskovnega operacijskega sistema in celo uporabo večih diskovnih struktur na različnih diskih (npr. CP/M na disku A:, FENIX na disku B:). Operacijski sistem deluje dokaj hitro v pri­ merjavi z drugimi mrežnimi operacijskimi sis­ temi realiziranimi v 8 bitni tehnologiji pre­ cej zaslug za to nosi izredno hitra lokalna mreža DANTE/NET (hitrost prenosa IM blt/s). Ob testiranju se je operacijski sistem obremenjen s štirimi delovnimi postajami izkazal za hit­ rejšega kot delo na sami delovni postaji z disketo, torej je njegova uporaba vsekakor upravičena. Ob razvijanju operacijskega sistema se le rodilo nekaj idej, ki so vredne razmisleka in morda implementacije v naslednji verziji opera­ cijskega sistema : "^ "i'"a - podpora zaklepanja zapisov v datotekah, ki bi na sistemskem nivoju rešila problem hkratnega dostopa v bazo podatkov. - integracija večih diskovnih pogonov v eno diskovno strukturo kot jo pozna UNIX opera­ cijski sistem (MOUNT in UMOUNT ukaz) - podpora datotek, ki bi se raztezale preko večih diskov. Tako bi lahko dosegli do 128M bytov velike datoteke brez spreminjanja diskovne strukture, ob manjših spremembah pa bi lahko dosegli še bistveno večje datoteke (cca. 4G byte). - implementacija večih diskovnih struktur v okviru enega operacijskega sistema (npr. en CP/M disk in en FENIX disk) - implementacija zahtevnejše diskovne strukture (npr. FiLES-ii level 2) Za implementacijo zadnjih ciljev bi bilo bolje uporabiti modernejšo tehnologijo kot je Z80 procesor, saj nam je 8 bitna tehnologija že ob razvijanju FENIX operacijskega sistema postav­ ljala precej omejitev, predvsem zaradi omejitve naslovnega prostora na 64K bytov. 3.3.5.1 Dodeljevanje prostih sektorjev : Ko modul za obdelavo DOS funkcij zahteva prosti sektor na disku, skuša modul za dodeljevanje vmesnikov to zahtevo najprej zadovoljiti s pomočjo vnaprej zavzetih sektorjev v spominu. Ce to ni možno, modul dodeli sektor s pomočjo tabele prostih sektorjev in dodatno zasede še 254 sektorjev, ki jih bo uporabil pri nasled­ njih zahtevah za dodelitev praznega sektorja. Ta način dodeljevanja spomina precej izboljša dodeljevanje novih sektorjev na disku, saj v trenutku, ko je podatkovni sektor tabele pros­ tih sektorjev v spominu skuša le-tega čimbolje izkoristiti. Tako zahteva dodeljevanje novih sektorjev dostop do diska le na vsakih 256 sektorjev, vmesnik, ki bi drugače hranil tabelo prostih sektorjev pa je lahko v vmesnem času sproščen. Ob brisanju datoteke skuša modul za dodelle- vanje vmesnikov vključiti novo sproščeni vmes­ nik v seznam vnaprej dodeljenih vmesnikov. Ta operacija uspe le v primeru, ko je seznam dode­ ljenih vmesnikov dovolj prazen in ko le sproščeni, sektor dovolj blizu začetka diska. Ta zadnji pogoj preprečuje vnašanje sektorjev globoko znotraj diska v tabelo vnaprej dodelje­ nih sektorjev in tako zmanjša gibanje glave po disku. -. = t- Literatura : (1) Možnosti in nemožnosti mikroračunalnika DIALOG,Elektrotehniški vestnik. April 1987 (2) Peterson, Silbershatz, Operating syštem Concepts, Addison - W6sl6y 1983 (3) Comer, Operating System design, the XINU Approach, Prentice - Hali 1984 (4) XENIX operating system, Microsoft 1986 (5) VAX/VMS V4.0 operating 8yst6m, eguipment Corporation, 1985 (6) IBM DOS 3.2 Technical Reference Manual IBM Corp., 1985 (7) IBM DOS 2.0 Manual, IBM Corp. 1983 (8) Hyman, Memory resident utilities, rupts and disk management, MIS 1986 corp., Digital inter- 4. ZAKLJUČEK Operacijski sistem FENIX smo uspešno implemen­ tirali na mikroračunalniku DIALOG z lOM bytnim trdim diskom. Za delo z operacijskim sistemom je bil razvit poseben interpreter ukazov in podporni programi, ki so ekvivalentni UN1X podpornim programom, tako, da celota FENix operacijski sistem in SHELL interpreter ukazov uspešno predstavljata UNIX - združljivo okoHe v 8 bitni tehnologiji. •