บทท 3 การกาหนดการใช ซ พ ย CPU Scheduling
การกาหนดการใช ซ พ ย ในการท างานของโปรเซส จ าเป นต องม การเร ยกใช ทร พยากรของระบบ ซ งม อย อย างจ าก ด ระบบจ าเป นต องม การแบ งสรรและจ ดล าด บการเข าใช งาน ของทร พยากร ซ พ ย เป นทร พยากรท จ าเป นต องม การจ ดล าด บให หลายโปรเซสเข าไปใช งาน ด งน นเม อซ พ ย ว าง และม โปรเซสเข าค วรออย ท ค วพร อม ต องการเข าไป ใช งานท ซ พ ย ก าหนดการใช ซ พ ย (CPU Scheduler) จะท าหน าท เล อก โปรเซสท อย ในค วพร อมออกมาท ละโปรเซส และมอบซ พ ย ให โปรเซสท ได ร บ เล อก ท าให โปรเซสน นเข าไปท างานท ซ พ ย ได และเปล ยนสถานะจาก สถานะ พร อม เป น สถานะการทางาน
การกาหนดการใช ซ พ ย อ ลกอร ท มในการเล อกโปรเซสเข าไปใช ซ พ ย ม หลายอ ลกอร ท ม ในการ พ จารณาจะข นอย ก บเป าหมาย (Criteria) ของระบบคอมพ วเตอร น นๆ เช น ม การใช งานซ พ ย (CPU Utilization) มากท ส ด ม ปร มาณงานมากท ส ด (Throughput) ม เวลาครบวงงานน อยท ส ด (Turnaround time) ม เวลารอ (Waiting time) น อยท ส ด ม เวลาตอบสนองน อยท ส ด (Response time)
การกาหนดการใช ซ พ ย Preemptive Process เม อโปรเซสได ครอบครองซ พ ย แล ว โปรเซสสามารถปลดปล อยหร อค น ซ พ ย ให โปรเซสอ นได Non-Preemptive Process เม อโปรเซสได ครอบครองซ พ ย แล ว โปรเซสไม สามารถปลดปล อยหร อค น ซ พ ย ให โปรเซสอ นได
มาก อนบร การก อน First-Come, First-Serve Scheduling : FCFS เป นอ ลกอร ท มท ง ายท ส ด โดยจะก าหนดให โปรเซสท ร องขอซ พ ย ก อน เป นโปรเซสท ได ร บซ พ ย ก อน เม อม โปรเซสท อย ในสถานะพร อมท จะท างาน โปรเซสน นจะถ กน าเข าไป ต อท ายค วพร อม เม อซ พ ย ว าง ระบบปฏ บ ต การจะเร ยกก าหนดการซ พ ย เพ อให พ จารณามอบซ พ ย ให แก โปรเซสท อย ต นค วของค วพร อม
มาก อนบร การก อน First-Come, First-Serve Scheduling : FCFS ส ตรในการคานวณหาเวลาครบวงงาน สามารถคานวณได ด งน T = n i=1 T i x 1/n เม อ T i = F i - A i T i หมายถ ง เวลาครบวงงานของแต ละโปรเซส (Turnaround time) F i หมายถ ง เวลาท แต ละโปรเซสทางานเสร จส น (Finish time) A i หมายถ ง เวลาท แต ละโปรเซสเข ามาในระบบ (Arrival time) n หมายถ ง จานวนของโปรเซสท เข ามาในระบบ T หมายถ ง เวลาครบวงงานเฉล ย (Average Turnaround time)
มาก อนบร การก อน First-Come, First-Serve Scheduling : FCFS ต วอย างท 1 ระบบคอมพ วเตอร ม 3 โปรเซสท ต องการเข าใช งานซ พ ย ค อ P 1, P 2 และ P 3 เม อ โปรเซส P 1 เข าระบบเม อเวลา 8.00 และต องการใช ซ พ ย 2 หน วยเวลา โปรเซส P 2 เข าระบบเม อเวลา 8.10 และต องการใช ซ พ ย 1 หน วยเวลา โปรเซส P 3 เข าระบบเม อเวลา 8.25 และต องการใช ซ พ ย 0.25 หน วยเวลา ให แสดงว ธ ทาเพ อหาเวลาครบวงงานเฉล ย กรณ ใช อ ลกอร ท มจ ดลาด บใช ซ พ ย แบบมาก อนบร การก อน
มาก อนบร การก อน First-Come, First-Serve Scheduling : FCFS Process Arrival Run Start Finish Turnaround P 1 8.00 2.00 8.00 10.00 2.00 P 2 8.10 1.00 10.00 11.00 2.90 P 3 8.25 0.25 11.00 11.25 3.00 รวม 7.90 เวลาครบวงงานเฉล ย = 7.90/3 = 2.63 หน วยเวลา จากการทางานด วยอ ลกอร ท มน สามารถคานวณค าเฉล ยของเวลาครบวงงานได เท าก บ 2.63 หน วยเวลา
มาก อนบร การก อน First-Come, First-Serve Scheduling : FCFS ต วอย างท 2 ให พ จารณาระบบท ประกอบไปด วย 3 โปรเซสท ถ กร บเข ามาใน ระบบ เร ยงตามล าด บ ค อ P 1, P 2 และ P 3 โดยท แต ละโปรเซสต องการใช ซ พ ย เป นเวลาตามท ก าหนด ให หาค าเฉล ยของเวลารอ เม อก าหนดให ใช อ ลกอร ท มแบบมาก อนบร การก อน Process เวลาท ต องการใช ซ พ ย P 1 24 P 2 3 P 3 3
มาก อนบร การก อน First-Come, First-Serve Scheduling : FCFS การรอของแต ละโปรเซส สามารถแสดงได ด วย Gantt Chart ด งน P 1 เข ามาในระบบและได ร บการจ ดสรรให ใช ซ พ ย ท นท จ งไม ต องเส ยเวลาในการรอซ พ ย ด งน นเวลาในการรอซ พ ย = 0 หน วยเวลา P 2 ต องรอจนกว า P 1 ท างานเสร จเร ยบร อยและค นซ พ ย ให ก บระบบ ด งน นเวลาใน การรอซ พ ย = 24 หน วยเวลา P 3 ต องรอจนกว า P 2 ท างานเสร จเร ยบร อยและค นซ พ ย ให ก บระบบ ด งน นเวลาใน การรอซ พ ย = 27 หน วยเวลา ด งน นค าเฉล ยของเวลาท ใช ในการรอซ พ ย ค อ (0+24+27)/3 = 17 หน วยเวลา
มาก อนบร การก อน First-Come, First-Serve Scheduling : FCFS การท างานของอ ลกอร ท มน ด เหม อนเป นการย ต ธรรมท ให ส ทธ การเข าใช ซ พ ย แก โปรเซสท เข ามาอย ในค วพร อมก อน แต ในกรณ ท ในค วพร อมของระบบม ท งโปรเซส ท เน นซ พ ย และโปรเซสท เน น I/O จะพบว า โปรเซสท เน น I/O จะต องเส ยเวลา รอนานมาก เพ อเข าใช งานซ พ ย ในระยะเวลาท ไม นานมากน ก ซ งจะท าให เก ดป ญหา Convoy effect ค อ เหต การณ ท โปรเซสขนาดเล ก ในระบบ จะต องเส ยเวลารอโปรเซสขนาดใหญ ท ครอบครองซ พ ย เป นเวลานาน การทางานของอ ลกอร ท มน เป นการท างานท ไม สามารถข ดจ งหวะ หร อแทรก กลางค นได (Non-Preemptive process) ซ งจะไม เหมาะก บระบบท ต องม การแบ งส วนการทางาน ให งานแต ละงานได ใช ซ พ ย อย างท วถ ง
งานส นทาก อน Shortest-Job First Scheduling : SJF จากอ ลกอร ท มมาก อนบร การก อนน น พบว า ค าเฉล ยของเวลาครบวง งาน และค าเฉล ยของเวลารอม ค าส ง โดยเฉพาะกรณ ท ในค วพร อมม โปรเซสท ต องการใช ซ พ ย เป นเวลาท แตกต างก น อ ลกอร ท มของงานส นทาก อน จะพยายามลดค าเฉล ยของเวลาครบวงงาน และค าเฉล ยของเวลารอ โดยก าหนดให โปรเซสท ต องการใช ซ พ ย เป นระยะเวลา น อยได เข าใช ซ พ ย ก อนโปรเซสท ต องการใช ซ พ ย เป นระยะเวลานาน
งานส นทาก อน Shortest-Job First Scheduling : SJF ต วอย างท 3 พ จารณาระบบท ประกอบด วยโปรเซส P 1, P 2, P 3 และ P 4 โดยท ท กโปรเซสถ กร บเข ามาในระบบพร อมก น Process เวลาท ต องการใช ซ พ ย P 1 6 P 2 8 P 3 7 P 4 3
งานส นทาก อน Shortest-Job First Scheduling : SJF 3 6 7 8 จาก Gantt Chart จะเห นว า โปรเซส P 1 ต องรอเป นเวลา 3 หน วยเวลา โปรเซส P 2 ต องรอเป นเวลา 16 หน วยเวลา โปรเซส P 3 ต องรอเป นเวลา 9 หน วยเวลา โปรเซส P 4 ต องรอเป นเวลา 0 หน วยเวลา ค าเฉล ยของเวลาท ใช ในการรอ ค อ (3+16+9+0)/4 = 7 หน วยเวลา
งานส นทาก อน Shortest-Job First Scheduling : SJF ต วอย างท 4 จากโจทย ในต วอย างท 1 ให แสดงว ธ ท าเพ อหาเวลาครบวงงาน เฉล ย เม อกาหนดให ใช อ ลกอร ท มจ ดลาด บใช ซ พ ย แบบงานส นทาก อน Process Arrival Run Start Finish Turnaround P 1 8.00 2.00 8.00 10.00 2.00 P 2 8.10 1.00 10.25 11.25 3.15 P 3 8.25 0.25 10.00 10.25 2.00 รวม 7.15 เวลาครบวงงานเฉล ย = 7.15/3 = 2.38 หน วยเวลา
งานส นทาก อน Shortest-Job First Scheduling : SJF อ ลกอร ท มน สามารถท างานได ท งแบบ Preemptive process และ Non-Preemptive process กรณ ท เป นการทางานแบบ Preemptive น น ขณะท โปรเซสหน งก าล ง ทางาน และม โปรเซสใหม เข ามาในค วพร อม และโปรเซสใหม ต องการใช ซ พ ย เป น เวลาน อยกว าโปรเซสท กาล งทางาน โปรเซสเด มท ก าล งท างานจะถ กข ดจ งหวะให หย ดการท างาน และค นซ พ ย ให แก ระบบ เพ อท ระบบจะได มอบซ พ ย ให โปรเซส ใหม ท ต องการใช ซ พ ย เป นเวลาน อยกว าได เข าไปท างานท ซ พ ย ก อน กรณ ท เป นการท างานแบบ Non-Preemptive ระบบจะย งคงให โปรเซสเด มทางานต อไป จนกว าจะเสร จส นการทางานของโปรเซสน น
งานส นทาก อน Shortest-Job First Scheduling : SJF ต วอย างท 5 ระบบคอมพ วเตอร ม 3 โปรเซสท ต องการเข าไปใช งานซ พ ย ค อ โปรเซส P 1 เข าระบบเม อเวลา 0.0 และต องการใช ซ พ ย 8 หน วยเวลา โปรเซส P 2 เข าระบบเม อเวลา 0.4 และต องการใช ซ พ ย 4 หน วยเวลา โปรเซส P 3 เข าระบบเม อเวลา 1.0 และต องการใช ซ พ ย 1 หน วยเวลา ให แสดงว ธ ท าเพ อหาเวลาครบรอบวงงานเฉล ย กรณ ท ใช อ ลกอร ท มจ ดล าด บใช ซ พ ย แบบงานส นท า ก อน ในแบบ Preemptive และแบบ Non- Preemptive
งานส นทาก อน Shortest-Job First Scheduling : SJF 1. จ ดลาด บใช ซ พ ย แบบงานส นได ก อน ในแบบ Non-Preemptive Process Arrival Run Start Finish Turnaround P 1 0.0 8 0.0 8.0 8.0 P 2 0.4 4 9.0 13.0 12.6 P 3 1.0 1 8.0 9.0 8.0 รวม 28.6 เวลาครบวงงานเฉล ย = 28.6/3 = 9.53 หน วยเวลา
งานส นทาก อน Shortest-Job First Scheduling : SJF 2. จ ดลาด บใช ซ พ ย แบบงานส นได ก อน ในแบบ Preemptive Process Arrival Run Start Finish Left Turnaround P 1 0.0 8 0.0 0.4 7.6 0.4 P 2 0.4 4 0.4 1.0 3.4 0.6 P 3 1.0 1 1.0 2.0 0 1.0 P 2 1.0 3.4 2.0 5.4 0 4.4 P 1 0.4 7.6 5.4 13.0 0 12.6 รวม 19.0 เวลาครบวงงานเฉล ย = 19/3 = 6.33 หน วยเวลา
ลาด บความสาค ญ Priority Scheduling เป นว ธ จ ดล าด บการใช ซ พ ย โดยก าหนดล าด บความส าค ญ (Priority) ให แต ละโปรเซส โดยระบบจะต องกาหนดว า ให ต วเลขท ม ค าน อยท ส ด แสดงถ งลาด บความสาค ญน อยท ส ด ให ต วเลขท ม ค ามากท ส ด แสดงถ งลาด บความสาค ญมากท ส ด หร อ ให ต วเลขท ม ค าน อยท ส ด แสดงถ งลาด บความสาค ญมากท ส ด ให ต วเลขท ม ค ามากท ส ด แสดงถ งลาด บความสาค ญน อยท ส ด
ลาด บความสาค ญ Priority Scheduling ต วอย างท 6 Process เวลาท ต องการใช ซ พ ย ลาด บความสาค ญ P 1 6 3 P 2 8 1 P 3 7 3 P 4 3 4 P 5 5 2 เม อกาหนดให ต วเลขท ม ค าน อยท ส ดม ล าด บความส าค ญส งท ส ด การจ ดล าด บ ของซ พ ย จะเป นไปตามลาด บค าความสาค ญ ค อ P 2, P 5, P 1, P 3, P 4
ลาด บความสาค ญ Priority Scheduling การจ ดล าด บของซ พ ย จะเป นไปตามล าด บค าความส าค ญ ค อ P 2, P 5, P 1, P 3, P 4 8 5 6 7 3 ด งน น ค าเฉล ยของเวลาท ใช ในการรอ ค อ (13+0+19+26+8)/5 เท าก บ 13.2 หน วยเวลา
ลาด บความสาค ญ Priority Scheduling การท างานของอ ลกอร ท มน สามารถท างานได ท งในกรณ Preemptive และ Non-Preemptive โดย กรณ ท อ ลกอร ท มท างานแบบ Preemptive จะท าให เก ดป ญหาส าค ญ ค อ การอดตาย (Starvation) ค อ โปรเซสท ม ลาด บความสาค ญต ากว า ถ ก โปรเซสท ม ล าด บความส าค ญส งกว าแย งซ พ ย ไปใช งาน ท าให โปรเซสท ม ล าด บ ความสาค ญต าไม ม โอกาสเข าไปใช ซ พ ย ว ธ การแก ป ญหาการอดตาย สามารถท าได โดยการท า Aging ค อ การ กาหนดให ม การเพ มค าของลาด บความสาค ญของท กโปรเซสในระบบเป นระยะ
ลาด บความสาค ญ Priority Scheduling ต วอย างท 7 กรณ ของการจ ดล าด บใช งานของซ พ ย แบบจ ดล าด บความส าค ญ ในแบบ Preemptive ท ม การใช Aging และไม ม การใช Aging Process ลาด บความสาค ญ P 1 1 P 2 2 P 3 3 เม อกาหนดให ต วเลขท ม ค าน อยท ส ดม ลาด บความส าค ญส งท ส ด
ลาด บความสาค ญ Priority Scheduling P 3 เก ดภาวะอดตาย การจ ดลาด บใช งานซ พ ย แบบจ ดลาด บความสาค ญในแบบ Preemptive ท ไม ม การใช Aging
ลาด บความสาค ญ Priority Scheduling P 3 ม โอกาสเข าใช ซ พ ย การจ ดลาด บใช งานซ พ ย แบบจ ดลาด บความสาค ญในแบบ Preemptive ท ม การใช Aging
ว ธ วนรอบ Round-Robin Scheduling : RR อ ลกอร ท มน ถ กออกแบบมาเพ อใช สาหร บระบบแบ งเวลา โดยม การท างาน เหม อนอ ลกอร ท มแบบมาก อนบร การก อน แต กาหนดให โปรเซสใช ซ พ ย ในเวลาท จ าก ด เร ยกว า เวลาควอนต ม (Quantum time) หร อ การแบ งเวลา ( slice)
ว ธ วนรอบ Round-Robin Scheduling : RR ในการทางาน ต วจ ดลาด บการใช ซ พ ย จะเล อกโปรเซสจากต นค วพร อมเข าไป ทางานเป นเวลา 1 เวลาควอนต ม ภายในระยะเวลาท ก าหนด ถ าโปรเซสสามารถท างานเสร จ โปรเซสจะค น ซ พ ย ให ระบบ แต ถ าโปรเซสไม สามารถท างานเสร จภายในเวลา 1 เวลาควอนต ม โปรเซส จะถ กข ดจ งหวะ และถ กนาไปต อท ายค วพร อม เพ อเปล ยนให โปรเซสอ นเข า ไปทางานในซ พ ย ต อไป
ว ธ วนรอบ Round-Robin Scheduling : RR ต วอย างท 8 ระบบคอมพ วเตอร ม โปรเซสท งหมด 3 โปรเซส แต ละโปรเซสม เวลาเข าระบบ และเวลาท ต องการใช ซ พ ย ด งน โปรเซส P 1 เข าระบบเม อเวลา 0.0 และต องการใช ซ พ ย 8 หน วยเวลา โปรเซส P 2 เข าระบบเม อเวลา 0.4 และต องการใช ซ พ ย 4 หน วยเวลา โปรเซส P 3 เข าระบบเม อเวลา 1.0 และต องการใช ซ พ ย 1 หน วยเวลา เม อก าหนดให ใช การจ ดล าด บใช งานซ พ ย แบบวนรอบ ท ม เวลาควอนต มเท าก บ 2.0 หน วยเวลา ให แสดงว ธ ทาเพ อคานวณหาเวลาครบวงงานเฉล ย
ว ธ วนรอบ Round-Robin Scheduling : RR เวลา โปรเซสท ทางาน 0.0-2.0 P 1 Process Arrival Run Start Finish Turnaround 2.0-4.0 P 2 4.0-5.0 P 3 งานเสร จเร ยบร อย 5.0-7.0 P 1 7.0-9.0 P 2 งานเสร จเร ยบร อย 9.0-11.0 P 1 11.0-13.0 P 1 งานเสร จเร ยบร อย P 1 0.0 8 0.0 13.0 13.0 P 2 0.4 4 2.0 9.0 8.6 P 3 1.0 1 4.0 5.0 4.0 รวม 25.6 เวลาครบวงงานเฉล ย = 25.6/3 = 8.53 หน วยเวลา
ว ธ วนรอบ Round-Robin Scheduling : RR เม อพ จารณาจะพบว า ประส ทธ ภาพของอ ลกอร ท มแบบวนรอบข นอย ก บ ขนาดของเวลาควอนต มท กาหนด ถ าเวลาควอนต มม ขนาดใหญ มาก พบกว าการท างานของอ ลกอร ท มแบบ วนรอบจะเหม อนก บการทางานของอ ลกอร ท มแบบมาก อนบร การก อน ถ าเวลาควอนต มม ขนาดเล ก เช น 1 หน วยเวลา จะท าให แต ละโปรเซส ร ส กเหม อนว าม ซ พ ย เป นของต วเอง เน องจาก โปรเซสม โอกาสเข าไปท างานใน ซ พ ย ตลอดเวลา แต ส งท ตามมาค อ เวลาท เส ยไปในการสล บการท างานจาก โปรเซสหน งไปย งอ กโปรเซสหน ง ท เร ยกว า การทา context switching ท ต องม การเก บข อม ลต างๆ ของโปรเซสท กาล งทางานในซ พ ย และท สล บออกไป
ค วหลายระด บ Multilevel Queue Scheduling อ ลกอร ท มของการจ ดล าด บว ธ น ถ กสร างข นจากแนวความค ดท ว า โปรเซสสามารถถ กแบ งออกเป นกล มต างๆ ได หลายกล ม เช น โปรเซสของระบบ (system process) โปรเซสแบบกล ม (batch process) โปรเซสแบบโต ตอบ (interactive process) โปรเซสแต ละกล มจะม เวลาการตอบสนอง (respond time) ท แตกต างก น จ งต องการการจ ดล าด บท แตกต างก นด วย เช น โปรเซสแบบ โต ตอบต องการได ร บการตอบสนองท รวดเร ว ควรได ล าด บการท างานก อน โปรเซสแบบกล ม
ค วหลายระด บ Multilevel Queue Scheduling จากร ปแสดงการจ ดลาด บแบบค วหลายระด บ ท แบ งโปรเซสในค วพร อมออกเป นค วย อย (sub-queue) 4 ค วย อย ท ม ระด บ ความสาค ญแตกต างก น เม อม โปรเซสใหม เข ามา ในระบบ จะถ กนาไปเข าค วรอท ค วใดค วหน ง โดยท แต ละค วน สามารถม การจ ดลาด บท แตกต างก น ในการท างานน นโปรเซสท อย ในค วท ม ค าล าด บความส าค ญส งส ดจะถ กท างานก อน ส วนโปรเซสท อย ในกล มท ม ค าล าด บความส าค ญน อยกว าจะถ กท างานได ก ต อเม อ โปรเซส ในค วย อยท ม ค าลาด บความสาค ญส งกว าถ กทางานเสร จเร ยบร อยแล วเท าน น