You are on page 1of 6

Moto

Cursul 4
Procese Utilizarea Sistemelor de Operare (USO) 22 octombrie 2012
Departamentul de Calculatoare

Multitasking: A polite way of telling someone you havent heard a word they said.

CSE Dep

Cursul 4, Procese

1/50

CSE Dep

Cursul 4, Procese

2/50

Utilizatori
http://stevelaube.com/wp-content/uploads/2011/06/iStock_000011246561XSmall.jpg

Utilizatori

chmod username rwx parol ./program

/home

gid

uid sudo su chown ugo addgroup shadow


Administrators

adduser
http://www.cccp-shirts.com/images/sysadmin_bl_shirt.jpg

http://penpen.soup.io/post/63943110/Office-keyboard-Look-Busy-Go-Home-Wake

CSE Dep

Cursul 4, Procese

3/50

CSE Dep

Cursul 4, Procese

4/50

Suport de curs

Cum ,,facem lucruri ntr-un SO?

informal Suport (Introducere sisteme de operare) n


Capitolul 5 Procese click pe un icon scris comenzi accesat meniuri

mai formal: ,,deschidem aplicatii , tehnic: rulm procese a o aplicatie deschis = cel putin un proces care ruleaz a a , ,

CSE Dep

Cursul 4, Procese

5/50

CSE Dep

Cursul 4, Procese

7/50

Procese

Procese (cont.)

una din cele dou abstractizri fundamentale SO a a n


cealalt este sierul a ,

unitatea de lucru SO n detine informatii despre , ,


ce se ruleaz (codul obtinut din program/executabil) a , cum se ruleaz un program SO a n cnd trebuie rulate prti de cod din cadrul unui program a a , ce resurse sunt folosite la rularea unui program

un program aat executie (instant a unui program) n , ,a


o aplicatie deschis (care ruleaz) a a , actiune cadrul sistemului de operare n ,

program vs. proces


program
entitate pasiv a executabil din sistemul de siere (aat pe disc) ,

denumit si task sau job , un proces este un program cruia i s-a asociat un context de a executie , ia nastere dintr-un executabil , se creeaz o imagine a executabilului memorie, apartinnd a n a , procesului

proces
entitate activ a instructiunile si datele programului se ncarc memorie si a n , , , sunt rulate de procesor (CPU)

CSE Dep

Cursul 4, Procese

8/50

CSE Dep

Cursul 4, Procese

9/50

Context de executie ,
Program notepad.exe Windows n
C:\WINDOWS\system32>dir notepad.exe Volume in drive C has no label. Volume Serial Number is D050-E9E7

Program vs. proces Windows n

abstractizarea informatiei despre executia unui program , , Ce trebuie executat? (program) Pentru ct timp? (durat, cuant) a a a Ce conditii vor trebui ndeplinite pentru executie? , , (requirements) (memorie, mecanisme de comunicare, permisiuni) Pe care core/procesor? (planicare)

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

CSE Dep

Cursul 4, Procese

10/50

CSE Dep

Cursul 4, Procese

11/50

Program vs. proces Linux n


Program vim Linux n
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

Vizualizare procese Windows Explorer n

Task Manager ALT+CTRL+DEL sau CTRL+SHIFT+ESC lista cu procesele active din sistem numele executabilului, al utilizatorului, utilizarea procesorului si memoria ocupat (congurabil) a , terminarea proceselor nedorite

CSE Dep

Cursul 4, Procese

12/50

CSE Dep

Cursul 4, Procese

14/50

Vizualizare procese PowerShell n


Procese PowerShell n
PS C:\Documents and Settings\razvan> ps Handles NPM(K) PM(K) WS(K) VM(M) ------- -------------- ----93 8 1404 4328 29 100 6 3300 5996 56 [...] 512 0 44 256 2 148 11 7712 2348 80 650 172 10056 5536 99 131 9 3072 8320 72 46 4 1152 2872 40 168 6 2620 7640 39 CPU(s) -----0.02 0.41 13.31 0.73 0.95 0.45 0.00 0.20 Id -2036 628 4 2824 372 2364 904 1840 ProcessName ----------alg ati2evxx System TOTALCMD winlogon WLTRAY WLTRYSVC wmiprvse

Vizualizare procese Unix n

comanda ps (process status)


Vizualizarea proceselor din terminalul curent
razvan@anaconda:~$ ps PID TTY TIME CMD 10388 pts/2 00:00:00 bash 10478 pts/2 00:00:00 ps

PS C:\Documents and Settings\razvan> ps firefox Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) ------- -------------- ---------318 25 36584 52924 164 14.95 PS C:\Documents and Settings\razvan> ps power* Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) ------- -------------- ---------674 70 110888 5036 315 391.47 558 15 68028 63388 571 4.64 PS C:\Documents CommandType ----------Alias

Id ProcessName -- ----------2156 firefox

Id -1500 496

ProcessName ----------POWERPNT powershell

and Settings\razvan> get-item -path alias:ps Name ---ps

Definition ---------Get-Process

CSE Dep

Cursul 4, Procese

15/50

CSE Dep

Cursul 4, Procese

16/50

Vizualizare procese Unix (cont.) n

Vizualizare procese Unix (cont.) n

Vizualizare personalizat a Vizualizarea tuturor proceselor din sistem


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
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 2746 ? 388 hald-addon-storage: polling /dev/hdc 2737 1 ? 392 /usr/bin/dbus-daemon --system 1075 1 ? 400 udevd --daemon 3355 1 tty1 416 /sbin/getty 38400 tty1 3356 1 tty2 416 /sbin/getty 38400 tty2 [...] 3364 1 tty6 416 /sbin/getty 38400 tty6 3057 1 ? 432 /usr/bin/xfs -daemon 3380 3377 ? 436 git-daemon --verbose --base-path=/var/cache /var/cach 2733 1 ? 448 /usr/sbin/courierlogger courierpop3login 3636 1 ? 456 gpg-agent {daemon [...] 367 3313 ? 5188 /usr/sbin/apache 2827 2804 ? 5336 /usr/bin/python /var/lib/mailman/bin/qrunner --runner [...] 2823 2804 ? 6652 /usr/bin/python /var/lib/mailman/bin/qrunner --runner 32488 3313 ? 10340 /usr/sbin/apache 3313 1 ? 10488 /usr/sbin/apache

CSE Dep

Cursul 4, Procese

17/50

CSE Dep

Cursul 4, Procese

18/50

Ierarhia de procese

Ierarhia de procese (cont.)

Vizualizarea ierarhiei de procese Unix cu ps -H n

identicatorul unui proces PID (process ID) (un numr) a orice proces are un proces printe (si numai unul) (exceptie a , , init) un proces este creat prin intermediul unui alt proces (fork) rezult o ierarhie de procese a
un proces are un proces printe a un proces are 0 sau mai multe procese copil Unix, procesul init este rdcina ierarhiei n a a

razvan@anaconda:~$ ps -H -o pid,ppid,comm -C init,sshd,bash,ps PID PPID COMMAND 1 0 init 3048 1 sshd 29263 3048 sshd 29266 29263 sshd 29267 29266 bash 32688 3048 sshd 32691 32688 sshd 32692 32691 bash 32733 3048 sshd 32736 32733 sshd 32737 32736 bash 487 32737 ps

CSE Dep

Cursul 4, Procese

19/50

CSE Dep

Cursul 4, Procese

20/50

Ierarhia de procese (cont.)

Utilitarul top

Vizualizarea ierarhiei de procese Unix cu pstree n


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)

vizualizarea dinamic ( timp real) a functionrii sistemului a n a ,


memoria ocupat a ocuparea procesorului informatii despre procese ,

monitorizarea proceselor si sistemului , utilitarul htop: culor, scroll vertical si orizontal, cutare etc. a ,

CSE Dep

Cursul 4, Procese

21/50

CSE Dep

Cursul 4, Procese

22/50

top processes gone crazy


sistem de siere virtual ,
informatiile se gsesc memorie a n ,

procfs

montat /proc n folosit de multe utilitare de baz a


Utilitare ce folosesc procfs
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

CSE Dep

Cursul 4, Procese

23/50

CSE Dep

Cursul 4, Procese

25/50

procfs (cont.)
Informatii despre un proces Vim folosind /proc ,

procfs (cont.)

informatiile despre un proces sunt grupate ntr-un director dat , de PID-ul procesului
Directoare cu nume date de PID-uri /proc n
anaconda:~# ls /proc/ 1 2693 2770 3 10 2694 2798 3015 32398 32488 3377 3379 853 854 driver execdomains modules mounts

anaconda:~# ps -e | grep vim 877 pts/1 00:00:00 vim anaconda:~# cd /proc/877/ anaconda:/proc/877# ls attr cpuset exe mem oom_adj smaps status auxv cwd fd mounts oom_score stat task cmdline environ maps mountstats root statm wchan anaconda:/proc/877# ls -l exe 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

CSE Dep

Cursul 4, Procese

26/50

CSE Dep

Cursul 4, Procese

27/50

Crearea unui proces

Terminarea unui proces

un proces este creat din cadrul unui proces existent Unix, init este ,,strbunul tuturor proceselor n a fazele crerii a
copierea procesului printe (cu imaginea acestuia) a alocarea resurselor necesare pentru noul proces (PID, tabel de a siere, zone de memorie etc.) , arcarea executabilului asociat (imaginea procesului) nc actualizarea resurselor (zone de memorie, siere deschise) , ulterior se ruleaz procesul (se execut instructiuni pe procesor) a a ,

la terminarea unui proces


toate informatiile asociate dispar , resursele (memorie, siere) sunt eliberate ,

Cnd un proces moare, se sterge sierul executabil asociat? a , , Cnd moare un proces? a
se ajunge la sfrsitul zonei de cod a executabilului a , se apeleaz exit (sau o functie asemntoare) a a a , conditii anormale (abnormal termination): primirea unui , semnal, generarea unei exceptii ,

CSE Dep

Cursul 4, Procese

28/50

CSE Dep

Cursul 4, Procese

29/50

Semnale

Semnale (cont.)

Unix n mecanisme prin care se indic unui proces a


ncheierea unei operatii sau atingerea unei stri (noticare) a , o conditie deosebit functionare (de ex. accesarea unei zone a n , , invalide de memorie)

Lista de semnale Unix n


razvan@anaconda:~$ kill -l 1) SIGHUP 2) SIGINT 5) SIGTRAP 6) SIGABRT 9) SIGKILL 10) SIGUSR1 13) SIGPIPE 14) SIGALRM 18) SIGCONT 19) SIGSTOP 22) SIGTTOU 23) SIGURG 26) SIGVTALRM 27) SIGPROF 30) SIGPWR 31) SIGSYS 3) 7) 11) 15) 20) 24) 28) SIGQUIT SIGBUS SIGSEGV SIGTERM SIGTSTP SIGXCPU SIGWINCH 4) 8) 12) 17) 21) 25) 29) SIGILL SIGFPE SIGUSR2 SIGCHLD SIGTTIN SIGXFSZ SIGIO

mecanismele echivalente ntr-un sistem Windows


evenimente (events), pentru noticare exceptii, pentru conditii deosebite , ,

CSE Dep

Cursul 4, Procese

30/50

CSE Dep

Cursul 4, Procese

31/50

Semnale (cont.)
comanda kill poate folosit pentru transmiterea unui a semnal
denumire nefericit: nu toate semnalele termin procesul a a
Terminarea unui proces cu semnalul SIGKILL
razvan@anaconda:~$ ps PID TTY TIME 10388 pts/2 00:00:00 10422 pts/2 00:00:00 10424 pts/2 00:00:00 razvan@anaconda:~$ kill [1]+ Killed razvan@anaconda:~$ ps PID TTY TIME 10388 pts/2 00:00:00 10425 pts/2 00:00:00 razvan@anaconda:~$ CMD bash netcat ps -KILL 10422 netcat CMD bash ps

Semnale (cont.)

pkill, killall: comenzi pentru semnale ctre grupuri de a procese combinatii de taste shell pentru transmiterea de semnale n
CTRL-C transmite SIGINT ( ntrerupe procesul terminare) CTRL-\ transmite SIGQUIT (opreste procesul terminare , mai puternic dect CTRL-C) a CTRL-Z transmite SIGSTOP (suspend procesul fundal a n pauz) a

CSE Dep

Cursul 4, Procese

32/50

CSE Dep

Cursul 4, Procese

33/50

Comunicarea ntre procese

Operatorul pipe: |
form de baz de comunicare a a ntre procese iesirea unei comenzi este redirectat spre intrarea altei a , comenzi antuirea comenzilor (lozoe Unix: Do one thing, do one nl , thing well)
Folosirea operatorului |
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

Social processes :-) intermediat de nucleul SO a semnale


un proces poate transmite un semnal altuia comanda kill transmiterea unui semnal de la shell la proces

alte forme de comunicare ntre procese


pipe-uri anonime sau cu nume (named pipes sau FIFO) socketi Unix si socketi de retea , , , , memorie partajat a cozi de mesaje

CSE Dep

Cursul 4, Procese

35/50

CSE Dep

Cursul 4, Procese

36/50

Rularea fundal n

Rularea fundal (cont.) n

fundalul (background) sau prim planul (foreground) interpretorului de comenzi (shell-ului) mod implicit, rularea unei comenzi duce la rularea unui n proces foreground n rulare background nu se pot primi comenzi de la utilizator n
se foloseste operatorul & , procesul continu s ruleze a a

Rularea background si revenirea foreground n n ,


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 din background foreground n folosirea CTRL-Z (SIGSTOP) forteaz procesul background a n , starea suspendat (nu ruleaz) n a

CSE Dep

Cursul 4, Procese

38/50

CSE Dep

Cursul 4, Procese

39/50

foreground si background ,

Daemoni

Disk And Execution MONitor (backronym) proces care ruleaz background si care . . . a n ,
. . . este detasat de terminalul de control (fr intrare si iesire) aa , , , . . . are ca printe init a

util pentru actiuni care nu necesit interventia utilizatorului a , , numele executabilului aferent se termin, de obicei, d a n
sshd, syslogd, httpd, vsftpd etc.

Cum se interactioneaz cu un daemon? a ,


semnale siere de congurare ,

pe Windows, echivalentul daemonului este serviciul


Control Panel Administrative Tools Services

CSE Dep

Cursul 4, Procese

40/50

CSE Dep

Cursul 4, Procese

41/50

Daemoni (cont.)
comandarea daemonilor Linux se realizeaz cu scripturile n a din /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....

Operating Systems Concepts

editia a 8-a, 2008 , Silberschatz, Galvin, Gagne una dintre crtile de cpti lumea sistemelor de operare a , a a a n acoper foarte bine subiectele de gestiunea proceselor si a , gestiunea memoriei editia a 9-a planicat pentru 2012 a ,

comandarea serviciilor Windows se realizeaz cu ajutorul n a comenzii net sau folosind interfata grac a ,
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.
CSE Dep Cursul 4, Procese 42/50 CSE Dep

Cursul 4, Procese

44/50

Donald Knuth

IBM

International Business Machines Corporation fondat, ca nume, 1924 a n una dintre cele mai mari companii din lume The Art of Computer Programming
ntrerupt dup volumul trei pentru a scrie TEX a volumul 4 aproape gata estimare pentru volumul 5 2020 n volumele 6 si 7 planicate ,

unul dintre cele mai recunoscute brand-uri hardware (servere), software, servicii Blue Gene supercomputers sustintor al open source IBM Linux Technology Center a ,

analiza algoritmilor autorul TEX, METAFONT umor profesional


CSE Dep Cursul 4, Procese 45/50 CSE Dep Cursul 4, Procese 46/50

DTrace

Cuvinte cheie

dynamic tracing analiza dinamic ( timp real) a aplicatiilor si sistemului de a n , , operare aprut 2005, Sun Microsystems a n ruleaza pe Solaris, Mac OS X si *BSD , cnd a fost apelat o functie, cu ce argumente a a , ,,scriptat cu ajutorul unui limbaj de programare a primit numeroase premii de inovatie , modul de kernel portat pe Linux echivalent pe Linux este utilitarul SystemTap (stap)

proces program/executabil context de executie , PID init ierarhie de procese ps Task Manager Get-Process (PowerShell)

top comunicare ntre procese operatorul | semnale kill foreground background CTRL+Z, fg, bg daemon serviciu

CSE Dep

Cursul 4, Procese

47/50

CSE Dep

Cursul 4, Procese

48/50

Resurse utile

Silberschatz, Galvin, Gagne Operating System Concepts, 7th Edition (chapter 3: Processes) Andrew Tanenbaum Modern Operating Systems, 2nd Edition (chapter 2: Processes and Threads) http://en.wikipedia.org/wiki/Process_(computing) http://en.wikipedia.org/wiki/Daemon_(computer_software) http://en.wikipedia.org/wiki/Category:Unix_signals http://en.wikipedia.org/wiki/Inter-process_communication http://en.wikipedia.org/wiki/Paging http://computer.howstuffworks.com/operating-system5.htm

CSE Dep

Cursul 4, Procese

49/50

You might also like