1 / 53

การจัดการโปรเซสเซอร์ (CPU Scheduling)

การจัดการโปรเซสเซอร์ (CPU Scheduling). การจัดสรรซีพียู.

spence
Télécharger la présentation

การจัดการโปรเซสเซอร์ (CPU Scheduling)

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. การจัดการโปรเซสเซอร์(CPU Scheduling)

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

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

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

  5. ตัวจัดการเวลาซีพียู(CPU Scheduler) • เมื่อใดก็ตามที่ซีพียูว่างระบบปฏิบัติการจะต้องเข้ามาเลือกโปรเซสตัวใดตัวหนึ่งที่คอยอยู่ในคิวเข้ามาใช้งานซีพียูการเลือกโปรเซสเพ่อเข้ามาใช้ซีพียูนี้จะถูกจัดการด้วยส่วนที่เรียกว่า“ตัวจัดคิวระยะสั้น”(Short-term Scheduler)หรือ“ตัวจัดการเวลาซีพียู”(CPU Scheduler)ตัวจัดการเวลานี้จะเลือกโปรเซสที่อยู่ในหน่วยความจำที่พร้อมในการเอ็กซิคิวต์ที่สุดเพื่อให้ครอบครองเวลาซีพียูและทรัพยากรที่เกี่ยวข้องกับโปรเซสนั้น

  6. บล็อกควบคุมโปรเซส(PBC : Process Control Block) • คิวของโปรเซสในหน่วยความจำนั้นไม่จำเป็นที่ต้องเป็นแบบมาก่อนได้ก่อน(FIFO : First In First Out) เสมอไปอาจจะเป็นไปตามบลำดับความสำคัญ (Priority) โครงสร้างต้นไม้ (Tree)หรืออาจจะเป็นลิงค์ลิสต์(Linked List) ก็ได้อย่างไรก็ตามโปรเซสทุกโปรเซสที่พร้อมจะใช้ซีพียูจะต้องมีดอกาสได้เข้าครอบครองซีพียูไม่เวลาใดก็เวลาหนึ่งซึ่งการเข้าและออกจากการครอบครองซีพียูแต่ละครั้งจำเป็นต้องมีการเก็บข้อมูลไว้เสมอว่าเข้ามาแล้วได้ทำอะไรไปบ้างช่วงต่อไปจะต้องทำอะไรดดยใช้พื้นที่หน่วยความจำส่วนหนึ่งเก็บข้อมูลของแต่ละโปรเซสเอาไว้หลังเสร็จสิ้นการใช้ซีพียูพื้นที่หน่วยความจำนี้มีชื่อว่า“บล็อกควบคุมโปรเซส”(PBC : Process Control Block)

  7. การให้สิทธิการจัดเวลา(Preemptive Scheduling) การตัดสินใจของซีพียูในการเลือกเอ็กซิคิวต์โปรเซสใดๆขึ้นอยู่กับสถานการณ์ดังนี้ • 1.เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรัน (run) ไปเป็นสถานะคอย (wait) เช่นในสภาวะที่คอยอินพุต/เอาต์พุตหรือการคอยให้โปรเซสลูกเสร็จสิ้นไปก่อนเป็นต้น • 2.เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรัน (run) ไปเป็นสถานะพร้อม (ready) เช่นเมื่อมีอินเทอร์รัพท์เกิดขึ้นเป็นต้น • 3.เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะคอย (wait) ไปเป็นสถานะพร้อม (ready) เช่นเมื่อการรอคอยอินพุต/เอาต์พุตเสร็จสิ้นไปแล้ว • 4. เมื่อโปรเซสเสร็จสิ้นไปแล้ว

  8. การเปลี่ยนสถานะ(context switching) ของซีพียู • ในสถานะพร้อม (ready) นั้นเป็นสถานะที่โปรเซสที่พร้อมจะใช้ซีพียูมารอต่อกันเป็นคิวเพื่อที่จะใช้ซีพียูเมื่อซีพียูว่างโปรเซสที่อยู่ต้นคิวจะได้ครอบครองซีพียูและได้เข้าไปอยู่ในสถานะรัน(running) โปรเซสจะอยู่ในสถานะรันได้นานไม่เกินเวลาควอนตัม (Quantum time) ถ้าโปรเซสต้องรอเหตุการณ์บางอย่างโดยไม่มีความจำเป็นต้องใช้ซีพียูโปรเซสนั้นจะถูกย้ายไปอยู่ในสถานะติดขัดแต่ถ้าโปรเซสอยู่ในสถานะรันจนครบกำหนดเวลาควอนตัมโปรเซสนั้นก็จะต้องออกไปรอใช้งานซีพียูในสถานะพร้อมโดยไปต่อที่ท้ายคิวเพื่อเปิดโอกาสให้โปรเซสอื่นได้ใช้ซีพียูบ้างเหตุการณ์ที่โปรเซสเปลี่ยนจากสถานะหนึ่งไปยังสถานะหนึ่งเราเรียกว่าเป็นการเปลี่ยนสถานะ(context switching) ของซีพียู

  9. การเปลี่ยนสถานะจะถือเป็นOverhead ของซีพียูคำว่าOverhead จะหมายถึงการที่ระบบจำเป็นต้องกระทำเพื่อจุดประสงค์บางอย่างซึ่งระบบต้องใช้เวลาในการทำงานเหล่านี้ทำให้เสียเวลาในการทำงานของโปรเซสของผู้ใช้ไปด้วยดังนั้นถ้าระบบมีค่าใช้จ่ายมากระบบก็จะเสียเวลาไปมากสำหรับการเปลี่ยนสถานะของซีพียูจะมีการสูญเสียเวลาสำหรับงานหลักๆ 3 งานคือ • 1.เก็บค่ารีจิสเตอร์และสถานะของเครื่องไว้ในPCB ของโปรเซสที่กำลังจะปลดปล่อยซีพียู • 2.คัดเลือกโปรเซสในสถานะพร้อมเพื่อให้มาครอบครองซีพียู • 3. โหลดค่ารีจิสเตอร์และสถานะของเครื่องจากPCB ของโปรเซสใหม่

  10. ตัวจัดคิวระยะสั้น(Short-term scheduler) • การคัดเลือกหาโปรเซสที่จะเข้าไปอยู่ในสถานะรันเมื่อซีพียูว่างนั้นถือได้ว่าเป็นการจัดสรรซีพียูให้กับโปรเซสต่างๆซึ่งเป็นหน้าที่ของOS ส่วนของOS ที่มีหน้าที่จัดสรรซีพียูเรียกว่าตัวจัดคิวระยะสั้น(Short-term scheduler)

  11. ข้อพิจารณาในการจัดเวลาซีพียูข้อพิจารณาในการจัดเวลาซีพียู • อรรถประโยชน์ของซีพียู(CPU Utilization)คือคำนึงถึงการใช้ประโยชน์จากซีพียูอย่างสูงสุดโดยทำให้ซีพียูมีงานทำมากที่สุดเท่าที่จะทำได้ซึ่งเมื่อคิดเป็นเปอร์เซนต์แล้วการใช้งานซีพียูสามารถวัดได้ออกมาในระหว่าง 0-100 % สำหรับในการทำงานจริงซีพียูควรถูกใช้อยู่ระหว่าง 40-90 % • ทรูพุต (Throughput) ถ้าหากว่าซีพียูทำงานตลอดเวลาก็หมายความว่างานก็กำลังถูกทำให้เสร็จซึ่งเราสามารถที่จะวัดออกมาได้เป็นจำนวนงานที่เสร็จต่อหน่วยเวลาหรือเรียกว่าทรูพุตสำหรับงานที่มีความยาวมากอัตราการทำงานหรือค่าทรูพุตอาจจะเป็นหนึ่งงานต่อชั่วโมงและก็อาจจะเป็นไปได้ว่างานที่สั้นก็จะทำให้ทรูพุตของระบบวัดได้ถึง 10 งานต่อวินาที

  12. 3. เวลาทั้งหมด (Turnaround Time) คือช่วงเวลาทั้งหมดที่ใช้ในการทำงานใดงานหนึ่งตั้งแต่เรีมต้นเข้าไปในระบบจนงานถูกทำเสร็จเรียบร้อยซึ่งจะรวมเอาเวลาที่จะต้องรอที่จะเข้าไปในหน่วยความจำเวลาที่คอยอยู่ในคิวเวลาที่ใช้ซีพียูและเวลาของอินพุต/เอาต์พุตทั้งหมดเข้าด้วยกัน 4. เวลารอคอย (Waiting Time) คือช่วงเวลาที่งานใดงานหนึ่งต้องรอการทำงานของตัวจัดเวลาโดยไม่รวมเวลาของการใช้ซีพียูและเวลาของการติดต่ออินพุต/เอาต์พุตส่วนใหญ่ก็คือเวลาที่งานต้องคอยอยู่ในคิว (Ready Queue) นั่นเอง 5. เวลาตอบสนอง (Response Time) คือเวลาที่วัดระหว่างเวลาที่มีการร้องขอการกระทำใดๆต่อระบบแล้วมีการตอบรับกลับมาซึ่งขึ้นอยู่กับอุปกรณ์อินพุต/เอาต์พุตเช่นเครื่องพิมพ์โดยซีพียูอาจทำการคำนวณใดๆสิ้นสุดแล้วแลได้มีการให้ผลลัพธ์ออกมาและซีพียูก็กำลังทำงานอี่นต่อไปแต่ผลลัพธ์ที่ได้นี้อาจจะต้องใช้เวลาอีกระยะกว่าที่ผู้ใช้จะมองเห็นผลลัพธ์ปรากฏบนกระดาษ (จากเครื่องพิมพ์) เป็นต้น

  13. อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • คอมโพเนนท์ที่สำคัญอีกตัวหนึ่งที่เกี่ยวข้องกับฟังก์ชันในการจัดเวลาซีพียูก็คือสิ่งที่เรียกว่าDispatcherซึ่งเป็นโมดูลที่ทำหน้าที่ควบคุมการครอบครองเวลาซีพียูของโปรเซสฟังก์ชันนี้ประกอบด้วย 1. การย้าย Context 2. การย้ายไป user mode 3. กระโดดไปยังตำแหน่งที่เหมาะสมของโปรแกรมเพื่อที่จะเริมรันโปรแกรมนั้นใหม่อีกครั้ง

  14. Dispatcher นี้ควรมีการทำงานที่เร็วที่สุดเท่าที่จะทำได้เพราะว่ามันจะต้องทำงานทุกครั้งที่มีการย้ายโปรเซสซึ่งเวลาที่ถูกใช้ไปกับการทำเช่นนี้เรียกว่า Dispatch Latency • อัลกอริทึมสำหรับการจัดเวลาโปรเซสนั้นมีความสำคัญอยู่ที่การตัดสินใจว่าจะให้โปรเซสใดครอบครองเวลาซีพียูก่อนซึ่งวิธีการที่ใช้ในการตัดสินใจคัดเลือกโปรเซสมีหลายวิธีเช่น 1. การจัดเวลาแบบมาก่อนได้ก่อน(FCFS : First-Come First-Served) 2. การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short-Job-First Scheduling) 3.การจัดเวลาตามลำดับความสำคัญ(Priority Scheduling) 4. การจัดเวลาแบบวนรอบ(RR : Round-Robin Scheduling) 5. การจัดเวลาแบบคิวหลายระดับ(Multilevel Queue Scheduling)

  15. การจัดเวลาแบบมาก่อนได้ก่อน(FCFS : First-Come First-Served) • เป็นวิธีการที่ง่ายที่สุดซึ่งมีหลักการคือโปรเซสใดที่ร้องขอใช้ซีพียูก่อนก็จะได้รับการจัดสรรให้ครอบครองเวลาซีพียูก่อนซึ่งการสร้างอัลกอริทึมนี้ใช้หลักการของคิวมาก่อนได้ก่อน (FIFO queue) เมื่อมีโปรเซสใดเข้ามาอยู่ในคิวแบบนี้ PCB ของงานจะถูกเชื่อมไว้กับหางของคิวเมื่อใดที่ซีพียูว่างลงโปรเซสใดที่มี PCB อยู่ที่หัวของคิวก็จะถูกนำออกมาจากคิวให้เข้าครอบครองเวลาซีพียูได้เลย • ข้อเสียของการจัดคิวแบบFCFS คือค่าเฉลี่ยของการคอยในคิวค่อนข้างสูง

  16. โปรเซส ระยะเวลาความต้องการซีพียู (วินาที) P1 P2 P3 24 3 3 P1 P2 P3 0 24 27 30 สมมติว่างานมาถึงคิวตามลำดับดังนี้คือ P1, P2 และ P3 แถวคอยในระบบ FIFO จะมีลักษณะดังนี้ เวลาการคอยP1 ในที่นี่จะมีค่า 0 วินาทีและของP2 คือ 24 วินาทีและP3 คือ 27 วินาทีค่าเฉลี่ยของการคอยจะเท่ากับ 17 วินาที ((0+24+27)/3)

  17. P3 P2 P1 0 3 6 30 แต่ถ้าสมมติว่าโปรเซสเข้ามาในคิว FIFO ตามลำดับใหม่คือ P3, P2 และ P1 คิวก็จะมีลักษณะที่ต่างออกไปดังนี้ จากสภาวการณ์ที่ 2 นี้เราจะได้ออกมาว่าเวลาคิวของ P3 เท่ากับ 0 วินาทีของ P2 เท่ากับ 3 วินาทีและ P1 เท่ากับ 6 วินาทีซึ่งจะทำให้ค่าเฉลี่ยของการคอยมีค่าเท่ากับ (0+3+6)/3 = 3 วินาทีเท่านั้น

  18. จะเห็นได้ว่าถึงแม้จะมีโปรเซสเหมือนกันรอการเข้าครอบครองซีพียูแต่หากว่าลำดับการเข้าไปในคิวมีความแตกต่างกันแล้วก็อาจทำให้ค่าเฉลี่ยของเวลาในการคอยมีความแตกต่างกันได้มากนั่นก็คือเวลาของการคอยในคิวแบบ FIFO นั้นคงยังไม่ดีพอถ้าหากว่าความต้องการใช้ซีพียูของแต่ละโปรเซสมีคาบเวลาที่แตกต่างกันมาก • ถ้าหากว่าโปรเซสที่เข้ามามีทั้งความต้องการใช้ซีพียูและอินพุต/เอาต์พุตสลับกันไปโปรเซสที่ต้องการใช้ซีพียูในระยะเวลาสั้นๆจะต้องเสียเวลาคอยโปรเซสที่ต้องใช้ซีพียูเป็นระยะเวลานานๆครั้งแล้วครั้งเล่าถ้ามีการสลับกันระหว่างเวลาซีพียูและเวลาอินพุต/เอาต์พุต 100 ครั้งโดยมีลำดับของโปรเซสเป็นP1  P2  P3 ค่าเฉลี่ยของเวลาในการคอยก็จะเป็นค่าเฉลี่ยที่นานที่สุด

  19. การจัดเวลาแบบมาก่อนได้ก่อน(FCFS : First-Come First-Served) • ลักษณะการทำงานของการจัดเวลาซีพียูแบบมาก่อนได้ก่อนนี้เป็นอัลกอริทึมแบบไม่ให้สิทธิ์ก่อนนั่นคือเมื่อโปรเซสใดครอบครองซีพียูแล้วซีพียูจะไม่มีโอกาสได้ว่างจนกว่าความต้องการใช้ซีพียูของโปรเซสนั้นจะเสร็จสิ้นลงด้วยการสลับไปยังเวลาอินพุต/เอาต์พุตซึ่งจะก่อให้เกิดปัญหาใหญ่กับระบบคอมพิวเตอร์แบบแบ่งเวลาเพราะว่าผู้ใช้คนอื่นๆที่อาจมีโปรเซสสั้นๆแต่จะต้องรอโปรเซสยาวๆที่ได้เข้าใช้ซีพียูก่อนทำงานเสร็จสิ้นเสียก่อนซึ่งอาจจะคอยจนอาจไม่ได้ใช้เลยก็ได้

  20. การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short-Job-First Scheduling) • มีแนวคิดที่จะทำให้โปรเซสที่ต้องการคาบเวลาของซีพียูในเวลาถัดไปสั้นที่สุดจะได้รับเลือกให้เข้ามาครอบครองซีพียูก่อนและถ้ามีโปรเซสหลายตัวที่มีคาบเวลาของเวลาซีพียูของช่วงต่อไปเท่าๆกันก็จะใช้หลักการมาก่อนได้ก่อนมาใช้ในการคัดเลือกซึ่งอาจมีชื่อเรียกการคัดเลือกงานแบบนี้ว่าสั้นที่สุดได้ใช้เวลาซีพียูต่อไป(Shortest next CPU burst) เพราะแนวความคิดนี้จะมีการจัดคาบเวลาของเวลาซีพียูช่วงต่อไปเพียงช่วงเดียวมากกว่าการวัดรวมว่าตลอดทั้งโปรแกรมต้องการใช้ซีพียูนานเท่าไหร่พิจารณาตัวอย่างการทำงานของSJF ต่อไปนี้

  21. โปรเซส ระยะเวลาความต้องการซีพียู (วินาที) P1 P2 P3 P4 6 8 7 3 P4 P1 P3 P2 0 3 9 16 24 สมมติว่างานมาถึงคิวตามลำดับดังนี้คือ P1, P2 P3 และ P4 ใช้หลักการของ SJF จะจัดคิวออกมาได้ในลักษณะดังนี้ ค่าเฉลี่ยของการคอยของงานในระบบจะเท่ากับ(3+9+16)/4 = 7 วินาทีซึ่งถ้าหากว่าใช้หลักการของFCFS ค่าเฉลี่ยของการคอยจะเท่ากับ (6+8+7)/4 = 10.25 จะเห็นได้ว่ามีความแตกต่างกันถึง 3.25 วินาที

  22. SJF จะให้ค่าเฉลี่ยของการคอยได้ต่ำที่สุดสำหรับชุดของโปรเซสใดๆก็ตามเพราะว่าการเลื่อนโปรเซสที่มีเวลาซีพียูน้อยสุดมาไว้หน้าคิวจะมีการลดเวลาการคอยในโปรเซสที่สั้นมากกว่าการเพิ่มเวลาของโปรเ.ซสที่ยาวเสมอดังนั้นค่าเฉลี่ยของการคอยแบบนี้จึงต่ำที่สุด • สิ่งที่ยากมากสำหรับการใช้วิธี SJF ก็คือการวัดคาบเวลาของซีพียูถัดไปของแต่ละโปรเซสที่ร้องขอเวลาซีพียูเข้ามาซึ่งในระบบการทำงานแบบแบ็ตช์(Batch System) เจ้าของโปรซสจะต้องเป็นผู้บอกช่วงเวลาที่จำกัดของการใช้ซีพียูสำหรับโปรซสให้กับระบบเพื่อใช้เป็นข้อมูลอ้างอิงสำหรับการจัดลำดับซึ่งเจ้าของโปรเซสก็จะพยายามให้มีค่าต่ำที่สุดเพื่อโอกาสในการเข้าไปใช้ซีพียูก่อนจะได้มีมากที่สุดแต่ถ้าคาบเวลาที่กำหนดไว้นี้มีค่าน้อยเกินไปก็จะทำให้โปรแกรมนั้นไม่สามารถคำนวณสำเร็จได้ซึ่งจะต้องเสียเวลามาเริ่มต้นใหม่อีกการจัดเวลาแบบSJF นั้นเป็นวิธีการที่ใช้กันมากในระบบแบ็ตช์หรือการจัดเวลาช่วงยาว(Long-term Scheduling)

  23. การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short-Job-First Scheduling) • แต่ SJF จะเป็นปัญหาของการจัดเวลาช่วงสั้น (Short-term Scheduling) เพราะเราไม่มีทางรู้ได้ว่าความยาวของคาบเวลาการใช้ซีพียูในช่วงต่อไปของแต่ละโปรเซสเป็นเท่าใดวิธีการที่ใช้มักจะเป็นการประมาณเอาจากระยะของเวลาซีพียูในคาบเวลาที่ผ่านมาด้วยการหาค่าเฉลี่ย • การทำงานของอัลกอริทึมSJF นี้เป็นได้ทั้งแบบให้สิทธิ์ก่อนหรือไม่ให้สิทธิ์ก่อนการตัดสินใจจะเกิดขึ้นทุกครั้งเมื่อมีโปรเซสใหม่เข้ามาในคิวในขณะที่ยังมีโปรเซสอื่นใช้งานซีพียูอยู่เพราะว่าโปรเซสใหม่อาจมีคาบเวลาของเวลาซีพียูสั้นกว่าเวลาที่เหลืออยู่ของเวลาซีพียูของโปรเซสที่กำลังใช้ซีพียูอยู่ซึ่งถ้าเป็นแบบนี้อัลกอริทึมที่เป็นแบบให้สิทธิ์ก่อนจะทำการหยุดงานที่กำลังใช้ซีพียูอยู่แต่ถ้าเป็นแบบไม่ให้สิทธิ์ก่อนอัลกอริทึมก็จะปล่อยให้งานที่ทำงานอยู่นั้นใช้ซีพียูจนเสร็จสิ้นเวลาซีพียูของช่วงเวลานั้นบางครั้งการทำSJF แบบให้สิทธิ์ก่อนอาจมีชื่อเรียกว่าShortest-Remaining-Time-First ตัวอย่างเช่น

  24. โปรเซส เวลาที่มาถึง เวลาที่ใช้ P1 P2 P3 P4 0 1 2 3 7 4 9 5 P1 P2 P4 P1 P3 0 1 5 10 17 26 เมื่องานมาถึงคิวตามเวลาที่แสดงไว้ลำดับของการเข้าใช้ซีพียูก็จะเป็นดังนี้

  25. การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short-Job-First Scheduling) • เมื่อโปรเซสP1 เข้ามาเมื่อเวลา 0 วินาทีโปรเซสP1 ก็ได้เข้าไปใช้ซีพียูทันทีเนื่องจากว่ายังไม่มีโปรเซสอื่นเข้ามาเมื่อถึงเวลาที่ 1 วินาทีงานP2 ซึ่งมีคาบเวลาซีพียูสั้นกว่าคือ 4 วินาทีเมื่อเทียบกับP1 ซึ่งยังเหลืออีก 7 วินาทีดังนั้นงานP1 จึงถูกหยุดเอาไว้ก่อนเพื่อP2 จะได้เข้าไปใช้ซีพียูและเนื่องจากคาบเวลาความต้องการใช้ซีพียูของP1 ยังเหลือมากกว่าP4 แต่น้อยกว่าP3 การจัดลำดับการเข้าใช้ซีพียูจึงออกมาตามรูปที่แสดงข้างต้น

  26. การจัดเวลาตามลำดับความสำคัญ(Priority Scheduling) • จะมีวิธีการทำงานแบบSJF แต่ได้มีการกำหนดลำดับความสำคัญของโปรเซสด้วยคาบระยะเวลาความต้องการใช้ซีพียูหรือเวลาซีพียูของแต่ละโปรเซสเช่นโปรเซสใดมีคาบเวลาสั้นที่สุดก็จะมีลำดับความสำคัญมากที่สุดโดยใช้ตัวเลขเป็นตัวบอกซึ่งเราอาจกำหนดว่าตัวเลขน้อยมีลำดับความสำคัญมากหรือตัวเลขมากมีลำดับความสำคัญมากก็ได้ขึ้นอยู่กับว่าจะมีข้อตกลงกันอย่างไรซึ่งต่อไปนี้เราจะกำหนดว่าโปรเซสที่มีตัวเลขน้อยจะถือว่าเป็นโปรเซสที่มีลำดับความสำคัญมากพิจารณาตัวอย่างต่อไปนี้

  27. โปรเซส เวลาที่มาถึง/เวลาที่ใช้ ลำดับความสำคัญ P1 P2 P3 P4 P5 10 1 2 1 5 3 1 3 4 2 P2 P5 P1 P3 P4 0 1 6 16 18 19 ถ้าเราใช้การจัดเวลาแบบการใช้ลำดับความสำคัญเราจะสามารถจัดลำดับของโปรเซสให้เข้าไปทำงานในซีพียูได้ดังนี้ ซึ่งค่าเฉลี่ยของการคอยในคิวของแต่ละโปรเซสมีค่าเท่ากับ 8.2 วินาที

  28. การจัดเวลาตามลำดับความสำคัญ(Priority Scheduling) • การกำหนดลำดับความสำคัญของแต่ละโปรเซสสามารถกำหนดได้ทั้งภายในและภายนอกการกำหนดภายในคือการกำหนดลำดับความสำคัญด้วยวิธีการใดวิธีการหนึ่งจากการวัดและคำนวณคุณสมบัติบางอย่างของแต่ละโปรเซสที่สามารถวัดค่าได้คุณสมบัติที่วัดค่าได้เหล่านี้เช่นเวลาของการจำกัดการใช้ซีพียูความต้องการขนาดของหน่วยความจำจำนวนไฟล์ที่ต้องเกี่ยวข้องหรือแม้แต่อัตราส่วนของจำนวนเวลาอินพุต/เอาต์พุตต่อเวลาซีพียูเป็นต้นส่วนการกำหนดจากภายนอกหมายถึงการกำหนดลำดับความสำคัญของโปรเซสใดๆจากวิธีการอื่นๆนอกเหนือจากระบบปฏิบัติการตัวอย่างเช่นราคาค่าเช่าเวลาซีพียูแหล่งที่มาของโปรเซสหรือความเร่งด่วนของโปรเซสเหล่านี้ล้วนสามารถนำมาเป็นตัวที่ใช้สำหรับคำนวณค่าของลำดับความสำคัญของโปรเซสก่อนที่ระบบปฏิบัติการจะรับเอาโปรเซสเข้ามานั่นเอง

  29. วิธีการพิจารณากำหนดลำดับความสำคัญของโปรเซสต่างๆอาจพิจารณาได้จากองค์ประกอบต่างๆเช่นวิธีการพิจารณากำหนดลำดับความสำคัญของโปรเซสต่างๆอาจพิจารณาได้จากองค์ประกอบต่างๆเช่น 1. ผู้ใช้ที่เป็นเจ้าของโปรเซสเช่นโปรเซสของผู้ใช้ธรรมดาจะมีลำดับความสำคัญต่ำกว่าผู้ใช้ที่เป็นผู้ควบคุมดูแลระบบ 2. ประเภทของโปรเซสเช่นถ้าเป็นโปรเซสในbatch mode มักมีลำดับความสำคัญต่ำกว่าinteractive mode เพราะในระบบโต้ตอบต้องตอบสนองให้กับผู้ใช้ให้เร็วที่สุดเท่าที่จะทำได้แต่สำหรับในระบบแบตช์นั้นเราส่งงานให้ระบบทำแล้วรอรับผลลัพธ์จากระบบเมื่องานนั้นเสร็จสิ้น 3. ผู้ใช้ที่ยอมจ่ายเงินเพิ่มเพื่อให้งานเสร็จเร็วขึ้น 4. ระยะเวลาที่โปรเซสเข้ามาอยู่ในระบบถ้าเข้ามาอยู่นานแล้วจะได้รับลำดับความสำคัญเพิ่มขึ้นเพราะเห็นว่าควรจะได้จบออกไปจากระบบเสียทีแต่ในบางระบบก็อาจมีความเห็นแตกต่างกันคือไหนๆก็อยู่นานแล้วอยู่นานอีกสักหน่อยคงจะไม่เป็นไร(ในกรณีโปรเซสมีขนาดใหญ่มากๆ )

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

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

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

  33. การสร้างระบบการทำงานแบบวนรอบเราจะทำคิวที่พร้อมทำงาน(Ready Queue) เป็นแบบมาก่อนได้ก่อนไว้สำหรับเก็บโปรเซสต่างๆโปรเซสที่เข้ามาใหม่จะถูกนำมาต่อไว้ที่หางของคิวตัวจัดเวลาจะเลือกเอาโปรเซสที่อยู่ตรงหัวคิวออกมาแล้วกำหนดให้ timer หยุดการให้เวลาซีพียูหลังจากนั้น1 ควอนตัมแล้วนำโปรเซสออกไปต่อที่หางคิวถ้าหากว่าโปรแกรมยังไม่สิ้นสุดการทำงานโปรเซสบางโปรเซสอาจต้องการใช้ซีพียูน้อยกว่า 1 ควอนตัมก็จะออกจากการครอบครองซีพียูเพื่อให้โปรเซสอื่นที่อยู่หัวคิวเข้ามาทำงานต่อไป

  34. โปรเซส เวลาที่ใช้ P1 P2 P3 24 3 3 เวลาเฉลี่ยของการคอยในวิธีRR จะค่อนข้างนานพิจารณาตัวอย่างต่อไปนี้ สมมติว่าเราใช้เวลาควอนตัมเท่ากับ 4 วินาทีโปรเซสP1 ครอบครองซีพียูในครั้งแรก 4 วินาทีแต่เวลาที่ต้องการจริงคือ 24 วินาทีดังนั้นโปรเซสP1 จึงเหลือเวลาที่ต้องการอีก 20 วินาทีแต่เมื่อเวลาควอนตัมแรกหมดลงที่วินาทีที่ 4โปรเซสP1 ก็จะออกจากการครอบครองซีพียูโปรเซสP2 ซึ่งเป็นโปรเซสถัดไปในคิวก็จะได้ครอบครองซีพียูแต่โปรเซสP2 ต้องการครองครองซีพียูแค่ 3 วินาทีดังนั้นโปรเซสP2 จึงทำเสร็จก่อนเวลาควอนตัมจะหมดลงโปรเซส P3 ที่คอยอยู่ถัดไปในคิวจึงได้เข้าครอบครองซีพียูที่เวลา 7 วินาที

  35. P1 P2 P3 P1 P1 P1 P1 P1 0 4 7 10 14 18 22 26 30 ผลของการทำงานแบบควอนตัมต่อโปรเซสดังกล่าวสามารถแสดงได้ดังนี้ ค่าเฉลี่ยของเวลาที่ต้องคอยคือ 17/3 = 5.66 วินาที

  36. หลักการทำงานของ RR คือจะไม่มีโปรเซสใดๆที่จะได้รับโอกาสในการครอบครองซีพียูเกินหนึ่งควอนตัมไม่ว่าโปรเซสที่กำลังใช้งานอยู่นั้นจะเสร็จหรือไม่ก็ตามเมื่อหมดเวลาของหนึ่งควอนตัมโปรเซสที่กำลังครอบครองซีพียูอยู่นั้นก็จะต้องถูกนำออกมาจากซีพียูและถ้ายังไม่เสร็จก็จะถูกนำเข้าไปในคิวการทำงานแบบ RR จึงเป็นการทำงานแบบให้สิทธิ์ก่อน ถ้ามีโปรเซสอยู่ในคิวจำนวนnโปรเซสและระยะเวลาควอนตัมเท่ากับq หน่วยแต่ละโปรเซสที่อยู่ในคิวจะมีเวลาเฉลี่ยของการคอยไม่นานไปกว่า(n-1)q หน่วยก่อนที่จะได้รับการให้เข้าไปใช้ซีพียูอีกครั้งเช่นถ้ามี 5 โปรเซสและระยะเวลาควอนตัมเป็น 20 วินาทีแต่ละโปรเซสจะต้องคอยในคิวโดยเฉลี่ยประมาณไม่เกิน 80 วินาที (อาจจะน้อยกว่านี้ถ้าหากว่ามีโปรเซสใดๆสามารถทำงานเสร็จโดยใช้เวลาน้อยกว่าเวลาควอนตัม)

  37. ประสิทธิภาพของอัลกอริทึมแบบRR นี้ขึ้นอยู่กับการกำหนดขนาดของเวลาควอนตัมถ้าขนาดของเวลาควอนตัมใหญ่หรือนานเกินไปประสิทธิภาพของการวนรอบก็จะใกล้เคียงกับแบบมาก่อนได้ก่อนแต่ถ้าขนาดเล็กมากเกินไปทรูพุตของระบบก็จะช้าลงเนื่องจากการนำเอาโปรเซสเข้าและออกจากการครอบครองซีพียูจะต้องเสียเวลาบางส่วนไปกับการทำDispatcher ซึ่งถ้าขนาดของควอนตัมเล็กใกล้เคียงกับเวลาของDispatcher เวลาของระบบรวมก็จะหมดไปกับการเอาโปรเซสเข้าและออก(Context Switch) นั่นเอง

  38. การจัดเวลาแบบคิวหลายระดับ(Multilevel Queue Scheduling) • การจัดคิวแบบหลายระดับจะใช้วิธีแบ่งคิวออกเป็นหลายๆระดับโดยที่แต่ละระดับหมายถึงระดับโปรเซสที่มีความสำคัญแตกต่างกันซึ่งการแบ่งระดับความสำคัญของโปรเซสนั้นสามารถแบ่งได้หลายลักษณะไม่ว่าจะแบ่งตามขนาดของโปรเซสจำนวนหน่วยความจำที่ต้องใช้หรือจำนวนอินพุต/เอาต์พุตเป็นต้นโดยที่แต่ละคิวยังสามารถใช้หลักการของการจัดเวลาที่แตกต่างกันได้ด้วยเช่นงานที่เป็นforeground ก็อาจใช้การจัดตารางแบบRR ส่วนงานที่เป็นbackground ก็อาจใช้วิธีการจัดตารางเวลาแบบFCFS นอกจากนี้ยังมีการเพิ่มการจัดเวลาระหว่างคิวอีกด้วยซึ่งอาจเป็นได้ทั้งแบบการจัดลำดับความสำคัญแบบคงที่(Fixed-priority preemptive scheduling) หรือการจัดลำดับความสำคัญแบบเปลี่ยนแปลงได้(variable-priority preemptive scheduling) ก็ได้ซึ่งในแบบหลังนี้โปรเซสอาจมีการปรับตัวเองในเรื่องของระดับความสำคัญด้วยการเลื่อนไปมาระหว่างคิวได้

  39. งานที่เป็นฟอร์กราวนด์(Foreground) หรืออินเตอร์แอ็กทีฟ(Interactive) กับงานที่เป็นแบ็คกราวนด์(Background) หรือแบ็ตช์(Batch) ซึ่งงานทั้งสองแบบนี้ต้องการเวลาตอบสนอง(Response time) ที่แตกต่างกันซึ่งสามารถใช้ระบบการจัดเวลาที่แตกต่างกันได้โดยทั่วไปแล้วงานที่เป็นforeground จะมีระดับชั้นความสำคัญเหนือกว่างานที่เป็น background

  40. ตัวอย่างลักษณะการจัดลำดับความสำคัญแบบคงที่ที่มีคิว 5 คิว System process queue highest priority interactive process queue interactive editing process queue batch 14 process queue student process queue lowest priority

  41. แต่ละคิวมีความสำคัญเหนือกว่าคิวที่อยู่ด้านล่างเสมอนั่นคือโปรเซสที่คอยอยู่ในคิวที่มีความสำคัญต่ำจะมีโอกาสได้ออกมาใช้ซีพียูก็ต่อเมื่อคิวที่มีความสำคัญสูงกว่าไม่มีโปรเซสที่ต้องทำเหลืออยู่หรือทำในขณะที่โปรเซสที่มีลำดับความสำคัญกำลังครองครองซีพียูแล้วมีโปรเซสที่มีลำดับความสำคัญสูงกว่าเข้ามาคอยอยู่ในคิวที่สูงกว่าโปรเซสนี้ก็จะถูกนำออกมาจากซีพียูทันทีแต่ละคิวมีความสำคัญเหนือกว่าคิวที่อยู่ด้านล่างเสมอนั่นคือโปรเซสที่คอยอยู่ในคิวที่มีความสำคัญต่ำจะมีโอกาสได้ออกมาใช้ซีพียูก็ต่อเมื่อคิวที่มีความสำคัญสูงกว่าไม่มีโปรเซสที่ต้องทำเหลืออยู่หรือทำในขณะที่โปรเซสที่มีลำดับความสำคัญกำลังครองครองซีพียูแล้วมีโปรเซสที่มีลำดับความสำคัญสูงกว่าเข้ามาคอยอยู่ในคิวที่สูงกว่าโปรเซสนี้ก็จะถูกนำออกมาจากซีพียูทันที แต่ละคิวอาจจะมีการจัดการคนละแบบหรือแบบเดียวกันแต่มีเวลาควอนตัมที่แตกต่างกันและเพื่อป้องกันไม่ให้โปรเซสที่อยู่ในคิวต่ำต้องคอยนานเกินไปหรืออาจไม่มีโอกาสได้เข้าครองครองซีพียูเลยก็อาจจะต้องมีการกำหนดสัดส่วนเวลาให้กับแต่ละคิวในการครอบครองซีพียูเช่นกำหนดให้เวลา 80% เป็นของโปรเซสที่เป็นforeground และอีก 20% เป็นของงาน background เป็นต้น

  42. สิ่งสำคัญที่ต้องคำนึงถึงเมื่อต้องการที่จะออกแบบการจัดเวลาแบบนี้คือสิ่งสำคัญที่ต้องคำนึงถึงเมื่อต้องการที่จะออกแบบการจัดเวลาแบบนี้คือ 1. จำนวนของคิว 2. วิธีของการจัดเวลาของแต่ละคิว 3. หลักเกณฑ์ในการตัดสินใจเพิ่มความสำคัญของโปรเซส 4. หลักเกณฑ์ในการตัดสินใจลดความสำคัญของโปรเซส 5. หลักเกณฑ์ในการตัดสินใจนำเอาโปรเซสที่ต้องการครอบครองซีพียูเข้ามาในคิว

  43. การจัดเวลาของมัลติเพิลโปรเซสเซอร์ (Multiple-ProcessorScheduling) ในระบบหลายโปรเซสเซอร์นั้นเราทราบว่าจะโปรเซสเซอร์หลายตัวช่วยกันทำงานคอมพิวเตอร์ประเภท MIMD นั้นโปรเซสเซอร์แต่ละตัวทำงานเป็นอิสระมีข้อมูลและคำสั่งเป็นของตนเองดังนั้นมันจึงต้องมีกลไกพิเศษเพื่อช่วยควบคุมการทำงานของมันเพื่อให้ทั้งหมดสามารถทำงานประสานกันได้อย่างมีประสิทธิภาพแต่ก่อนอื่นเราต้องทำให้โปรเซสเซอร์ต่างๆเหล่านั้นสามารถติดต่อส่งข้อมูลระหว่างกันให้ได้เสียก่อนซึ่งเราเรียกการติดต่อนี้ว่าการเชื่อมโยง(Coupling)การเชื่อมโยงระหว่างโปรเซสเซอร์แบ่งได้เป็น 2 ประเภทคือ

  44. ช่องทางสื่อสารร่วม โปรเซสเซอร์ 1 โปรเซสเซอร์ 2 โปรเซสเซอร์ 3 หน่วยความจำ 1 หน่วยความจำ 2 หน่วยความจำ 3 การเชื่อมโยงอย่างหลวม(loosely coupling) • โปรเซสเซอร์แต่ละตัวจะมีหน่วยความจำหลักและหน่วยความจำรองเป็นของตนเองและติดต่อรับส่งข้อมูลผ่านทางช่องทางสื่อสารร่วม(shared communication path) ดังรูป

  45. หน่วยความจำร่วม (Global Storage) ช่องทางสื่อสารร่วม โปรเซสเซอร์ 1 โปรเซสเซอร์ 2 โปรเซสเซอร์ 3 หน่วยความจำ 1 (Local Storage) หน่วยความจำ 2 (Local Storage) หน่วยความจำ 3 (Local Storage) หน่วยความจำร่วม (Global Storage) ช่องทางสื่อสารร่วม โปรเซสเซอร์ 1 โปรเซสเซอร์ 2 โปรเซสเซอร์ 3 การเชื่อมโยงอย่างแน่น(tightly coupling) • มีโครงสร้างหลักที่สำคัญคือโปรเซสเซอร์จะมีการใช้หน่วยความจำหลักร่วมกันโดยโปรเซสเซอร์แต่ละตัวอาจจะมีหน่วยความจำเป็นของตัวเองหรือไม่ก็ได้ดังรูป

  46. วิธีการควบคุมการทำงานทำได้โดยอาจให้โปรเซสเซอร์แต่ละตัวควบคุมการทำงานของตัวมันเองเรียกว่าการทำงานแบบอิสระ(Fully Independent)โดยมากระบบประเภทการเชื่อมโยงแบบหลวมจะมีการทำงานในลักษณะนี้เพราะการติดต่อกันระหว่างโปรเซสเซอร์มักเป็นเพียงการส่งข้อมูลโปรเซสเซอร์จึงต้องควบคุมการทำงานด้วยตัวเองโดยโปรเซสเซอร์แต่ละตัวอาจแยกใช้OS ที่ต่างกันได้

  47. มีอีกวิธีหนึ่งที่ใช้กับระบบที่มีการเชื่อมโยงอย่างแน่นโดยจะให้โปรเซสเซอร์ตัวหนึ่งควบคุมการทำงานของโปรเซสเซอร์อื่นๆเราเรียกโปรเซสเซอร์ที่ทำหน้าที่ควบคุมนี้ว่ามาสเตอร์(Master) และเรียกโปรเซสเซอร์ที่ถูกควบคุมว่าสเลฟ(Slave)ระบบการทำงานแบบนี้เรียกว่าระบบมาสเตอร์-สเลฟ(Master-Slave)ประสิทธิภาพการทำงานของระบบแบบนี้ขึ้นอยู่กับประสิทธิภาพของมาสเตอร์ถ้าโปรเซสเซอร์ที่เป็นมาสเตอร์มีประสิทธิภาพดีแบ่งการทำงานให้โปรเซสเซอร์สเลฟที่เหมาะสมและมีการควบคุมที่ดีระบบก็จะมีประสิทธิภาพดีตามไปด้วยระบบปฏิบัติการของระบบนี้จะทำงานอยู่บนโปรเซสเซอร์มาสเตอร์

  48. ถ้าโปรเซสเซอร์ทุกตัวที่ต่อเชื่อมโยงถึงกันในระบบมีลักษณะเหมือนกันหมดและถูกควบคุมโดยOS ของระบบเราอาจให้โปรเซสเซอร์ในระบบผลัดกันทำหน้าที่รันOS ของระบบได้โดยที่ OS ของระบบสามารถเคลื่อนย้ายไปทำงานบนโปรเซสเซอร์ใดๆในระบบก็ได้เรียกระบบแบบนี้ว่าระบบสมมาตร(Symmetrical Sytstem)

  49. ในระบบคอมพิวเตอร์ที่มีหลายซีพียูปัญหาเราควรจะแยกเป็น 2 กรณีคือกรณีที่ซีพียูหลายตัวนั้นมีลักษณะการทำงานเหมือนกันทุกประการกับซีพียูเหล่านั้นแตกต่างกันซึ่งวิธีการจัดการก็จะยุ่งยากแตกต่างกันในที่นี้เราจะพิจารณาในกรณีที่ซีพียูหลายตัวนั้นมีลักษณะการทำงานเหมือนกันทุกประการ

  50. สิ่งที่ควรต้องสังเกตเป็นอันดับแรก คือการแชร์โหลดให้กับซีพียู (Load Sharing) เพื่อให้ซีพียูแต่ละตัวมีงานทำมากพอๆกันซึ่งวิธีการง่ายๆก็คือการจัดให้ระบบคิวมีเพียงระบบเดียวไม่ว่าจะมีกี่ซีพียูก็ตามวิธีนี้จะมีการนำโปรเซสออกจากคิวเพื่อไปใช้งานซีพียูในทันทีที่มีซีพียูตัวใดตัวหนึ่งว่างงานและพบว่าในคิวยังมีโปรเซสรออยู่ • การทำงานในลักษณะที่ซีพียูแต่ละตัวต่างก็มีระบบการจัดเวลาของตนเองจะต้องมีการออกแบบอย่างระมัดระวังในเรื่องของการที่โปรเซสแต่ละโปรเซสอาจจะต้องการใช้ข้อมูลในฐานข้อมูลในเวลาเดียวกันรวมทั้งต้องระวังไม่ให้ซีพียูที่ว่างงานพร้อมกันเลือกเอาโปรเซสจากคิวที่ใช้ร่วมกันอยู่พร้อมกันซึ่งอาจทำให้มีการดึงเอาโปรเซสเดียวกันเข้าไปทำก็ได้การแก้ปัญหาด้วยการปล่อยงานที่ดึงออกจากคิวพร้อมกับซีพียูตัวอื่นๆทิ้งไปก็ยังสามารถก่อปัญหาในเรื่องที่โปรเซสถูกปล่อยทิ้งออกจากซีพียูพร้อมกันหมดซึ่งอาจทำให้โปรเซสนั้นหายไปจากระบบเลยก็ได้

More Related