Mi a lényeg?
Mi érdekli a felhasználót ?
Általában az utolsó szempontok a vásárlásnál:
1963-1965 | 1971 | 1984 | 1988-91 | 1995 | 2000-2001 | 2004 |
DOS | DOS-VS | DOS-VSE | VSE/ESA | . | . | zVSE |
OS/MFT, OS/MVT | OS-VS1 OS-VS2 MVS | MVS/XA | MVS-ESA | OS/390, parallel sysplex | zOS | . |
. | VM/370 | VM/XA | VM/ESA | VM/ESA Open | zVM | . |
. | . | AIX/370 | . | . | . | . |
. | . | . | . | . | Linux s360 | zLinux |
DOS: Legegyszerűbb op. rendszer. Kezdetben: 3 partició, 1 FG + 2 BG, párhuzamos lehetőségek nélkül nem volt interaktiv lehetőség Ma is a legegyszerűbb op. rendszer nagygépen (de nagyon kis teljesítményű, több mint 1000 egyidejű interaktív felhasználó esetén már nem ajánlott).
OS: Legnagyobb teljesítményű op. rendszer Kezdetben: 16 partició, párhuzamosan futtatható felhasználói taskok interaktiv: TSO Ma ez a legnagyobb teljesítményű op. rendszer. Igen széles párhuzamosítási lehetőségeket biztosít. Képes a programokat futás közben egymáshoz optimalizálni.
VM: Igen flexibilis, de önállóan nem alkalmas a programfuttatásokra Teljesen interaktiv: CMS
AIX/370: Időközben kihalt unix nagygépre, mivel sem a párhuzamosíthatósága (vagyis a sebessége), sem a megbízhatósága nem volt megfelelő, ezért helyette az OS-be és a VM-be belehelyezték az Open támogatást, minek következtében ezek az első oprendszerek között voltak, amelyek megfeleltek a UNIX95 szabványnak.
Linux: számos Linux disztribúció elérhető nagygépekre is.
zVM, zOS, zLinux: 64 bites memóriacímzést használnak (a zVSE nem)
A virtuális gép legfontosabb jellemzője, hogy minden tekintetben megfelel egy valódi számítógépnek.
A virtuális gép önmagában nem nyújt olyan szolgáltatást, amellyel programfejlesztést végezhetnénk. A felhasználónak saját magának kell kiválasztania azt az operációs rendszert, melyet a saját virtuális gépébe be akar tölteni. Ez egyben azt jelenti, hogy elméletileg minden egyes felhasználónak egyedi operációs rendszere lehet.
A VM hiper-operációs rendszer felépítése:
#========================================================# # CP - Control Program # # (VM hipervisor) # # # #=======#===========#====#=========#===========#=========# # VM1 # # # # # VM6 # # # # # # # VM/SP # # C M S # VM2 # # # # Control # # # # VM3# # # Program# # # A I X # # VM4 # #===#==#==# # # # CMS# # VM5 # V # V# V# # # # # VSE # # M # M# M# # # # # # MVS # a # b# c# # # # # # # # # # # # # # # # C # V# C# # # # # # # M # S# M# # # # # # # S # E# S# #=======#===========#====#=========#===========#===#==#==#Egy virtuális gép felépítése:
#----------------#-------------# | Virtuális | Virtuális | | processzor(ok) | (operatív) | | | tár | #----------------#-------------# | Virtuális csatornák | | (Virt. CSS) | #--#-----#------#----#----#----# | | Virtuális perifériák | | #--#-----#------#----#----#----#Virtuális perifériák:
A virtuális gépbe az operációs rendszert IPL -el kell betölteni.
Egy VM operációs rendszerrel működő számítógépen az alábbi módon lehet dolgozni:
1. Logon USERID - Egy saját virtuális gép igénybevételével
2. Dial VMUSER - Egy (már futó) virtuális gép igénybe- vételével.
A 2. esetben a VMUSER nevű virtuális gépen egy többfelhasználós operációs rendszernek (vagy valami hasonlónak) kell futnia, amely a DIAL parancs kiadásával hozzákapcsolódott terminálokat kezelni tudja. Ilyen rendszerek pl.: MVS, VSE, VM/SP, VTAM, stb.
A CP feladatai:
#==================================================# # # # # # # # Dinamikus lapozási terület # # # # # # # #- - - - - - - - - - - - - - - -- -# # "Locked" terület # # I/O Lock, vagy operátori Lock # # # #--------------------------------------------------# # CP nucleus (hipervisor rezidens része) # #--------------------------------------------------# # V=R "Recovery" terület # #--------------------------------------------------# # # # V=R és V=F (XA-nál) terület # # # #--------------------------------------------------# # 370 I/O (XA-nál) terület (16 Mbyte alatt!) # #==================================================# ---- 4 Kbyte # VM rendszerváltozók, valós új/régi PSW-k, stb. # (0. lap) #==================================================#
A CMS feladatai:
Mint azt már tudjuk, egy virtuális gép indulásakor a tár üres. A CMS-t is -mint minden más operációs rendszert ezen a gépen- az IPL procedúrával tölthetjük be.
A CMS elindulásához és sikeres működéséhez az alábbiak szükségesek:
Ha a tár mérete nem nagyobb, mint 16 Mbyte #=======================================# ---- 16 Mbyte # C M S # # S u p e r v i s o r # # (N u c l e u s) # #=======================================# ---- 14 Mbyte Nem címezhető terület #=======================================# ---- Def Stor # ACCESS-ált minidiszkek # # tartalomjegyzéke # #-- -- -- -- -- -- -- -- -- -- -- -- ---# # Nukleusz kiterjesztés, # # szerkesztett file-ok, # # betöltött EXEC-ek # #-- - - - - - - - - - - - - - - - - - --# # # # Programterület # # # #---------------------------------------# ---- heX'20000' # Tranziens terület # #---------------------------------------# ---- X'E000' # CMS rendszerváltozók, új/régi PSW-k...# #=======================================# Ha a tár mérete nagyobb, mint 16 Mbyte #=======================================# ---- Def Stor # # # Programterület # # #=======================================# ---- 16 Mbyte # C M S # # S u p e r v i s o r # # (N u c l e u s) # #=======================================# ---- 14 Mbyte # ACCESS-ált minidiszkek # # tartalomjegyzéke # #-- -- -- -- -- -- -- -- -- -- -- -- ---# # Nukleusz kiterjesztés, # # szerkesztett file-ok, # # betöltött EXEC-ek # #-- - - - - - - - - - - - - - - - - - --# # # # # # # # Programterület # # # # # # # #---------------------------------------# ---- heX'20000' # Tranziens terület # #---------------------------------------# ---- X'E000' # CMS rendszerváltozók, új/régi PSW-k...# #=======================================#Ha CMS alatt XEDIT-et, Help-et, stb. hívunk, akkor az adott környezetbe kerülünk. Ezek között a környezetek között parancsokkal, illetve a BRKKEY (PA1) gomb haszálatával tudunk mozogni.
#====# # CP # <========/pa1/=====>#======#=====>====CMS=========>====# # # # HELP #<========(RETURN)======# # # # #==>#======#<======# # # # # # # # # # # # # XEDIT (QUIT) # # # # HELP (QUIT) HELP # # # # # # # # # # # ==IPL CMS==> #=====# #=====>#=======# #========# # # # # # #====CMS===># # # CP # <===/pa1/==> # CMS #===XEDIT==># # # SUBSET # # # # #<==(QUIT)==# #<=(RETURN)=# # # # ==(BEGIN)==> #=====#<==# # XEDIT # #=>#========#<=# # # # # SET DOS # # # # # # # # # # OFF # # #====#<=# #=>#=====# # # #SET DOS # # # #HELP#<=====>#XEDIT# # # # ON #=====# # # #====# #=====# # # # #==># CMS #<==># XEDIT # # # # # <======/pa1/=======># DOS # # # # # # # CP # # #=#===# # # # # # # # <======/pa1/==================># # # # # # # # # #=======# # # # # # <======/pa1/=======>======(BEGIN)>==============# # # # # # # # # # # <======/pa1/=======>======(BEGIN)>=========================# #====# # # # #========#<==<(RETURN)====SUBSET=>====>=#Ha egy programot elindítunk, akkor az abban a környezetben fut, ahonnét indítottuk. Abend esetén a CMS-hez, vagy a CP-hez (System Abend) térünk vissza.
A CMS-ben különböző részeiben kiadhatunk egy másik környezetnek szóló parancsot is. Ekkor a CMS az alábbi módon próbálja a parancsot értelmezni:
XEDIT ===> CMS ===> CP ===> Hibaüzenet, ha nincs ilyen parancs.
A CMS a saját parancsait a következő sorrendben próbálja értelmezni:
#====# #======# #=========# # # # XEDIT#==#===pl.LOAD + START====># # # # # #<=#=# # # # # #======# # #=Normal Program End==# User # # # # HELP #<=#=# # # # CP # # #==# # # # # # #======# # # # Program # # # # CMS #==# # # # # # # #<===# # # # # #======#<==Abnormal End==(ABEND)==# # #====#<======System Abend====================#=========#A CMS egy egy felhasználós interaktív operációs rendszer. 256Kbyte és 2Gbyte közötti virtuális tárat igényel. A CMS saját tárigénye a nukleuszon kívül: 200K (256K virt. tár esetén) - 4Mbyte (2Gbyte esetén)
A CMS fő funkciói
A CMS egyik eljárásnyelve a Restructured EXtended eXecutor language (REXX), amit a System Product Interpreter hajt végre, az alábbi módon jellemezhető:
A SPOOL rendszerek lényege ekkor:
Dispatch Eligible (Kiszolgálási) (Kiválasztási) List List #==========# Kiválasztás #==========# # #<-------------------#--# # # # # | # # # # | # #=======# # # # | # # #-#-----#-<-- # # | # # | # # Minor # # | # # CPU | # # Time # # | # # | # # Slice # # | # # #-#-----#---> # # | # #=======# # # # | # # # # | # # # # | # Wait # # Major Time Slice # | # #------------# #------------------>-#--# #<----# | #==========# #==========# | | | | | | #=========================================================# | # # #---># Dormant (Várakozó) List # # # #=========================================================#
A VM-ben a lapozás a következőképpen voltak megoldva a kezdeti verziókban (illetve a nem nagygépes rendszerekben jelenleg is így van): Amikor a laphiba keletkezik, a CP készít egy csatornaprogramot a kívánt lap beolvasására. Kiválaszt egy szabad lapot a virtuális tárban, hogy a kívánt lapot beolvashassa(page in). Elindítja a csatornaprogramot, aminek a végrehajtása alatt más virtuális gép fog futni. Ha a kért lap bejött (azt megszakítás jelzi), akkor az eredeti program folyatódhat. Ha nem talál a rendszer üres lapot, akkor ki kell írni valamelyik lap tartalmát a lemezre (page out). Ezt az alapalgoritmust szükség szerinti (demand) lapozásnak hívjuk.
Cél: A laphibák (és így a lapozás) drasztikus(!) csökkentése.
1. A tapasztalat azt mutatja, hogy a programok futás közben nagy valószínűséggel előre kiszámítható sorrendben használják a lapokat. Ezért a VM/XA statisztikát készít a használt lapokról és a program "viselkedéséről", majd becslést készít arra vonatkozóan, hogy mely lapokat fogja a program egymás után használni. Ezeket a lapokat egymás mellé írja ki a lemezre, így később ezek egyetlen I/O művelettel behozhatóak. A CP a nem hivatkozott lapokat egy külön blokkba teszi.
Virt. tár #======================# # # # #---# #---# # diszk # | 3 | | 5 | # ################################## # #---# #---# # # #---##---##---##---##---##---# # # # =====> # | 1 || 2 || 3 || 4 || 5 || | # # #---# #---## # #---##---##---##---##---##---# # # | 4 | | 1 |# ################################## # #---# #---## # #---# # # | 2 | # # #---# # #======================#Ha legközelebb a program az 1-es lapra hivatkozik, akkor a CP egy művelettel beolvassa mind az öt lapot. Ha a program előzsör a 3-as lapra hivatkozik, akkor a CP ugyanúgy beolvassa mind az ötöt, csak a csatornaprogramot úgy építi föl, hogy a 3-as lappal kezdődjék az olvasás. Ha a kért lap már a tárban van (ezt megszakítás jelzi), akkor a kérdéses program folytatódhat, noha a csatornaprogram a további lapjait még nem hozta be. Mire a feldolgozás a többi laphoz ér, a csatornaprogramok nagy valószínűséggel behozták a többi szükséges lapot is. Ezzel a módszerrel a laphibák számát kb. 1 nagyságrenddel lehetett csökkenteni az alapalgoritmushoz képest, miközben az I/O eszközök terhelése nem nőtt jelentősen (A lemezről 1 rekord vagy 1 sáv szinte ugyanannyi idő alatt jön be). E folyamatot Blokk-Paging -nek hívják.
2. Amikor a laphiba előáll, akkor keríteni kell egy üres lapot. Ha nincs üres lap, akkor csinálni kell. Ha akkor kellene ezt a műveletet elvégezni, amikor a laphiba fellépett, akkor a hatékonyság igen rossz volna, a válaszidők nagyon hosszúak lennének. A CP ezért vezet egy listát (minden valós processzorhoz külön), melyen a szabad lapok vannak felfűzve. Ha ennek a listának a hossza egy bizonyos érték alá csökken, akkor a CP olyan taskokat indít el, melyek növelik a szabad lapok számát.
5. Lapozás az Expanded tárba:
A CP, amint a laphiba bekövetkezik, megvizsgálja, hogy a kérdéses lap az expanded tárban van-e? Ha ott van, akkor azt azonnal behozza, és a kérdéses program azonnal folytatódhat. A processzor speciális utasításokkal rendelkezik a lapok mozgatásához, melyek 120 Mbyte/sec-nál is gyorsabban végzik el a lapcserét. A lemezek sebessége "csak" 2.5-5 mbyte/sec csatornánként. Az expanded tár igénybevétele a lapozáshoz természetesen plusz CPU időt igényel, de a legtöbb esetben ez nem éri el a csatornaprogram előállításához szükséges időt. Az expanded tárból időnként ki kell vinni a régen nem használt lapokat lemezre. A kivitel a valós táron keresztül történik. Ez a "migration" (költöztetés).
Valós Tár #=====================# Expanded # # tár # # #=====================# # ====#===# PGOUT # # # # #=========#==> # # # # # # # # # #=====#==> <==#=============#=== # # # # PGIN # # # #=====================# #==========#=== # # # "Migrációs" <==#==# #=====================# # # Puffer # # #================#====# # # ################## # # # <=======# # Mágneslemez # ##################
A különböző operációs rendszerek többé-kevésbé használják ki a CKD diskek előnyeit. Az MVS teljesen kihasználja, ezért nem is használható FB (Fix block) diskekkel. A VM önmagában kis mértében kezeli a diskeket (virtuális memória, spool, minidisk kontrollinformációk tárolására), képes FB-vel is együtműködni, de csak csökkent hatékonysággal. A CMS nem használja ki a CKD előnyeit, formatáláskor fix méretü, sorszámozott sectorokra osztja a diskeket.
A többi I/O művelethez hasonlóan a diskeket is csatornaprogramok segítségével érhetjük el. Ezekben természetesen igen szűk utasításkészlet van egy CPU-hoz hasonlítva, pl. különböző relációk (=, <, >, <=, >=) alapján számláló/kulcs alapján keresni, beolvasni, kiírni.
A klasszikus értelemben vett I/O emuláció rendkivül erőforrásigényes lenne, szerencsére a nagygépes architektura következtében egy sokkal hatékonyabb módszert használ a VM. Ennek során a csatornaprogram elejére illeszt egy utasítást, ami eltolást és méretkorlátozást tartalmaz. Pl. ha a felhasználó minidiskje 5 cylinder méretü, és a 42. cylinderen kezdődik, akkor a CU hozzáadja a cylindercímekhez a 42-t, és ellenörzi, hogy nem lóg-e túl az 52. cylinderen. Ebből logikusan következik, hogy a VM csak a fizikaival egyező tipusu diskeket emulál. Természetesen a a viruális perifériáknak más címe lehet, mint a fizikaiaknak, ennek megfelelően ezt is módosítja.
Az adatok cache-elését elsődlegesen a CU-k végzik. Ezért vizsonylag nagy memóriával látjál el őket. A konkrét módszerek a CU-tól függően jelentősen eltérhetnek, pl.: -Az Examban internal diskek vannak, ezek "pc"-s SCSI-2-es 9 Gbytes diszkekből épülnek fel, ezek közül 4-hez tartozik 2 SCSI vezérlő (így pontos a megfogalmazás, mivel a két vezérlő bármelyike tud a diskek bármelyikére írni), az adatok tükrözve vannak (vagyis az operációs rendszer a diskek felét látja), az írás kicsit lassúbb (2 seek-et kell megvárni), az olvasás jóval gyorsabb, mivel arról olvas, amelyikről gyorsabban tud. A gépben lévő 256 Mbyte memóriából tetszőleges rész lehet a hardver cache (vagyis ezt a memóriát nem látja az op.rendszer). Ennek egy része olvasási, egy része (service processorból tilthatóan) write-back cache. Áramszünet esetén az utóbbi automatikusan letiltódik (miközben kb. 20 percig még megy a gép). Természetesen ha a tükrözött egyik példány helyreállítása menet közben is megtehető.
Mind a szoftver, mind a hardver hibák kijavítását az IBM az iparágon belül szokatlanul gyorsan próbálja javítani. Hibátlan szoftvert még a nagyon alapos tesztelés után sem lehet létrehozni, azonban a súlyos (a napi munkát akadályozó) szoftver hibákat 24 órán belül javítják, ilyenkor egy önálló csoport az IBM központban csak ennek a kijavításával foglalkozik. Természetesen az esetek nagy részében már egy ismert hiba jelentkezik, akkor azonnal javítják.
A hardver esetében elsődleges cél az úgynevezett egy pontú hibák lehetőségének megszüntetése. Vagyis a rendszerek oly módon kell megtervezni, hogy bármely pontjának a meghibásodása esetén a rendszer egésze változatlan módon (és elfogadható sebességgel) tovább működjön.
Ha bekövetkezik egy hiba, akkor a lehető leggyorsabban ki kell javítani. Az IBM-mel lehet olyan szerződést kötni, hogy 1 órán belül javítják a hibákat. Természetesen ehhez szükséges, hogy a gép telefonon kapcsolatban legyen az IBM központtal, és autómatikusan megrendelje az elromlott alkatrészeket.
Egy megbízható rendszert csak úgy lehet elkészíteni, hogy minden rendkívüli helyzetet naplóznak. Például az természetes dolog, hogy a háttértáoló néha nem tudja elolvasni a rajta lévő adatokat. Ekkor pl. a msdos 30-szor újrapróbálja, mielőtt hibaüzenetet adna. Nagygépes rendszerben természetesen ezek naplózásra kerülnek (súlyosabb esetben az operátort is értesíti), és amennyiben túl gyakoriak, akkor ki lehet cserélni az ezközt, mielőtt még ténylegesen meghibásodna.
Nem csak a hardver eseményeket, hanem a felhasználók munkáját is naplózni kell, ezéltal az esetleges vitás helyzetek könnyen eldönthetőek.