menu
shopping_cart
0
KOSÁR

12. lecke

Operációs rendszerek

lightbulb_outlineMultitasking, az operációs rendszerek rétegei, tulajdonságai, a számítógép indulása...

Az operációs rendszer feladata, hogy megteremtse a kapcsolatot a hardver és az ember között és hogy egységes környezetet biztosítson a futtatandó szoftverek számára melyek között futás közben megosztja a rendelkezésre álló erőforrásokat. További feladatai:

  • perifériakezelés
  • parancsok végrehajtása
  • hibakezelés
  • adatvédelem

Multitasking

A legtöbb operációs rendszer az elvégzendő feladatokat időosztásos módszerrel menedzseli, az elvégzendő feladatok között váltogat, és mindegyikből csak egy kis részletet csinál meg, így biztosítja a multitaskingot, a feladatok látszólagos párhuzamos elvégzését. Valójában a rendszer egyszerre mindig 1 darab feladattal dolgozik és azt több lépésben fejezi be.

A hardver fejlődésével lehetővé vált a tényleges multitasking, amikor több szálon, egymás mellett párhuzamosan futnak a programok. Ezt a többmagos processzorok és a többszálas feldolgozás megjelenése tette lehetővé.

Az operációs rendszerbe épített ütemző dönti el, hogy melyik feladat kaphat futási jogot és melyik feladatnak kell várakoznia amíg a fontos feladatok le nem futnak. Az ütemzőalgoritmus a feladatokat fontossági sorrendbe rendezi és, mindegyik kap egy prioritási számot. A magas prioritású feldatok több processzoridőt kapnak, az alacsony prioritású feldatok kevesebbet.

  • Magas prioritású folyamatnak minősülnek azok a szolgáltatások amelyek közvetlen kapcsolatban állnak a felhasználóval. Ilyen például a ki- és bemenet kezelése vagy a grafikus felhasználói felület kezelése. Például a billentyűlenyomás eredményét a felhasználó szinte azonnal (pontosabban azonnalinak érzékelve) szeretné létni a képernyőn.
  • Az alacsony prioritásúnak minősül az a folyamat aminek eredményét belátható időn belül meg szeretnénk kapni, de nem szükséges, hogy valós idejű legyen. Ilyen például a fájlmásolás.

A feladatkezelőben látjuk kilistázva a futó programokat. A feladatkezelő elindítása:

  • Windows: Ctrl + Alt + Del vagy Ctrl + Shift + Esc (előbbi egy szolágltatáslistát jelenít meg a feladatkezelő indítása előtt, utóbbi közvetlenül a feladatkezelőt indítja el.)
  • OSX: Cmd + Alt + Esc
  • Linux: Ctrl + Alt + F1, és a ps -aux parancs kiadása

Itt lehet beállítani a feladat prioritását és különböző paraméterek szerint sorbarendezni a futó folyamatokat.

Egy feladatnak 3 állapota lehet:

Rétegek

Egy operációs rendszer réteges felépítésű.

  • A rendszernek az alapja a kernel, más néven a rendszermag, ami közvetlenül kommunikál a hardverrel. Úgy lehet elképzelni, mint egy ház alapját. Alacsony szintű programozási nyelven íródik (pl Assembly), mert nagyon fontos, hogy magasan optimalizált, hibamentes és gyors legyen.

  • Az operációs rendszerek azon felületét, ami közvetlenül érintkezik a felhasználóval shell-nek (rendszerhéjnak) nevezzük. Ez lehet

    • parancssoros kezelésű
    • vagy grafikus felületű. A grafikus felület - hivatalos nevén a GUI, Graphical User Interface - változatos: Az egyszerű csempéktől kezdve (Windows 8) az érintéssel vezérelhető felületeken keresztül (Android) a bonyolult 3D megjelenésig (Linux, Compiz Fusion) minden elképzelhető.
  • Az operációs rendszer programokat futtat. A programok igénybe szeretnék venni a rendszer bizonyos szolgáltatásait. Ezt az rendszer API-ján az Application Programming Interface-én keresztül tehetik meg. Ez egy olyan felület, amin keresztül a programok beszélhetnek a rendszerhez és rendszerhívásokat kérhetnek.

A ma megszokott ablakos grafikus felhasználói felületet a Windows és a Mac OS készítői a 80-as években a Xerox cég egyik gépének innovatív kezelőfelületéről "mintázták". Az egyik ilyen modell a Xerox Star Workstation volt, 1981-ben.

Csoportosítás

Egy rendszer lehet:

  • egyfelhasználóstöbbfelhasználós

    • A korai rendszerek, mint például a Windows elődje, a DOS (Disk Operating System) 1 darab felhasználót kezelt és egyszerre csak 1 feladatot tudott futtatni
  • egyfeladatos ↔ többfeladatos

  • lágy valósidejű (soft real time) ↔ kemény valósidejű (hard real time)

    • A valósidejű rendszerek egy eseményre adott időn belül adott valószínűséggel válaszolnak. A lágy valósidejű rendszerek esetén ez a valószínűség kisebb, mint 1 (<1) a kemény valósidejű rendszerek esetén ez a valószínűség egyenlő 1-el (=1).
    • Például egy lágy valósidejű rendszer lehet olyan, hogy 90%-os valószínűséggel válaszol egy bekövetkező eseményre 100 ms-on belül, ami azt jelenti, hogy 10 eseményből csak 9 esetén tudja betartani a megadott időhatárt. A legtöbb operációs rendszer lágy valósidejű.
    • Egy kemény valósidejű rendszernek 100%-os valószínűséggel kell válaszolnia időhatáron belül, mert ha nem így tesz, annak beláthatatlan következményei lennének. Hard real time rendszerek futnak például sugárterápiás készülékeken.
  • kliens ↔ szerver

    • A szervergépek valamilyen szolgáltatást szolgáltatnak ki a kliensgépeknek. Ezekre speciális szerverekre tervezett operációs rendszerek kellenek a gép felépítése maitt, ami tartalmazhat több merevlemezt, több processzort és hatalmas memóriát, amit egy hátköznapi operációs rendszer nem tud már kezelni. Az ilyen rendszerek többnyire kezelik a duplikátumokat (RAID - Redundant Array of Disks merevlemezek) és hibatűrőek (eltávolíthatunk belőlük menet közben merevlemezt, memóriát)
    • Szervergépen futhat: webszerver ami weboldalakat szolgál ki, e-mail szerver, terheléselosztó szoftver, játékszerver...
  • beágyazott rendszer

    • Olyan speciális számítógépes rendszerek, amelyeket egy jól meghatározott feladatra találtak ki. Nevét onnét kapta, hogy az ilyen típusú rendszerek nagyon szorosan kötődnek a hardverhez, kvázi beágyazódnak beléjük, máshol nem használhatóak. Ilyen rendszer példázl a hálózati routereken, a set-top box-okon futó rendszer vagy éppen egy atomerőművet működtető rendszer.
  • mobil operációs rendszer

    • Régebben ez is beágyazott rendszernek minősült, de manapság az Android korában külön kategóriává lépett elő. A mobil operációs rendszerekre jellemző, hogy speciális GUI-juk van, az akkumulátor üzemidő maximalizálására törekednek, és kezelik a mobiltelefonhoz kapcsolódó összes szenzort.

A fenti négy operációs rendszer közül a Linux, Android, OSX és iOS úgynevezett Unix alapú operációs rendszer, mert mindegyiket az 1969-ben készített Unix operációs rendszerről mintázták. A Unix rendszert Ken Thompson és Dennis Ritchie készítette, aki később kidolgozta a C programozási nyelvet is. A unix óriási hatást gyakorolt az operációs rendszerek fejlődésére, csakúgy mint a C programozási nyelv a programozási nyelvekre.

A unix alapú rendszerek felépítése nagyon átgondolt, biztonságos, több felhasználót kezelnek, különböző jogosultságokkal, ennek köszönhető, hogy szinte alig támadják ezeket a rendszereket a vírusok. Főleg a Linux rendszer örvend nagy népszerűségnek, mert minden szoftver és maga a rendszer is teljesen ingyenes sőt még a rendszer és a hozzá köthető szoftverek forráskódjába is bárki betekinthet, készíthet belőle módosításokat saját kedve szerint.

Több fajta kernel létezik:

  • Monolitikus kernel: Az összes operációs rendszerhez köthető funkció egyetlen nagy rendszermagban van.

    • Hátránya, hogy nem skálzható, nem bővíthető, nem szabható egyedire. A monolitikus kernel összes szolgáltatása elindul rendszerindításkor.
    • Előnye az egyszerűsége és stabilitása. Általában kevésbé változó beágyazott hardvereknél alkalmazzák.
  • Moduláris kernel: Ez egy rendszermag, igény szerint betölthető modulokkal. A betöltött modul nagyon szorosan próbál kapcsoóldni a kernelhez.

    • Hátránya: Egy modul meghibásodása teljes rendszerleállást okoz. Moduláris kernelt használ a Windows is, ezért láthatjuk gyakran a kékhalál képernyőt.
    • Előnye: Jól skálázható, egyedire szabható. Gyakran változó hardverre telepíthető rendszerenél használják.
  • Mikrokernel: A lehető legminimálisabb rendszermag, amiben csak az alapvető rendszerfunkciók találhatók meg. Az összes többi funkció egy másik absztrakciós szinten található a nagyobb biztonság érdekében. A mikrokernel és a többi funkció egy speciális kliens-szerver üzenetküldési modellel kommunikál egymással, így egy szolgáltatás leállásakor nem omlik össze az egész rendszer, hanem az adott szolgáltatás újraindítható.

  • Hibrid kernel: A kernel ami,ha kell, akkor mikrokernellé alakul, ha kell, akkor monolitikus kernellé alakul.

Az opeációs rendszereknek létezik API felülete (Application Programming Interface), alkalmazásprogramozási felület, amin keresztül a programok, vagy a programozó rendszerkéréseket küldhet a rendszermaghoz, hozzáférve a szolgáltatásokhoz. Tehát az operációs rendszer nem zárt, hanem van programozási kezelőfelülete, amin keresztül a felhasználói programok meghívhatnak bizonyos funkciókat, vagy a programozók elérnek szolgáltatásokat.

A számítógép elindulásának folyamata

Nulladik lépés: Az alaplapon található BIOS (Basic Input Output System) chip indítja a számítógépet. A BIOS tartalmazza a gép paramétereit, valamint a jelenlegi konfigurációt, hogy milyen bővítőkártyák és eszközök vannak csatlakoztatva a számítógéphez. A BIOS egy memória, amit egy akkumulátor táplál. Ha eltávolítjuk az akkumulátort, akkor "elfelejti" a beállításokat. A BIOS minden rendszerindításkor egy öntesztet hajt végre (POST -- Power On Self Test), hogy nem merült-e le az akku és állt vissza minden gyári beállításra -- illetve új csatlakoztatott bővítőkártyákat, eszközöket keres. A BIOSnak van grafikus felülete is, amit rendszerindításkor a DEL gombbal lehet elindítani. (Laptopok esetén F1..F12 gombok valamelyikével). Itt beállíthatjuk a BOOT sorrendet, és ki-be kapcsolhatunk hardverközeli funkciókat.

    • A BIOS szabványt a 70-es években dolgozták ki és mára olyan elavult limitációkat tartalmaz, amely lehetetlenné tenné az egyre nagyobb címteret és egyre több perifáriát, partíciót és változatos architektúrákat tartalmazó gépek indítását. Utódja az UEFI azaz a Universal Extensible Firmware Interface, amit a 2000-es évek eljén dolgoztak ki, erre már fel van készítve.

Az UEFI tényleg grafikus felülete egér támogatással, távoli hálózati menedzsmenttel, titkosítás kezeléssel, szenzorinformációk lekérdezésével, paraméterek állítgatásával.

  1. A rendszerindítás első lépése, hogy a BIOS (vagy az UEFI) az eltárolt boot sorrend alapján bootolható médiát keres. Bootolhatunk floppy-ről, merevlemezről, cd-ről, pendrive-ról. (Az operációs rendszer memóriába történő betöltésének megkezdését nevezzük rendszerbetöltésnek vagy hivatalosan boot-olásnak.)
  2. Ha találtunk egy boot médiát, például egy bootolható merevlemezt, akkor kiolvassuk a lemez elején található egyik szektort, az MBR-t a Master Boot Recordot, ami megadja, hogy hol található a lemezen a kernel, amit először be kell tölteni a memóriába, hisz ez a rendszer alapja.
  3. Elindul az eszközmeghajtók betöltése, így az operációs rendszer kezelni tudja a perifériákat.
  4. Betöltődik a grafikus felhasználói felület is, és bejelentkezhet a felhasználó.

Eszközmeghajó más néven driver, más néven illesztőprogram egy adott eszköz elérését, funkcióinak használatát lehetővé tevő szoftver, ami beépül az operációs rendszerbe. Az operációs rendszer nem ismerhet minden perifériát így szükség van egy olyan szoftverre, (amit a hardver gyártója készít el), ami "megmondja a rendszernek", hogyan kell kezelni az adott eszközt.

A létfontosságú hardverekbe beépítve található egy alapértelmezett üzemmód is, amit a rendszer a hardver első használata során aktivál. Ilyen például a monitorokba épített VGA, 640x480-as üzemmód. Mivel egy monitor létfonotsságú a rendszer használatának megkezdéséhez így szükséges egy default illesztöprogram, ami elindul, és így csökkentett funkcionalitással, de használható az eszköz. Ezután az illesztőprogram telepítésével aktiválható az összes funkció és használatba vehető teljesen az eszköz.

Az operációs rendszer feladatai

  • Perifériák kezelése: Új periféria felismerése és használatba vétele. Perifériákat a portokra (nem az alaplapra) menet közben is csatlakoztathatunk. A Windows 98 támogatta először az ilyen Plug&Play működést.

  • Parancs értelmezése, végrehajtása: Egy szoftver önmagában egy nagy parancshalmaz, amit futtatni kell, ezen kívül a felhasználótól érkező parancsokat is végre kell hajtani. Ilyen például az operációs rendszer szolgáltatásainak elérése: mappanyitás, fájlmásolás, programok futtatása, parancsikon készítése...

    • Mindeközben olyan háttérszolgáltatásokat is futtatni kell, amely a hibátlan működést fenntartja. Töredezettségmentesítés, biztonsági frissítések telepítése, tűzfal szolgáltatások...
  • Adatvédelem, biztonság

    • Szoftveres adatvédelem: Egy operációs rendszerben 2 fajta védelmi szint létezik.

      • (1) user mode A felhasználói védelmi szinten olyan dolgok töténnek, amelyekhez nem szükséges alacsony szintű kernel hozzáférés. Ilyen például a keresési indexelés és a legtöbb háttérben futó folyamat.
      • (2) kernel mode. Kernel mode-ban futnak az alacsony szintű kernelfolyamatok. A fájlrendszerek kezelése, másolás, eszközmeghajtók működése...
    • Felhasználói adatvédelem: Amikor a felhasználók adatait védi az operációs rendszer felhasználói fiókokkal, saját mappával, és különböző jogosultsági körökkel, amit a rendszergazda állíthat be. (Melyik felhasználó, melyik mappába láthat bele, milyen rendszerbeállításokat módosíthat.)

  • Hibakezelés: A rendszer feladata, hogy elkapja a hibát, mielőtt az eszkalálódik. A hiba megállítására szolgálnak a fent ismeretett védelmi szintek. Az operációs rendszert úgy kell elképzelni, mint egy pásztort, aki terelgeti bárányait. Ha valamelyik bárány rosszalkodik, akkor azt leállítja még mielőtt valami komoly baj történne. A hibáról legtöbbször az adott szoftver írója tehet, nem pedig az operációs rendszer (mégis mindenki a rendszer készítőit szidja). A leállításról egy üzenetben kapunk tájékozatást:

Ha a hibát érszletesebben is ki akarjuk vizsgálni, akkor a rendszer által vezetett eseménynaplókat kell megnéznünk. Ez Windows rendszer alatt elérhető, ha a Start Menüben a Saját gépre jobbklikkelünk és itt > a Kezelés menüpontot választjuk.

A hiba nem csak egyszerű program leállításhoz vezethet, hanem néha le kell állítani a teljes rendszert, hogy megőrizzük az adatok biztonásgát. A rendszer leállítását maga után vonó hiba a BSOD, azaz a Blue Screen of Death -- köznyelven kékhalál. Nevét onnét kapta, hogy a rendszerleállítás előtt a Windows egy kék színű képernyőt jelenít meg, rajta egy hibakóddal. A kékhalál egy védekezési mechanizmus. Például egy rosszul megírt illesztőprogram olyan memóriaterületre kezd el írni, ami nem az övé (buffer overflow). Ez támadási felületet biztosíthat rosszindulatú kódoknak (ha vannak), így az egyetlen dolog amivel megőrizzük a biztonságot, hogy leállítjuk a rendszert. A leállítás okáról továbi inforámciókat kapunk a hibakódra történő internetes kereséssel vagy az eseménynaplók átböngészésével. A kékhalál során a rendszer készíteni szokott crash dump-ot is, ami a memóriának vagy a memória egy részletének lenyomata -- így a hibakeresést el tudják végezni a rendszergazdák.

A most felsorolt operációs rendszer funkciókat a rendszernek erőforrás-elosztással és menedzseléssel együtt kell megvalósítania, hogy minden program megfelelő sebességgel fusson. Mindezeket kényelmi szolgáltatásokkal is kombinálhatja, ha van elég erőforrás. Ilyen például a 3D programváltás és mi szem-szájnak ingere.

Szoftverek

A rendszer által futtatott felhasználói programokat több kategóriába lehet sorolni:

  • Rendszerprogramok: Fájlkezelő, töredezettségmentesítő...
  • Fejlesztői programok: Code::Blocks, Visual Studio, Free Pascal, különböző IDE-k...
  • Irodai szoftverek: Open Office, Microsoft Office
  • Kommunikációs szoftverek: Böngészők (Firefox, Opera, Chrome), chatprogramok
  • Médiaszoftverek: Lejátszók (VLC Media Player, Windows Media Player)
  • Szerkesztőprogramok: Gimp képszerkesztő, Audacity hangvágó, Adobe After Effects
  • Biztonsági programok: Vírusirtók, tűzfalak
  • Segédprogramok: Minden egyéb

Szoftver is szellemi termék, függetlenül a megjelenési formától: forráskód, futtatható állomány - vagy bármilyen más formában rögzített állapotától. A szoftver létrejöttének pillanatától szerzői jogvédelem alatt áll. Szoftvervásárlás esetén nem lettünk a szoftver tulajdonosai (mint pl egy könyvnél), hanem csak jogokat kaptunk a felhasználásra. A felhasználási jogokat az EULA (End User License Agreement) foglalja magában. (Például, hogy hány gépre lehet telepíteni vagy hogy tiltják a kód visszafejtését. )

A szoftverek jogi kategóriái:

  • Teljes verzió: Egy fizetős szoftver teljes verziója, amihez általában termékkulcs vagy egyéb aktivációs módszer tartozik.
  • Shareware: "megosztott árú" szó szerinti fordításban, egy vásárlás előtt korlátozott ideig kipróbálható teljes verzió.
  • Demo: Bemutató példány, amibe csak pár funkció van beépítve (vagy játékok esetében csak pár pálya), demonstrálva a szoftver működését.
  • Freeware: ingyenes, teljes verzió aminek zárt a forráskódja.
  • Public domain: a szerző lemondott minden jogáról, szabadon felhasználható bármire.
  • Open source: Ingyenes, nyílt forráskódú. A forráskód szabadon terjeszthető és módosítható azzal a megkötéssel, hogy a módosított termék szintén nyílt forráskódú és ingyenes legyen. Ilyen jogállásúak a Linux rendszerek, vagy némely szoftver, amiket a világon több milliós közösség fejleszt és tökéletesít. (VLC, Chromium, Gimp...)
  • Abandonware: "magára hagyott árú" szó szerinti fordításban. Régen írt, ma már nem forgalmazott programok, amiket ingyen be lehet szerezni.

A szoftvergyártók szerzői jogait a BSA (Business Software Alliance), egy nemzetközi szervezet védi, ami küzd a jogosulatlan szoftverfelhasználás és illegális szoftverterjesztés ellen. Magyarországon hasonló szervezet a ProArt és az ASVA (Audiovizuális Művek Szerzői Jogait Védő Közcélú Alapítvány), amik inkább az audiovizuális szerzői jogsértések után kutakodnak.

Virtualizáció

Manapság egyre elterjedtebb az operációs rendszerek virtualizációja a számítógépek teljesítményének növekedése miatt, így 1 számítógépen több operációs rendszer is futhat párhuzamosan ún. virtuális gépben. A virtuális gép egy szoftveresen előállított hardveres környezet. Így elérhető az is, hogy egy adott architekhtúrán, egy oda nem illő rendszert futtassanak a virtualizáció segítségével. Ez biztonsági szempontból is jó, mert a virtualizált rendszer teljesen elszigetelt a gazdarendszertől. Főleg webszervereken használják, ahol 1 nagy teljesítményű szervergépen sok rendszer fut, ami a külvilág fele úgy látszik, hogy több szervergépe van a szolgáltatónak -- de a hétköznapi ember számára is hasznos:

Mac OS X rendszeren fut egy virtualizált Windows: