Upload
others
View
14
Download
0
Embed Size (px)
Citation preview
-1-
Chöông 2
QUAÙ TRÌNH
-2-
CHÖÔNG 2 : QUAÙ TRÌNH
Khaùi nieäm veà quaù trình
Traïng thaùi cuûa quaù trình
Khoái ñieàu khieån quaù trình
Chuyeån ñoåi traïng thaùi quaù trình
Caùc taùc vuï thöïc hieän ñ/v quaù trình
Ngaét quaùng
Chuyeån ngöõ caûnh
Baøi taäp
-3-
QUAÙ TRÌNH (PROCESS)
Moät chöông trình ñang thöïc thi
Coù thôøi gian soáng (life cycle)
Laø moät thöïc theå tích cöïc
Coù nhieàu traïng thaùi vaø coù theå chuyeån
traïng thaùi
Moät quaù trình coù caùc thoâng tin: boä ñeám
chöông trình, stack, vuøng chöùa döõ lieäu
vaø bieán moâi tröôøng...
Trong moät soá taøi lieäu, quaù trình (proces)
coâng vieäc (job) taùc vuï (task)
-4-
Chöông trình: laø thöïc theå thuï ñoäng, chöùa caùc chæ
thò(leänh) ñieàu khieån maùy tính thöïc hieän taùc vuï naøo
ñoù.
Tieán trình(process) laø moät chöông trình ñang thöïc
thi, laø thöïc theå hoaït ñoäng, vôùi con troû leänh xaùc ñònh
chæ thò keá tieáp, keøm theo taøi nguyeân phuïc vuï cho
tieán trình.
Coù thôøi gian soáng (life cycle)
Laø moät thöïc theå tích cöïc
Coù nhieàu traïng thaùi vaø coù theå chuyeån traïng thaùi
Moät quaù trình coù caùc thoâng tin: boä ñeám chöông trình,
stack, vuøng chöùa döõ lieäu vaø bieán moâi tröôøng...
Trong moät soá taøi lieäu, quaù trình (process) coâng vieäc
(job) taùc vuï (task)
-5-
CAÁU TRUÙC PROCESS CUÛA UNIX
argc/argv[]
Stack segment
Text segment Low address
High address
etext
edata
end
Initialized data
Uninitialized data
Heap
1. int a = 0, b, *c;
2. int main( int argc, char *argv[ ] ) {
3. b= increase(a);
4. c =(int*)malloc(10*sizeof(int));
5. c[5]= b;
6. }
7. int increase(int x) {
8. return x ++;
9. }
-6-
KHOÁI ÑIEÀU KHIEÅN QUAÙ TRÌNH
PCB process control block
Caáu truùc döõ lieäu cuûa HÑH ñeå quaûn lyù quaù trình
Chöùa thoâng tin nhaän daïng, traïng thaùi, ñònh vò
taøi nguyeân cho quaù trình
Danh ñònh cho quaù trình (PID):giuùp phaân bieät caùc tieán
trình
Traïng thaùi tieán trình:hoaït ñoäng hieän taïi cuûa tieán trình
Ngöõ caûnh tieán trình :moâ taû taøi nguyeân cuûa tieán trình
bao goàm :
Traïng thaùi CPU: goàm noäi dung thanh ghi, con troû leänh IP löu
tröõ ñòa chæ caâu leänh keá tieáp tieán trình seõ xöû lyù. Caùc thoâng tin
naøy caàn ñöôïc löu tröõ khi xaûy ra moät ngaét, nhaèm coù theå cho
pheùp phuïc hoài hoaït ñoäng cuûa tieán trình ñuùng nhö tröôùc khi bò
ngaét
– …
Boä xöû lyù : duøng cho heä thoáng caáu hình nhieàu CPU, xaùc ñònh soá
hieäu Cpu ñang hoaït ñoäng.
Boä nhôù chính: danh saùch caùc khoái nhôù caáp cho quaù trình.
Taøi nguyeân söû duïng: danh saùch taøi nguyeân heä thoáng maø tieán
trình ñang söû duïng
Taøi nguyeân taïo laäp :danh saùch caùc taøi nguyeân ñöôïc tieán trình taïo
laäp
Thoâng tin giao tieáp: phaûn aùnh thoâng tin veà quan heä cuûa
tieán trình vôùi caùc tieán trình khaùc trong heä thoáng:
Tieán trình cha: tieán trình taïo ra tieán trình ñang xeùt
Tieán trình con: caùc tieán trình do tieán trình naøy taïo ra.
Ñoä öu tieân: giuùp cho boä ñieàu phoái löïa choïn tieán trình ñeå caáp cho
CPU
Thoâng tin thoáng keâ: thoáng keâ veà hoaït ñoäng cuûa tieán trình,
nhö thôøi gian xöû duïng CPU, thôøi gian chôø,…
-7-
-8-
TRAÏNG THAÙI QUAÙ TRÌNH
Saün saøng (ready)
– Quaù trình ñôïi ñeå gaùn cho CPU xöû lyù
Thöïc thi (running)
– Quaù trình ñang ñöôïc CPU thöïc thi caùc leänh
Bò chaën (blocked)
– Quaù trình ñôïi moät söï kieän naøo ñoù
– Söï kieän coù theå laø do vieäc xuaát nhaäp döõ lieäu hoaëc
töø moät quaù trình khaùc taïo ra
-9-
CHUYEÅN TRAÏNG THAÙI QUAÙ TRÌNH
READY RUNNING
BLOCKED
Dispatch
Timer run-out
Wake-up Block
New Exited
-10-
CAÙC HAØNG ÑÔÏI QUAÙ TRÌNH
JOB QUEUE READY QUEUE CPU
I/O WAITING QUEUE
enter end
-11-
BOÄ ÑÒNH THÔØI (SCHEDULER)
JOB QUEUE READY QUEUE CPU
I/O WAITING QUEUE
enter end
High-level scheduler Low-level scheduler
-12-
TRAÏNG THAÙI TREO (SUSPENDED)
Quaù trình bò treo traû laïi moïi taøi nguyeân
Taùc nhaân treo quaù trình
– Baûn thaân quaù trình
– Heä thoáng/quaù trình khaùc
Xaûy ra khi
– Caàn giaùm saùt quaù trình
– Heä thoáng coù söï coá
– Heä thoáng quaù taûi
Phuïc hoài (resume)
– Nhôø HÑH hoaëc quaù trình khaùc
-13-
LÖÔÏC ÑOÀ CHUYEÅN TRAÏNG THAÙI
Suspend
Resume
READY RUNNING
BLOCKED
Dispatch
Timer run-out
Wake-up Block
New Exited
SUSPENDED READY SUSPENDED BLOCKED
Wake-up
-14-
TAÙC VUÏ TREÂN QUAÙ TRÌNH
Taïo quaù trình(create)
– Moät tieán trình coù theå taïo laäp nhieàu tieán trình môùi
baèng caùch söû duïng lôøi goïi heä thoáng. Tieán trình
goïi lôøi goïi heä thoáng ñeå taïo ra tieán trình môùi
goïi laø tieán trình cha, tieán trình ñöôïc taïo laäp goïi
laø tieán trình con, ….Quaù trình naøy tieáp tuïc seõ
taïo ra caây tieán trình
– Caùc coâng vieäc khi taïo tieán trình: ñònh danh tieán
trình, ñöa tieán trình vaøo danh saùch quaûn lyù,
xaùc ñònh ñoä öu tieân, taïo PCB, caáp phaùt taøi
nguyeân, …
Khi tieán trình con ñöôïc taïo laäp, tieán trình con seõ ñöôïc heä
ñieàu haønh caáp phaùt taøi nguyeân hoaëc ñöôïc thöøa höôûng
taøi nguyeân töø tieán trình cha, …
Khi tieán trình taïo tieán trình môùi thì tieán trình cha tieáp tuïc
xöû lyù ñoàng haønh vôùi tieán tieán trình con hoaëc chôø tieán
trình con keá thuùc môùi tieáp tuïc xöû lyù,…
Vd:
Haøm heä thoáng fork(), shell, GUI …
-15-
Huûy tieán trình: khi tieán trình keát thuùc xöû lyù vaø söû
duïng lôøi goïi heä thoáng ñeå yeâu caàu heä ñieàu haønh huûy
boû noù. Khi tieán trình keát thuùc, heä ñieàu haønh thu
hoài taøi nguyeân ñaõ caáp phaùt, huûy tieán trình khoûi
danh saùch quaûn lyù cuûa heä thoáng, huûy boû PCB,…
– Haøm exit(), leänh kill,…
Thay ñoåi traïng thaùi quaù trình
– Suspend / Resume / Block / Wake-up/ Dispatch
– Thöïc hieän baèng caùch gôûi tín hieäu ñeán quaù trình
Thay ñoåi ñoä öu tieân cuûa quaù trình
Cho pheùp caùc quaù trình giao tieáp
-16-
Caáp phaùt taøi nguyeân cho tieán trình:
– Taøi nguyeân :CPU, boä nhôù chính, caùc thieát bò, …Moãi
loaïi caàn coù moät cô cheá caáp phaùt vaø chieán löôïc caáp
phaùt hieäu quaû.
– Moãi taøi nguyeân ñöôïc bieåu dieãn thoâng qua moät caáu
truùc döõ lieäu bao goàm: ñònh danh taøi nguyeân, traïng
thaùi taøi nguyeân (phaàn ñaõ caáp, phaàn coøn laïi,…), haøng
ñôïi treân moät taøi nguyeân, boä caáp phaùt,…
– Caùc muïc tieâu cuûa kyõ thuaät caáp phaùt:
Baûo ñaûm moät soá löôïng hôïp leä caùc tieán trình truy xuaát ñoàng thôøi
ñeán caùc taøi nguyeân khoâng chia seû ñöôïc.
Caáp phaùt taøi nguyeân cho tieán trình coù yeâu caàu trong moät
khoaûng thôøi gian trì hoaûn coù theå chaáp nhaän ñöôïc.
Toái öu hoùa söï söû duïng taøi nguyeân
-17-
Tieåu trình: (thread)
– Moãi tieåu trình laø moät ñôn vò xöû lyù cô baûn trong heä thoáng.
Moãi tieåu trình xöû lyù tuaàn töï ñoaïn code cuûa noù, sôû höõu
moät con troû leänh, taäp caùc thanh ghi vaø vuøng nhôù stack
rieâng. Caùc tieåu trình chia seû CPU vôùi nhau gioáng nhö ñoái
vôùi caùc tieán trình: moät tieåu trình ñöôïc xöû lyù trong khi caùc
tieåu trình khaùc chôø ñeán löôït. Moät tieåu trình cuõng coù theå
taïo laäp caùc tieán trình con vaø nhaän caùc traïng thaùi khaùc
nhau nhö laø moät tieán trình thöïc söï. Ngöôïc laïi moät tieán
trình coù theå sôû höõu nhieàu tieåu trình
-18-
TIEÁN TRÌNH TIEÅU TRÌNH
Moãi tieán trình coù moät taäp taøi
nguyeân vaø moät moâi tröôøng laøm
vieäc rieâng (sôû höõu moät con troû
leänh, moät stack, caùc thanh ghi
vaø khoâng gian ñòa chæ).
Caùc tieán trình hoaøn toaøn ñoäc
laäp vôùi nhau, caùc tieán trình chæ
coù theå lieân laïc thoâng qua caùc cô
cheá thoâng tin giöõa caùc tieán trình
maø heä ñieàu haønh cung caáp
Caùc tieåu trình trong cuøng moät
tieán trình laïi chia seû moät khoâng
gian ñòa chæ chung, nghóa laø caùc
tieåu trình coù theå chia seû caùc
bieán toaøn cuïc cuûa tieán trình
Moät tieåu trình coù theå truy xuaát
ñeán caû stack cuûa nhöõng tieåu
trình khaùc trong cuøng tieán trình
Caáu truùc tieåu trình khoâng coù cô
cheá baûo veä naøo, vì caùc tieåu
trình trong cuøng tieán trình thuoäc
veà cuøng moät sôû höõu ñaõ taïo ra
chuùng trong yù ñònh cho pheùp
chuùng hôïp taùc vôùi nhau.
-19-
-20-
NGAÉT QUAÕNG (INTERRUPT)
Söï kieân laøm thay ñoåi tieán trình thöïc thi cuûa CPU
Cô cheá:
Interrupt
Trình xöû lyù
interrupt
-21-
CAÙC BÖÔÙC XÖÛ LYÙ INTERRUPT
Heä ñieàu haønh chieám laïi quyeàn thöïc thi
Löu tröõ traïng thaùi cuûa quaù trình bò ngaét
Phaân tích ngaét quaõng (duøng phaàn cöùng)
Thöc thi chöông trình xöû lyù ngaét quaõng
Choïn moät quaù trình tieáp theo ñeå chaïy
Coù theå cho pheùp interrupt xöû lyù loàng nhau
-22-
CAÙC LOAÏI INTERRUPT
Supervisor call (SVC) interrupt: khi quaù trình
yeâu caàu dòch vuï cuûa heä thoáng
I/O interrupt: do caùc thieát bò I/O sinh ra khi
chuyeån traïng thaùi
External interrupt: sinh ra töø ñoàng hoà heä
thoáng, baøn phím
Restart interrupt: ngaét khôûi ñoäng laïi maùy
Program check: sinh ra khi chöông trình thöïc
thi leänh bò loãi (chia cho 0, traøn soá, …)
Machine check: do nhaø saûn xuaát taïo ra daønh
rieâng cho vieäc kieåm tra phaàn cöùng
-23-
CHUYEÅN NGÖÕ CAÛNH
(CONTEXT SWITCHING)
Chuyeån xöû lyù töø quaù trình naøy sang quaù trình khaùc.
Xaûy ra khi coù interrupt
Qui trình:
– Löu traïng thaùi cuûa quaù trình hieän haønh
– Choïn quaù trình môùi ñeå xöû lyù
– Ñöa traïng thaùi cuûa quaù trình môùi vaøo phaàn cöùng ñeå xöû lyù
Moät context bao goàm:
– taäp thanh ghi chöùa thoâng tin traïng thaùi quaù trình veà traïng
thaùi CPU, boä nhôù … cuûa quaù trình.
Program Status Word (PSW).
-24-
CHUYEÅN NGÖÕ CAÛNH
(CONTEXT SWITCHING)
Caùc loaïi PSW:(program status word)
– Old_PSW
– Current _PSW
– New_PSW
Heä thoáng moät boä xöû lyù coù 1 Current_PSW vaø
6 New_PSW vaø 6 Old_PSW (6 loaïi interrupt)
Quaù trình chuyeån ngöõ caûnh dieãn ra qua söï
thay ñoåi giöõa caùc PSW trong heä thoáng
– Current_PSW Old_PSW
– New_PSW Current_PSW
CAÂU HOÛI
1) Ñònh nghóa quaù trình(process). So saùnh giöõa chöông trình,
tieán trình(quaù trình)
2) Moâ taû caáu truùc khoái ñieàu khieån quaù trình PCB
3) Veõ sô ñoà vaø moâ taû hoaït ñoäng chuyeån traïng thaùi cuûa quaù
trình.
4) Theá naøo laø traïng thaùi treo (trì hoaõn suspended)
Veõ löôïc ñoà chuyeån traïng thaùi
5) Neâu vaø phaân tích caùc taùc vuï treân quaù trình
6) Tieåu trình laø gì? So saùnh tieåu trình vaø tieán trình
7) Theá naøo laø ngaét (interrupt). Neâu caùc böôùc xöû lyù khi ngaét
xaûy ra?
8)Caùc loaïi ngaét vaø yù nghóa töøng loaïi?
9) Theá naøo laø chuyeån ngöõ caûnh (context switching). Neâu caùc
loaïi PSW.
-25-
-26-
BAØI TAÄP
1. Nhöõng heä ñieàu haønh naøo sau ñaây cho pheùp nhieàu quaù
trình cuøng naèm trong boä nhôù
Windows NT, Win98SE, Linux, MS-DOS.
2.Phaân loaïi caùc Interrupt sau :
- Nhaán Ctrl+C gieát quaù trình
- Card maïng baùo coù döõ lieäu tôùi
- OÅ ñóa CD baùo quaù trình chuyeån döõ lieäu ñaõ xong
- Goïi haøm heä thoáng fork()
- Nhaán nuùt Reset cuûa maùy tính
3.Tìm hieåu caùc haøm/ leänh taïo, huyû quaù trình treân Linux.
4.Vieát chöông trình in ra ñòa chæ caùc vuøng nhôù cuûa moät
quaù trình treân Linux