Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaGábor Kozma Megváltozta több, mint 8 éve
1
Operációs rendszerek 2 Bátfai Norbert nbatfai@inf.unideb.hu http://www.inf.unideb.hu/~nbatfai/ Debreceni Egyetem Informatikai Kar (DE IK), Információ Technológia Tanszék egyetemi tanársegéd Dokumentum verzió: 0.0.3, http://www.inf.unideb.hu/~nbatfai/#oshttp://www.inf.unideb.hu/~nbatfai/#os DEIK_MIPPOS2_BN_2.odp Debrecen, 2008. szeptember 22. A 2. előadás és labor anyaga – a MINIX 3 kernelfa Programozó Páternoszter DE IK mérnök informatikus szak előadás és labor
2
Operációs rendszerek előadás Bátfai, Norbert Debreceni Egyetem, Informatikai Kar, Információ Technológia Tanszék nbatfai@inf.unideb.hu Copyright © 2008 Bátfai Norbert E közlemény felhatalmazást ad önnek jelen dokumentum sokszorosítására, terjesztésére és/vagy módosítására a Szabad Szoftver Alapítvány által kiadott GNU Szabad Dokumentációs Licenc 1.2-es, vagy bármely azt követő verziójának feltételei alapján. Nem változtatható szakaszok: A szerzőről. Címlap szövegek: Programozó Páternoszter, Bátfai Norbert, Gép melletti fogyasztásra. Hátlap szövegek: Belépés a gépek mesés birodalmába. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being: A szerzőről, with the Front- Cover Texts being: Programozó Páternoszter, Bátfai Norbert, Gép melletti fogyasztásra, and with the Back-Cover Texts being: Belépés a gépek mesés birodalmába. Felhasználási engedély A GNU Free Documentation License nem hivatalos magyar fordítása: http://www.gnu.hu/fdl.htmlhttp://www.gnu.hu/fdl.html
3
A második előadás vázlata Bevezetés és elmélet ● MINIX 3 források szervezése ● A MINIX 3 PCB Példák ● Processztábla méretének növelése 200-ra. ● Ütemezési sorok 16-ról 32-re. Gyakorlat ● MINIX 3 kernel módosításai és fordítások
4
A MINIX3 kernelfa / /usr /usr/src/ Időzít ő taszk Ethernet taszk Lemez taszk Terminál taszk Processzuskezelé s Megszak., IPC stb. Rendsz er taszk PMFSIS /usr/src/servers /usr/src/driver s /usr/src/kerne l
5
Időzít ő taszk Ethernet taszk Lemez taszk Terminál taszk Felhasználói programokInit Processzuskezelé s Megszak., IPC stb. Rendsz er taszk PMFSIS MINIX3 mikrokernel arch Például /usr/src/commands/simple/top.c Például /usr/src/servers/pm /usr/src/kerne l Forráskód böngésző: http://www.raspberryginger.com/jbailey/minix/html/index.html vagy mazohistáknak: find. -name '*.h'|xargs grep ”\/\* process table \*\/”http://www.raspberryginger.com/jbailey/minix/html/index.html
6
A MINIX3 betöltési memóriaképe 0x000000 0 0x000100 0 70 K Kernel 0x100000 = 1M 0xFEC0000 ~254M PM OR3 146 /usr/src/kernel /usr/src/servers/pm FS RS
7
A MINIX3 PCB A Minix3 PCB három részre van osztva: − a kernel/proc.h-beli a proc nevű struktúra (kernel) kernel/proc.h http://www.raspberryginger.com/jbailey/minix/html/proc_8hsource.html#l00017 − a PM mproc struktúrája (memóriakezelés) servers/pm/mproc.h http://www.raspberryginger.com/jbailey/minix/html/mproc_8hsource.html#l00012 − az FS fproc struktúrája (fájlkezelés) írja le. servers/fs/fproc.h http://www.raspberryginger.com/jbailey/minix/html/fproc_8hsource.html#l00007 OR3 77- 79.
8
F1 – a kernel processz tábla nyomkövetési listája /usr/src/servers/is/dmp_kernel. c
9
Shift-F1 – a PM processz tábla nyomkövetési listája /usr/src/servers/is/dmp_pm. c
10
Shift-F3 – a FS processz tábla nyomkövetési listája
11
A kernel PCB
14
A kernel processz tábla
15
Processztábla méretének növelése Miért lehet rá szükség? Hogyan csináljuk: mi a jó ötlet, mi a rossz? include/minix/sys_config.h
16
Processztábla méretének növelése
17
Bootoláskor :
18
Processztábla méretének növelése Vagy a kernelüzenetek nyomköv. listájában:
19
Ütemezési sorok 16-ról 32-re Ütemezési sorok nyomkövetési listája: (F9)
20
Ütemezési sorok 16-ról 32-re
21
Ütemezési sorok nyomkövetési listája: (F9)
22
Az Információs szerver Időzít ő taszk Mikrokernel Ethernet taszk Lemez taszk Terminál taszk DD taszkok (B/K) Felhasználói programok Szerver processzusok User processzusok Init Processzuskezelé s Megszak., IPC stb. Rendsz er taszk PMFSIS servers/is/main.c /* System Information Service. * This service handles the various debugging dumps, such as the process * table, so that these no longer directly touch kernel memory. Instead, the * system task is asked to copy some table in local memory. *... message m_in; /* the input message itself */ message m_out; /* the output message used for reply */ int who_e; /* caller's proc number */ int callnr; /* system call number */... /* Main loop - get work and do it, forever. */ while (TRUE) { /* Wait for incoming message, sets 'callnr' and 'who'. */ get_work();... servers/is/main.c... PRIVATE void get_work() { int status = 0; status = receive(ANY, &m_in); /* this blocks until message arrives */ if (OK != status) panic("IS","failed to receive message!", status); who_e = m_in.m_source; /* message arrived! set sender */ callnr = m_in.m_type; /* set function call number */ }... i
23
Az Információs szerver servers/is/main.c /* System Information Service. * This service handles the various debugging dumps, such as the process * table, so that these no longer directly touch kernel memory. Instead, the * system task is asked to copy some table in local memory. *... message m_in; /* the input message itself */ message m_out; /* the output message used for reply */ int who_e; /* caller's proc number */ int callnr; /* system call number */... /* Main loop - get work and do it, forever. */ while (TRUE) { /* Wait for incoming message, sets 'callnr' and 'who'. */ get_work();... switch (callnr) { case FKEY_PRESSED: result = do_fkey_pressed(&m_in); break;... servers/is/dmp.c... struct hook_entry { int key; void (*function)(void); char *name; } hooks[NHOOKS] = { { F1, proctab_dmp, "Kernel process table" }, { F2, memmap_dmp, "Process memory maps" }, { F3, image_dmp, "System image" }, { F4, privileges_dmp, "Process privileges" },... PUBLIC int do_fkey_pressed(m) {... /* Now check which keys were pressed: F1-F12, SF1-SF12. */ for(h=0; h < NHOOKS; h++) if(pressed(hooks[h].key)) hooks[h].function();... i
24
Nyomkövetési infók nyomtatása
27
Miközben Alt+F2-vel egy másik konzolra és ls -lR párszor
28
Otthoni feladat: módosítsd úgy a MINIX 3 kernelt, hogy 150 processzes legyen a processztábla és 32 ütemezési sort használjon! „Bizonyítékul” néhány képet küldj el az email címemre, az „OS-OTTHONI-MINIX150_32” tárggyal. Feladatok Otthoni feladat: módosítsd úgy a MINIX 3 kernelt, hogy az F1 lenyomására írja ki a processztáblából a nem üres slotokat ! „Bizonyítékul” néhány képet küldj el az email címemre, az „OS- OTTHONI-MINIXF1” tárggyal.
29
Tesztelés
31
Köszönöm a figyelmet Az előadások és a gyakorlatok kölcsönösen, oda-vissza építenek egymásra. Email: nbatfai@inf.unideb.hunbatfai@inf.unideb.hu Skype: batfai.norbert MSN: nbatfai@inf.unideb.hunbatfai@inf.unideb.hu Az óra fóruma: http://forum.inf.unideb.hu/ http://forum.inf.unideb.hu/
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.