Documente Academic
Documente Profesional
Documente Cultură
Bucureti
Utilizarea
sistemelor
de operare
Cursul 4
Procese
22 octombrie 2007
1
Citat
I'mabitlikeanoperatingsystemreally..."multitasking"
betweenthesetwoOHPs,"interrupting"you,..."sending
youtosleep"...
JohnBates
single-user/multi-user
pn n anii '60 sistemele de operare erau
single-user
caracteristica SO single-user:
CPU execut o singur instan de program
Context de execuie
abstractizarea informaiei despre execuia
unui program
ce trebui executat?
pentru ct timp?
ce condiii vor trebui ndeplinite pentru execuie?
pe care procesor?
Sisteme multiprocesor
este posibil execuia simultan a mai multor
instane ale unor programe (prezena simultan a
mai multor contexte de execuie) pe un sistem de
calcul? n ce situie?
da, n situatia existenei mai multor dispozitive hardware
de execuie: sisteme multiprocesor, sisteme dual core
Procese
abstractizare fundamental n SO (la fel ca i
fisierul)
ce este un proces?
un program aflat n execuie (instan a unui program)
Proces/program n Windows
C:\WINDOWS\system32>dir notepad.exe
Volume in drive C has no label.
Volume Serial Number is D050-E9E7
Directory of C:\WINDOWS\system32
08/04/2004
04:07 AM
1 File(s)
0 Dir(s)
69,120 notepad.exe
69,120 bytes
453,902,336 bytes free
7
Proces/program n Linux
Multiprogramming
se ruleaz un proces; cnd acesta acceseaz
un dispozitiv periferic, se pune ntr-o stare
special (sleep, blocat) i se planific alt
proces; totul se reia pn cnd nu mai avem
procese
avantaje:
mrirea eficienei
dezavantaje
lipsa interactivitii
10
Multitasking cooperativ/time-sharing
se asociaz fiecarui proces o cuant de timp
(slice) n care acesta va rula pe procesor (se
partejeaz timpul procesorului timesharing)
dupa expirarea cuantei de timp, procesul va
lsa voluntar alt proces s ruleze pe
procesor
avantaje:
interactivitate
dezavantaje:
un proces 'agat' (hung) poate duce la
nghearea ntregului sistem
11
Multitasking preemptiv/time-sharing
evoluia fireasc a multitasking-ului cooperativ
care este deosebirea ntre cooperativ si preemptiv?
cel preemptiv foreaz procesul sa cedeze procesorul la
expirarea cuantei de timp
cooperativ = cedeaz voluntar controlul procesorului;
preemptiv = cedeaz obligatoriu controlul procesorului
maximum de interactivitate
denumirea actual de multitasking se refer la un
sistem time-sharing, multitasking preemtiv
12
Schimbare de context
denumit si context switch
la ce se refer?
schimbarea execuiei unui proces cu un altul pe procesor
Ierarhia de procese
un proces este identificat
printr-un ntreg denumit PID
(process ID)
orice proces are un proces
parinte (i numai unul)
prin intermediul unor apeluri
specifice, un proces nou se
creeaz dintr-un proces deja
existent i dintr-o imagine
de executabil de pe disc
n lumea Unix exist ierarhie
de procese (arbore de
procese) n care fiecare
proces are un printe, mai
puin procesul init (primul
proces creat)
14
Procese importante
UNIX
init: printele tuturor proceselor; este responsabil cu
pornirea proceselor daemon i cu stabilirea contextului
de lucru pentru utilizatori
swapper: se ocup cu mutarea proceselor din memorie
pe disc (swapping)
Windows
smss.exe session manager; primul proces creat;
stabilirea contextului pentru utilizatori
winlogon.exe logon process; se ocup cu login/logout
lsass.exe local security authentication server
service control manager pornirea, oprirea i
gestionarea serviciilor
15
3798 ?
00:00:08 soffice.bin
10388 pts/2
00:00:00 bash
10415 ?
00:00:00 sshd
10479 pts/2
00:00:00 ps
17
2746
1
1
1
?
?
?
tty1
388
392
400
416
1 tty2
1 tty6
1
3377
1
1
?
?
?
?
432
436
448
456
/usr/bin/xfs -daemon
git-daemon --verbose --base-path=/var/cache /var/cach
/usr/sbin/courierlogger courierpop3login
gpg-agent daemon
3313 ?
2804 ?
5188 /usr/sbin/apache
5336 /usr/bin/python /var/lib/mailman/bin/qrunner --runner
[...]
2823
2804 ?
32488 3313 ?
3313
1 ?
18
sshd
sshd
sshd
bash
32688 3048
32691 32688
32692 32691
sshd
sshd
bash
32733 3048
32736 32733
32737 32736
487 32737
sshd
sshd
bash
ps
razvan@anaconda:~$ pstree -p
init(1)-+-Xprt(3144)
|-apache(3313)-+-apache(27892)
|
|
|
|-apache(28002)
|-apache(28037)
|-apache(28038)
[...]
|-sshd(3048)---sshd(32733)---sshd(32736)---bash(32737)---pstree(571)
19
top
utilitarul top permite vizualizarea
dinamic (n timp real) a funcionrii
sistemului
memorie ocupat
ocuparea procesorului
informaii despre procese
20
21
procfs
sistem de fiiere virtual
informaiile se gsesc n memorie
montat n /proc
folosit de multe utilitare de baz
razvan@anaconda:~$ dpkg -L procps
/bin/kill
/bin/ps
[..]
/usr/bin/uptime
/usr/bin/tload
/usr/bin/free
/usr/bin/top
/usr/bin/vmstat
/usr/bin/watch
/usr/bin/skill
/usr/bin/pmap
/usr/bin/pgrep
/usr/bin/slabtop
24
informaiile despre un proces sunt grupate ntr-un director dat de pid-ul procesului
anaconda:~# ls /proc/
1
2693 2770
3
10
2694 2798
3015
32398
32488
3377
3379
853
854
driver
execdomains
modules
mounts:
oom_adj
smaps
status
oom_score
root
stat
statm
task
wchan
26
Semnale
mecanisme prin care se indic unui proces o
condiie deosebit n funcionare (ex.
accesarea unei zone invalide de memorie)
mecanismele echivalente ntr-un sistem
Windows poart numele de APC
(Asynchronous Procedure Call)
semnalele Unix:
razvan@anaconda:~$ kill l
1) SIGHUP
2) SIGINT
3)
5) SIGTRAP
6) SIGABRT 7)
9) SIGKILL
10) SIGUSR1 11)
13) SIGPIPE
14) SIGALRM 15)
18) SIGCONT
19) SIGSTOP 20)
22) SIGTTOU
23) SIGURG 24)
26) SIGVTALRM 27) SIGPROF 28)
30) SIGPWR
31) SIGSYS
SIGQUIT
SIGBUS
SIGSEGV
SIGTERM
SIGTSTP
SIGXCPU
SIGWINCH
4)
8)
12)
17)
21)
25)
29)
SIGILL
SIGFPE
SIGUSR2
SIGCHLD
SIGTTIN
SIGXFSZ
SIGIO
28
Semnale n Linux
comanda kill poate fi folosit pentru terminarea unui proces:
razvan@anaconda:~$ ps
PID TTY
TIME CMD
10388 pts/2
00:00:00 bash
10422 pts/2
00:00:00 netcat
10424 pts/2
00:00:00 ps
Killed
netcat
razvan@anaconda:~$ ps
PID TTY
TIME CMD
10388 pts/2
00:00:00 bash
10425 pts/2
00:00:00 ps
razvan@anaconda:~$
29
pipe operatorul |
operatorul | este o form de baz de comunicare
ntre procese
du -hs &
ps -e | grep du
00:00:00 du
top -b -n 1 | grep du
18
0 1624 564
fg
356 R
0.0
0.2
0:00.80 du
Daemoni
Disk And Execution MONitor (backronym)
un tip special de proces care ruleaz n
background care este detaat de terminalul
de control
orice daemon are, de obicei, ca printe init
Daemoni/servicii
pe Windows, echivalentul daemon-ului este serviciul: Control Panel ->
Administrative Tools -> Services
n Debian/Ubuntu, script-urile de interaciune cu daemon-ii sunt n
/etc/init.d:
anaconda:/# /etc/init.d/apache stop
Stopping apache 1.3 web server....
anaconda:/# /etc/init.d/apache start
Starting apache 1.3 web server....
anaconda:/# /etc/init.d/apache restart
Restarting apache 1.3 web server....
Swapping
ce se ntmpl dac memoria este insuficient (prea multe procese)?
transfer de pagini ntre memorie i disc
evacuare
RAM
swap
proces
nou
RAM
swap
RAM
swap
proces
nou
35
Resurse utile
Utilizarea sistemelor de operare, capitolul 4: Procese
Silberschatz, Galvin, Gagne Operating System Concepts 7th
Edition (chapter 3: Processes)
http://en.wikipedia.org/wiki/Process_(computing)
http://en.wikipedia.org/wiki/Daemon_(computer_software)
http://computer.howstuffworks.com/operating-system5.htm
36
Cuvinte cheie
proces
program/executabil
contex de execuie
schimbare de context
context switch
cuant de timp
multitasking
multiuser
planificatorde proces
pid
init
ierarhie de procese
ps
top
comunicaie ntre
procese
semnale
kill
foreground
background
daemon
serviciu
swapping
37