1 / 58

Quaûn lyù tieán trình

Quaûn lyù tieán trình. Muïc tieâu. Moâ hình Tieán trình Traïng thaùi tieán trình Thoâng tin quaûn lyù tieán trình Quaù trình ñieàu phoái tieán trình Caùc thuaät toaùn ñieàu phoái. Job 1. CPU. CPU. Job 1. CPU. IO. CPU. IO. Job 2. CPU. IO. CPU. CPU. Ña nhieäm vaø ña chöông ???.

Download Presentation

Quaûn lyù tieán trình

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Quaûnlyùtieántrình

  2. Muïctieâu • MoâhìnhTieántrình • Traïngthaùitieántrình • Thoângtin quaûnlyùtieántrình • Quaùtrìnhñieàuphoáitieántrình • Caùcthuaättoaùnñieàuphoái Trần Hạnh Nhi

  3. Job 1 CPU CPU Job 1 CPU IO CPU IO Job 2 CPU IO CPU CPU Ñanhieämvaøñachöông ??? • Vìsaomuoánxöûlyùñoàngthôøinhieàucoângvieäctreânmaùytính ? IO CPU IO Trần Hạnh Nhi  Xöûlyùñoàngthôøiñeåtaênghieäusuaátsöûduïng CPU

  4. 1 2 x = a * b y = c * d 3 Ñanhieämvaøñachöông ??? • Vìsaomuoánxöûlyùñoàngthôøinhieàucoângvieäctreânmaùytính ? Job : kq = a*b + c*d; Xöûùlyùñoànghaønh Xöùlyùtuaàntöï CPU #2 CPU #1 CPU #1 Trần Hạnh Nhi x = a * b y = c *d kq = x+y kq = x+y  Xöûlyùñoàngthôøiñeåtaêngtoácñoäxöûlyù

  5. Ñanhieämvaøñachöông • Multitasking (ñanhieäm): chopheùpnhieàutaùcvuï/ coângvieäcñöôïcxöûlyùñoàngthôøi • Ngöôøiduøngluoânmongmuoán 1 HÑH ñanhieäm • Nhöng: Maùytínhthöôøngchæcoù 1 CPU? • Multiprogramming (ñachöông): kyõthuaätchopheùpnhieàuchöôngtrìnhñöôïcthöïchieänñoàngthôøi (treân 1 CPU) • Giaûlaäpnhieàu CPU aûotöø 1 CPU thaätñeåchopheùpthihaønhnhieàuchöôngtrìnhñoàngthôøi. • AÛohoaùbaèngcaùchnaøo? Xaâydöïngcaùcthuaättoaùnñeåluaânchuyeån CPU giöõacaùcchöôngtrìnhöùngduïng. Trần Hạnh Nhi

  6. Excel Visual C++ CDplayer Winword Xöûlyùñoànghaønh, nhöõngkhoùkhaên ? • Taøinguyeângiôùihaïn, öùngduïng “voâhaïn” • Nhieàuhoaïtñoängñanxen • ??? Phaânchiataøinguyeân ? • ??? Chiaseûtaøinguyeân ? • ??? Baûoveä? Trần Hạnh Nhi HÑH : “Giaûiquyeátnhieàucoângvieäcñoàngthôøi, ñaâucoùdeã!”

  7. Giaûiphaùp Winword • “Chiañeåtrò”, coâlaäpcaùchoaïtñoäng. • Moãithôøiñieåmchægiaûiquyeát 1 yeâucaàu. • Aûohoaùtaøinguyeân: bieánítthaønhnhieàu CDPlayer Excel Trần Hạnh Nhi Visual C ++ HÑH: “Ai cuõngcoùphaànkhiñeánlöôïtmaø!”

  8. Giaûiphaùp Trần Hạnh Nhi CPU

  9. Khaùinieämtieántrình (Process) • Tieántrìnhlaømoätchöôngtrìnhñangtrongquaùtrìnhthöïchieän • Moãitieántrìnhsôûhöõu • Moät CPU (aûo) rieâng • Moätkhoânggiannhôùrieâng • Chieámgiöõ 1 soátaøinguyeâncuûaheäthoáng • Vd: Moätchöôngtrình Word coùtheåñöôïcchaïy 2 laànseõtaïora 2 tieántrìnhkhaùcnhau: • Microsoft Word – [Bai tap1.doc] • Microsoft Word – [Bai tap2.doc] Trần Hạnh Nhi

  10. Haiphaàncuûatieántrình Doøngxöûlyù P1 int a; P2 int a; Trần Hạnh Nhi Khoânggianñòachæ

  11. running ready • Rs  CPU • Rs  CPU blocked  Rs  CPU Traïngthaùitieántrình? • Taïi 1 thôøiñieåm, tieántrìnhôûmoättrongcaùctraïngthaùisau: Nhaän CPU Trần Hạnh Nhi Traû CPU ChôøR Nhaän R

  12. pid State (State, details) Context (IP, Mem, Files…) Relatives ( Dad, children) Scheduling statistic Khoáiquaûnlyùtieántrình • Địnhdanh (Process ID) • Trạngthaùitiếntrình • Ngữcảnhtiếntrình • Trạngthaùi CPU • Bộxửlyù (chomaùynhiều CPU) • Bộnhớchính • Taøinguyeânsửdụng/tạolập • Thoâng tin giaotiếp • Tiếntrình cha, tiếntrình con • Độưutieâên • Thoâng tin thốngkeâ • Thôøigiansöûduïng CPU • Thôøigianchôø Trần Hạnh Nhi Process control Block PCB

  13. Khoáiquaûnlyùtieántrình – Víduï • typedefstructmachpcb { • char mpcb_frame[REGOFF]; • structregsmpcb_regs; // user's saved registers • structrwindowmpcb_wbuf[MAXWIN]; //user window save buffer • char *mpcb_spbuf[MAXWIN]; //sp's for each wbuf • intmpcb_wbcnt; //number of saved windows in pcb_wbuf • struct v9_fpu *mpcb_fpu; // fpu state • structfqmpcb_fpu_q[MAXFPQ]; // fpu exception queue • intmpcb_flags; // various state flags • intmpcb_wocnt; // window overflow count • intmpcb_wucnt; // window underflow count • kthread_t *mpcb_thread; // associated thread • } machpcb_t; Trần Hạnh Nhi Khoáiquaûnlyùtieántrìnhcuûa HÑH MachOS

  14. Caùcthaotaùctreântieántrình • Taïolaäptieántrình • Keátthuùctieántrình • Thayñoåitraïngthaùitieántrình : • Assign() • Block() • Awake() • Suspend() • Resume() Trần Hạnh Nhi

  15. Taïolaäptieántrình • Caùc tình huoáng : • Khôûi ñoäng batch job • User logs on • Kích hoaït 1 service (print...) • Process goïi haøm taïo moät tieán trình khaùc • Caùc tieán trình coù theå taïo tieán trình con, hình thaønh caây tieán trình trong heä thoáng • Caùc tieán trình môùi ñöôïc taïo coù theå thöøa höôûng taøi nguyeân töø cha, hay ñöôïc caáp taøi nguyeân môùi Trần Hạnh Nhi

  16. Keátthuùctieántrình • Tình huoáng : • Tieán trình xöû lyù xong leänh cuoái cuøng hay goïi exit () • Keát thuùc Batch job , Halt instruction • User logs off • Do loãi chöông trình • Moät tieán trình coù theå keát thuùc 1 tieán trình khaùc neáu coù ID (ñònh danh) cuûa tieán trình kia. • Ví duï: kill –-s SIGKILL 1234: huyû tieán trình coù ID laø 1234 Trần Hạnh Nhi

  17. Moâhìnhñatieántrình (MultiProcesses) • Heä thoáng laø moät taäp caùc tieán trình hoaït ñoäng ñoàng thôøi • Caùc tieán trình ñoäc laäp vôùi nhau => khoâng coù söï trao ñoåi thoâng tin hieån nhieân.. Excel Trần Hạnh Nhi winword Visual C CDplayer OS

  18. Víduïmoâhìnhñatieántrình • Giôø thi lyù thuyeát moân Heä Ñieàu haønh • Moãi sinh vieân laø moät tieán trình : • Cuøng laøm baøi => Hoaït ñoäng ñoàng haønh • Coù baøi thi , buùt, giaáy…rieâng => Taøi nguyeân rieâng bieät • Ñoäc laäp => Khoâng trao ñoåi (veà nguyeân taéc) • Thöïc haønh moân Heä Ñieàu haønh • 2 sinh vieân/nhoùm • Hôïp taùc ñoàng haønh • Nhu caàu trao ñoåi • Duøng taøi nguyeân chung Trần Hạnh Nhi

  19. alta vista Moâhìnhñatieåutrình (MultiThreads) • Nhieàu tình huoáng caàn coù nhieàu doøng xöû lyù ñoàng thôøi cuøng hoaït ñoäng trong moät khoâng gian ñòa chæ => cuøng chia seû taøi nguyeân (server, OS, caùc chöông trình tính toaùn song song : nhaân ma traän…) • Khaùi nieäm môùi : tieåu trình (thread) Trần Hạnh Nhi

  20. VíduïMoâhìnhñatieåutrình • Thöïc haønh moân Heä Ñieàu haønh • Moãi nhoùm 2 sinh vieân laø moät tieán trình : • Moãi sinh vieân laø moät tieåu trình • Cuøng laøm baøi => Hoaït ñoäng ñoàng haønh • Coùù baøi thöïc haønh chung => Taøi nguyeân chung • Trao ñoåi vôùi nhau Trần Hạnh Nhi

  21. TieåutrìnhvsTieántrình • Tieåutrình : 1 doøngxöûlyù • Tieántrình : • 1 khoânggianñòachæ • 1 hoaëcnhieàutieåutrình • Caùctieántrìnhlaøñoäclaäp • Caùctieåutrìnhtrongcuøng 1 tieántrìnhkhoângcoùsöïbaûoveälaãnnhau (caànthieát ? ). P1 T2 T1 T3 Trần Hạnh Nhi int a;

  22. Tieåutrìnhhaïtnhaân (Kernel thread) • Khaùi nieäm tieåu trình ñöôïc xaây döïng beân trong haït nhaân • Ñôn vò xöû lyù laø tieåu trình • Ví duï : • Windows 95/98/NT/2000 • Solaris, Tru64 UNIX, BeOS, Linux T1 T2 User mode System call Kernel mode Kernel Thread Trần Hạnh Nhi

  23. CPU Phaânchia CPU ? • 1 CPU vaätlyù : laømtheánaøoñeåtaïoaûogiaùcmoãitieántrìnhsôûhöõu CPU rieângcuûamình ?  Luaânchuyeån CPU giöõacaùctieántrình • 2 thaønhphaànñaûmnhieämvaitroøñieàuphoái: • Scheduler choïn 1 tieántrình • Dispatcher chuyeån CPU cho tieántrìnhñöôïcchoïn Trần Hạnh Nhi

  24. P1 P5 P4 P7 P2 R1 P10 R2 P3 R3 P6 Caùcdanhsaùchtieántrình Ready List Waiting Lists Trần Hạnh Nhi

  25. Scheduler - Nhieämvuï • Ra quyeátñònhchoïnmoättieántrìnhñeåcaápphaùt CPU : • ÖÙngcöûvieân = {Caùctieántrình ready list} • 0 tieántrình : CPU raûnhroãi (idle)! • 1 tieántrình : khoângcaànsuynghónhieàu, ñuùngkhoâng ? • >1 : choïnaibaâygiôø ?  Caàncoùthuaättoaùnñieàuphoái Trần Hạnh Nhi

  26. Dispatcher - Nhieämvuï • NhieämvuïcuûaDispatcher: Chuyeånñoåingöõcaûnh • Xeùtvíduï • Tieántrình A ñangduøng CPU 1 chuùtthìbò HÑH thuhoài CPU • HÑH caáp CPU cho B duøng 1 chuùt, HÑH thuhoàilaïi CPU. • HÑH caáp CPU trôûlaïicho A.  Giaùtròcaùcthanhghigiöõanhöõnglaànchuyeånñoåi CPU ? • Kòchbaûn : • Löungöõcaûnhtieántrìnhhieänhaønh • Naïpngöõcaûnhtieántrìnhñöôïcchoïnkeátieáp Trần Hạnh Nhi

  27. Trần Hạnh Nhi

  28. Dispatcher - Thaûoluaän • Baûnthaân HÑH cuõnglaø 1 phaànmeàm, nghóalaøcuõngsöûduïng CPU ñeåcoùtheåchaïyñöôïc. • Caâuhoûi: Khitieántrình A ñangchieám CPU, laømtheánaøo HÑH coùtheåthuhoài CPU laïiñöôïc ? (vìluùcnaøy HÑH khoânggiöõ CPU) • EÙpbuoäc NSD thænhthoaûngtraû CPU laïicho HÑH ? Coùkhaûthi ? • Maùytínhphaûicoù 2 CPU, 1 daønhrieângcho HÑH ? • HÑH söûduïngngaétñoànghoà (ngaétñieàuphoái) ñeåkieåmsoaùtheäthoáng • Moãikhicoùngaétñoànghoà, HÑH kieåmtraxemcoùcaànthuhoài CPU töø 1 tieántrìnhnaøoñoùlaïi hay khoâng ? • HÑH chæthuhoài CPU khicoùngaétñoànghoàphaùtsinh. • Khoaûngthôøigiangiöõa 2 laànngaétñieàuphoáigoïilaøchukyøñoànghoà (toáithieåulaø 18.2 laàn / giaây) Trần Hạnh Nhi

  29. Löïachoïntieántrình ? • Taùc vuï cuûa Scheduler • Muïc tieâu ? • Söû duïng CPU hieäu quaû • Ñaûm baûo taát caû caùc tieán trình ñeàu tieán trieån xöû lyù • Tieâu chuaån löïa choïn ? • Taát caû caùc tieán trình ñeàu nhö nhau ? • Ñeà xuaát moät ñoä öu tieân cho moãi tieán trình ? • Thôøi ñieåm löïa choïn ? (Thôøi ñieåm kích hoaït Scheduler()) Trần Hạnh Nhi

  30. Muïctieâuñieàuphoái • Hieäuquûa (Efficiency) • Thôøigian • Ñaùùpöùng (Response time) • Hoaøntaát (Turnaround Time = Tquit -Tarrive): • Chôø (Waiting Time = T in Ready ) : • Thoânglöôïng (Throughput = # jobs/s ) • HieäusuaátTaøinguyeân • Chi phíchuyeånñoåi • Coângbaèng ( Fairness): Taátcaûcaùctieántrìnhñeàucoùcôhoäinhaän CPU Trần Hạnh Nhi

  31. Ñoäcquyeàn while (true){save statePcurScheduler.NextP() Pnextload statepnextresumePnextwait forPnext} Khoângñoäcquyeàn while (true){interruptPcursave statePcurScheduler.NextP() Pnextload statepnextresumePnext} Hainguyeântaécñieàuphoái CPU Trần Hạnh Nhi

  32. Thôøiñieåmraquyeátñònhñieàuphoái • Ñieàuphoáiñoäcquyeàn (non-preemptivescheduling):tieántrìnhñöôïcchoïncoùquyeànñoäcchieám CPU • CaùcthôøiñieåmkíchhoaïtScheduler • P curkeátthuùc • P cur : running ->blocked • Ñieàuphoáikhoângñoäcquyeàn (preemptivescheduling):tieántrìnhñöôïcchoïncoùtheåbòcöôùp CPU bôûitieántrìnhcoùñoäöutieâncaohôn • CaùcthôøiñieåmkíchhoaïtScheduler • P curkeátthuùc • P cur : Running -> Blocked • Q : Blocked / New -> Ready Trần Hạnh Nhi

  33. Ñaùnhgiaùchieánlöôïcñieàuphoái • Söû duïng 2 ñaïi löôïng ño : • Turn- around time = Tquit –Tarrive: töø luùc vaøo HT ñeán khi hoaøn taát • Waiting time = T in Ready • Xeùt tröôøng hôïp trung bình • N tieán trình • Avg Turn- around time = (ΣTurn- around time Pi )/N • Avg Waiting time = (ΣWaiting time Pi )/N Trần Hạnh Nhi

  34. Caùcchieánlöôïcñieàuphoái • FIFO (FCFS) • Xoay vòng (Round Robin) • Theo độ ưu tiên • Công việc ngắn nhất (SJF) • Nhiều mức độ ưu tiên Trần Hạnh Nhi

  35. Ready List CPU Ready List CPU C B Ready List CPU C FCFS (First comes first served) • Tieántrìnhvaøo RL laâunhaátñöôïcchoïntröôùc • Theo thứtựvaøo RL • Độcquyền C B A Trần Hạnh Nhi

  36. Minh hoïa FCFS AvgWT = (23+25)/3 = 16 Trần Hạnh Nhi P1 P2 P3 0 24 27 24: P1 kếtthúc P2 dùng CPU 0: P1 vào RL P1 dùng CPU 1: P2 vào RL 27: P2 kếtthúc P3 dùng CPU 2: P3 vào RL

  37. Nhaänxeùt FCFS • Ñôngiaûn • Chòuñöïnghieäntöôïngtíchluõythôøigianchôø • Tieántrìnhcoùthôøigianxöûlyùngaénñôïitieántrìnhcoùthôøigianxöûlyùdaøi  Öutieântieántrìnhcpu-bounded • Coùtheåxaûyratìnhtraïngñoäcchieám CPU Trần Hạnh Nhi

  38. Ready List Ready List Ready List CPU CPU CPU Ñieàuphoái Round Robin (RR) • Ñieàuphoáitheonguyeântaéc FCFS • Moãitieántrìnhchæsöûduïngmoätlöôïngqchomoãilaànsöûduïng CPU Quantum/Time slice A chỉ chiếm CPU trong q ms C B A Trần Hạnh Nhi B được giao quyền sử dụng CPU trong q ms kế tiếp A C B C được giao quyền sử dụng CPU trong q ms kế tiếp B A C

  39. Minh hoïa RR, q=4 AvgWT = (6+3+5)/3 = 4.66 Trần Hạnh Nhi P1 P2 P3 P1 P1 P1 P1 P1 0 4 7 10 14 18 22 26 30 0:07 P2 dừng, P3 dùng CPU 0:00 P1 vào, P1 dùng CPU 0:10 P3 dừng, P1 dùng CPU 0:01 P2 vào (đợi) 0:14 P1 vẫn chiếm CPU … 0:02 P3 vào (đợi) 0:04 P1 hết lượt, P2 dùng CPU

  40. Minh hoïa RR, q=4 • Tranhchaápvòtrítrong RL : “Chung thuûy” • P : running -> ready • P : blocked -> ready • P: new ->ready • Khoângphaûiluoânluoâncoùthöùtöïñieàuphoái P1 P2 P3 P4P1 P2 P3 P4... Trần Hạnh Nhi P1 P1 P2 P1 P3 P1 P1 P1 0 4 8 11 15 18 22 26 30 “Coùmôùinôùicũ” RL 0:04 P2 P1 0:8 P2 P1 0:00 P1 0:11 P1 ? 0:04 “õChungthuûy” 0:15 P3 P1 0:04 P1 P2 0:18 P1

  41. Round Robin • Khinaøokeátthuùc 1 löôïtsöûduïng CPU • Heátthôøilöôïng q ms (quantum) chopheùp • Tieántrìnhkeátthuùc • Tieántrìnhbòkhoùa • Chờ Rs • Chờbiếncố Trần Hạnh Nhi

  42. Round Robin – Nhaänxeùt Baolaâu ? • Söûduïngcôcheákhoângñoäcquyeàn • Moãitieántrìnhkhoângphaûiñôïiquaùlaâu • Loaïiboûhieäntöôïngñoäcchieám CPU • Hieäuquaû ? • Phuïthuoäcvaøovieäcchoïnlöïa quantum q • qquaùùlớn ??? • qquaùnhỏ ??? • Tröôønghôïpxaáunhaátcuûa RR ? Giaûmtíùnhtöôngtaùc Trần Hạnh Nhi Taêng chi phíchuyeånñoåingöõcaûnh

  43. Ñieàuphoáivôùiñoäöutieân Phân biệt tiến trình quan trọng >< tiến trình bình thường? WinAmp độưutiên: cao(3) WinWord độ ưu tiên: trung bình (0) Outlook độưutiên: thấp(-3) Trần Hạnh Nhi Độ ưu tiên • Tieántrìnhcoùñoäöutieâncaonhaátñöôïcchoïncaáp CPU tröôùc

  44. Ñieàuphoáivôùiñoäöutieân • Caùchtínhñoäöutieân? • Heäthoánggaùn: CPU times,… • Ngöôøiduønggaùntöôøng minh • Tínhchaátñoäöutieân : • Tónh • Ñoäng Trần Hạnh Nhi

  45. Víduï: Ñoäöutieâncuûa HÑH WinNT • WinNT gaùn cho moãi tieán trình ñoä öu tieân coù giaù trò giöõa 0 & 31 • 0 (ñoä öu tieân nhoû nhaát): daønh rieâng cho traïng thaùi system idle • Ñoä öu tieân ñöôïc phaân theo nhoùm: • Realtime : (16 - 31) • Thích hôïp cho caùc tieán trình thôøi gian thöïc • Daønh rieâng cho caùc tieán trình cuûa ngöôøi quaûn trò heä thoáng • Dynamic : (0 - 15) • Thích hôïp cho caùc tieán trình cuûa ngöôøi duøng thöôøng • Chia thaønh 3 möùc : • high (11 - 15) • normal (6 - 10) • idle (2 - 6) Trần Hạnh Nhi

  46. realtime time-critical 31 realtime highest (+2) above normal (+1) realtime normal (0) levels 16-31 24 below normal (-1) lowest (-2) high 16 realtime idle dynamic time-critical 15 13 normal dynamic idle 8 levels 1-15 4 dynamic idle 1 system idle 0 Bieåuñoàphaânboáñoäöutieâncuûa WinNT Trần Hạnh Nhi

  47. Nguyeântaécñieàuphoái • Độcquyền • Lượtsửdụng CPU kếtthuùckhi: • tiếntrìnhkếtthuùc, • tiếntrìnhbịkhoùa • Khoângđộcquyền • Lượtsửdụng CPU kếtthuùckhi: • tiếntrìnhkếtthuùc, • tiếntrìnhbịkhoùa, • coùtiếntrìnhvôùiđộưutieâncaohơnvaøo RL Trần Hạnh Nhi

  48. Ñoäöutieân– khoângñoäcquyeàn AvgWT = (6+0+2)/3 = 2.66 Trần Hạnh Nhi P1 P2 P2 P3 P1 0 1 2 4 7 30 0: P1 vào, P1 dùng CPU 4: P2 kếtthúc, P3 dùng CPU 1: P2 vào (độưutiêncaohơn P1) 7: P3 dừng, P1 dùng CPU P2 dànhquyềndùng CPU 30: P1 dừng 2: P3 vào (độưutiênthấphơn P2) P3 khôngdànhđượcquyềndùng CPU

  49. Ñoäöutieân - khoângñoäcquyeàn - Nhaänxeùt • Soáphaäntieántrìnhcoùñoäöutieânthaáp? • Chôølaâu, laâu, laâu...  Giaûiquyeát: taêngñoäöutieânchonhöõngtieántrìnhchôølaâutrongheäthoáng (Aging) Trần Hạnh Nhi

  50. Ready List Ngắn nhất CPU Là một dạng độ ưu tiên đặc biệt với độ ưu tiên pi = thời_gian_còn_lại(Processi) Shortest Job First (SJF) P2(cần 3 chu kỳ) P1(cần 5 chu kỳ) Trần Hạnh Nhi P3(cần 7 chu kỳ)  Có thể cài đặt độc quyền hoặc không độc quyền

More Related