10. tétel

Operációs rendszerek

Az operációs rendszer egy olyan programcsomag, amely segít kapcsolatot teremteni a gép és a felhasználók között, lehetővé teszi a programok írását, futtatását, és segít abban, hogy a gép erőforrásait (CPU, RAM, HDD, stb.) a lehető legjobban kihasználjuk..

Az első operációs rendszerek a számítógépek megjelenése után 20 évvel terjedtek el. Az első gépeken nem volt operációs rendszer, vagy nagyrészt hardver elemekből állt.

Feladatai:

  1. Vezérelni a programok végrehajtását
  2. Ütemezni a programok futását, amennyiben több program is futhat a gépen
  3. Elosztani az erőforrásokat a programok illetve a felhasználók között
  4. Biztosítani a kapcsolatot a felhasználók és a gép között
  5. Biztosítani a kapcsolatot a gép és a perifériák között.
  6. Támogassa a programok, új szoftverek fejlesztését (programfejlesztési támogatás)

Osztályozás:

  1. A felhasználók száma szerint
  2. A feldolgozás módja szerint:
  3. Az egy időben futtatható programok száma szerint

Egyfelhasználós rendszerek:

Tipikus képviselője az MSDOS volt, de a régi 8 bites gépek operációs rendszere (C 64, ZX Spektrum) is ilyen volt.

A gépet egyidőben csak egy felhasználó tudja használni. A felhasználói interfész általában interaktív jellegű, a régebbi rendszerekre  viszont a kötegelt feldolgozású volt.

Többfelhasználós rendszerek:

Olyan operációs rendszerek, amelyek lehetővé teszik azt, hogy ugyanazt a gépet több felhasználó használhassa, terminálokon keresztül. (terminál= képernyő + billentyűzet együttese)

A gépen tehát több program is fut egyidőben, ez a multiprogramozás.

Kötegelt feldolgozás

Már nagyon elavult feldolgozási módszer. A felhasználótól egy, a számítógépet működtető  személy (az operátor) begyűjti az elvégzendő feladatokat (=kötegelés), majd ezeket egymás után, lefuttatja a gépen. A felhasználók egy későbbi időpontban megkapják az eredményeket.

Ennek a feldolgozási módnak egy automatizált maradványa az MS-DOS-ban batch fájl, amely operációs rendszer szintű parancsok feldolgozására való, továbbá a UNIX script fájljai is ilyen jellegűek.

Interaktív feldolgozás:

A felhasználó minden parancsra azonnali választ kap a rendszertől. Többfelhasználós rendszerekben ez az időosztásos üzemmódban jelent meg ez a lehetőség. A mai időosztásos rendszerek képesek a kötegelt feldolgozásra is.

Valósidejű feldolgozás

Speciális célokra fejlesztették ki. a valós idejű (real-time) operációs rendszereket. Az adatok a számítógépekbe érzékelőkön keresztül érkeznek. Az operációs rendszerek ezeknek az adatoknak a felhasználásával eldönti, hogy beavatkozik-e a rendszerbe, és ha igen, milyen módon.

Különböző ipari folyamatokban, pl. atomerőművekben, űrhajók irányítására alkalmaznak valós idejű rendszereket.

Monoprogramozás

Olyan operációs rendszer, amely egyidőben csak egy program futását teszi lehetővé.

Multiprogramozás

A program végrehajtása során gyakran szükség van valamelyik periféria közreműködésére.      A legtöbb periféria intelligens vezérlőegységgel rendelkezik, pl. a lemezvezérlő egységnek saját processzora van, amely önállóan végzi a feladatát: a megfelelő sávra pozicionálja az író-olvasó fejet, vezérli az adatátvitelt a lemezegység tárolójába, stb.

A CPU lényegesen gyorsabb, mint bármelyik periféria. Ezért amíg a periféria dolgozna, a processzor tétlenül várakozna. Ennek a feloldására találták ki a multiprogramozást.

Multiprogramozás esetén általában több program is a memóriában van, közülük az aktívat, amelyik éppen fut, processznek nevezzük.

A multiprogramozás lényege: amikor a periféria dolgozik, a CPU nem várakozik tétlenül, hanem átkapcsolegy másik folyamat végrehajtására.

Az időosztásos rendszer:

Sok esetben igény van arra, hogy egyszerre több felhasználó párbeszédes kapcsolatban legyen a számítógéppel. Ennek megvalósítására találták ki az időosztásos rendszert. (time sharing).

Az operációs rendszer nagyon rövid, néhány századmásodperces időszeleteket oszt ki az egyes folyamatoknak.

A számítógép ennyi idő alatt nagyon sok műveletet képes elvégezni, így minden felhasználó úgy érzi, hogy a gép csak vele "foglalkozik". Ha a felhasználó beír egy parancsot, és úgy érzi, hogy a válasz azonnal megjelenik a képernyőn. Amíg a parancsot begépeli, a CPU az időszeletek százezreit osztja ki.

Ha egyidőben túl sok felhasználó dolgozik, a gép túlterheltté válik. Ilyenkor a válaszideje erősen megnőhet.

Prioritásos rendszer (prioritás=fontosság)

Ebben a rendszerben a feladatokat valamilyen szempont szerint fontossági sorrendbe kell állítani. Ezután a felállított sorrend szerint osztja szét a rendszer a CPU idejét az egyes folyamatok között.  A fontosságot (prioritást) egy egész számmal jelöljük.

A prioritási szám függhet például a folyamat periféria- illetve számítási igényétől, a programozó személyétől (hogy mennyire nagy góré az illető), stb.

Ha érkezik egy magasabb prioritású folyamat az éppen futónál, akkor megszakítják a futó folyamatot, és az új, magasabb prioritású folyamat kapja meg a CPU-t.

Ha egy kevésbé fontos folyamatot túl sokáig várakoztatnak, mivel mindig fontosabb folyamatok érkeznek, akkor ez a folyamat sohase jutna a CPU-hoz.

Ennek elkerülésére vezették be az öregedés fogalmát. A sokáig várakozó program öregedési száma a várakozás miatt megnő, és a "nagyon öreg" folyamatok prioritási száma növekszik. Így egy idő után ez a folyamat is fontossá válik, és végre a CPU ezt is feldolgozza.

Ezután visszakapja az eredeti prioritási számát, és megint hosszú ideig várakozik, amíg rá kerül a sor...

A multitasking

Ez tulajdonképpen egy időosztásos rendszer, de itt az időszeleteket szintén több program között osztja szét a rendszer, de mindegyik programot ugyanaz a felhasználó indítja el, ugyanazon a terminálon! Az egyes programokat itt task-nak nevezik. (task=feladat).

Kétféle multitasking létezik:

Az Ms-DOS nem képes a multitaskingra.

A UNIX, Windows NT  illetve a LINUX többfelhasználós, többfeladatos, időosztásos operációs rendszerek

Programfejlesztői környezetek.

Ez egy olyan szoftvercsomag, amely új szoftverek, programok fejlesztését, nyomkövetését, javítását, fordítását és tesztelését teszi lehetővé

A programfejlesztői környezeteket az operációs rendszerrel részeként vagy attól függetlenül, különálló szoftvercsomagként forgalmazzák. Például a UNIX részét képezi egy C nyelvet használó fejlesztői környezet. A régi MS-DOS operációs rendszer részét képezte egy  BASIC nyelvű fejlesztői környezet, a Quick Basic

A CPU, vagyis a számítógép csak a gépi kódú programokat "érti meg", vagyis csak a gépi kódban megírt programot tudja azonnal végrehajtani.

A gépi kódban minden műveletet egy számkóddal jelölünk, így a gépi kódú program számok sorozatából áll.

Noha igen gyors programok írására alkalmas, a gépi kód a felhasználók számára igen nehezen átlátható, ezért igen sok hiba forrása lehet. A nehéz átláthatóság miatt a hibakeresés nagyon nehézkes.

Ezért kidolgoztak olyan köztes nyelveket, amelyek közelebb állnak az emberi nyelvhez, ugyanakkor nagyon pontos nyelvtanuk révén alkalmasak arra, hogy az ilyen nyelven kiadott utasításokat egyértelműen gépi kódra lehesssen lefordítani. Az ilyen nyelveket magasszintű programozási nyelveknek nevezzük. Példa magasszintű nyelvekre:

Egy programfejlesztői környezet a következő részekből áll:

  1. Egy ASCII szövegszerkesztö, amely lehetővé teszi a program megírását, szerkesztését, tárolását
  2. Egy programhelyesség-ellenőrző rendszer, amely a megírt program "nyelvtani hibáit " kikeresi, kijelzi, sőt, néha tippeket ad arra, hogy hogyan kéne kijavítani őket.
  3. Egy fordító, amely beolvassa a megírt ASCII formátumú programszöveget, és gépi kódra fordítja, majd a lefordított gépi kódú állományt elmenti. (ez lesz az *.EXE fájl) A fordító csak a "nyelvtanilag hibátlan" programokat tudja lefordítani.
  4. Nyomkövető rendszer: lehetővé teszi a program tesztelését, mégpedig úgy, hogy a programot lépésekre bontva hajtja végre, és mindegyik lépés után a program megállítható, lekérdezhetők az egyes adatok, így fényt deríthetünk az egyes hibákra

Ezek a részek nem mindig választhatók külön egymástól, rendszerint egybe vannak építve. Példa: a Turbo Pascal vagy a Quick Basic fejlesztői környezet.

A modern fejlesztői környezetek előre megírt kódrészlet-gyűjteménnyel, úgynevezett programkönyvtárral rendelkeznek.

A felhasználónak ezért nem szükséges például egy ablak vagy egy nyomógomb viselkedését vezérlő programot megírni, mivel ezeket készen kapja. Csak azzal kell foglalkoznia, hogy milyen események történjenek az ablakban, illetve mi történjen az adott gomb lenyomásakor.

Az olyan fejlesztői környezeteket, amelyekben az egyes grafikus párbeszédeszközöket készen kapjuk (ablakok, legördülő listák, nyomógombok, rádiógombok, jelölönégyzetek, stb) negyedik generációs programfejlesztő eszközöknek nevezzük. Az ilyen környezetek általtámogatott programozási nyelvek a negyedik generációs programnyelvek . (rövidítés: 4GL= 4th generation languages).Ilyen fejlesztői környezetek a Delphi, Kylix, Visual Basic, C++Builder, stb.

Szoftverfelhasználással kapcsolatos tudnivalók:

A szoftver egy különleges helyzetben levő termék, amelynek a fejlesztése nem kis feladat. Éppen ezért, amennyiben nem ingyenesek, a szoftvereket nem szabad engedély vagy megvásárlás nélkül használni, lemásolni, az illegális másolatot terjeszteni , ebből kereskedelmi hasznot húzni.

Licencszerződés

Olyan megállapodás, amelyben a szerzői jogok tulajdonosa meghatározza a vársárlónak a szoftver használatára vonatkozó feltételeket.

Shareware

Egy nagyobb tudású szoftver  időkorátozott, rendszerint lebutított változata. Ha megvásárolunk, megkapjuk a teljes értékű, időkorlát nélküli változatot.

Freeware

Olyan szoftver, amely szabadon felhasználható és terjeszthető, amennyiben elismerjük a gyártó céget mint a termék egyedüli létrehozóját. Ez azt jelenti, hogy a programot nem adhatjuk tovább, mint saját termékünket, és nem is változtathatjuk meg.A szerzői jogok a freeware-re is érvényesek. A freeware programok általában demo verziók.

Jogtiszta szoftver

Hivatalos forgalmazótól vásárolt szoftver, amelyet a licencszerződésben foglaltak szerint használunk fel. A jogtiszta szoftverre a gyártók garanciát vállalnak.

Update (frissítés)

A már megvásárolt szoftver új verziójának megvétele esetén kedvezményes áron jutunk a frissített változathoz, ami kiegészíti a korábbi verziót az újabb verzió képességeivel.