You are on page 1of 71

บทที่ 3

การจ ัดเวลาซพ ี ย
ี ู
(CPU Scheduling)
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 1
การจ
การจัดเวลาซ ีพ
ัดเวลาซพี ย
ีย
ี ู ู (CPU
(CPU Scheduling)
Scheduling)
การจัดเวลาซีพียู (CPU Scheduling) เป็ นหลักการทำงานหนึง่
ของโปรแกรมจัดการระบบที่มีความสามารถในการรัน
โปรแกรมหลาย ๆ โปรแกรมในเวลาเดียวกัน ซึง่ การแบ่งเวลา
การเข้ าใช้ ซีพียใู ห้ กบั งานที่อาจถูกส่งเข้ ามาหลาย ๆ งานพร้ อม
ๆ กัน ที่ซีพียอู าจมีจำนวนน้ อยกว่าจำนวนโปรแกรม หรื ออาจมี
ซีพียเู พียงตัวเดียว จะทำให้ คอมพิวเตอร์ สามารถทำงานได้
ปริ มาณงานที่มากขึ ้นกว่าการที่ให้ ซีพียทำ ู งานให้ เสร็จทีละงาน

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 2
หล
หลักความต้
ักความต้อองการพื
งการพืน้น
้ ฐาน
ฐาน
 จุดประสงค์ของการรันโปรแกรมหลายโปรแกรมคือ ความต้ องการ
ที่จะให้ ซีพียมู ีการทำงานตลอดเวลา เพื่อให้ มีการใช้ ซีพียอู ย่างเต็ม
ที่ และเต็มประสิทธิภาพ
 สำหรับระบบคอมพิวเตอร์ ที่มีซีพียตู วั เดียว ในเวลาใดเวลาหนึง่
ซีพียจู ะทำงานได้ เพียงงานเดียวเท่านัน้ ถ้ ามีหลายโปรแกรมหรื อ
หลายงาน งานที่เหลือก็ต้องคอยจนกว่าจะมีการจัดการให้ เข้ าไป
ใช้ ซีพียู

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 3
หล
หลักความต้
ักความต้อองการพื
งการพืน้น
้ ฐาน
ฐาน
 หลักการของการทำงานกับหลายโปรแกรมในขันพื ้ ้นฐานนันค่
้ อน
ข้ างจะไม่ซบั ซ้ อน แต่ละโปรแกรมจะถูกรันจนกระทัง่ ถึงจุดที่มนั
ต้ องคอยอะไรซักอย่างเพื่อใช้ ในการทำงานช่วงต่อไป ส่วนมาก
การคอยเหล่านี ้เกี่ยวข้ องกับอินพุต/เอาต์พตุ นัน่ เอง
 ซีพียจู ะหยุดการทำงานในระหว่างที่คอยอินพุต/เอาต์พตุ นี ้ ซึง่ การ
คอยเหล่านี ้เป็ นการเสียเวลาโดยเปล่าประโยชน์ เพราะซีพียไู ม่ได้
ทำงานเลย

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 4
หล
หลักความต้
ักความต้อองการพื
งการพืน้น
้ ฐาน
ฐาน
 เมื่อใดก็ตามที่ซีพียตู ้ องคอย และยังมีโปรแกรมในหน่วยความจำ
หลายโปรแกรมที่คอยการใช้ ซีพียอู ยู่ เราก็จะจัดให้ ซีพียูทำงานใน
โปรแกรมเหล่านี ้ทันที
 ระบบจะจัดการนำเอาโปรแกรมที่ต้องคอยอินพุต/เอาต์พต ุ ออกไป
ก่อน เพื่อที่จะให้ โปรแกรมอื่นที่คอยใช้ ซีพียนู ี ้สามารถเข้ ามาได้
 ถ้ าทำงานในแบบนี ้ไปเรื่ อย ๆ ซีพียก
ู ็จะได้ มีงานทำเกือบตลอด
เวลากับโปรแกรมหลาย ๆ โปรแกรมที่อยูใ่ นระบบ

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 5
หล
หลักความต้
ักความต้อองการพื
งการพืน้น
้ ฐาน
ฐาน
 การจัดเวลาให้ กบั ซีพียแู บบนี ้ เป็ นความต้ องการพื ้นฐานของ
ระบบปฏิบตั ิการในคอมพิวเตอร์
 ซีพียเู องก็ถือได้ วา่ เป็ นทรัพยากรของระบบคอมพิวเตอร์ ชนิดหนึง่ ที่
มีความสำคัญมากที่สดุ
 โดยตัวซีพียน ู ี่เอง ที่จะเป็ นหลักของการสร้ างระบบปฏิบตั ิการที่มี
ความสามารถในการรันหลายโปรแกรม

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 6

ชว่ว
่ งเวลาอิ
งเวลาอิน นพุ
พุต
ต//เอาต์
เอาต์พ พต ุต
ุ และ
และ

ชว่ว
่ งเวลาซ
งเวลาซพ ีพ
ี ย
ีย
ี ูู
 ความสำคัญในการจัดเวลาซีพียขู ึ ้นอยูก่ บั คุณลักษณะของโปรเซส
 การเอ็กซิคิวต์โปรเซสจะประกอบด้ วย
 เวลาที่ใช้ ซีพียู (CPU Burst Cycle)
 เวลาที่ต้องคอยอุปกรณ์อินพุต/เอาต์พตุ (I/O Burst Cycle)
 ในขณะที่มีการเอ็กซิคิวต์โปรเซส จะมีการสลับการทำงานระหว่าง
2 ช่วงเวลานี ้เท่านัน้ และจะเกิดไม่พร้ อมกัน การเอ็กซิคิวต์มกั จะ
เริ่ มจากการใช้ ซีพียู แล้ วก็จะตามด้ วยการคอยอินพุต/เอาต์พตุ เมื่อ
จบการรอคอย ก็จะตามมาด้ วยเวลาของซีพียู สลับกันไปเรื่ อย ๆ
จนกว่าจะจบการเอ็กซิคิวต์
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 7
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 8
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 9

ตัวจ
ัวจัดการเวลาซ
ัดการเวลาซพ ีพ
ี ย
ีย
ี ู ู (CPU
(CPU
Scheduler)
Scheduler)
 ตัวจัดการเวลาซีพียู (CPU Scheduler) หรื อตัวจัดการเวลาช่วงสัน้
(short–term scheduler) จะเลือกโปรเซสที่อยูใ่ นหน่วยความจำที่
พร้ อมในการเอ็กซิคิวต์ที่สดุ เพื่อให้ ครอบครองเวลาซีพียแู ละ
ทรัพยากรที่เกี่ยวข้ องกับโปรเซสนัน้
 คิวของโปรเซสในหน่วยความจำนันไม่ ้ จำเป็ นที่ต้องเป็ นแบบใดแบบ
หนึง่ อย่างไรก็ตามโปรเซสทุกโปรเซสที่พร้ อมใช้ ซีพียู จะต้ องมี
โอกาสได้ เข้ าครอบครองเวลาซีพียไู ม่เวลาใดก็เวลาหนึง่
 การเข้ าและออกจากการครอบครองเวลาซีพียแ ู ต่ละครัง้ จำเป็ นต้ อง
มีการเก็บข้ อมูลไว้ เสมอว่าเข้ ามาทำอะไร ต่อไปจะทำอะไร
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 10
การให้ ิท
การให้สสทิ ธิ
ธิกการจ
ารจัดเวลา
ัดเวลา (Preemptive
(Preemptive
Scheduling)
Scheduling)
 เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรัน --> สถานะรอ
เช่น ในสภาวะที่คอยอินพุต/เอาต์พตุ หรื อการคอยให้ โปรเซสลูก
เสร็จสิ ้นไปก่อน
 เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรัน --> พร้ อม เช่น

เมื่อมีอินเทอร์ รัพต์เกิดขึ ้น
 เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรอ --> พร้ อม เช่น

เมื่ออินพุต/เอาต์พตุ เสร็จสิ ้นไปแล้ ว


 เมื่อโปรเซสเสร็ จสิ ้นไปแล้ ว

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 11
การให้ ิท
การให้สสทิ ธิ
ธิกการจ
ารจัดเวลา
ัดเวลา (Preemptive
(Preemptive
Scheduling)
Scheduling)
 ในสถานการณ์ที่ 1 และ 4 นันเป็้ นสถานการณ์ที่จะต้ องมีการ
ตัดสินใจทำอะไรอย่างใดอย่างหนึง่ โดยไม่สามารถหลีกเลี่ยงได้
เช่น ต้ องเลือกโปรเซสใหม่เข้ ามาเอ็กซิคิวต์ตอ่ ไป เนื่องจากโปรเซส
เดิมไม่ใช้ ซีพียอู ีกแล้ ว
 สำหรับสถานการณ์ ที่ 2 และ 3 นัน ้ การตัดสินใจต้ องอยูบ่ นพื ้น
ฐานหรื อกฎเกณฑ์ของแต่ละอัลกอริ ทมึ ที่ใช้ ซึง่ อาจทำให้ มีการ
ทำงานที่แตกต่างกันไป

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 12
การให้ ิท
การให้สสทิ ธิ
ธิกการจ
ารจัดเวลา
ัดเวลา (Preemptive
(Preemptive
Scheduling)
Scheduling)
 การตัดสินใจที่เกิดขึ ้นเนื่องจากสถานการณ์ 1 และ 4 การจัดเวลา
ซีพียจู ะเป็ นแบบไม่ให้ สิทธิ์ก่อน (nonpreemptive)
 ส่วนสถานการณ์ ที่ 2 และ 3 จะเรี ยกว่าให้ สิทธิ์ก่อน (preemptive)

 การทำงานแบบไม่ให้ สิทธิ์ก่อนนี ้ โปรเซสจะครอบครองเวลาซีพียไู ป

จนกว่าจะเสร็จสิ ้น หรื อเปลี่ยนสถานะตัวเองเป็ นสถานะคอย


 เนื่องจากระบบปฏิบต ั ิการนี ้ไม่ต้องการในการใช้ ฮาร์ ดแวร์ พิเศษ เช่น
ไทม์เมอร์ (timer) ในการนับคาบเวลาสำหรับการให้ โปรเซศใด ๆ
ครอบครองเวลาซีพียู โปรเซสจึงสามารถครอบครองเวลาซีพียไู ด้
จนกว่าจะหมดความต้ องการ
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 13
การให้ ิท
การให้สสทิ ธิ
ธิกการจ
ารจัดเวลา
ัดเวลา (Preemptive
(Preemptive
Scheduling)
Scheduling)
 ถ้ าเป็ นระบบมัลติยเู ซอร์ (multiusers) การจัดเวลาแบบให้ สิทธิก่อน
จะเหมาะสมกว่า
 การจัดเวลาแบบให้ สิทธิก่อนนันต้ ้ องใช้ ทรัพยากรพิเศษเข้ าช่วยเยอะ
เพื่อแก้ ปัญหาต่าง ๆ ที่หลีกเลี่ยงไม่ได้
 เช่น โปรเซส 2 โปรเซสที่ต้องใช้ ข้อมูลร่ วม (shared data) โปรเซส

แรกอาจจะต้ องหยุดรอในขณะที่อยูใ่ นระหว่างการอัปเดทข้ อมูล


เนื่องจากคาบเวลาของมันหมดลงพอดี แล้ วโปรเซสที่สองก็เข้ ามา
แทน ซึง่ โปรเซสที่สองนี ้อาจต้ องการที่จะอ่านข้ อมูลที่โปรเซสแรกยัง
แก้ ไขไม่เรี ยบร้ อย ทำให้ เกิดปั ญหา
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 14
การให้ ิท
การให้สสทิ ธิ
ธิกการจ
ารจัดเวลา
ัดเวลา (Preemptive
(Preemptive
Scheduling)
Scheduling)
 การจัดเวลาแบบให้ สิทธิก่อนนันมี้ ผลกระทบต่อการออกแบบ
Kernel ของระบบปฏิบตั ิการเป็ นอย่างมาก เช่น ในระหว่างการ
เกิด system call นัน้ Kernel อาจจะยังไม่วา่ ง อาจจะกำลัง
ทำงานในการจัดคิวโปรเซสอยู่ แล้ วอะไรจะเกิดขึ ้นถ้ าหากว่า
โปรเซสถูกทำให้ หยุด และออกจากการครอบครองเวลาซีพียู
 UNIX มีการแก้ ปัญหาตรงจุดนี ้โดยการให้ System call สิ ้นสุดเอง

หรื อไม่ก็คอยจนกว่าจะมีการบล็อกการทำงานของอินพุต/เอาต์พุ
ตเกิดขึ ้น แล้ วจึงมีการทำ คอนเท็กซ์สวิตช์ (Context Switch)

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 15
การให้ ิท
การให้สสทิ ธิ
ธิกการจ
ารจัดเวลา
ัดเวลา (Preemptive
(Preemptive
Scheduling)
Scheduling)
 การออกแบบ Kernel จะได้ ไม่มีความยุง่ ยากมาก เพราะว่าตัว
Kernel เอง จะไม่ไปจัดการโปรเซสอื่น ๆ ถ้ าโครงสร้ างข้ อมูลของ
Kernel ยังไม่อยูใ่ นสภาพที่สมบูรณ์
 แต่ปัญหาก็คือการทำงานของ Kernel แบบนี ้ช้ าเกินไป ทำให้ ต้อง

มีการพัฒนาบางสิง่ บางอย่างเพิ่มเติมเข้ ามาอีก

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 16
Dispatcher
Dispatcher
 Dispatcher เป็ นโมดูลที่ทำหน้ าที่ควบคุมการครอบครองเวลา
ซีพียขู องโปรเซส
 ฟั งก์ชนั ประกอบด้ วย
 การย้ าย Context
 การย้ ายไป user mode
 กระโดดไปยังตำแหน่งที่เหมาะสมของโปรแกรม เพื่อที่จะเริ่ มรัน
โปรแกรมนันใหม่
้ อีกครัง้
 ควรมีการทำงานที่เร็วที่สดุ เท่าที่จะทำได้ เพราะทำงานทุกครัง้ ที่มี
การย้ ายโปรเซส ซึง่ เวลาที่ใช้ ในการทำนี ้เรี ยก Dispatch Latency
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 17
ข้ข้ออพิพิจจารณาในการจั
ารณาในการจัดดเวลา
เวลา
 อรรถประโยชน์ ของซีพยี ู (CPU Utilization) : การใช้ ประโยชน์
จากซีพียอู ย่างสูงสุด โดยทำให้ ซีพียมู ีงานทำมากที่สดุ เท่าที่จะ
ทำได้ ซีพียคู วรจะถูกใช้ อยูร่ ะหว่าง 40-90 %
 ทรู พุต (Throughput) : จำนวนงานที่เสร็ จต่อหน่วยเวลา

 เวลาทัง้ หมด (Turnaround Time) : คือช่วงเวลาทังหมดที ้ ่ใช้ ใน


การทำงานใดงานหนึง่ ตังแต่ ้ เริ่ มต้ นเข้ าไปในระบบ จนงานถูกทำ
จนเสร็จเรี ยบร้ อย (รวมเวลาที่รอเข้ าหน่วยความจำ เวลาที่คอยอยู่
ในคิว เวลาที่ใช้ ซีพียู และเวลาของอินพุต/เอาต์พตุ )

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 18
ข้ข้ออพิพิจจารณาในการจั
ารณาในการจัดดเวลา
เวลา
 เวลารอคอย (Waiting Time) : ช่วงเวลาที่งานใดงานหนึง่ ต้ องรอ
การทำงานของตัวจัดเวลา โดยไม่รวมเวลาของการใช้ ซีพียู และ
เวลาของการติดต่ออินพุต/เอาต์พตุ ส่วนใหญ่ก็คือเวลาที่งานต้ อง
คอยอยูใ่ นคิว (Ready Queue)
 เวลาตอบสนอง (Response Time) คือเวลาที่วด ั ระหว่างเวลา
ที่มีการร้ องขอการกระทำใด ๆ ต่อระบบแล้ วมีการตอบรับกลับ
ออกมา (ความเร็ วของเวลาตอบสนองจึงมักจะขึ ้นอยูก่ บั อุปกรณ์
อินพุต/เอาต์พตุ )

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 19
ข้ข้ออพิพิจจารณาในการจั
ารณาในการจัดดเวลา
เวลา
 สิง่ ที่ผ้ อู อกแบบระบบการจัดเวลาต้ องการก็คือ การทำให้ เวลาการ
ทำงานสันที ้ ่สดุ นัน่ เอง
 ในความเป็ นจริ งแล้ ว อาการได้ อย่างเสียอย่างมักจะต้ องเกิดขึ ้น
 เราไม่สามารถที่จะได้ ระบบที่สามารถทำให้ มีการใช้ ซีพียไู ด้ สงู สุด
โดยที่มีทรูพตุ มากที่สดุ มีเวลารวมเร็วที่สดุ และได้ เวลาตอบสนอง
เร็วที่สดุ ได้ พร้ อม ๆ
 ดังนันการหาจุ
้ ดพอดีจากค่าเฉลี่ยของคุณสมบัติแต่ละชนิดจึงมี
ความจำเป็ น ซึง่ บางครัง้ อาจจะต้ องมีการกำหนดจุดที่ยอมรับได้
ไว้ ที่จดุ ใดจุดหนึง่ ถ้ าหากว่าไม่สามารถหาค่าเฉลี่ยได้
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 20
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบมาก่ อนได้ ก่อน (FCFS : First-Come First-
Served)
 โปรเซสใดที่ร้องขอใช้ ซีพียกู ่อนก็จะได้ รับการจัดสรรให้ ครอบครอง
เวลาซีพียกู ่อน
 ผลเสียของอัลกอริ ทมึ่ นี ้คือค่าเฉลี่ยของการคอยในคิวแบบมาก่อนได้
ก่อนนี ้ค่อนข้ างจะสูง

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 21
การจั
การจัดดเวลาแบบมาก่
เวลาแบบมาก่ออนได้
นได้กก่ อ่ อนน (FCFS)
(FCFS)

(0+24+27) / 3 = 17 วินาที

(0+3+6) / 3 = 3 วินาที

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 22
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบงานสัน้ ทำก่ อน (SJF : Short–Job–First
Scheduling)
 โปรเซสที่ต้องการคาบเวลาของเวลาซีพียใู นเวลาถัดไปสันที้ ่สดุ จะได้
รับเลือกให้ เข้ ามาครบครองซีพียกู ่อน
 ถ้ ามีโปรเซสหลายตัวที่มีคาบเวลาของเวลาซีพียขู องช่วงต่อไปเท่า ๆ
กัน ก็จะใช้ หลักการมาก่อนได้ ก่อนมาใช้ ในการคัดเลือก

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 23
การจั
การจัดดเวลาแบบงานสั
เวลาแบบงานสัน้ น้ ทำก่
ทำก่ออนน (SJF)
(SJF)

(0+3+9+16) / 4 = 7 วินาที
FCFS = (0+6+8+7) / 4 = 10.25 วินาที
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 24
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบงานสัน้ ทำก่ อน (SJF : Short–Job–First
Scheduling)
 ข้ อยุง่ ยากของวิธี SJF คือการวัดคาบเวลาของเวลาซีพียถู ดั ไปของแต่ละ
โปรเซสที่ร้องขอเวลาซีพียเู ข้ ามา
 ในระบบการทำงานแบบแบ็ตซ์ เจ้ าของโปรเซสจะต้ องเป็ นผู้บอกช่วง
เวลาที่จำกัดของการใช้ ซีพียสำ ู หรับโปรเซสให้ กบั ระบบ เพื่อใช้ อ้างอิง
สำหรับการจัดลำดับดังกล่าว ซึง่ เจ้ าของโปรเซสก็จะพยายามที่จะให้ คา่
ต่ำที่สดุ เพื่อโอกาสในการเข้ าไปใช้ ซีพียกู ่อนมีมากที่สดุ
 ถ้ าคาบเวลาที่กำหนดไว้ นี ้มีคา่ น้ อยเกินไป ก็จะทำให้ โปรแกรมนันไม่

สามารถคำนวณสำเร็จได้ ซึง่ จะต้ องเสียเวลามาเริ่ มต้ นใหม่อีก
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 25
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบงานสัน้ ทำก่ อน (SJF : Short–Job–First
Scheduling)
 มีปัญหาในการนำมาใช้ ในการจัดเวลาช่วงสัน้ (Short-term
Scheduling) เพราะว่าเราไม่มีทางจะรู้ได้ วา่ ความยาวของคาบเวลา
การใช้ ซีพียใู นช่วงต่อไปของแต่ละโปรเซสเป็ นเท่าใด วิธีการที่ใช้ มกั
จะเป็ นแค่การประมาณเอาเท่านัน้ โดยประมาณจากระยะเวลาของ
เวลาซีพียใู นคาบเวลาที่ผา่ นมาด้ วยการหาค่าเฉลี่ย

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 26
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 27
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบงานสัน้ ทำก่ อน (SJF : Short–Job–First
Scheduling)
 SJF สามารถเป็ นได้ ทงแบบให้ั้ สทิ ธิ์ก่อน หรื อไม่ให้ สิทธิ์ก่อน
 การตัดสินใจจะเกิดขึ ้นทุกครัง้ เมื่อมีโปรเซสใหม่เข้ ามาในคิวในขณะที่ยงั มี โปรเซ
สอื่นใช้ งานซีพียอู ยู่
 โปรเซสใหม่อาจมีคาบเวลาของเวลาซีพียสู นกว่ ั ้ าเวลาที่เหลืออยูข่ องเวลาซีพียู
ของโปรเซสที่กำลังใช้ ซีพียู --> อัลกอริ ทมึ ที่เป็ นแบบให้ สิทธิ์ก่อนจะทำการหยุด
งานที่กำลังใช้ ซีพียอู ยู่
 แบบไม่ให้ สทิ ธิ์ก่อน --> ปล่อยให้ งานนันใช้
้ ซีพียจู นเสร็จสิ ้นเวลาซีพียขู องช่วง
เวลานัน้ บางครัง้ การทำ SJF แบบให้ สทิ ธิก่อน อาจมีชื่อเรี ยกว่า Shortest-
Remaining-Time-First

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 28
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)

ให้ สิทธิ์ก่อน = [(10-1)+(1-1)+(17-2)+(5-3)] / 4 = 26/4 = 6.5 วินาที

ห้ ามแทรก = [(0)+(8-1)+(17-2)+(12-3)] / 4 = 31/4 = 7.75 วินาที


ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 29
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาตามลำดับความสำคัญ (Priority Scheduling)
 โปรเซสที่มีลำดับความสำคัญสูงที่สดุ ขจะทำงานก่อน แต่ถ้ามีงานที่มี
ลำดับความสำคัญเท่ากัน ก็จะมีการนำเอามาก่อนได้ ก่อน (FCFS) มา
ใช้
 ลำดับความสำคัญ จะกำกับไว้ ด้วยสัญลักษณ์ที่เปรี ยบเทียบกันได้ เช่น
ตัวเลขจำนวนนับ เป็ นต้ น
 ถ้ าไม่มีข้อตกลงในการใช้ ระบบการกำกับของความสำคัญเหล่านี ้ อาจ
ก่อให้ เกิดความสับสนขึ ้นได้
 ในหนังสือเล่มนี ้จะมีการกำหนดว่าตัวเลขน้ อยมีลำดับความสำคัญมาก
เพื่อเป็ นที่เข้ าใจร่วมกัน
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 30
การจั
การจัดดเวลาตามลำดั
เวลาตามลำดับบสำคั
สำคัญญ (Priority)
(Priority)

(0+1+6+16+18) / 5 = 41/5 = 8.2 วินาที


ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 31
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาตามลำดับความสำคัญ (Priority Scheduling)
 ปั ญหาใหญ่ของการจัดเวลาซีพียแู บบนี ้ก็คือโปรเซสที่มีลำดับความ
สำคัญต่ำอาจจะไม่มีโอกาสได้ เข้ าไปใช้ ซีพียเู ลย ถ้ าหากว่ามีโปรเซส
ที่มีลำดับความสำคัญสูงกว่าอยูเ่ ป็ นจำนวนมาก
 การแก้ ปัญหาสถานการณ์นี ้คือ การเพิ่มลำดับความสำคัญให้ กบั โปร
เซสที่ยงั ไม่เสร็ จเหล่านี ้ตามระยะเวลาที่คอยอยูใ่ นคิว

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 32
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาตามลำดับความสำคัญ (Priority Scheduling)
 เช่น สมมติวา่ เรามีการออกแบบให้ มีลำดับความสำคัญจาก 0-127
ขัน้ เราอาจจะเพิ่มอัลกอริ ทมึ พิเศษลงไปว่า ถ้ าโปรเซสใดคอยครบ
15 นาที ก็ให้ ลดตัวเลขลำดับขันลงที
้ ละขัน้ และจะลดลงไปเรื่ อย ๆ
ทุก ๆ 15 นาที ซึง่ การทำแบบนี ้ แม้ โปรเซสที่เข้ ามาในระบบมีลำดับ
ความสำคัญต่ำสุดที่ 127 ก็จะมีโอกาสเข้ าไปใช้ ซีพียภู ายในเวลาไม่
เกิน 32 ชัว่ โมง เพราะในที่สดุ โปรเซสนี ้ก็จะมีลำดับความสำคัญ
เท่ากับ 0

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 33
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling)
 คิดขึ ้นมาเพื่อใช้ กบั ระบบคอมพิวเตอร์ แบบแบ่งเวลาโดยเฉพาะ โดย
มีลกั ษณะการทำงานแบบมาก่อนได้ ก่อน (FCFS) แต่ให้ มีกรรมวิธี
ของให้ สทิ ธิ์ก่อนรวมอยูด่ ้ วย แต่ละโปรเซสที่เข้ ามาในระบบจะถูก
จำกัดเวลาการเข้ าไปใช้ ซีพียเู ท่า ๆ กัน ซึง่ ช่วงเวลานี ้จะเป็ นช่วงเวลา
สันเรี
้ ยกว่า เวลาควันตัม (Quantum Time)
 ระยะเวลาควันตัมนี ้ มีความยาวระหว่าง 10 ถึง 100 มิลลิวินาที
 คิวที่ใช้ ก็เป็ นแบบวงกลม (Circular Queue)
 ตัวจัดเวลาจะมีการให้ ซีพียกู บั โปรเซสที่อยูใ่ นคิวแบบวนไปรอบ ๆ

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 34
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling)
 ในแต่ละคาบเวลาจะมีความยาวของการได้ รับซีพียมู ากที่สดุ คือ 1
ควันตัม ถ้ าโปรเซสใดไม่สามารถกระทำได้ สำเร็จภายใน 1 ควันตัมนี ้
โปรเซสก็จะต้ องถูกนำกลับไปไว้ ในคิวเช่นเดิม
 สถานภาพต่าง ๆ ของโปรเซสที่ยงั ทำไม่เสร็จก็จะถูกบันทึกไว้ เพื่อ
ว่าเมื่อถึงโอกาสได้ ครอบครองซีพียอู ีก ก็จะได้ เริ่มต้ นรันต่อจากครัง้ ที่
แล้ วโดยไม่ต้องเริ่มใหม่ทงหมด
ั้

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 35
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling)
 มีคิวที่พร้ อมทำงาน (Ready Queue) เป็ นแบบมาก่อนได้ ก่อนไว้
สำหรับเก็บโปรเซสต่าง ๆ โปรเซสที่เข้ ามาใหม่จะถูกนำมาต่อไว้ ที่
หางของคิว ตัวจัดเวลาจะเลือกเอาโปรเซสที่อยูต่ รงหัวคิวออกมา
แล้ วกำหนดให้ ไทม์เมอร์ หยุดการให้ เวลาซีพียหู ลังจากนัน้ 1 ควันตัม
แล้ วนำโปรเซสออกไปต่อที่หางคิว ถ้ าหากว่าโปรแกรมยังไม่สิ ้นสุด
การทำงาน
 โปรเซสที่เสร็ จก่อนถึงเวลา 1 ควันตัม จะต้ องให้ สิ ้นสุดและออกจาก
การครอบครองซีพียู เพื่อโปรเซสอื่นที่อยูต่ รงหัวคิวเข้ ามาทำงานได้

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 36
การจั
การจัดดเวลาแบบวนรอบ
เวลาแบบวนรอบ (Round
(Round Robin)
Robin)

[(10-4)+4+7] / 3 = 17/3 = 5.66 วินาที


ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 37
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling)
 ถ้ ามีโปรเซสอยูใ่ นคิวจำนวน n โปรเซส และระยะเวลาของควันตัม
เท่ากับ q หน่วย แต่ละโปรเซสที่อยูใ่ นคิวจะมีเวลาเฉลี่ยของการคอย
ไม่นานไปกว่า (n–1) x q หน่วย ก่อนที่จะได้ รับการเข้ าไปใช้ ซีพียู
อีกครัง้
 เช่น ถ้ ามีโปรเซส 5 โปรเซส และระยะเวลาควันตัมคือ 20 วินาที
แต่ละโปรเซสจะต้ องคอยในคิวโดยเฉลี่ยประมาณไม่เกิน 80 วินาที
ไม่เกินก็เพราะว่าการคอยอาจจะน้ อยกว่านี ้ ถ้ าหากว่ามีโปรเซสใด
ๆ สามารถทำงานเสร็จโดยใช้ เวลาน้ อยกว่าเวลาควันตัมนัน่ เอง

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 38
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling)
 ประสิทธิภาพของการวนรอบขึ ้นอยูก่ บั การกำหนดขนาดของควันตัม
 ถ้ าขนาดของควันตัมใหญ่หรื อนานเกินไป ประสิทธิภาพของการวนรอบ
ก็จะใกล้ เคียงกับแบบมาก่อนได้ ก่อน
 แต่ถ้าขนาดของควันตัมเล็กมากเกินไป ทรูพตุ (throughput) ของระบบ
ก็จะช้ าลง เนื่องจากการนำเอาโปรเซสเข้ าและออกจากการครอบครอง
ซีพียู จะต้ องเสียเวลาบางส่วนในการทำ Dispatcher
 ถ้ าขนาดของควันตัมเล็กใกล้ เคียงกับเวลาของ Dispatcher เวลาของ
ระบบรวมก็จะหมดไปกับการเอาโปรเซสเข้ าและออก (Context Switch)
นัน่ เอง
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 39
การจั
การจัดดเวลาแบบวนรอบ
เวลาแบบวนรอบ (Round
(Round Robin)
Robin)

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 40
การบ้
การบ้าานน
โปรเซส เวลาทีใ่ ช ้ ลำด ับความ
สำค ัญ
P1 8 2
P2 1 1
P3 2 2
P4 1 3
P5
หาเวลาคอยเฉลี
ย ่ 3แบบ FCFS, SJF, Priority
1 และ RR
(เวลาควันตัม=2)
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 41
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue
Scheduling)
 เป็ นการจัดเวลาของซีพียอู ีกแบบหนึง่ สำหรับระบบที่สามารถแบ่ง
ระดับชันของงานได้
้ อย่างชัดเจน
 งานที่เป็ นฟอร์ กราวนด์ (Foreground) หรื ออินเตอร์ แอ็กทีฟ
(Interactive) กับงานที่เป็ นแบ็คกราวนด์ (Background) หรื อแบ็ตช์
(Batch)
 งานทังสองแบบนี
้ ้ต้ องการเวลาตอบสนอง (Response time) ที่แตก
ต่างกัน ซึง่ สามารถใช้ ระบบการจัดเวลาที่แตกต่างกันได้

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 42
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling)
 ใช้ วิธีแบ่งคิวออกเป็ นหลาย ๆ ระดับโดยที่แต่ละระดับหมายถึงระดับโปร
เซสที่มีความสำคัญแตกต่างกัน
 การแบ่งระดับความสำคัญของโปรเซสนัน้ สามารถแบ่งได้ หลายลักษณะ
เช่นแบ่งตามขนาดโปรเซส, จำนวนหน่วยความจำที่ต้องใช้ หรื อจำนวน
อินพุต/เอาต์พตุ เป็ นต้ น
 แต่ละคิวยังสามารถใช้ หลักการจัดเวลาที่แตกต่างกันได้ ด้วย เช่น งานที่
เป็ นฟอร์ กราวนด์ก็อาจใช้ การจัดตารางแบบวนรอบส่วนงานที่เป็ นแบบ
แบ็คกราวนด์ก็อาจใช้ แบบมาก่อนได้ ก่อน ก็ได้

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 43
การจั
การจัดดเวลาแบบคิ
เวลาแบบคิววหลายระดั
หลายระดับบ

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 44
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue
Scheduling)
 แต่ละคิวจะมีความสำคัญเหนือกว่าคิวที่อยูด่ ้ านล่างถัดลงไปเสมอ
 โปรเซสที่คอยอยูใ่ นคิวที่มีความสำคัญต่ำจะมีโอกาสได้ ออกมาใช้
ซีพียกู ็ตอ่ เมื่อคิวที่มีความสำคัญสูงกว่าไม่มีโปรเซสที่ต้องทำเหลืออยู่
เท่านัน้
 หรื อในขณะที่โปรเซสที่มีลำดับความสำคัญกำลังครอบครองซีพียู
แล้ วมีโปรเซสที่มีลำดับความสำคัญสูงกว่าเข้ ามาคอยอยูใ่ นคิวที่สงู
กว่า โปรเซสนี ้ก็จะถูกนำออกมาจากซีพียทู นั ที

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 45
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue
Scheduling)
 เพื่อป้องกันไม่ให้ โปรเซสที่อยูใ่ นคิวต่ำ ต้ องคอยอยูน่ านเกินไป หรื อ
อาจจะไม่มีโอกาสได้ เข้ าไปใช้ ซีพียเู ลย เพราะว่าในคิวบน ๆ ไม่เคย
ว่างเลย
 ต้ องมีการกำหนดสัดส่วนเวลาให้ กบั แต่ละคิวในการทำงานเข้ าไปใช้
ซีพียู เช่น การกำหนดให้ เวลา 80 เปอร์ เซ็นต์เป็ นของโปรเซสที่เป็ นฟ
อร์ กราวนด์ และอีก 20 เปอร์ เซ็นต์เป็ นของงานแบ็คกราวนด์ เป็ นต้ น

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 46
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue
Scheduling)
 การทำงานแบบการจัดลำดับความสำคัญแบบเปลี่ยนแปลงได้ นนั ้
อาจมีชื่อเรี ยกอีกอย่างได้ วา่ เป็ นการทำงานแบบ Multilevel
Feedback Queue Scheduling เพราะว่าโปรเซสในแต่ละคิว
สามารถมีการเลื่อนชันระดั
้ บความสำคัญขึ ้นหรื อลงได้
 อาจจะต้ องเสียเวลาเพิ่มอีกนิดหน่อยในการคำนวณหาระดับความ
สำคัญใหม่ให้ กบั โปรเซส

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 47
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling)
 ส่วนมากจะแบ่งระดับความสำคัญตามระยะเวลาของเวลาซีพียู เช่นเมื่อ
ซีพียทำ ู งานนานขึ ้นก็อาจจะถูกลดชันลงมาสู
้ ค่ ิวที่มีลำดับความสำคัญต่ำ
ได้ ซึง่ จะทำให้ โปรเซสที่มีการใช้ ซีพียนู ้ อยแต่มีอินพุต/เอาต์พตุ หรื ออินเท
อร์ แอ็กทีฟมาก ๆ มีโอกาสเข้ าไปอยูใ่ นคิวที่มีความสำคัญมากได้
 วิธีนี ้ยังเป็ นการป้องกันไม่ให้ มีโปรเซสที่มีความสำคัญน้ อยถูกดองอยูใ่ น
คิว เพราะโปรเซสที่อยูใ่ นคิวที่ต่ำก็สามารถเลื่อนขึ ้นไปสูค่ ิวที่สงู ขึ ้นถ้ า
คอยอยูน่ านเกินไป

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 48
การจั
การจัดดเวลาแบบคิ
เวลาแบบคิววหลายระดั
หลายระดับบ

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 49
อัอัลลกอริ
กอริททมึ มึ ของการจั
ของการจัดดเวลา
เวลา (Scheduling
(Scheduling Algorithms)
Algorithms)
 การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue
Scheduling)
 จำนวนของคิว
 วิธีของการจัดเวลาของแต่ละคิว
 หลักเกณฑ์ในการตัดสินใจเพิ่มความสำคัญของโปรเซส
 หลักเกณฑ์ในการตัดสินใจลดความสำคัญของโปรเซส
 หลักเกณฑ์ในการตัดสินใจนำเอาโปรเซสที่ต้องการครอบครองซีพียู
มาเข้ าในคิว

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 50
การจั
การจัดดเวลาของมั
เวลาของมัลลติติเเพิพิลลโปรเซสเซอร์
โปรเซสเซอร์
 การออกแบบระบบปฏิบตั ิการสำหรับคอมพิวเตอร์ ที่มีซีพียหู ลาย
ตัวจะเพิ่มความซับซ้ อนกว่าระบบซีพียตู วั เดียว
 การหาวิธีการจัดเวลาไม่มีความแตกต่างจากการจัดเวลาของซีพียู

ตัวเดียวเลย
 ต้ องจำกัดปั ญหาว่าซีพียห ู ลายตัวเหล่านันจะทำงานคล้
้ ายกับ
ซีพียเู พียงตัวเดียว
 สิง่ ที่ต้องคำนึงคือ การแชร์ โหลดให้ ซีพียแู ต่ละตัวมีงานทำมาก
พอกัน โดยการจัดให้ มีระบบคิวระบบเดียว

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 51
การจั
การจัดดเวลาของมั
เวลาของมัลลติติเเพิพิลลโปรเซสเซอร์
โปรเซสเซอร์
 ดังนันเมื
้ ่อมีซีพียตู วั ใดว่าง ก็จะนำโปรเซสในคิวออกไปเอ็กซิคิวต์
ได้ ทนั ที
 การทำงานที่ซีพียแ ู ต่ละตัวมีระบบจัดการเป็ นของตนเองจะต้ องมี
การออกแบบอย่างระมัดระวังในกรณีที่มีการใช้ ข้อมูลร่วมกัน
 ระวังอย่าให้ ซีพียว ู า่ งพร้ อมกัน เลือกโปรเซสจากคิวที่ใช้ ร่วมกัน
เพราะอาจจะทำให้ ดงึ โปรเซสเดียวกันเข้ าไปทำงาน
 แม้ แต่การปล่อยโปรเซสทิ ้งจากซีพียพ ู ร้ อม ๆ กันหมดทำให้ เกิด
การสูญหายของโปรเซสได้

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 52
การจั
การจัดดเวลาของมั
เวลาของมัลลติติเเพิพิลลโปรเซสเซอร์
โปรเซสเซอร์
 การแก้ ไขทำได้ โดยการเพิ่มความซับซ้ อน โดยให้ มีระดับของซีพียูที่
ต่างกัน โดยให้ ซีพียตู วั ใดตัวหนึง่ คอยควบคุมสัง่ งานซีพียอู ีกต่อหนึง่
เป็ นเช่นนี ้เป็ นทอด ๆ ไป เรี ยกลักษณะเช่นนี ้ว่า “Master-slave
structure”
 บางระบบมีการพัฒนาโดยแยกระบบการจัดเวลากับอินพุต /

เอาต์พตุ ออกจากกัน
 โดยเฉพาะการนำงานของผู้ใช้ ออกจากอินพุต/เอาต์พต ุ ทำให้ ระบบ
ปฏิบตั ิการมีความซับซ้ อนน้ อยลง เนื่องจากมีซีพียเู พียงตัวเดียวที่
เข้ าใช้ งาน ตัวอื่นเข้ าไม่ได้
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 53
การจั
การจัดดเวลาแบบเรี
เวลาแบบเรียยลไทม์
ลไทม์ (Real-time
(Real-time scheduling)
scheduling)
 การทำงานแบบเรี ยลไทม์แบ่งออกเป็ น 2 ประเภท
 Hard Real-time
 Soft Real-time
 Hard Real-time
คือระบบที่สามารถทำงานให้ เสร็จตามเวลาที่กำหนดได้ ซึง่ งานที่จะรับเข้ ามา
แต่ละงานนันจะมี
้ เวลาที่ต้องการให้ เสร็จมาด้ วย ดังนันตั ้ วจัดเวลาจะต้ อง
ตัดสินใจว่าจะรับงานเข้ ามาทำหรื อไม่ ซึง่ ถ้ าตัดสินใจรับงานใด ๆ เข้ ามาทำก็
หมายความว่า งานนันได้
้ รับการรับรองว่าจะถูกทำให้ เสร็จได้ ภายในเวลาที่
กำหนด ส่วนงานที่ถกู ปฏิเสธก็หมายความว่า เวลาที่กำหนดมานันเร็ ้ วเกินกว่า
ที่สภาวะของระบบในขณะนันจะทำได้
้ ทนั

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 54
การจั
การจัดดเวลาแบบเรี
เวลาแบบเรียยลไทม์
ลไทม์ (Real-time
(Real-time scheduling)
scheduling)
 Hard Real-time
 ระบบปฏิบตั ิการจะต้ องรู้แน่นอนว่า การทำงานของฟั งก์ชนั ต่าง ๆ
ของตัวระบบปฏิบตั ิการใช้ เวลาเท่าใด แต่จะเป็ นการยากมากถ้ าหาก
ระบบคอมพิวเตอร์ มีการใช้ สื่อจัดเก็บข้ อมูล หรื อหน่วยความจำเสมือน
 ระบบ Hard Real–time มักจะทำงานกับโปรแกรมเฉพาะที่มีการใช้
ฮาร์ ดแวร์ ของระบบทังหมด
้ เพื่อทำงานหรื อคำนวณให้ กบั งานใดงาน
หนึง่ อย่างเฉพาะเจาะจง
 ทำให้ ระบบนี ้จึงประกอบไปด้ วยสิง่ ที่จำเป็ นในการทำงานที่ได้ รับมอบ
หมายเท่านัน้

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 55
การจั
การจัดดเวลาแบบเรี
เวลาแบบเรียยลไทม์
ลไทม์ (Real-time
(Real-time scheduling)
scheduling)
 Soft Real-time
 อาจเป็ นเพียงระบบแบ่งเวลาธรรมดาที่มีการให้ ระดับความสำคัญแก่
งานบางประเภท
 หรื องานที่ถกู เลือกไว้ ลว่ งหน้ าว่าเป็ นงานเร่งด่วน ซึง่ อาจทำให้ เกิด
ปั ญหาของการทำงานในระดับต่ำ ๆ อาจไม่ได้ รับเวลาของซีพียเู ลย
 อย่างน้ อยเราก็สามารถสร้ างการทำงานที่ให้ การตอบสนองของระบบ
เข้ าใกล้ แบบ Hard–Time แต่สามารถสนับสนุนงานอื่น ๆ ได้ อีกหลาย
งาน ทำให้ การใช้ ระบบมีความคุ้มค่ากว่า
 ในสถานการณ์จริ ง ระบบ Hard real–time จะมีราคาแพงกว่า Soft
Real–time มากในแง่ของต้ นทุนต่องานที่ผลิตได้ (บางงานไม่จำเป็ น)

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 56
การจั
การจัดดเวลาแบบเรี
เวลาแบบเรียยลไทม์
ลไทม์ (Real-time
(Real-time scheduling)
scheduling)
 กฎในการออกแบบ Soft Real-time เพิ่มเติมจาก priority queue
 งานที่เป็ นเรี ยลไทม์จะต้ องได้ รับความสำคัญสูงสุดเหนืองานอื่น ๆ
ทังหมดที
้ ่ไม่ใช่เรี ยลไทม์ และจะไม่มีวนั ที่งานแบบเรี ยลไทม์จะถูกลด
ชันลงไปอยู
้ ใ่ นคิวที่มีลำดับความสำคัญที่ต่ำกว่านี ้ แม้ วา่ ระบบคิว
แบบลำดับความสำคัญที่ใช้ อาจเป็ นแบบ Priority Feedback
Queue ก็ตาม
 เวลาของการทำ Context Switch และ Dispatcher ต้ องสันมาก ้ ๆ
ยิ่งสันเท่
้ าไหร่ ก็ยิ่งจะทำให้ งานที่เป็ น เรี ยลไทม์สามารถเข้ าไปใช้
ซีพียไู ด้ เร็ วขึ ้นเท่านัน้

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 57
การจั
การจัดดเวลาแบบเรี
เวลาแบบเรียยลไทม์
ลไทม์ (Real-time
(Real-time scheduling)
scheduling)
 กฎข้ อที่ 1 นัน้ เราอาจสามารถสร้ างออกมาใช้ งานได้ ไม่ยาก
 กฎข้ อที่ 2 สามารถทำได้ อย่างแน่นอนมักเป็ นเรื่ องที่ยาก เนื่องจากว่า

ระบบปฏิบตั ิการที่เคยออกแบบมานันถู ้ กบังคับให้ คอย System Call


ทุกชนิดเสร็จสิ ้นก่อนหรื อไม่ก็ต้องคอยให้ เกิดการบล็อกอินพุต/เอาต์พุ
ตเสียก่อนที่จะมีการทำ Context Switch
 Dispatch Latency ในระบบปฏิบต ั ิการที่ถกู ออกแบบมาแบบนี ้มักจะ
มีความเร็วไม่คงที่ และมักจะใช้ เวลานาน เพราะบาง System Call
อาจจะกินเวลานานมาก และอินพุต/เอาต์พตุ บางตัวก็มกั จะทำงานได้
ช้ าเสมอ
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 58
การจั
การจัดดเวลาแบบเรี
เวลาแบบเรียยลไทม์
ลไทม์ (Real-time
(Real-time scheduling)
scheduling)
 การแก้ ปัญหาต้ องยอมให้ สามารถหยุด System Call ที่ใช้ เวลา
นาน ได้ ด้วยการใส่ preemption point ลงไปใน system call
 เพื่อที่จะให้ มน
ั หยุดตรวจสอบว่ามีงานแบบเรี ยลไทม์คอยอยูห่ รื อ
เปล่า และถ้ ามีก็ให้ ไปทำงานเรี ยลไทม์ก่อน แล้ วจึงกลับมาทำ
System Call ที่เหลืออยูใ่ ห้ เสร็จ
 การใส่ preemption point ก็ยงั มีข้อจำกัดที่ไม่สามารถใส่ลงไปได้

ในขณะที่ข้อมูลของ Kernel กำลังถูกเปลี่ยนแปลง ซึง่ ทำให้ บาง


ครัง้ ไม่สามารถทำให้ dispatch latency เล็กลงมาก ๆ ได้

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 59
การจั
การจัดดเวลาแบบเรี
เวลาแบบเรียยลไทม์
ลไทม์ (Real-time
(Real-time scheduling)
scheduling)
 การจัดการปั ญหาของการ preemption โดยการทำให้ Kernel ทังหมดเป็ ้ น
แบบการให้ สิทธิ์ก่อน แต่โครงสร้ างข้ อมูลของ Kernel จะต้ องได้ รับการป้องกัน
ความเสียหายอย่างดีจากการถูกเรี ยกใช้ แบบกลไกการซินโครไนซ์
 การป้องกันโครงสร้ างข้ อมูลของ Kernel จากการเรี ยกใช้ โดยงานที่มีลำดับ
ความสำคัญสูง ในขณะที่งานที่มีลำดับความสำคัญต่ำกำลังใช้ อยู่ ทำให้ งานที่
มีลำดับความสำคัญสูงจำเป็ นต้ องคอยงานที่มีลำดับความสำคัญต่ำเหล่านี ้
เหตุการณ์เช่นนี ้ทำให้ ดเู หมือนว่างานที่กำลังใช้ โครงสร้ างข้ อมูลอยูน่ นมี
ั ้ ลำดับ
ความสำคัญสูงที่สดุ เราเรี ยกเหตุการณ์นี ้ว่า Priority Inversion

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 60
การจั
การจัดดเวลาแบบเรี
เวลาแบบเรียยลไทม์
ลไทม์ (Real-time
(Real-time scheduling)
scheduling)
 ปั ญหาเหล่านี ้ก็จะสามารถแก้ ได้ ด้วยวิธี priority–inheritance protocol
นัน่ คือ งานที่มีลำดับความสำคัญต่ำก็จะได้ รับลำดับความสำคัญสูง
เท่ากับงานที่คอยใช้ โครงสร้ างข้ อมูลอันเดียวกันอยู่
 วิธีนี ้จะทำให้ งานที่มีลำดับความสำคัญต่ำ ๆ มีโอกาสเสร็ จได้ เร็ วขึ ้นและ
ปล่อยการใช้ โครงสร้ างข้ อมูลให้ กบั งานเรี ยลไทม์ได้ เร็วที่สดุ และเมื่องานที่
มีลำดับความสำคัญต่ำเสร็จจากการใช้ โครงสร้ างข้ อมูลแล้ ว ก็จะถูกตังค่ ้ า
ให้ มีลำดับความสำคัญกลับมาเท่าเดิม

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 61
การคั
การคัดดเลื
เลืออกอั
กอัลลกอริ
กอริทท่มึ ่มึ สำหรั
สำหรับบการจั
การจัดดเวลาซี
เวลาซีพพยี ยี ู ู
 ต้ องคิดถึงเรื่ องของการกำหนดคุณสมบัติสำหรับการเปรี ยบเทียบใน
กระบวนการคัดเลือก ซึง่ คุณสมบัติจะเป็ นอรรถประโยชน์ของซีพียู (CPU
utilization) เวลาตอบสนอง (Response time) และทรูพตุ (Throughput)
 อาจจะกำหนดหลักเกณฑ์ตามความต้ องการซึง่ เป็ นเรื่ องที่ยากมาก เรา
ต้ องสมมุติวา่ ระบบต้ องการอะไรเพื่อจะได้ กำหนดหลักเกณฑ์การ
พิจารณา
 Deterministic Modeling
 โมเดลการจัดคิว
 วิธีการจำลองระบบ (Simulations)
 วิธีการสร้ างขึ ้นมาจริ ง ๆ

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 62
Deterministic
Deterministic Modeling
Modeling
 วิธีการคัดเลือกนี ้เรี ยกว่า analytic evaluation ซึง่ จะนำเอาอัลกอริ ทมึ ชนิด
ต่าง ๆ และลักษณะของงาน มาสร้ างสูตร เพื่อใช้ ในการคำนวณหา
ตัวเลขของประสิทธิภาพที่สามารถวัดและเปรี ยบเทียบได้

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 63
Deterministic
Deterministic Modeling
Modeling

FCFS = (0 + 10 + 39 + 42 + 49) / 5 = 28 วินาที

SJF = (10 + 32 + 0 + 34 + 20) / 5 = 13 วินาที

RR = (0 + 32 + 20 + 23 + 40) / 5 = 23 วินาที
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 64
Deterministic
Deterministic Modeling
Modeling
 ในวิธี Deterministic Modeling นี ้เป็ นวิธีที่งา่ ยและรวดเร็ว ได้ ผลลัพธ์ ที่เป็ น
ตัวเลขที่แน่นอน เพื่อการเปรี ยบเทียบที่สามารถเห็นได้ อย่างเด่นชัดว่าอัลกอ
ริ ทมึ แบบไหนดีที่สดุ
 ผลลัพธ์ที่ได้ อาจจะไม่สามารเป็ นจริ งได้ เสมอในเหตุการณ์จริ ง เนื่องจากว่า
ข้ อมูลที่ใช้ ในการคำนวณนันเป็
้ นข้ อมูลสมมุติที่มีเพียงค่าเดียว หรื อไม่ก็มี
เพียงจำนวนน้ อย เมื่อเทียบกับสถานการณ์จริ งแล้ ว ข้ อมูลสมมุติเหล่านี ้ ก็
อาจจะไม่เป็ นตัวแทนของเหตุการณ์จริ งได้ อย่างสมบูรณ์
 ในทางปฏิบตั ิแล้ วระบบงาน และระบบคอมพิวเตอร์ มีความซับซ้ อนมากกว่า
นี ้มากมาย การใช้ วิธี Deterministic Modeling นี ้มักมีข้อจำกัดมากเกินไป
สำหรับการนำมาใช้ ในระบบคอมพิวเตอร์ ปัจจุบนั
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 65
โมเดลการจั
โมเดลการจัดดคิคิวว
 ลักษณะงานที่เข้ ามาในระบบคอมพิวเตอร์ มีลกั ษณะไม่แน่นอน อาจจะไม่
ซ้ำกันเลย
 แต่เราสามารถทำนายหรื อกำหนดการกระจายเวลาของซีพียู และการกระ
จายการใช้ อินพุต/เอาต์พตุ ได้
 ระบบคอมพิวเตอร์ อาจมองเป็ นระบบเน็ตเวิร์คที่สถานีงานที่มีคิวเป็ นของ
ตนเอง ทังซี
้ พียู หรื ออุปกรณ์ตา่ ง ๆ
 ถ้ าเราทราบเวลาในการให้ บริ การและจำนวนงานที่เข้ ามาในสถานีงาน เราก็
สามารถคำนวณหาสิง่ ที่ต้องการได้
 การวิเคราะห์แบบนี ้เรี ยกว่า การวิเคราะห์การจัดคิวแบบเน็ตเวิร์ค
(Queueing-network analysis)
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 66
โมเดลการจั
โมเดลการจัดดคิคิวว
 Little’s formula (n=r*w) มีประโยชน์เนื่องจากสามารถใช้ อลั กอริ ทมึ่ ใด
ก็ได้ เมื่อทราบค่าเฉลี่ยการกระจายเวลา
 สามารถเปรี ยบเทียบค่าของการคอยแต่ละอัลกอริ ทมึ่
 ปั ญหาก็คือยังไม่สามารถคำนวณกับอัลกอริ ทมึ่ ได้ ไม่หมด
 ถ้ าใช้ อลั กอริ ทมึ่ ที่ซบั ซ้ อนมาก ๆ การคำนวณค่าเฉลี่ยทำได้ ยาก เนื่องจาก
การตังสู้ ตรทำได้ ยาก
 การคำนวณค่าเฉลี่ยจึงทำไว้ แบบง่าย ๆ การคำนวณอาจไม่เที่ยงตรง

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 67
วิวิธธีกีการจำลองระบบ
ารจำลองระบบ (Simulations)
(Simulations)
 เป็ นการเลือกวิธีการหรื ออัลกอริ ทมึ่ ที่ให้ คา่ เป็ นจริงมากที่สดุ เนื่องจาก
สามารถคำนวณค่าตัวเลขออกมาได้ อย่างเที่ยงตรงมากที่สดุ
 ส่วนมากจะใช้ การโปรแกรมคอมพิวเตอร์ เพื่อใช้ เป็ นตัวแทนหรื อหุน่ จำลอง
ของระบบ รวมทังการเขี
้ ยนโปรแกรมเพื่อเป็ นตัวแทนสิง่ แวดล้ อมที่
เกี่ยวข้ องกับระบบคอมพิวเตอร์
 สิง่ สำคัญคือการใช้ ตวั แปรที่เป็ นตัวแทนของเวลา เพื่ออ้ างถึงตำแหน่งหรื อ
หลักในการสร้ างเหตุการณ์ (ตัวแปรจะเพิ่มค่าเรื่ อย ๆ) หรื อจะไม่เปลี่ยน
ตามเหตุการณ์ที่เกิดขึ ้นก็ได้
 เหตุการณ์ทงหมดจะเกี
ั้ ่ยวข้ องกับเวลาทังหมดจะต้
้ องใช้ ตวั แปรเดียวกัน

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 68
วิวิธธีกีการจำลองระบบ
ารจำลองระบบ (Simulations)
(Simulations)
 เวลาของเหตุการณ์ที่จะเกิดขึ ้นในแบบจำลองนี ้มี 2 แบบ
 เวลาจากการสุม่ (เขียนโปรแกรมเพื่อสร้ างตัวแปรสุม่ นี)้ โดยต้ องสร้ างงาน สร้ าง
เวลาซีพียู สร้ างเวลาเข้ ามาในระบบ โดยอาศัยหลักความน่าจะเป็ น โดยใช้ การกระ
จายต่าง ๆ เช่น uniform, exponential หรื อ Poisson เป็ นต้ น
 ใช้ ข้อมูลจากระบบจริ ง (Empirical) โดยสามารถหาข้ อมูลได้ มาจาก trace tape
(ซึง่ ประกอบด้ วยข้ อมูลการทำงานจริ งของคอมพิวเตอร์ ที่เราจะต้ องหาอัลกอริ ทมึ่ ที่
ดีที่สดุ
 ข้ อดีของการใช้ ข้อมูลจริ งก็คือจะได้ คา่ ที่ถกู ต้ องมากกว่าแบบการสุม่ แต่ถ้ายุง่
ยากซับซ้ อนมาก ๆ วิธีการสุม่ ก็ยงั คงมีความจำเป็ น
 การทำแบบจำลองจำเป็ นต้ องใช้ เวลาค่อนข้ างมาก ทำให้ คา่ ใช้ จา่ ยสูง เพื่อให้
ได้ ข้อมูลที่เที่ยงตรงมากเท่าใดเวลาและค่าใช้ จา่ ยจะยิ่งเพิ่มสูงขึ ้น
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 69
วิวิธธีกีการสร้
ารสร้าางขึ
งขึน้ น้ มาจริ
มาจริงง
 การสร้ างแบบจำลองก็คงยังเป็ นการจำลองที่ยงั ไม่สามารถเหมือนจริ งได้
สิง่ ที่ดีกว่าคือการสร้ างอัลกริ ทมึ่ ชนิดต่าง ๆ เพื่อทดลองใช้ กบั โปรแกรม
จัดการระบบจริ ง ๆ ในสิง่ แวดล้ อมจริ ง
 วิธีนี ้ไม่คอ่ ยนิยมเนื่องจากค่าใช้ จา่ ยค่อนข้ างสูง และใช้ เวลามาก
 ในบางอัลกอริ ทมึ่ อาจจะต้ องใช้ ฮาร์ ดแวร์ พิเศษ ทำให้ เครื่ องต้ องสามารถ
ปรับเปลี่ยนได้ ทำให้ การปฏิบตั ิเป็ นเรื่ องที่คอ่ นข้ างยุง่ ยาก
 ถึงแม้ จะได้ วิธีการที่ดีที่สดุ เรายังต้ องพิจารณาว่าผลที่ได้ จากการทดลอง
ทำให้ เกิดการตัดสินใจได้ ถกู ต้ องแค่ไหน เนื่องจากเราจะมัน่ ใจได้ แค่ไหนว่า
เราได้ ทดลองทุกอัลกอริ ทมึ่ โดยครบทุกสถานการณ์แล้ วหรื อไม่ (ปกติเป็ นไป
ได้ ยากที่เราจะสามารถทำได้ ครบทุกสถานการณ์)
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 70
วิวิธธีกีการสร้
ารสร้าางขึ
งขึน้ น้ มาจริ
มาจริงง
 ทางออกที่ดีที่สดุ เราจะต้ องทำให้ ระบบคอมพิวเตอร์ สามารถปรับเปลี่ยน
ได้ โดยการควบคุมของผู้ใช้ ซึง่ ทำได้ โดยการตังค่
้ าไว้ ก่อนเริ่ มใช้ งาน หรื อ
สามารถปรับค่าได้ ในขณะใช้ งาน
 การที่เราจะทำให้ ระบบสามารถเปลี่ยนแปลงได้ จะต้ องค่าใช้ จา่ ยใน
ปริมาณมากขึ ้นนัน่ เอง

ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 71

You might also like