Xem mẫu

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