Sunteți pe pagina 1din 37

Universitatea Politehnica

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

prezena mai multor utilizatori n acelai


sistem impunea execuia mai multor instane
de program de ctre CPU
prima versiune de UNIX avea 2 utilizatori

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

sistemele multiprocesor impun folosirea sistemelor


de operare multiuser i existena simultan a mai
multor instane de execuie
cte programe se pot executa simultan pe un
sistem multiprocesor?
de ce, aparent, ruleaz mai multe instane de
programe?
5

Procese
abstractizare fundamental n SO (la fel ca i
fisierul)
ce este un proces?
un program aflat n execuie (instan a unui program)

deosebirea ntre proces i program:


program entitate pasiv: executabil din sistemul de
fiiere aflat pe disk
proces entitate activ: instruciunile i datele
programului se ncarc n memorie i sunt rulate de CPU

un proces este unitatea de lucru n SO; conine


toate informaiile despre ce, cum, cnd, cu ce
resurse trebuie rulat un program
un proces este programul cruia i s-a asociat un
contex de execuie
denumit i task

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

razvan@anaconda:~$ whereis vim


vim: /usr/bin/vim.basic /usr/bin/vim [...]
razvan@anaconda:~$ file /usr/bin/vim.basic
/usr/bin/vim.basic: ELF 32-bit LSB executable, Intel 80386, version 1
(SYSV), for GNU/Linux 2.4.1, dynamically linked (uses shared libs), for
GNU/Linux 2.4.1, stripped
razvan@anaconda:~$ ls -l /usr/bin/vim.basic
-rwxr-xr-x 1 root root 1384232 Aug 29 14:02 /usr/bin/vim.basic
8

Evolutia sistemelor multiproces (multitasking)

context: un singur procesor (sau numr


limitat de procesoare) i mai multe procese
(task-uri)
observaie: dispozitivele periferice sunt mult
mai lente accesarea unui astfel de
dispozitiv dureaz mult
cum se poate realiza planificarea
(programarea) proceselor pe procesor?
http://en.wikipedia.org/wiki/Computer_multitasking

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

cnd apare context switch?


cnd un proces moare
cnd un proces comunic cu un dispozitiv periferic
cnd unui proces i expir cuanta de timp

ce proces va fi planificat (programat) dup context


switch?
depinde de implementarea planificatorului de procese

planificatorul de procese este un subsistem al unui


sistem de operare care se ocup cu alegerea
urmtorului proces dup un context switch
13

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

Vizualizarea proceselor in Windows


Task Manager
De obicei activat cu
ALT-CTRL-DEL sau
CTRL-SHIFT-ESC
Lista cu procesele
active din sistem
Numele executabilului,
al utilizatorului,
utilizarea procesorului i
memorie ocupat
Permite terminarea
proceselor nedorite
16

Vizualizarea proceselor n Linux


Comanda ps (process status) afieaz informaii despre
procesele care ruleaz pe sistem la acel moment de timp
razvan@anaconda:~$ ps
PID TTY
TIME CMD
10388 pts/2
00:00:00 bash
10478 pts/2
00:00:00 ps
razvan@anaconda:~$ ps -e
PID TTY
TIME CMD
1 ?
00:00:00 init
2 ?
00:00:00 ksoftirqd/0
3 ?
00:00:00 events/0
4 ?
00:00:00 khelper
5 ?
00:00:00 kacpid

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

Vizualizarea proceselor n Linux (2)


razvan@anaconda:~$ ps -o pid,ppid,tty,rss,cmd -e --sort rss
PID PPID TT
RSS CMD
3263
1 ?
380 /usr/sbin/squid -D -sYC
2770
2737
1075
3355
3356
[...]
3364
3057
3380
2733
3636
[...]
367
2827

2746
1
1
1

?
?
?
tty1

388
392
400
416

hald-addon-storage: polling /dev/hdc


/usr/bin/dbus-daemon --system
udevd --daemon
/sbin/getty 38400 tty1

1 tty2

416 /sbin/getty 38400 tty2

1 tty6

416 /sbin/getty 38400 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 ?

6652 /usr/bin/python /var/lib/mailman/bin/qrunner --runner


10340 /usr/sbin/apache
10488 /usr/sbin/apache

18

Vizualizare ierarhie de procese


razvan@anaconda:~$ ps -H -o pid,ppid,comm -C init,sshd,bash,ps
PID PPID COMMAND
1
0 init
3048
1
29263 3048
29266 29263
29267 29266

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

top processes gone crazy

21

Componentele unui program/executabil


un executabil (program) este un fiier al crui
coninut este rulat de catre sistemul de operare
conine reprezentarea instruciunilor unui procesor (cod
main)

conine mai multe seciuni, cu informaii despre


funcionarea programului:
Date iniializate
Date neiniializate
Cod (instruciuni)

fiierele obiect conin aceleai informaii; un fiier


executabil este obinut din linking (legarea) mai
multor fiiere obiect
22

Componentele unui proces


un proces conine imaginea executabilului care
ruleaz i alte informaii necesare sistemului de
operare
date dinamice:
heap pentru alocare dinamica (malloc)
stiv alocarea variabilelor locale funciilor

informaii necesare planificatorului


prioritate
cuant de timp
identificator orice proces are un process id un numr
de identificare unic (PID)

alte proprieti: fiiere deschise, semnale, limitri


memorie
23

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

procfs informaii despre procese

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:

informaii despre un proces (vim)


anaconda:~# ps -e | grep vim
877 pts/1
00:00:00 vim
anaconda:~# cd /proc/877/
anaconda:/proc/877# ls
attr
cpuset
exe
mem
auxv
cwd
fd
mounts
cmdline environ maps mountstats
anaconda:/proc/877# ls -l exe

oom_adj

smaps

status

oom_score
root

stat
statm

task
wchan

lrwxrwxrwx 1 root root 0 Oct 20 11:33 exe -> /usr/bin/vim.basic


anaconda:/proc/877# cat cmdline
vimmac_add.txtanaconda:/proc/877# ls fd/
0 1 2 4
anaconda:/proc/877# ls -l fd/
total 4
lrwx------ 1 root root 64 Oct 20 11:34 0 -> /dev/pts/1
lrwx------ 1 root root 64 Oct 20 11:34 1 -> /dev/pts/1
lrwx------ 1 root root 64 Oct 20 11:33 2 -> /dev/pts/1
lrwx------ 1 root root 64 Oct 20 11:34 4 -> /root/.mac_add.txt.swp
25

Crearea unui proces


un proces este creat din cadrul unui proces
deja existent; n Unix, init este printele
tuturor proceselor
dup creare, procesului i se asociaz
informaiile de planificare, fiierele deschise
se ncarc un executabil imaginea
programului care l va rula procesul
se creeaz zonele de memorie necesare:
stiv, heap, date, cod

26

Moartea unui proces


n momentul n care un proces moare, toate
informaiile asociate dispar i resursele
(memorie, fiiere) sunt eliberate
cnd un proces moare, se terge fisierul
executabil asociat?
cnd moare un proces?
se ajunge la sfaritul zonei de cod a
executabilului
se apeleaz exit (sau o funcie asemntoare)
condiii anormale (abnormal termination):
primirea unui semnal
27

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

razvan@anaconda:~$ kill -KILL 10422


[1]+

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:~$

comenzi shell pentru transmitere de semnale:


CTRL-C transmite SIGINT (ntrerupe procesul terminare)
CTRL-\ - transmite SIGQUIT (oprete procesul terminare mai
puternic dect CTRL-C)
CTRL-Z transmite SIGSTP (oprete procesul pauz)

29

Comunicaia ntre procesele


procesele, ca i entiti active, comunic unul cu
cellalt
semnalele sunt prima form de comunicaie ntre
procese (un proces poate transmite un semnal
altuia)
alte forme de comunicaie ntre procese:
cozi de mesaje formatul mailbox: se transmit mesaje
de la un proces, procesul receptor primindu-le ntr-o
csu de mesaje
memorie partajat anumite zone de memorie sunt
partajate ntre mai multe procese, putnd s comunice
foarte uor ntre ele (scriere/citire n/din memorie)
sockei comunicaia prin reele de calculatoare
30

pipe operatorul |
operatorul | este o form de baz de comunicare
ntre procese

ieirea unei comenzi este redirectat spre intrarea celei


de-a doua comenzi
anaconda:~# ps -e | grep bash
32737 pts/1
00:00:00 bash
794 ?
00:00:00 bash
854 pts/1
00:00:00 bash
anaconda:~# ps -e | wc -l
118
anaconda:~# ps -e | head -n 5
PID TTY
TIME CMD
1 ?
00:00:02 init
2 ?
00:00:00 migration/0
3 ?
00:00:00 ksoftirqd/0
4 ?
00:00:00 events/0
31

Rulare n fundal operatorul &


un proces ruleaz n fundal (background) sau n prim plan
(foreground)
un proces care ruleaz n background nu primete comenzi
de la utilizator
se folosete operatorul &
anaconda:/#
[1] 1169
anaconda:/#
1169 pts/1
anaconda:/#
1169 root
anaconda:/#
du hs

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

comanda fg aduce procesul n foreground


folosirea CTRL-Z (SIGSTP) foreaz procesul n background
(fr a rula)
32

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

numele se termin, de obicei, n d (sshd,


syslogd, httpd, etc.)
cum se interacioneaz cu un daemon
semnale
fiiere de configuraie
33

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....

n Windows, se folosete comanda net sau interfaa grafic:


C:\>net stop "DHCP client"
The DHCP Client service is stopping.
The DHCP Client service was stopped successfully.
C:\>net start "DHCP client"
The DHCP Client service is starting.
The DHCP Client service was started successfully.
34

Swapping
ce se ntmpl dac memoria este insuficient (prea multe procese)?
transfer de pagini ntre memorie i disc

n Windows swapping-ul se face pe partiia de sistem


n Linux, se obinuiete prezena unei partiii de swap dedicate
mkswap /dev/sda2
se poate folosi i un fiier
mkswap file.swap

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

S-ar putea să vă placă și