Spotkanie 3
Transkrypt
Spotkanie 3
Procesy Wojciech Myszka 8 listopada 2010 J¡dro 1. J¡dro instaluje si¦ podczas uruchamiania systemu. 2. Inicjuje zasoby komputera. 3. Pracuje w trybie uprzywilejowanym i ma peªen dost¦p do wszystkich zasobów komputera. 4. Zarz¡dza zasobami komputera (czas procesora, pami¦¢, urz¡dzenia we/wy). 5. Programy u»ytkownika pracuj¡ w trybie nieuprzywilejowanym J¡dro J¡dro Struktura 1. mikro-j¡dra J¡dro Struktura 1. mikro-j¡dra I wykonuje tylko te funkcje, które s¡ niezb¦dne, zwalaj¡c reszt¦ na moduªy, J¡dro Struktura 1. mikro-j¡dra I I wykonuje tylko te funkcje, które s¡ niezb¦dne, zwalaj¡c reszt¦ na moduªy, moduªy ªadowane w miar¦ potrzeby, J¡dro Struktura 1. mikro-j¡dra I I I wykonuje tylko te funkcje, które s¡ niezb¦dne, zwalaj¡c reszt¦ na moduªy, moduªy ªadowane w miar¦ potrzeby, du»o komunikacji J¡dro Struktura 1. mikro-j¡dra I I I I wykonuje tylko te funkcje, które s¡ niezb¦dne, zwalaj¡c reszt¦ na moduªy, moduªy ªadowane w miar¦ potrzeby, du»o komunikacji niska wydajno±¢ J¡dro Struktura 1. mikro-j¡dra I I I I wykonuje tylko te funkcje, które s¡ niezb¦dne, zwalaj¡c reszt¦ na moduªy, moduªy ªadowane w miar¦ potrzeby, du»o komunikacji niska wydajno±¢ 2. j¡dro monolityczne J¡dro Struktura 1. mikro-j¡dra I I I I wykonuje tylko te funkcje, które s¡ niezb¦dne, zwalaj¡c reszt¦ na moduªy, moduªy ªadowane w miar¦ potrzeby, du»o komunikacji niska wydajno±¢ 2. j¡dro monolityczne I wielkie, J¡dro Struktura 1. mikro-j¡dra I I I I wykonuje tylko te funkcje, które s¡ niezb¦dne, zwalaj¡c reszt¦ na moduªy, moduªy ªadowane w miar¦ potrzeby, du»o komunikacji niska wydajno±¢ 2. j¡dro monolityczne I I wielkie, szybkie J¡dro Struktura 1. mikro-j¡dra I I I I wykonuje tylko te funkcje, które s¡ niezb¦dne, zwalaj¡c reszt¦ na moduªy, moduªy ªadowane w miar¦ potrzeby, du»o komunikacji niska wydajno±¢ 2. j¡dro monolityczne I I I wielkie, szybkie zmiany wymagaj¡ budowy nowego j¡dra i restartu systemu J¡dro Struktura 1. mikro-j¡dra I I I I wykonuje tylko te funkcje, które s¡ niezb¦dne, zwalaj¡c reszt¦ na moduªy, moduªy ªadowane w miar¦ potrzeby, du»o komunikacji niska wydajno±¢ 2. j¡dro monolityczne I I I wielkie, szybkie zmiany wymagaj¡ budowy nowego j¡dra i restartu systemu 3. j¡dro hybrydowe (monolityczno-moduªowe) Proces 1. Wirtualna maszyna. 2. System plików. 3. Mechanizm komunikacji z innymi procesami. Proces I Proces wykonywalny program, zaªadowany do pami¦ci operacyjnej wraz ze ±rodowiskiem. I J¡dro przechowuje informacje o wszystkich procesach (tablica) I Ka»dy proces posiada proces rodzicielski (nadrz¦dny). I J¡dro uruchamia proces init, którzy jest rodzicem (dziadkiem?, protoplast¡) wszystkich procesów. I Procesy tworzone za pomoc¡ instrukcji fork ±rodowisko! dziedzicz¡ Proces Dziedziczenie I otwarte pliki I real i effective UID, GID oraz process group ID I terminal, sesja I kartoteka bie»¡ca I maska sygnaªów, handlery I ±rodowisko I otwarte wspólne obszary pami¦ci I ograniczenia (dost¦pu) zasobów Proces Nie jest dziedziczone I PID I warto±¢ zwracana przez exit I blokady plików I ustawionych alarmów procesu nadrz¦dnego I zbiór nieodebranych sygnaªów Scheduler Stany procesu: 1. wykonywalny (wykonuje si¦, lub znajduje si¦ w kolejce do wykonania) 2. u±piony (oczekuje na zdarzenie) 3. wyswapowany (usuni¦ty z pami¦ci) 4. zombie (nie mo»e si¦ zako«czy¢) 5. zatrzymany (wykonanie procesu wstrzymane sygnaªem) Proces przeniesiony do pliku wymiany nie mo»e zmieni¢ swojego stanu, zanim nie zostanie przeniesiony do pami¦ci operacyjnej. Procesy I Proces ko«cz¡c si¦ zwraca kod zako«czenia . I Informacja ta (sygnaª) powinna by¢ odebrana przez rodzica (wait) w przeciwnym razie program nie mo»e normalnie sko«czy¢ pracy. I Gdy rodzic sko«czy »ycie (prac¦?) wcze±niej ni» jego dzieci s¡ one adoptowane przez proces init. Procesy zombie zu»ywaj¡ bezproduktywnie zasoby systemu. Scheduler Algorytm przydziaªu czasu procesora I Standardowy algorytm kolejkowania jest dosy¢ prosty. I Ka»dy z procesów ma przydzielony priorytet (polecenie nice sªu»y do nadania priorytetu procesom uruchamianym z linii polece«). I Uruchomiony proces dostaje kwant czasu , wraz z jego upªywem, maleje wzgl¦dny priorytet procesu. I Zwolnienie procesora (przed ko«cem kwantu) zatrzymuje zmniejszanie priorytetu. I Procesom czekaj¡cym w kolejce ro±nie wzgl¦dny priorytet. W efekcie zadania interaktywne maj¡ (relatywnie) wy»szy priorytet. Ale nie ma bezwzgl¦dnego wywªaszczania zasobów. Scheduler Real time I Pierwotnie nic takiego w Uniksach nie wyst¦powaªo I Real-time extensions (w POSIX) I Bardziej zaawansowane algorytmy przydziaªu zasobów Sygnaªy I Sygnaªy to mechanizm asynchronicznej komunikacji mi¦dzy procesami I Ka»dy z sygnaªów ma zde niowany zestaw domy±lnych akcji, które wykonuje proces, który sygnaª otrzymuje. I Je»eli jest taka potrzeba proces mo»e zde niowa¢ swoje wªasne procedury obsªugi sygnaªów Sygnaªy Generacja I Naciskanie pewnych klawiszy na terminalu Ctrl-C, Ctrl-Z Ctrl-\ I Polecenia powªoki: fg, bg. I Wyj¡tki sprz¦towe (nielegalna instrukcja, nielegalne odwoªanie do pami¦ci, dzielenie przez zero) I Funkcje kill, raise I Mechanizmy programowe SIGALRM Wi¦cej o sygnaªach mo»na poczyta¢ w 7 rozdziale manuala man 7 signal Sygnaªy Obsªuga I I I I I Mo»emy zdecydowa¢ si¦ na standardow¡ obsªug¦. Mo»emy przygotowa¢ wªasne procedury obsªugi (handler) Na pocz¡tku programu nale»y sprawdzi¢, czy sygnaª nie jest ignorowany. Po wej±ciu do procedury obsªugi deklarujemy ignorowanie sygnaªu. Procedura obsªugi ko«czy si¦ I I I I I zako«czeniem procesu kontynuacj¡ procesu kontynuacj¡ procesu i przekazaniem informacji kontynuacj¡ od okre±lonego punktu Po zako«czeniu obsªugi nale»y ponownie zadeklarowa¢ procedur¦ Sygnaªy Przykªad #include #include #include #include <stdio.h> <unistd.h> <sys/types.h> <signal.h> /* /* /* /* standard I/O functions standard unix functions, like getpid() various type definitions, like pid_t signal name macros, and the signal() prototype /* first, here is the signal handler */ void catch_int(int sig_num) { /* re-set the signal handler again to catch_int, for next time */ signal(SIGINT, catch_int); /* and print the message */ printf("Don’t do that"); fflush(stdout); } . /* and somewhere later in the code.... */ . /* set the INT (Ctrl-C) signal handler to ’catch_int’ */ signal(SIGINT, catch_int); /* now, lets get into an infinite loop of doing nothing. */ for ( ;; ) pause(); */ */ */ */ crontab I I crontab to mechanizm cyklicznego uruchamiania zada« o okre±lonej porze. Na mechanizm skªada si¦ program (cron) oraz szereg tablic, w których zapisane s¡ terminy i polecenia Tablica wygl¡da jako± tak: # m h 0 * I I dom mon dow * * * command /home/myszka/bin/planet Osobn¡ tablic¦ tworzy si¦ dla ka»dego u»ytkownika, który ma potrzeb¦ cyklicznego uruchamiania zada« Warianty (/etc/cron.d, /etc/cron.daily, /etc/cron.weekly, ... at I Polecenie at u»ywane jest do odªo»enia w czasie wykonania polecenia. I Program at czyta polecenia ze standardowego wej±cia. I Wyniki dziaªania polece« (stdout, stderr) przesyªane s¡ poczt¡. I Normalnie nie wszyscy u»ytkownicy mog¡ korzysta¢ z plece« at/cron at Przykªad myszka@myszka-laptop:~$ at now+6min warning: commands will be executed using /bin/sh at> date at> <EOT> job 1 at Wed Nov 8 21:53:00 2006 myszka@myszka-laptop:~$ at -l 1 Wed Nov 8 21:53:00 2006 a myszka myszka@myszka-laptop:~$ batch 1. Polecenie batch to taki wariant polecenia at 2. Pozwala uruchomi¢ zadania i wylogowa¢ si¦ z systemu Systemy kolejkowe 1. Systemy kolejkowe to twórcze rozwini¦cie polecenia batch. 2. Szczególne zastosowanie maj¡ w sytuacjach gdy do dyspozycji mamy szereg (kilka, kilkana±cie?) komputerów. . . 3. . . . oraz wiele (kilkadziesi¡t, kilkaset, kilka tysi¦cy) zada« do wykonania. 4. System pozwala zleci¢ wykonanie tych zada« i (na jaki± czas) zapomnie¢. 5. System rozdziela zadania na dost¦pne komputery dbaj¡c aby wykorzystanie zasobów byªo racjonalne. Problemy I ps wy±wietla list¦ procesów, oraz informacje o ka»dym procesie I top pozwala na bie»¡co monitorowa¢ najaktywniejsze procesy oraz wykorzystanie zasobów I lsof I fuser wy±wietla procesy korzystaj¡ce ze wskazanego urz¡dzenia pokazuje pliki wykorzystywane przez proces sar & co I Cz¦sto zapomniany zestaw narz¦dzi do monitorowania podstawowych parametrów pracy systemu I sadc I sar program analizuj¡cy i wy±wietlaj¡cy informacje z pliku I vmstat I iostat program zbieraj¡cy informacje do pliku binarnego informacja o pami¦ci wirtualnej monitorowanie operacje wej±cia/wyj±cia Problemy I Mo»na ustawi¢ ograniczenia na zasoby procesu (rlimit) I Polecenie nice (renice) pozwala ustawi¢ (zmieni¢) priorytet procesu. I Polecenie kill mo»e proces zlikwidowa¢ I Polecenie kill -STOP mo»e wykonanie procesu wstrzyma¢ (do wyja±nienia) I Nale»y uwa»a¢: odwieszenie programu nast¦puje równie» poleceniem kill tylko z innym parametrem (CONT) Start systemu I 1. Tym zajmowa¢ si¦ nie b¦dziemy zagadnienie do samodzielnego opracowania. Wskazówki: 2. /sbin/init 3. /etc/inittab (kiedy±) # /etc/inittab: init(8) configuration. # $Id: w3.tex,v 1.3 2010/11/08 21:33:47 myszka Exp myszka $ # The default runlevel. id:2:initdefault: # Boot-time system configuration/initialization script. # This is run first except when booting in emergency (-b) mode. si::sysinit:/etc/init.d/rcS # What to do in single-user mode. ~~:S:wait:/sbin/sulogin # /etc/init.d executes the S and K scripts upon change # of runlevel. # # Runlevel 0 is halt. Start systemu II # Runlevel 1 is single-user. # Runlevels 2-5 are multi-user. # Runlevel 6 is reboot. l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 # Normally not reached, but fallthrough in case of emergency. z6:6:respawn:/sbin/sulogin # What to do when CTRL-ALT-DEL is pressed. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now # Action on special keypress (ALT-UpArrow). #kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work." # What to do when the power fails/returns. pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop Start systemu III # /sbin/getty invocations for the runlevels. # # The "id" field MUST be the same as the last # characters of the device (after "tty"). # # Format: # <id>:<runlevels>:<action>:<process> # # Note that on most Debian systems tty7 is used by the X Window System, # so if you want to add more getty’s go ahead but skip tty7 if you run X. # 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 # Example how to put a getty on a serial line (for a terminal) # #T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100 4. /etc/event.d (teraz) Start systemu IV -rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r-- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root 260 299 552 342 403 403 403 403 422 485 392 575 558 306 300 300 300 300 300 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 2008-04-11 15:49 15:49 15:49 15:49 15:49 15:49 15:49 15:49 15:49 15:49 15:49 15:49 15:49 15:49 15:49 15:49 15:49 15:49 15:49 control-alt-delete logd rc0 rc1 rc2 rc3 rc4 rc5 rc6 rc-default rcS rcS-sulogin sulogin tty1 tty2 tty3 tty4 tty5 tty6 5. kartoteki w /etc: rc0.d/ rc2.d/ rc4.d/ rc6.d/ rcS.d/ rc1.d/ rc3.d/ rc5.d/ 6. /etc/default bootchart 1. bootchart to narz¦dzie sªu»¡ce do gra cznej prezentacji procesu uruchomienia systemu, analizy i optymalizacji 2. specjalny program uruchamiany jest zamiast /sbin/init