2.chap2 process

293 views

Published on

Published in: Education, Sports
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
293
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2.chap2 process

  1. 1. Chöông 2 QUAÙ TRÌNH
  2. 2. CHÖÔNG 2 : QUAÙ TRÌNH <ul><li>Khaùi nieäm veà quaù trình </li></ul><ul><li>Traïng thaùi cuûa quaù trình </li></ul><ul><li>Khoái ñieàu khieån quaù trình </li></ul><ul><li>Chuyeån ñoåi traïng thaùi quaù trình </li></ul><ul><li>Caùc taùc vuï thöïc hieän ñ/v quaù trình </li></ul><ul><li>Ngaét quaùng </li></ul><ul><li>Chuyeån ngöõ caûnh </li></ul><ul><li>Baøi taäp </li></ul>
  3. 3. QUAÙ TRÌNH ( PROCESS ) <ul><li>Moät chöông trình ñang thöïc thi </li></ul><ul><li>Coù thôøi gian soáng (life cycle) </li></ul><ul><li>Laø moät thöïc theå tích cöïc </li></ul><ul><li>Coù nhieàu traïng thaùi vaø coù theå chuyeån traïng thaùi </li></ul><ul><li>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... </li></ul><ul><li>Trong moät soá taøi lieäu, quaù trình (proces)  coâng vieäc (job)  taùc vuï (task) </li></ul>
  4. 4. CAÁU TRUÙC PROCESS CUÛA UNIX <ul><li>int a = 0, b, *c; </li></ul><ul><li>int main( int argc, char *argv[ ] ) { </li></ul><ul><li>b= increase(a); </li></ul><ul><li>c =(int*)malloc(10*sizeof(int)); </li></ul><ul><li>c[5]= b; </li></ul><ul><li>} </li></ul><ul><li>int increase(int x) { </li></ul><ul><li>return x ++; </li></ul><ul><li>} </li></ul>argc/argv[] Stack segment Text segment Low address High address etext edata end Initialized data Uninitialized data <ul><li>Heap </li></ul>
  5. 5. KHOÁI ÑIEÀU KHIEÅN QUAÙ TRÌNH <ul><li>Caáu truùc döõ lieäu cuûa HÑH ñeå quaûn lyù quaù trình </li></ul><ul><li>Chöùa thoâng tin nhaän daïng, traïng thaùi, ñònh vò taøi nguyeân cho quaù trình </li></ul><ul><ul><li>Danh ñònh cho quaù trình (PID) </li></ul></ul><ul><ul><li>Boä ñeám chöông trình </li></ul></ul><ul><ul><li>Vuøng löu giaù trò thanh ghi CPU </li></ul></ul><ul><ul><li>Ñoä öu tieân cuûa quaù trình </li></ul></ul><ul><ul><li>Thoâng tin ñònh vò boä nhôù quaù trình </li></ul></ul><ul><ul><li>Thoâng tin baûo maät </li></ul></ul><ul><ul><li>Con troû ñeáùn caùc quaù trình cha, con </li></ul></ul><ul><ul><li>… </li></ul></ul>
  6. 6. TRAÏNG THAÙI QUAÙ TRÌNH <ul><li>Saün saøng ( ready ) </li></ul><ul><ul><li>Quaù trình ñôïi ñeå gaùn cho CPU xöû lyù </li></ul></ul><ul><li>Thöïc thi ( running ) </li></ul><ul><ul><li>Quaù trình ñang ñöôïc CPU thöïc thi caùc leänh </li></ul></ul><ul><li>Bò chaën ( blocked ) </li></ul><ul><ul><li>Quaù trình ñôïi moät söï kieän naøo ñoù </li></ul></ul><ul><ul><li>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 </li></ul></ul>
  7. 7. CHUYEÅN TRAÏNG THAÙI QUAÙ TRÌNH Exited READY RUNNING BLOCKED Dispatch Timer run-out Wake-up Block New
  8. 8. CAÙC HAØNG ÑÔÏI QUAÙ TRÌNH JOB QUEUE READY QUEUE CPU I/O WAITING QUEUE enter end
  9. 9. BOÄ ÑÒNH THÔØI ( SCHEDULER ) JOB QUEUE READY QUEUE CPU I/O WAITING QUEUE enter end High-level scheduler Low-level scheduler
  10. 10. TRAÏNG THAÙI TREO ( SUSPENDED ) <ul><li>Quaù trình bò treo traû laïi moïi taøi nguyeân </li></ul><ul><li>Taùc nhaân treo quaù trình </li></ul><ul><ul><li>Baûn thaân quaù trình </li></ul></ul><ul><ul><li>Heä thoáng/quaù trình khaùc </li></ul></ul><ul><li>Xaûy ra khi </li></ul><ul><ul><li>Caàn giaùm saùt quaù trình </li></ul></ul><ul><ul><li>Heä thoáng coù söï coá </li></ul></ul><ul><ul><li>Heä thoáng quaù taûi </li></ul></ul><ul><li>Phuïc hoài ( resume ) </li></ul><ul><ul><li>Nhôø HÑH hoaëc quaù trình khaùc </li></ul></ul>
  11. 11. 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
  12. 12. TAÙC VUÏ TREÂN QUAÙ TRÌNH <ul><li>Taïo quaù trình </li></ul><ul><ul><li>Haøm heä thoáng fork(), shell, GUI … </li></ul></ul><ul><li>Huûy quaù trình </li></ul><ul><ul><li>Haøm exit(), leänh kill,… </li></ul></ul><ul><li>Thay ñoåi traïng thaùi quaù trình </li></ul><ul><ul><li>Suspend / Resume / Block / Wake-up/ Dispatch </li></ul></ul><ul><ul><li>Thöïc hieän baèng caùch gôûi tín hieäu ñeán quaù trình </li></ul></ul><ul><li>Thay ñoåi ñoä öu tieân cuûa quaù trình </li></ul><ul><li>Cho pheùp caùc quaù trình giao tieáp </li></ul>
  13. 13. NGAÉT QUAÕNG ( INTERRUPT ) <ul><li>Söï kieân laøm thay ñoåi tieán trình thöïc thi cuûa CPU </li></ul><ul><li>Cô cheá: </li></ul>Interrupt Trình xöû lyù interrupt
  14. 14. CAÙC BÖÔÙC XÖÛ LYÙ INTERRUPT <ul><li>Heä ñieàu haønh chieám laïi quyeàn thöïc thi </li></ul><ul><li>Löu tröõ traïng thaùi cuûa quaù trình bò ngaét </li></ul><ul><li>Phaân tích ngaét quaõng (duøng phaàn cöùng) </li></ul><ul><li>Thöc thi chöông trình xöû lyù ngaét quaõng </li></ul><ul><li>Choïn moät quaù trình tieáp theo ñeå chaïy </li></ul><ul><li>Coù theå cho pheùp interrupt xöû lyù loàng nhau </li></ul>
  15. 15. CAÙC LOAÏI INTERRUPT <ul><li>Supervisor call (SVC) interrupt : khi quaù trình yeâu caàu dòch vuï cuûa heä thoáng </li></ul><ul><li>I/O interrupt : do caùc thieát bò I/O sinh ra khi chuyeån traïng thaùi </li></ul><ul><li>External interrupt : sinh ra töø ñoàng hoà heä thoáng, baøn phím </li></ul><ul><li>Restart interrupt : ngaét khôûi ñoäng laïi maùy </li></ul><ul><li>Program check : sinh ra khi chöông trình thöïc thi leänh bò loãi (chia cho 0, traøn soá, …) </li></ul><ul><li>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 </li></ul>
  16. 16. CHUYEÅN NGÖÕ CAÛNH ( CONTEXT SWITCHING ) <ul><li>Chuyeån xöû lyù töø quaù trình naøy sang quaù trình khaùc. </li></ul><ul><li>Xaûy ra khi coù interrupt </li></ul><ul><li>Qui trình: </li></ul><ul><ul><li>Löu traïng thaùi cuûa quaù trình hieän haønh </li></ul></ul><ul><ul><li>Choïn quaù trình môùi ñeå xöû lyù </li></ul></ul><ul><ul><li>Ñöa traïng thaùi cuûa quaù trình môùi vaøo phaàn cöùng ñeå xöû lyù </li></ul></ul><ul><li>Moät context bao goàm: </li></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li> Program Status Word (PSW). </li></ul></ul>
  17. 17. CHUYEÅN NGÖÕ CAÛNH ( CONTEXT SWITCHING ) <ul><li>Caùc loaïi PSW: </li></ul><ul><ul><li>Old_PSW </li></ul></ul><ul><ul><li>Current _PSW </li></ul></ul><ul><ul><li>New_PSW </li></ul></ul><ul><li>Heä thoáng moät boä xöû lyù coù 1 Current_PSW vaø 6 New_PSW vaø 6 Old_PSW (6 loaïi interrupt) </li></ul><ul><li>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 </li></ul><ul><ul><li>Current_PSW  Old_PSW </li></ul></ul><ul><ul><li>New_PSW  Current_PSW </li></ul></ul>
  18. 18. BAØI TAÄP <ul><li>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ôù </li></ul><ul><li>Windows NT, Win98SE, Linux, MS-DOS. </li></ul><ul><li>2.Phaân loaïi caùc Interrupt sau : </li></ul><ul><li>- Nhaán Ctrl+C gieát quaù trình </li></ul><ul><li>- Card maïng baùo coù döõ lieäu tôùi </li></ul><ul><li>- OÅ ñóa CD baùo quaù trình chuyeån döõ lieäu ñaõ xong </li></ul><ul><li>- Goïi haøm heä thoáng fork() </li></ul><ul><li>- Nhaán nuùt Reset cuûa maùy tính </li></ul><ul><li>3.Tìm hieåu caùc haøm/ leänh taïo, huyû quaù trình treân Linux. </li></ul><ul><li>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 </li></ul>

×