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

Podobne dokumenty