580 likes | 735 Views
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 ???.
E N D
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
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
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ù
Ñ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
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ã!”
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ø!”
Giaûiphaùp Trần Hạnh Nhi CPU
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
Haiphaàncuûatieántrình Doøngxöûlyù P1 int a; P2 int a; Trần Hạnh Nhi Khoânggianñòachæ
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
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
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
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
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
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
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
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
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
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
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;
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
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
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
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
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
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
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
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
Ñ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
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
Ñ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
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
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
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
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
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
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
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
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
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
Ñ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
Ñ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
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
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
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
Ñ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
Ñ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
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