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 stringet a standard inputrol és kiírja standard outputra. készítsen programot, ami lemásol egy bináris illetve egy text filet. 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 two character 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 nonUnix 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 endoffile. (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 noop (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 endof file, 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 8086os 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 http://www.iit.unimiskolc.hu/~vadasz/GEIAL202
●
Andres S. Tanenbaum – Albert S. Woodhull: Operaciós rendszerek
●
unix manual (ld. man parancs – gyakorlat) 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: –
sshval érhető el a moria.kefo.hu címen
–
regisztráció szükséges
saját linux egy külön partíción. pl: –
●
Virtuális gépes megoldások: –
●
VmWareben működtetett linuxok vagy coLinux
Egyéb: –
ubuntu, opensuse, debian, fedora
távoli linux szerver (pl. moria) + Cygwin
Melyik op. rendszert használjuk? –
Windows? ●
–
–
OS X – Apple? ●
kevés van belőle, drága a hw,
●
unix az alapja
Linux ●
drága jogdíj, bonyolult, rosszul tanulmányozható/dokumentáció hiány
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 hardwareen ●
Felhasználók ●
Software: Utilityk
●
Software: működtető rendszer
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
Általános (pl PC) vagy cél hardware (pl. PIC controller).
●
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 interfaceelés
–
kommunikáció a control és monitor alkalmazással/berendezéssel (PC)
–
a GSM alrendszer (Texas 5x) felprogramozása
Külső eszközzel monitorozható/debugolható a teljes működés
Az operációs rendszer fogalmai feladatai, funkciói
●
Extended virtual machine: –
●
Resource manager: –
●
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). hardware (CPUk, perifériák) és software (pl. adatbázis) manageelé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: 17921871 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ó 194555 ●
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ó: 195565 (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: loadtranslateloadexec 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ó 196580 (reducing machine) ●
●
●
ICk, multi programming szó orientált, idő osztásos, memória particionálás, spooling software kompatibilitás fogalma az IBM OS360 asánál, PDP11 microgépek
●
MULTICS(PDP7en) > UNIX szabvány
●
LISP, Prolog, PL1, C
4. Generáció 198090 (reducing complexity)
●
LSI, VLSI
●
GUI
●
MSDOS/Unix/ VaxVMS, Novell
●
Hálózati op.rendszerek, teljes párhuzamosság
●
serverclient modell
●
OOP
Ma ●
●
moduláris kernelek (vs. monolitikus)
●
különleges architektúrák, grid, supercomp,
●
●
az op.rendszerek egyre kevésbe architektúra függőek
●
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: –
●
Server/Desktop operating systems
●
Sinlge/Multiprocessor operating systems
●
Realtime operating systems: –
●
●
safety systems, multimedia
Embedded operating systems –
VMS
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 OSe (?), 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 manageelé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.mem swap
–
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 Trapet 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 trapre Példa: 14. fopen() hívás, paraméterek stackre rakása 5. paraméter átalakítás + rendszerhívás (pl. syscall() / ioctl() fvek) 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 spacere
Kernel trap hívás történhet direkt hívással: user spaceről (ezt láttuk az előbb) vagy kernel spaceről. A kellemes interfaceelest standard libraryk ún. Run Time Libraryk biztosítják. Pl. a fopen() fvt. Linuxban 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++ )
Interfaceek Alkalmazás
programozói API
Run Time Library 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: ●
–
Standardizált környezetet jelent: ●
amikor programozunk v. használjuk a rendszerünket nem kell különösen figyelni arra, hogy más userek, programok is használják az erőforrásokat. Nem kell figyelni a velük való együttműködésre. Nem kell kooperat
mindenki aki a rendszerben van ugyanazt az interfacet használja. nincsenek különbségek az egyes felhasználók között, egyes softwareek 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 userspaceen, de legalábbis szeparált területen fut. Ilyenre emlékeztet a win NT. Biztonságos a fejlesztése, mert egy userspace hiba nem rantja magával a teljes OSt, 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 kernele hibrid, moduláris, kliensszerver.
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 stacket 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 manegeelnie 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?