Operációs rendszerek 1. előadás definíciók 2007/2008. I. félév Dr. Török Levente
A tárgy célkitűzése Megismerjük a különböző architektúrák és működtető rendszereket viszonyát a felmerülő problémákat és megoldásaikat Megtanuljuk sokféle standard operációs rendszer készség szintű használatát, de ezek közül különös figyelmet szentelünk a unix kompatibilis rendszerek és ezen belül a linux operációs rendszerre.
Elvárt előismeretek A C/C++ programozás nyelv készség szintű ismerete. Angol nyelv olvasási képessége Számítógép architektúrák II. és a Digitális technika II. tárgyak teljesítése
minimális C/C++ teszt feladatok készítsen programot, ami beolvas egy string et a standard input rol és kiírja standard outputra. készítsen programot, ami lemásol egy bináris illetve egy text file t. készítsen egy programot, ami beolvas egy számot a bemenetről és kiírja képernyőre prím felbontását készítsen programot, amely numerikusan integrál egy olyan polinomot, amelynek a fokszámát és együtthatóit a billentyűzetről kapja meg. készítsen egy programot, ami előállítja, ami megkeresi városok között azt minimális úthosszat, ami minden várost érint. A városok közötti távolságok egy mátrixban vannak letárolva.
példa minimális angol nyelv ismeretére The fopen() function opens the file whose name is the string pointed to by path and associates a stream with it. The argument mode points to a string beginning with one of the following sequences (Additional characters may follow these sequences.): r Open text file for reading. The stream is positioned at the beginning of the file. r+ Open for reading and writing. The stream is positioned at the beginning of the file. w Truncate file to zero length or create text file for writing. The stream is positioned at the beginning of the file. w+ Open for reading and writing. The file is created if it does not exist, otherwise it is truncated. The stream is positioned at the beginning of the file. a Open for appending (writing at end of file). The file is created if it does not exist. The stream is positioned at the end of the file. a+ Open for reading and appending (writing at end of file). The file is created if it does not exist. The initial file position for reading is at the beginning of the file, but output is always appended to the end of the file. The mode string can also include the letter b either as a last character or as a character between the characters in any of the twocharacter strings described above. This is strictly for compatibility with C89 and has no effect; the b is ignored on all POSIX conforming systems, including Linux. (Other systems may treat text files and binary files differently, and adding the b may be a good idea if you do I/O to a binary file and expect that your program may be ported to non Unix environments.) Any created files will have mode S_IRUSR S_IWUSR S_IRGRP S_IWGRP S_IROTH S_IWOTH (0666), as modified by the process s umask value (see umask(2)). Reads and writes may be intermixed on read/write streams in any order. Note that ANSI C requires that a file positioning function intervene between output and input, unless an input operation encounters end of file. (If this condition is not met, then a read is allowed to return the result of writes other than the most recent.) Therefore it is good practice (and indeed sometimes necessary under Linux) to put an fseek(3) or fgetpos(3) operation between write and read operations on such a stream. This operation may be an apparent no op (as in fseek(..., 0L, SEEK_CUR) called for its synchronizing side effect. Opening a file in append mode (a as the first character of mode) causes all subsequent write operations to this stream to occur at end offile, as if pre ceded by an fseek(stream,0,seek_end); call.
minimális szg.arch ismeretek processzor felépítes user/kernel mode (védett/virtuális) címtartomanyok fogalma: virtuális es fizikai címek, címképzés, címterület vedelem memória manager unit regiszterek: (legalább 8086 os szinten: CS,DS,ES,SS, status word) interrupt
Formális követelmények 2 zárthelyi 2 nagy feladat (bash és C programozás) mindegyik kis zárthelyi elfogadott minősítésű teljesítése vizsga
Ajánlott irodalomak A tárgy honlapja: http://gamf.aai.googlepages.com Jegyzet: Dr. Vadász Dénes: Operációs rendszerek, Miskolci Egyetemen Andres S. Tanenbaum Albert S. Woodhull: Operaciós rendszerek unix manual (ld. man parancs gyakorlat) http://www.iit.unimiskolc.hu/~vadasz/geial202 http://www.cab.uszeged.hu/local/doc/unix/orlando/bev.html Szórakozásul: http://www.osnews.com
Ajánlott eszközök Tanszéki linux szerver: ssh val érhető el a moria.kefo.hu címen regisztráció szükséges saját linux egy külön partíción. pl: ubuntu, opensuse, debian, fedora Virtuális gépes megoldások: VmWare ben működtetett linux ok vagy colinux Egyéb: távoli linux szerver (pl. moria) + Cygwin
Melyik op. rendszert használjuk? Windows? drága jogdíj, bonyolult, rosszul tanulmányozható/dokumentáció hiány OS X Apple? kevés van belőle, drága a hw, unix az alapja Linux ingyenes, könnyen megérthető, sok verziója létezik különböző célokra. A koncepciók és problémák azonosak! Mindegyiket lehet POSIX kompatibilis módban programozni!
Mai program Op. rendszerek fejlődése célja, feladatai szerkezeti megoldásai csoportosításai Rendszer hívások (kernel trap) Eset tanulmányok
Futtatás direkt hardware en Felhasználók Software: Utility k Software: működtető rendszer Általános (pl PC) vagy cél hardware (pl. PIC controller). A feladatok dandárját a működtető rendszer végzi Egyszerű alkalmazás gyűjteménnyel operálunk vagy konfiguráljuk, monitorozzuk a működtető rendszeren. Hardware Sokszor ezek egy másik sz.gép segítségen futnak. ilyenkor beágyazott rendszerről beszélünk.
Eset tanulmány: mobil telefon A hardware: CPU: microcontroller (StrongARM) nagy flash memóriával rajta FAT filerendszerrel LCD, billentyűzet Az operációs avagy működtető rendszer feladata user interface elés kommunikáció a control és monitor alkalmazással/berendezéssel (PC) a GSM alrendszer (Texas 5x) felprogramozása Külső eszközzel monitorozható/debug olható a teljes működés
Az operációs rendszer fogalmai feladatai, funkciói Extended virtual machine: A perifériák intim ismeretének elkerülhetővé tétele. A különbözőségeket szimbolikus nevek mögé rejti és standard interface biztosít (/dev). Resource manager: hardware (CPU k, perifériák) és software (pl. adatbázis) manage elése. Responding machine (Válaszoló gép): Kernel API szolgáltatásai. (ld. később.)
Történet prehisztórikus próbálkozások Babbage: 1792 1871 analitikai gépek Ada Byron programozó (Lord Byron nővére) Majd a II. világháború és az azt követő fegyverkezési hullám, a hidegháború katalizálja a gépek fejlesztését
1. Generáció 1945 55 Elektron csöves, dugtáblák, lyukkártyák Gépi nyelvű programozás (nem assembly) Nincs OP. rendszer Ugyanaz a működtetője, építője, programozója H Aiken, J. von Neumann, Ecker, Mauchley, Zuse
2. Generáció: 1955 65 (Exploiting Machine Power) Tranzisztorok, kötegelt rendszerek, karakterorientált és szószervezésű gépek. Külön tervezők és építők; karbantartók; operátorok; programozók, felhasználók JOB fogalom Fortran nyelv
2. Generáció folyt. A JOB fogalom: load translate load exec szekvencia, eleinte kézzel, később automatizálva. nem_rezidens loader ez először monitor jellegű, végül: ütemező is Tipikus a kötegelt (batch) feldolgozás
3. Generáció 1965 80 (reducing machine) IC k, multi programming szó orientált, idő osztásos, memória particionálás, spooling software kompatibilitás fogalma az IBM OS360 asánál, PDP 11 microgépek MULTICS(PDP 7 en) > UNIX szabvány LISP, Prolog, PL1, C
4. Generáció 1980 90 (reducing complexity) LSI, VLSI GUI MSDOS/Unix/ VaxVMS, Novell Hálózati op.rendszerek, teljes párhuzamosság server client modell OOP
Ma az op.rendszerek egyre kevésbe architektúra függőek moduláris kernelek (vs. monolitikus) különleges architektúrák, grid, supercomp, OOP technológiák: DCOM, Corba, SW engineering mindenki felhasználó Dominans: linux, windows, desktop: OSX
Csoportosítás célkitűzések szerint Mainframe operating systems: VMS Server/Desktop operating systems Sinlge/Multi processor operating systems Real time operating systems: safety systems, multimedia Embedded operating systems symbian, embedded linux Smart card operating systems: pico JAVA,
További csoportosítások Hardver függőség szerint : Személyi, kis, nagy gépek OS e (?), architektúra független Cél szerint : Általános, vagy speciális célú Processzek, processzorok, felhasználók száma szerint Single, vagy multi tasking, multi processing, multi threading Single, vagy multi user Distributed Időkiosztás szerint : Szekvenciális, kooperatív, vagy beavatkozó; time sharing, real time Memóriakezelés szerint : Valós címzésű, vagy virtuális címzésű I/O és fájlrendszer megvalósítás szerint
Feladatok: Resource management Nem létezik ideális memória: gyors, olcsó, táp nélkül is emlékszik ezért a dilemma:a sebesség vs méret
Feladatok: Resource management Memória management Feladat a processzek memória igényének kielégítése és processzek egymástól való védelme
Feladatok: Resource management Processzek és viszonyaik: szülő és gyermek példa: filemanager alkalmazás alfeladatok (szálak) Feladat a hierarchikus viszonyban lévő processzek manage elése
Feladatok: Resource management Dead lock (holt pont vagy halálos ölelés) Feladat ezeket a helyezeteket elkerülni vagy feloldani.
Feladatok: Resource management Az erőforrások: memória: szabadterület menedzselése MMU/virt.memswap disk: szabadterület menedzselése, filerendszer periféria: sorban állások, prioritások cpu,dma: időosztások, prioritások A feladatok: mindenki kapjon hozzáférést (no starving) védelmet biztosítson a különböző aktorok között prioritásokat lehessen megvalósítani
Feladatok: Responding machine Kernel Application Programming Interface = rendszer hívások: fájl rendszerhez: fopen, fclose process kezelés: fork, waitpid, időzítések: time, delay inter process communication (IPC) primitívek Minden kernel API hívás egy Kernel Trap et eredményez
Processor modes Kernel (supervisor) mode egy processzor flag szabályozza a módot. privilégizált utasításokat is végre lehet hajtani periféria I/O terület elérés lehetséges User mode (protected) korlátozott utasítás végrehajtás korlátozott/felügyelt memória címterület elérés Átjárás a két mód között: system call = kernel trap
Példa egy Kernel trap re Példa: 1 4. fopen() hívás, paraméterek stack re rakása 5. paraméter átalakítás + rendszerhívás (pl. syscall() / ioctl() fv ek) 6. belépés a kernelbe, ott hívás szétosztás: DISPATCH 8. végrehajtás, visszatérési érték visszaírás 9. visszatérés a user space re
Kernel trap hívás történhet direkt hívással: user space ről (ezt láttuk az előbb) vagy kernel space ről. A kellemes interface elest standard library k ún. Run Time Library k biztosítják. Pl. a fopen() fv t. Linux ban ennek a neve a glibc. HF: utánanézni hogy néz ki egy függvényhívás után a stack HF: utánanézni mi is a linkelés. HW Megszakítással ( interrupt ). Lehet hw és sw interrupt is. HF: utánanézni, hogy milyen lépéseken keresztül történik (digit II) HW kivételes esemény ( exception ). HF: mi is ez és hogyan működik, mi történik ( C++ )
Interface ek Alkalmazás Run Time Library programozói API kernel API Op Sys kernel SPI Hardware API Application Programming Interface SPI Service Provider Interface
Buzz word: Virtualizáció Elhiteti velünk, hogy egy rendszerben egyedül vagyunk: amikor programozunk v. használjuk a rendszerünket nem kell különösen figyelni arra, hogy más user ek, programok is használják az erőforrásokat. Nem kell figyelni a velük való együttműködésre. Nem kell kooperat Standardizált környezetet jelent: mindenki aki a rendszerben van ugyanazt az interface t használja. nincsenek különbségek az egyes felhasználók között, egyes software ek között.
Buzz word: Virtualizáció Szintjei: program kódban: thread, process (shell) szolgáltatásokban: devices (/mnt/..), virtual filesystems (shfs, nfs), net services koncepcionális szinten: javavm, iframe kernel & file system: xen, vmware, qemu éasf Külső kontroll és monitor eszközök kellenek hozzá
Kernel struktúrák Monolitikus kernel induláskor betöltődik a teljes kernel, ami meglehetősen sok feladatot lát el. A komponensek között nincsenek alá fölé rendelési viszonyok és hatásköri kérdések. Gyors. Könnyű, de veszélyes a fejlesztése. Példa Win NT, régen a Linux kernel is ilyen volt. Mikro kernel (moduláris): Egy kicsi mag, minden egyéb user space en, de legalábbis szeparált területen fut. Ilyenre emlékeztet a win NT. Biztonságos a fejlesztése, mert egy user space hiba nem rantja magával a teljes OS t, viszont a sok kernel trap drága művelet ezért lassú.
Kernel struktúrák Hibrid: fentebbi kettő kombinációja. Rétegzett kernel: (kihalt) pl. The OS A Linux kernel e hibrid, moduláris, kliens szerver. Lásd: Tanenbaum és Linus vitája: http://people.fluidsignal.com/~luferbu/misc/linus_vs_tanenbaum.html
Esettanulmányok Windows NT Újdonság!
Esettanulmányok
Pl. filemanager Pl. ilyen egy kernel által támogatott távoli fájl rendszer (NFS) elérés
Összefoglalás Definíciók Problémák, feladatok, szolgáltatások Struktúrák Kernel trap That's all folks for today
Ellenőrző kérdések Írja le az operációs rendszer funkcióit? Sorolja fel a operációs rendszerek generációit. Mi a direkt programozás? Milyen operációs rendszer csoportosítást adna meg célkitűzések szerint? Írja le a kernel trap lépéseit! Rajzolja le a stack et utána. Mi válthatja ki? Mi ezen belül a dispatch mechanizmus? Írjon példákat hardware erőforrásokra, amelyeket az op.rendszernek manege elnie kell. Mi a virtualizáció? Mondjon 3 példát rá. Milyen különbségek vannak a monolitikus/moduláris(mikro) kernel közt? Rajzoljon le egy hálózaton lezajló kernel támogatott, file rendszer elérési sémát. Mi az API és mit jelent? Mi volt a WinNT nagy újítása?