8/16/2019 Ch02A Process
1/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.1
2.A Quaûn lyù quaù trình
Khaùi nieäm cô baûn Ñònh thôøi CPU Caùc taùc vuï cô baûn: taïo/keát thuùc quaù
trnh
!"ï coän# taùc #i"$a caùc quaù trnh %iao tieá& #i"$a caùc quaù trnh
8/16/2019 Ch02A Process
2/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.2
Khaùi nieäm cô baûn
'eä thoán# maù( t)nh th"ïc thi nhie*u ch"ôn# trnh
khaùc nhau+ ,atch -(-tem: .ob-+ ime0-hare1 -(-tem-: u-er &ro#ram-2 ta-k-+ 3ob ≈ &roce--
Quaù trình 4&roce--5+ moät ch"ôn# trnh 6an# th"ïc thi
7oät quaù trnh bao #o*m+ Text section 4&ro#ram co1e52 data section 4ch"ùa #8oba8
variab8e-5+ 'oaït 6oän# hieän thôøi: &ro#ram counter 4PC52 &roce-- -tatu-
9or1 4P!52 -tack &ointer 4!P52 memor( mana#ementre#i-ter-
8/16/2019 Ch02A Process
3/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.3
Caùc b"ôùc naï& ch"ôn# trnh vaøoboä nhôù
8/16/2019 Ch02A Process
4/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.4
"ø ch"ôn# trnh 6eán quaù trnh
!o"!a#co$%
$ata
'%cuta()% (ina!y *i)%+)oa$ #o$u)%,
!o"!a#co$%
$ata
-tac
P!oc%-- i#a"% in#ain #%#o!y
;uøn# load module 6e< bie
8/16/2019 Ch02A Process
5/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A./
Khôûi taïo quaù trnh
Caùc b"ôùc heä 6ie*u haønh khôûi taïo quaù trnh
+ Caá& &haùt moät ñònh danh 1u( nhaát 4&roce-- numberha( &roce-- i1enti?er2 &i15 cho quaù trnh
+ Caá& &haùt kho@n# #ian nhôù 6e< naï& quaù trnh+ Khôûi taïo khoái 1"$ 8ieäu Process Control Block 4PC,5 cho
quaù trnh PC, 8aø nôi heä 6ie*u haønh 8"u caùc tho@n# tin ve*
quaù trnh+ hieát 8aä& caùc moái 8ie@n heä ca*n thieát 4v1: -aA& PC,
vaøo haøn# 6ôïi 6ònh thôøi2B5
8/16/2019 Ch02A Process
6/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.0
Caùc traïn# thaùi cuûa quaùtrnh
Caùc traïng thaùi cuûa quaù trình 4&roce-- -tate-5:
+ ne! quaù trnh v"øa 6"ôïc taïo+ read" ! quaù trnh 6a$ coù 6uû taøi n#u(e@n2 ch coøn ca*n
CPU+ running! caùc 8eänh cuûa quaù trnh 6an# 6"ôïc th"ïc thi+
aiting! ha( 8aø #locked2 quaù trnh 6ôïi D/E hoaøn taát2 t)nhieäuF+ terminated! quaù trnh 6a$ keát thuùcF
8/16/2019 Ch02A Process
7/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Caùc traïn# thaùi cuûa quaùtrnh 4tt5
!%a$y !unnin"
$i-atch
int%!!ut o! %5%ntco#)%tion
o!%5%nt 6ait
n%6t%!#inat%$
6aitin"
a$#it %'it
Chu(e
8/16/2019 Ch02A Process
8/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.7
G) 1uï ve* traïn# thaùi quaù trnh
/* test.c */int main(int argc, char** argv){ printf(“Hello world\n");
eit(!);
,ie@n 1òch ch"ôn# trnh tron#>inuHgcc test.c #o test
h"ïc thi ch"ôn# trnh te-t
./test
ron# heä thoán# -e$ coù moätquaù trnh test 6"ôïc taïo ra2th"ïc thi vaø keát thuùcF
Chuo=i traïn# thaùi
cuûa quaù trnh te-tnh" -au 4tr"ôøn# hôï&toát nhaát5:+ ne9
+ rea1(+ runnin#+ 9aitin# 41o chôø D/E khi
#oïi &rintI5+ rea1(
+ runnin#+ terminate1
8/16/2019 Ch02A Process
9/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.8
Proce-- contro8 b8ock
Ña$ thaá( 8aø mo=i quaù trnh tron# heä thoán#
6e*u 6"ôïc caá& &haùt moät Process Control Block 4PC,5
PC, 8aø moät tron# caùc caáu truùc 1"$ 8ieäuquan troïn# nhaát cuûa heä 6ie*u haønh
G) 1uï 8a(out cuûa moätPC,:4tr"ôøn# &ointer 1uøn#
6e< 8ie@n keát caùc PC,-thaønh moät 8inke1 8i-t5
8/16/2019 Ch02A Process
10/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Chu(e
8/16/2019 Ch02A Process
11/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Chu(e
8/16/2019 Ch02A Process
12/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
e@u ca*u 6oái vôùi heä 6ie*u haønh ve*quaûn 8(ù quaù trnh
'o= trôï -"ï th"ïc thi 8ua@n &hie@n #i"$a nhie*u quaù
trnh+ 'ieäu -uaát -"û 1uïn# CPU
+ hôøi #ian 6aù& "ùn#
Pha@n &hoái taøi n#u(e@n heä thoán# hôï& 8(ù+ traùnh 1ea18ock2 tr hoa$n vo@ haïn 6ònh2B
Cun# caá& cô cheá #iao tieá& vaø 6o*n# boä hoaït
6oän# caùc quaù trnh Cun# caá& cô cheá ho= trôï u-er taïo/keát thuùc
quaù trnh
8/16/2019 Ch02A Process
13/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
!unnin"
!%a$y
6aitin"
Luaûn 8(ù caùc quaù trnh: caùchaøn# 6ôïi
11 4 2 1
18 11
!oc%-- nu#(%!
caùc PC,
Coù # -ai tron# v) 1uïM
G) 1uï
8/16/2019 Ch02A Process
14/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Ñònh thôøi quaù trnh
aïi -ao &haûi 6ònh thôøiM
+ 7u8ti&ro#rammin# Coù nhie*u quaù trnh &haûi th"ïc thi 8ua@n &hie@n nhau 7uïc tie@u: c"ïc 6aïi hieäu -uaát -"û 1uïn# cuûa CPU
+ ime0-harin#
Cho &heù& u-er- t"ôn# taùc vôùi quaù trnh 6an# th"ïcthi 7uïc tie@u: toái thie
8/16/2019 Ch02A Process
15/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Caùc haøn# 6ôïi 6ònh thôøi 3ob queue
Nea1( queue ;evice queue- B
8/16/2019 Ch02A Process
16/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
he@m me1ium0term -che1u8in#
Ño@i khi heä 6ie*u haønh 4nh" time0-harin# -(-tem5
coù the@m me1ium0term -che1u8in# 6e< 6ie*uchnh m"ùc 6oä mu8ti&ro#rammin# cuûa heäthoán#
+edium,term scheduler
+ chu(e
8/16/2019 Ch02A Process
17/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Caùc taùc vuï 6oái vôùi quaùtrnh
aïo quaù trnh môùi 4&roce-- creation5
+ 7oät quaù trnh coù the< taïo quaù trnh môùi tho@n# quamoät -(-tem ca88 4v1: haøm Iork tron# UniH5 G) 1uï: 4UniH5 Khi u-er 6an# nhaä& heä thoán#2 moät
comman1 inter&reter 4-he885 -e$ 6"ôïc taïo ra cho u-er Luaù trnh 6"ôïc taïo 8aø quaù trnh con cuûa quaù trnh taïo
4quaù trnh cha5- Luan heä cha0con 6ònh n#hOa moät ca."quaù trình-
8/16/2019 Ch02A Process
18/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Ca@( quaù trnh tron# >inuH/UniH
!oot
-6a%! a"%$a%#on init
(a-h(a-h (a-h
#$i! "!%)-"cc
G) 1uï
8/16/2019 Ch02A Process
19/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Caùc taùc vuï 6oái vôùi quaùtrnh
aïo quaù trnh môùi
+ Chia -eû taøi n#u(e@n cuûa quaù trnh cha Luaù trnh cha vaø con chia -eû moïi taøi n#u(e@n Luaù trnh con chia -eû moät &ha*n taøi n#u(e@n cuûa
cha+ rnh t"ï th"ïc thi
Luaù trnh cha vaø con th"ïc thi 6o*n# thôøi4concurrent8(5
Luaù trnh cha 6ôïi 6eán khi caùc quaù trnh con keátthuùcF
8/16/2019 Ch02A Process
20/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Ge* quan heä cha/con
Kho@n# #ian 6òa ch 4a11re-- -&ace5
+ Kho@n# #ian 6òa ch cuûa quaù trnh con 6"ôïc nha@nbaûn t"ø cha
+ Kho@n# #ian 6òa ch cuûa quaù trnh con 6"ôïc khôûi taïot"ø tem&8ateF
G) 1uï tron# UJDQ/>inuH+ !(-tem ca88 Iork45 taïo moät quaù trnh môùi+ !(-tem ca88 eHec45 1uøn# -au Iork45 6e< naï& moät ch"ôn#
trnh môùi vaøo kho@n# #ian nhôù cuûa quaù trnh môùi
6o*n# boä
8/16/2019 Ch02A Process
21/39 Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
G) 1uï taïo &roce-- vôùi Iork45$incl%de &stdio.h'
$incl%de &%nistd.h'
int main (int argc, char *argv){int pid;
/* create a new process */
pid for+();
if (pid ' !){
printf(“his is parent process-);
wait(00);
eit(!);
else if (pid !)
{
printf(“his is child process-);
eeclp(“/1in/ls-, “ls-, 00);eit(!);
else {
printf(“2or+ error\n-);
eit(34);
8/16/2019 Ch02A Process
22/39
8/16/2019 Ch02A Process
23/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Coän# taùc #i"$a caùc quaùtrnh
ron# quaù trnh th"ïc thi2 caùc quaù trnh coù the<
co(ng taùc 4coo&erate5 6e< hoaøn thaønh co@n# vieäc
Caùc quaù trnh coän# taùc 6e<+ Chia -eû 1"$ 8ieäu 4inIormation -harin#5+ an# toác t)nh toaùn 4com&utationa8 -&ee1u&5
Jeáu heä thoán# coù nhie*u CPU2 chia co@n# vieäc t)nhtoaùn thaønh nhie*u co@n# vieäc t)nh toaùn nhoû chaï(-on# -on#
+ h"ïc hieän moät co@n# vieäc chun# Qa@( 1"ïn# moät &ha*n me*m &h"ùc taï& baSn# caùch
chia thaønh caùc mo1u8e/&roce-- hôï& taùc nhau
!"ï coän# taùc #i"$a caùc quaù trnh (e@u ca*u heä6ie*u haønh ho= trôï cô cheá #iao tieá& vaø cô cheá6o*n# boä hoaït 6oän# cuûa caùc quaù trnh
8/16/2019 Ch02A Process
24/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
,aøi toaùn &ro1ucer0con-umer
G) 1uï coän# taùc #i"$a caùc quaù trnh: #a*i toaùn
producer,consumer + Producer taïo ra caùc 1"$ 8ieäu vaø consumer tie@u thuï2 -"û
1uïn# caùc 1"$ 8ieäu 6oùF !"ï trao 6o
8/16/2019 Ch02A Process
25/39
8/16/2019 Ch02A Process
26/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
7e--a#e &a--in# -(-tem >aøm theá naøo 6e< caùc quaù trnh #iao tieá& nhauM Caùc
vaán 6e*:+ $aming %iao tieá& tr"ïc tieá&
+ -en14P2 m-#5: #"ûi tho@n# 6ieä& 6eán quaù trnh P
+ receive4L2 m-#5: nhaän tho@n# 6ieä& 6eán t"ø quaù trnh L
%iao tieá& #iaùn tieá&: tho@n# qua mail#ox ha( port
+ -en14T2 m-#5: #"ûi tho@n# 6ieä& 6eán mai8boH T
+ receive4,2 m-#5: nhaän tho@n# 6ieä& t"ø mai8boH ,
+ 1"nchroni2ation: b8ockin# -en12 nonb8ockin# -en12 b8ockin# receive2nonb8ockin# receive
+ Bu/ering: 1uøn# queue 6e< taïm ch"ùa caùc me--a#e
ero ca&acit( 4no buRerin#5
,oun1e1 ca&acit(: 6oä 1aøi cuûa queue 8aø #iôùi haïn
Unboun1e1 ca&acit(: 6oä 1aøi cuûa queue 8aø kho@n# #iôùi haïn
8/16/2019 Ch02A Process
27/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
7o@ hnh #iao tieá& c8ient0-erver
!ocket-
Nemote Proce1ure Ca88- 4NPC5
Nemote 7etho1 Dnvocation 4N7D5
8/16/2019 Ch02A Process
28/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
!ocket
1ocket
+ Ña*u cuoái 4en1&oint5 cuûa moät ke@nh #iao tieá&+ Cô cheá #iao tieá& m"ùc thaá& 48o908eve852 #"ûi nhaän moät
chuo=i b(te 1"$ 8ieäu kho@n# caáu truùc 4un-tructure1-tream oI b(te-5
+ %iao tieá& qua -ocket: connection8e-- vaø connection0
oriente1+ >aä& trnh -ocket
,erke8e( -ocket 4,!; -ocket52 in!ock
8/16/2019 Ch02A Process
29/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Cô cheá #"ûi/nhaän qua -ocket
Haøm thö
vieän Dieãn giaûi -ocket45 aïo moät -ocket
bin145%aAn moät 6òa ch cuïc boä vaøo moät-ocket
8i-ten45 Qaùc 6ònh 6oä 8ôùn/k)ch th"ôùc haøn# 6ôïi
acce&t45 4-erver5 chôø keát noái 6eán t"ø c8ient
connect45 4c8ient5 keát noái 6eán moät -erver
-en145/-en1to45%"ûi 1"$ 8ieäu qua ke@nh #iao tieá& 6a$thieát 8aä&
recv45/recvIrom45 Jhaän 1"$ 8ieäu qua ke@nh #iao tieá&
c8o-e45 Ñoùn# keát noái
8/16/2019 Ch02A Process
30/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Connection8e-- -ocket
-oc%t+,
(in$+,
P!oc%-- A
-%n$to+,
!%c5*!o#+,
-oc%t+,
(in$+,
P!oc%-- B
-%n$to+,
!%c5*!o#+,
c)o-%+, c)o-%+,
: -%n$to+-oc%t; (u**%!; (u**%!
8/16/2019 Ch02A Process
31/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Connection0oriente1 -ocket
: -%n$+-oc%t; (u**%!; (u**%!?5ou-, co##unication
8/16/2019 Ch02A Process
32/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Nemote &roce1ure ca88
3emote procedure call 4NPC5
+ Cho &heù& moät ch"ôn# trnh #oïi moät thuû tuïc naSmtre@n maù( t)nh ôû Ha qua maïn#F
Caùc vaán 6e* khi hieän th"ïc NPC
+ ru(e*n tham -oá vaø keát quaû traû ve* cuûa 8ôøi #oïi thuûtuïc+ Chu(e
8/16/2019 Ch02A Process
33/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
!ô 6o* hoaït 6oän# cuûa NPC
C)i%nt
=%!5%!
%oïi remote&roce1ure
@%u%-t @%)y
Keát quaû traû ve*
chôø keát quaû traû ve*
4-u-&en15
%oïi thuû tuïc cuïc boävaø traû ve* keát quaû+()oc%$, +()oc%$,
t
8/16/2019 Ch02A Process
34/39
8/16/2019 Ch02A Process
35/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
ru(e*n tham -oá tron# NPC
+arshalling
+ qui taAc tru(e*n tham -oá vaø chu(e
8/16/2019 Ch02A Process
36/39
ù
8/16/2019 Ch02A Process
37/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Luaù trnh th"ïc hieän NPC
;uøn# d"namic
#inding 6e< Haùc 6ònh&ort number cuûa NPCQ
8/16/2019 Ch02A Process
38/39
Khoa Khoa Hoïc & Kyõ Thuaät Maùy Tính – Ñaïi Hoïc Baùch Khoa TP HCM 2.A.
Nemote metho1 invocation
3emote +ethod 0n4ocation 4N7D5
+ Cho &heù& moät ch"ôn# trnh 3ava coù the< #oïi moät&h"ôn# th"ùc 4metho15 cuûa moät ño5i t%)ïng )û xa2 n#hOa8aø moät 6oái t"ôïn# ôû taïi moät maù( aûo 3ava khaùc
ô h á h 88i
8/16/2019 Ch02A Process
39/39
Cô cheá mar-ha88in# tron# N7D
Ph"ôn# th"ùc 6"ôïc trieäu #oïi coù 1aïn# -au:
boo8ean -ome7etho14Eb.ect H2 Eb.ect (5