10/01/2017
Chapter 6. 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ù trình
Söï coäng taùc giöõa caùc quaù trình
Giao tieáp giöõa caùc quaù trình
1
Khaùi nieäm cô baûn
Heä thoáng maùy tính thöïc thi nhieàu chöông trình khaùc nhau
● Batch system: job
● Time-shared system: user program, task
Quaù trình (process)
● moät chöông trình ñang thöïc thi
Moät quaù trình ñöôïc ñònh nghóa bôûi
● Traïng thaùi CPU (trò cuûa caùc thanh ghi)
● Khoâng gian ñòa chæ (noäi dung boä nhôù)
● Moâi tröôøng (environment, xaùc ñònh thoâng qua caùc baûng cuûa heä
ñieàu haønh)
2
Khaùi nieäm cô baûn (tt)
Traïng thaùi CPU
●
●
●
●
●
Khoâng gian ñòa chæ
●
●
●
●
Processor Status Word (PSW)
Instruction Register (IR)
Program Counter (PC)
Stack Pointer (SP)
Caùc general purpose register
Text (code)
Data
Heap
Stack
Moâi tröôøng
● Vd: terminal ñang duøng, caùc open file, caùc keânh giao tieáp vôùi caùc
quaù trình khaùc
● Ñöôïc lieät keâ trong caùc baûng cuûa heä ñieàu haønh
3
1
10/01/2017
Process control block
Heä ñieàu haønh löu thoâng tin veà quaù trình trong process
control block (PCB)
D.Feitelson
4
Caùc böôùc naïp chöông trình vaøo boä nhôù
5
Töø chöông trình ñeán quaù trình
Chöông trình thöïc thi coù ñònh daïng load module maø trình
naïp (loader) “hieåu” ñöôïc
Layout luaän lyù cuûa process image
● Vd ñònh daïng elf trong Linux
Executable binary file
(load module)
Process image
trong main memory
program
code
program
code
data
data
start address
heap
stack
6
2
10/01/2017
Khôûi taïo quaù trình
Caùc böôùc heä ñieàu haønh khôûi taïo quaù trình
● Caáp phaùt moät ñònh danh duy nhaát (process number hay process
identifier, pid) cho quaù trình
● Caáp phaùt khoâng gian nhôù ñeå naïp quaù trình
● Khôûi taïo khoái döõ lieäu Process Control Block (PCB) cho quaù trình
● Thieát laäp caùc moái lieân heä caàn thieát (vd: saép PCB vaøo haøng ñôïi
ñònh thôøi,…)
7
Caùc traïng thaùi cuûa quaù trình (1/2)
Caùc traïng thaùi cuûa quaù trình:
●
●
●
●
●
new: quaù trình vöøa ñöôïc taïo
ready: quaù trình ñaõ coù ñuû taøi nguyeân, chæ coøn caàn CPU
running: caùc leänh cuûa quaù trình ñang ñöôïc thöïc thi
waiting: hay laø blocked, quaù trình ñôïi I/O hoaøn taát, hay ñôïi tín hieäu
terminated: quaù trình ñaõ keát thuùc
8
Caùc traïng thaùi cuûa quaù trình (2/2)
Chuyeån ñoåi giöõa caùc traïng thaùi cuûa quaù trình
new
admit
dispatch
ready
exit
terminated
running
interrupt
I/O or event
wait
I/O or event
completion
waiting
9
3
10/01/2017
Ví duï veà traïng thaùi quaù trình
/* test.c */
int main(int argc, char** argv)
{
printf(“Hello world\n");
exit(0);
}
Chuoãi traïng thaùi cuûa quaù
trình test nhö sau (tröôøng
hôïp toát nhaát):
new
ready
running
waiting (do chôø I/O khi goïi
printf)
● ready
● running
● terminated
●
●
●
●
Bieân dòch chöông trình trong Linux
gcc test.c –o test
Thöïc thi chöông trình test
./test
Trong heä thoáng seõ coù moät quaù trình
test ñöôïc taïo ra, thöïc thi vaø keát
thuùc.
10
Process Control Block
Ñaõ thaáy laø moãi quaù trình trong heä thoáng ñeàu ñöôïc caáp
phaùt moät Process Control Block (PCB)
PCB laø moät trong caùc caáu truùc döõ lieäu
quan troïng nhaát cuûa heä ñieàu haønh
Ví duï layout cuûa moät PCB:
(tröôøng pointer duøng ñeå lieân
keát caùc PCB thaønh moät
linked list)
Moâi tröôøng
11
Caùc tröôøng tieâu bieåu cuûa PCB
Tanenbaum
12
4
10/01/2017
Chuyeån ngöõ caûnh (1/2)
Laøm theá naøo ñeå chia seû CPU giöõa caùc quaù trình?
Ngöõ caûnh (context) cuûa moät quaù trình laø tình traïng hoaït
ñoäng cuûa quaù trình
Ngöõ caûnh cuûa quaù trình ñöôïc löu trong PCB cuûa noù
Chuyeån ngöõ caûnh (context switch) laø coâng vieäc ngöng
quaù trình ñang thöïc thi vaø chaïy moät quaù trình khaùc. Khi
ñoù caàn:
● Trò cuûa caùc thanh ghi, trò cuûa program counter, boä nhôù,…
● löu ngöõ caûnh cuûa quaù trình vaøo PCB cuûa noù
● naïp ngöõ caûnh töø PCB cuûa quaù trình môùi ñeå quaù trình môùi thöïc thi
13
Chuyeån ngöõ caûnh (2/2)
14
Yeâu caàu ñoái vôùi heä ñieàu haønh veà quaûn lyù quaù trình
Hoã trôï söï thöïc thi luaân phieân giöõa nhieàu quaù trình
● Khi naøo choïn vaø choïn quaù trình naøo ñeå thöïc thi coù theå tuøy thuoäc
vaøo tieâu chí nhö
Hieäu suaát söû duïng CPU
Thôøi gian ñaùp öùng
…
Phaân phoái taøi nguyeân heä thoáng hôïp lyù
Cung caáp cô cheá hoã trôï user taïo/keát thuùc quaù trình
Cung caáp cô cheá ñoàng boä vaø giao tieáp giöõa caùc quaù trình
● Vaán ñeà deadlock, trì hoaõn voâ haïn ñònh,…
15
5
nguon tai.lieu . vn