570 likes | 919 Views
การจัดการโปรเซสเซอร์ (CPU Scheduling). การจัดสรรซีพียู.
E N D
การจัดการโปรเซสเซอร์(CPU Scheduling)
การจัดสรรซีพียู • จุดประสงค์หลักของการรันโปรแกรมหลายโปรแกรมคือความต้องการที่จะให้ซีพียูมีการทำงานตลอดเวลาเพื่อให้มีการใช้ซีพียูอย่างเต็มที่และเต็มประสิทธิภาพซึ่งระบบคอมพิวเตอร์ที่มีซีพียูตัวเดียวในเวลาใดเวลาหนึ่งซีพียูจะทำงานได้เพียงงานเดียวเท่านั้นถ้ามีหลายโปรแกรมหรือหลายงานงานที่เหลือจะต้องคอยจนกว่าจะมีการจัดการให้เข้าไปใช้ซีพียูได้ • DOS จะสามารถรันโปรแกรมได้ทีละโปรแกรมการทำงานของระบบจะไม่ซับซ้อนซีพียูจะหยุดการทำงานในระหว่างที่โปรเซสคอยอินพุต/เอาต์พุตซึ่งการคอยเหล่านี้เป็นการเสียเวลาซีพียูไปโดยเปล่าประโยชน์
การจัดสรรซีพียู • จึงได้มีการพัฒนาระบบปฏิบัติการที่สามารถรันโปรแกรมได้ทีละหลายๆโปรแกรมดังนั้นเมื่อใดก็ตามที่ซีพียูต้องคอยอินพุต/เอาต์พุตก็จะมีการนำเอาโปรเซสที่ต้องการใช้ซีพียูและรอคอยการใช้อยู่นั้นเข้ามาใช้ซีพียูทันทีซึ่งระบบจะจัดการเอาโปรแกรมที่ต้องคอยอินพุต/เอาต์พุตออกไปก่อนเพื่อที่จะให้โปรแกรมอื่นที่คอยใช้ซีพียูนี้สามารถเข้ามาได้ถ้าทำงานในแบบนี้ไปเรื่อยๆซีพียูก็จะได้มีงานทำเกือบตลอดเวลากับโปรแกรมหลายๆโปรแกรมที่อยู่ในระบบ
ช่วงเวลาอินพุต/เอาต์พุตและช่วงเวลาใช้ซีพียู(I/O and CPU Burst Cycle) • ความสำคัญของการจัดเวลาของซีพียูนั้นขึ้นอยู่กับคุณลักษณะของโปรเซสโดยทั่วๆไปการเอ็กซิคิวต์โปรเซสจะประกอบด้วยเวลาที่ใช้ซีพียู(CPU Burst Cycle) และเวลาที่ต้องคอยอุปกรณ์อินพุต/เอาต์พุตในขณะที่มีการเอ็กซิคิวต์โปรเซสจะมีการสลับการทำงานระหว่าง 2 ช่วงเวลานี้เท่านั้นและจะเกิดไม่พร้อมกันการเอ็กซิคิวต์จะเริ่มจากการใช้ซีพียูและตามด้วยการคอยอินพุต/เอาต์พุตเมื่อจบการรอคอยก็จะตามมาด้วยเวลาของซีพียูสลับกันไปเรื่อยๆจนกว่าจะจบการเอ็กซิคิวต์ซึ่งการสิ้นสุดการเอ็กซิคิวต์นี้มักจะเป็นการเวลาซีพียูเพื่อทำการจบสิ้นหรือสิ้นสุดโปรเซสมากกว่าจะรอคอยอินพุต/เอาต์พุต
ตัวจัดการเวลาซีพียู(CPU Scheduler) • เมื่อใดก็ตามที่ซีพียูว่างระบบปฏิบัติการจะต้องเข้ามาเลือกโปรเซสตัวใดตัวหนึ่งที่คอยอยู่ในคิวเข้ามาใช้งานซีพียูการเลือกโปรเซสเพ่อเข้ามาใช้ซีพียูนี้จะถูกจัดการด้วยส่วนที่เรียกว่า“ตัวจัดคิวระยะสั้น”(Short-term Scheduler)หรือ“ตัวจัดการเวลาซีพียู”(CPU Scheduler)ตัวจัดการเวลานี้จะเลือกโปรเซสที่อยู่ในหน่วยความจำที่พร้อมในการเอ็กซิคิวต์ที่สุดเพื่อให้ครอบครองเวลาซีพียูและทรัพยากรที่เกี่ยวข้องกับโปรเซสนั้น
บล็อกควบคุมโปรเซส(PBC : Process Control Block) • คิวของโปรเซสในหน่วยความจำนั้นไม่จำเป็นที่ต้องเป็นแบบมาก่อนได้ก่อน(FIFO : First In First Out) เสมอไปอาจจะเป็นไปตามบลำดับความสำคัญ (Priority) โครงสร้างต้นไม้ (Tree)หรืออาจจะเป็นลิงค์ลิสต์(Linked List) ก็ได้อย่างไรก็ตามโปรเซสทุกโปรเซสที่พร้อมจะใช้ซีพียูจะต้องมีดอกาสได้เข้าครอบครองซีพียูไม่เวลาใดก็เวลาหนึ่งซึ่งการเข้าและออกจากการครอบครองซีพียูแต่ละครั้งจำเป็นต้องมีการเก็บข้อมูลไว้เสมอว่าเข้ามาแล้วได้ทำอะไรไปบ้างช่วงต่อไปจะต้องทำอะไรดดยใช้พื้นที่หน่วยความจำส่วนหนึ่งเก็บข้อมูลของแต่ละโปรเซสเอาไว้หลังเสร็จสิ้นการใช้ซีพียูพื้นที่หน่วยความจำนี้มีชื่อว่า“บล็อกควบคุมโปรเซส”(PBC : Process Control Block)
การให้สิทธิการจัดเวลา(Preemptive Scheduling) การตัดสินใจของซีพียูในการเลือกเอ็กซิคิวต์โปรเซสใดๆขึ้นอยู่กับสถานการณ์ดังนี้ • 1.เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรัน (run) ไปเป็นสถานะคอย (wait) เช่นในสภาวะที่คอยอินพุต/เอาต์พุตหรือการคอยให้โปรเซสลูกเสร็จสิ้นไปก่อนเป็นต้น • 2.เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะรัน (run) ไปเป็นสถานะพร้อม (ready) เช่นเมื่อมีอินเทอร์รัพท์เกิดขึ้นเป็นต้น • 3.เมื่อมีการเปลี่ยนสถานะของโปรเซสจากสถานะคอย (wait) ไปเป็นสถานะพร้อม (ready) เช่นเมื่อการรอคอยอินพุต/เอาต์พุตเสร็จสิ้นไปแล้ว • 4. เมื่อโปรเซสเสร็จสิ้นไปแล้ว
การเปลี่ยนสถานะ(context switching) ของซีพียู • ในสถานะพร้อม (ready) นั้นเป็นสถานะที่โปรเซสที่พร้อมจะใช้ซีพียูมารอต่อกันเป็นคิวเพื่อที่จะใช้ซีพียูเมื่อซีพียูว่างโปรเซสที่อยู่ต้นคิวจะได้ครอบครองซีพียูและได้เข้าไปอยู่ในสถานะรัน(running) โปรเซสจะอยู่ในสถานะรันได้นานไม่เกินเวลาควอนตัม (Quantum time) ถ้าโปรเซสต้องรอเหตุการณ์บางอย่างโดยไม่มีความจำเป็นต้องใช้ซีพียูโปรเซสนั้นจะถูกย้ายไปอยู่ในสถานะติดขัดแต่ถ้าโปรเซสอยู่ในสถานะรันจนครบกำหนดเวลาควอนตัมโปรเซสนั้นก็จะต้องออกไปรอใช้งานซีพียูในสถานะพร้อมโดยไปต่อที่ท้ายคิวเพื่อเปิดโอกาสให้โปรเซสอื่นได้ใช้ซีพียูบ้างเหตุการณ์ที่โปรเซสเปลี่ยนจากสถานะหนึ่งไปยังสถานะหนึ่งเราเรียกว่าเป็นการเปลี่ยนสถานะ(context switching) ของซีพียู
การเปลี่ยนสถานะจะถือเป็นOverhead ของซีพียูคำว่าOverhead จะหมายถึงการที่ระบบจำเป็นต้องกระทำเพื่อจุดประสงค์บางอย่างซึ่งระบบต้องใช้เวลาในการทำงานเหล่านี้ทำให้เสียเวลาในการทำงานของโปรเซสของผู้ใช้ไปด้วยดังนั้นถ้าระบบมีค่าใช้จ่ายมากระบบก็จะเสียเวลาไปมากสำหรับการเปลี่ยนสถานะของซีพียูจะมีการสูญเสียเวลาสำหรับงานหลักๆ 3 งานคือ • 1.เก็บค่ารีจิสเตอร์และสถานะของเครื่องไว้ในPCB ของโปรเซสที่กำลังจะปลดปล่อยซีพียู • 2.คัดเลือกโปรเซสในสถานะพร้อมเพื่อให้มาครอบครองซีพียู • 3. โหลดค่ารีจิสเตอร์และสถานะของเครื่องจากPCB ของโปรเซสใหม่
ตัวจัดคิวระยะสั้น(Short-term scheduler) • การคัดเลือกหาโปรเซสที่จะเข้าไปอยู่ในสถานะรันเมื่อซีพียูว่างนั้นถือได้ว่าเป็นการจัดสรรซีพียูให้กับโปรเซสต่างๆซึ่งเป็นหน้าที่ของOS ส่วนของOS ที่มีหน้าที่จัดสรรซีพียูเรียกว่าตัวจัดคิวระยะสั้น(Short-term scheduler)
ข้อพิจารณาในการจัดเวลาซีพียูข้อพิจารณาในการจัดเวลาซีพียู • อรรถประโยชน์ของซีพียู(CPU Utilization)คือคำนึงถึงการใช้ประโยชน์จากซีพียูอย่างสูงสุดโดยทำให้ซีพียูมีงานทำมากที่สุดเท่าที่จะทำได้ซึ่งเมื่อคิดเป็นเปอร์เซนต์แล้วการใช้งานซีพียูสามารถวัดได้ออกมาในระหว่าง 0-100 % สำหรับในการทำงานจริงซีพียูควรถูกใช้อยู่ระหว่าง 40-90 % • ทรูพุต (Throughput) ถ้าหากว่าซีพียูทำงานตลอดเวลาก็หมายความว่างานก็กำลังถูกทำให้เสร็จซึ่งเราสามารถที่จะวัดออกมาได้เป็นจำนวนงานที่เสร็จต่อหน่วยเวลาหรือเรียกว่าทรูพุตสำหรับงานที่มีความยาวมากอัตราการทำงานหรือค่าทรูพุตอาจจะเป็นหนึ่งงานต่อชั่วโมงและก็อาจจะเป็นไปได้ว่างานที่สั้นก็จะทำให้ทรูพุตของระบบวัดได้ถึง 10 งานต่อวินาที
3. เวลาทั้งหมด (Turnaround Time) คือช่วงเวลาทั้งหมดที่ใช้ในการทำงานใดงานหนึ่งตั้งแต่เรีมต้นเข้าไปในระบบจนงานถูกทำเสร็จเรียบร้อยซึ่งจะรวมเอาเวลาที่จะต้องรอที่จะเข้าไปในหน่วยความจำเวลาที่คอยอยู่ในคิวเวลาที่ใช้ซีพียูและเวลาของอินพุต/เอาต์พุตทั้งหมดเข้าด้วยกัน 4. เวลารอคอย (Waiting Time) คือช่วงเวลาที่งานใดงานหนึ่งต้องรอการทำงานของตัวจัดเวลาโดยไม่รวมเวลาของการใช้ซีพียูและเวลาของการติดต่ออินพุต/เอาต์พุตส่วนใหญ่ก็คือเวลาที่งานต้องคอยอยู่ในคิว (Ready Queue) นั่นเอง 5. เวลาตอบสนอง (Response Time) คือเวลาที่วัดระหว่างเวลาที่มีการร้องขอการกระทำใดๆต่อระบบแล้วมีการตอบรับกลับมาซึ่งขึ้นอยู่กับอุปกรณ์อินพุต/เอาต์พุตเช่นเครื่องพิมพ์โดยซีพียูอาจทำการคำนวณใดๆสิ้นสุดแล้วแลได้มีการให้ผลลัพธ์ออกมาและซีพียูก็กำลังทำงานอี่นต่อไปแต่ผลลัพธ์ที่ได้นี้อาจจะต้องใช้เวลาอีกระยะกว่าที่ผู้ใช้จะมองเห็นผลลัพธ์ปรากฏบนกระดาษ (จากเครื่องพิมพ์) เป็นต้น
อัลกอริทึมของการจัดเวลา (Scheduling Algorithms) • คอมโพเนนท์ที่สำคัญอีกตัวหนึ่งที่เกี่ยวข้องกับฟังก์ชันในการจัดเวลาซีพียูก็คือสิ่งที่เรียกว่าDispatcherซึ่งเป็นโมดูลที่ทำหน้าที่ควบคุมการครอบครองเวลาซีพียูของโปรเซสฟังก์ชันนี้ประกอบด้วย 1. การย้าย Context 2. การย้ายไป user mode 3. กระโดดไปยังตำแหน่งที่เหมาะสมของโปรแกรมเพื่อที่จะเริมรันโปรแกรมนั้นใหม่อีกครั้ง
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)
การจัดเวลาแบบมาก่อนได้ก่อน(FCFS : First-Come First-Served) • เป็นวิธีการที่ง่ายที่สุดซึ่งมีหลักการคือโปรเซสใดที่ร้องขอใช้ซีพียูก่อนก็จะได้รับการจัดสรรให้ครอบครองเวลาซีพียูก่อนซึ่งการสร้างอัลกอริทึมนี้ใช้หลักการของคิวมาก่อนได้ก่อน (FIFO queue) เมื่อมีโปรเซสใดเข้ามาอยู่ในคิวแบบนี้ PCB ของงานจะถูกเชื่อมไว้กับหางของคิวเมื่อใดที่ซีพียูว่างลงโปรเซสใดที่มี PCB อยู่ที่หัวของคิวก็จะถูกนำออกมาจากคิวให้เข้าครอบครองเวลาซีพียูได้เลย • ข้อเสียของการจัดคิวแบบFCFS คือค่าเฉลี่ยของการคอยในคิวค่อนข้างสูง
โปรเซส ระยะเวลาความต้องการซีพียู (วินาที) 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)
P3 P2 P1 0 3 6 30 แต่ถ้าสมมติว่าโปรเซสเข้ามาในคิว FIFO ตามลำดับใหม่คือ P3, P2 และ P1 คิวก็จะมีลักษณะที่ต่างออกไปดังนี้ จากสภาวการณ์ที่ 2 นี้เราจะได้ออกมาว่าเวลาคิวของ P3 เท่ากับ 0 วินาทีของ P2 เท่ากับ 3 วินาทีและ P1 เท่ากับ 6 วินาทีซึ่งจะทำให้ค่าเฉลี่ยของการคอยมีค่าเท่ากับ (0+3+6)/3 = 3 วินาทีเท่านั้น
จะเห็นได้ว่าถึงแม้จะมีโปรเซสเหมือนกันรอการเข้าครอบครองซีพียูแต่หากว่าลำดับการเข้าไปในคิวมีความแตกต่างกันแล้วก็อาจทำให้ค่าเฉลี่ยของเวลาในการคอยมีความแตกต่างกันได้มากนั่นก็คือเวลาของการคอยในคิวแบบ FIFO นั้นคงยังไม่ดีพอถ้าหากว่าความต้องการใช้ซีพียูของแต่ละโปรเซสมีคาบเวลาที่แตกต่างกันมาก • ถ้าหากว่าโปรเซสที่เข้ามามีทั้งความต้องการใช้ซีพียูและอินพุต/เอาต์พุตสลับกันไปโปรเซสที่ต้องการใช้ซีพียูในระยะเวลาสั้นๆจะต้องเสียเวลาคอยโปรเซสที่ต้องใช้ซีพียูเป็นระยะเวลานานๆครั้งแล้วครั้งเล่าถ้ามีการสลับกันระหว่างเวลาซีพียูและเวลาอินพุต/เอาต์พุต 100 ครั้งโดยมีลำดับของโปรเซสเป็นP1 P2 P3 ค่าเฉลี่ยของเวลาในการคอยก็จะเป็นค่าเฉลี่ยที่นานที่สุด
การจัดเวลาแบบมาก่อนได้ก่อน(FCFS : First-Come First-Served) • ลักษณะการทำงานของการจัดเวลาซีพียูแบบมาก่อนได้ก่อนนี้เป็นอัลกอริทึมแบบไม่ให้สิทธิ์ก่อนนั่นคือเมื่อโปรเซสใดครอบครองซีพียูแล้วซีพียูจะไม่มีโอกาสได้ว่างจนกว่าความต้องการใช้ซีพียูของโปรเซสนั้นจะเสร็จสิ้นลงด้วยการสลับไปยังเวลาอินพุต/เอาต์พุตซึ่งจะก่อให้เกิดปัญหาใหญ่กับระบบคอมพิวเตอร์แบบแบ่งเวลาเพราะว่าผู้ใช้คนอื่นๆที่อาจมีโปรเซสสั้นๆแต่จะต้องรอโปรเซสยาวๆที่ได้เข้าใช้ซีพียูก่อนทำงานเสร็จสิ้นเสียก่อนซึ่งอาจจะคอยจนอาจไม่ได้ใช้เลยก็ได้
การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short-Job-First Scheduling) • มีแนวคิดที่จะทำให้โปรเซสที่ต้องการคาบเวลาของซีพียูในเวลาถัดไปสั้นที่สุดจะได้รับเลือกให้เข้ามาครอบครองซีพียูก่อนและถ้ามีโปรเซสหลายตัวที่มีคาบเวลาของเวลาซีพียูของช่วงต่อไปเท่าๆกันก็จะใช้หลักการมาก่อนได้ก่อนมาใช้ในการคัดเลือกซึ่งอาจมีชื่อเรียกการคัดเลือกงานแบบนี้ว่าสั้นที่สุดได้ใช้เวลาซีพียูต่อไป(Shortest next CPU burst) เพราะแนวความคิดนี้จะมีการจัดคาบเวลาของเวลาซีพียูช่วงต่อไปเพียงช่วงเดียวมากกว่าการวัดรวมว่าตลอดทั้งโปรแกรมต้องการใช้ซีพียูนานเท่าไหร่พิจารณาตัวอย่างการทำงานของSJF ต่อไปนี้
โปรเซส ระยะเวลาความต้องการซีพียู (วินาที) 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 วินาที
SJF จะให้ค่าเฉลี่ยของการคอยได้ต่ำที่สุดสำหรับชุดของโปรเซสใดๆก็ตามเพราะว่าการเลื่อนโปรเซสที่มีเวลาซีพียูน้อยสุดมาไว้หน้าคิวจะมีการลดเวลาการคอยในโปรเซสที่สั้นมากกว่าการเพิ่มเวลาของโปรเ.ซสที่ยาวเสมอดังนั้นค่าเฉลี่ยของการคอยแบบนี้จึงต่ำที่สุด • สิ่งที่ยากมากสำหรับการใช้วิธี SJF ก็คือการวัดคาบเวลาของซีพียูถัดไปของแต่ละโปรเซสที่ร้องขอเวลาซีพียูเข้ามาซึ่งในระบบการทำงานแบบแบ็ตช์(Batch System) เจ้าของโปรซสจะต้องเป็นผู้บอกช่วงเวลาที่จำกัดของการใช้ซีพียูสำหรับโปรซสให้กับระบบเพื่อใช้เป็นข้อมูลอ้างอิงสำหรับการจัดลำดับซึ่งเจ้าของโปรเซสก็จะพยายามให้มีค่าต่ำที่สุดเพื่อโอกาสในการเข้าไปใช้ซีพียูก่อนจะได้มีมากที่สุดแต่ถ้าคาบเวลาที่กำหนดไว้นี้มีค่าน้อยเกินไปก็จะทำให้โปรแกรมนั้นไม่สามารถคำนวณสำเร็จได้ซึ่งจะต้องเสียเวลามาเริ่มต้นใหม่อีกการจัดเวลาแบบSJF นั้นเป็นวิธีการที่ใช้กันมากในระบบแบ็ตช์หรือการจัดเวลาช่วงยาว(Long-term Scheduling)
การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short-Job-First Scheduling) • แต่ SJF จะเป็นปัญหาของการจัดเวลาช่วงสั้น (Short-term Scheduling) เพราะเราไม่มีทางรู้ได้ว่าความยาวของคาบเวลาการใช้ซีพียูในช่วงต่อไปของแต่ละโปรเซสเป็นเท่าใดวิธีการที่ใช้มักจะเป็นการประมาณเอาจากระยะของเวลาซีพียูในคาบเวลาที่ผ่านมาด้วยการหาค่าเฉลี่ย • การทำงานของอัลกอริทึมSJF นี้เป็นได้ทั้งแบบให้สิทธิ์ก่อนหรือไม่ให้สิทธิ์ก่อนการตัดสินใจจะเกิดขึ้นทุกครั้งเมื่อมีโปรเซสใหม่เข้ามาในคิวในขณะที่ยังมีโปรเซสอื่นใช้งานซีพียูอยู่เพราะว่าโปรเซสใหม่อาจมีคาบเวลาของเวลาซีพียูสั้นกว่าเวลาที่เหลืออยู่ของเวลาซีพียูของโปรเซสที่กำลังใช้ซีพียูอยู่ซึ่งถ้าเป็นแบบนี้อัลกอริทึมที่เป็นแบบให้สิทธิ์ก่อนจะทำการหยุดงานที่กำลังใช้ซีพียูอยู่แต่ถ้าเป็นแบบไม่ให้สิทธิ์ก่อนอัลกอริทึมก็จะปล่อยให้งานที่ทำงานอยู่นั้นใช้ซีพียูจนเสร็จสิ้นเวลาซีพียูของช่วงเวลานั้นบางครั้งการทำSJF แบบให้สิทธิ์ก่อนอาจมีชื่อเรียกว่าShortest-Remaining-Time-First ตัวอย่างเช่น
โปรเซส เวลาที่มาถึง เวลาที่ใช้ P1 P2 P3 P4 0 1 2 3 7 4 9 5 P1 P2 P4 P1 P3 0 1 5 10 17 26 เมื่องานมาถึงคิวตามเวลาที่แสดงไว้ลำดับของการเข้าใช้ซีพียูก็จะเป็นดังนี้
การจัดเวลาแบบงานสั้นทำก่อน(SJF : Short-Job-First Scheduling) • เมื่อโปรเซสP1 เข้ามาเมื่อเวลา 0 วินาทีโปรเซสP1 ก็ได้เข้าไปใช้ซีพียูทันทีเนื่องจากว่ายังไม่มีโปรเซสอื่นเข้ามาเมื่อถึงเวลาที่ 1 วินาทีงานP2 ซึ่งมีคาบเวลาซีพียูสั้นกว่าคือ 4 วินาทีเมื่อเทียบกับP1 ซึ่งยังเหลืออีก 7 วินาทีดังนั้นงานP1 จึงถูกหยุดเอาไว้ก่อนเพื่อP2 จะได้เข้าไปใช้ซีพียูและเนื่องจากคาบเวลาความต้องการใช้ซีพียูของP1 ยังเหลือมากกว่าP4 แต่น้อยกว่าP3 การจัดลำดับการเข้าใช้ซีพียูจึงออกมาตามรูปที่แสดงข้างต้น
การจัดเวลาตามลำดับความสำคัญ(Priority Scheduling) • จะมีวิธีการทำงานแบบSJF แต่ได้มีการกำหนดลำดับความสำคัญของโปรเซสด้วยคาบระยะเวลาความต้องการใช้ซีพียูหรือเวลาซีพียูของแต่ละโปรเซสเช่นโปรเซสใดมีคาบเวลาสั้นที่สุดก็จะมีลำดับความสำคัญมากที่สุดโดยใช้ตัวเลขเป็นตัวบอกซึ่งเราอาจกำหนดว่าตัวเลขน้อยมีลำดับความสำคัญมากหรือตัวเลขมากมีลำดับความสำคัญมากก็ได้ขึ้นอยู่กับว่าจะมีข้อตกลงกันอย่างไรซึ่งต่อไปนี้เราจะกำหนดว่าโปรเซสที่มีตัวเลขน้อยจะถือว่าเป็นโปรเซสที่มีลำดับความสำคัญมากพิจารณาตัวอย่างต่อไปนี้
โปรเซส เวลาที่มาถึง/เวลาที่ใช้ ลำดับความสำคัญ 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 วินาที
การจัดเวลาตามลำดับความสำคัญ(Priority Scheduling) • การกำหนดลำดับความสำคัญของแต่ละโปรเซสสามารถกำหนดได้ทั้งภายในและภายนอกการกำหนดภายในคือการกำหนดลำดับความสำคัญด้วยวิธีการใดวิธีการหนึ่งจากการวัดและคำนวณคุณสมบัติบางอย่างของแต่ละโปรเซสที่สามารถวัดค่าได้คุณสมบัติที่วัดค่าได้เหล่านี้เช่นเวลาของการจำกัดการใช้ซีพียูความต้องการขนาดของหน่วยความจำจำนวนไฟล์ที่ต้องเกี่ยวข้องหรือแม้แต่อัตราส่วนของจำนวนเวลาอินพุต/เอาต์พุตต่อเวลาซีพียูเป็นต้นส่วนการกำหนดจากภายนอกหมายถึงการกำหนดลำดับความสำคัญของโปรเซสใดๆจากวิธีการอื่นๆนอกเหนือจากระบบปฏิบัติการตัวอย่างเช่นราคาค่าเช่าเวลาซีพียูแหล่งที่มาของโปรเซสหรือความเร่งด่วนของโปรเซสเหล่านี้ล้วนสามารถนำมาเป็นตัวที่ใช้สำหรับคำนวณค่าของลำดับความสำคัญของโปรเซสก่อนที่ระบบปฏิบัติการจะรับเอาโปรเซสเข้ามานั่นเอง
วิธีการพิจารณากำหนดลำดับความสำคัญของโปรเซสต่างๆอาจพิจารณาได้จากองค์ประกอบต่างๆเช่นวิธีการพิจารณากำหนดลำดับความสำคัญของโปรเซสต่างๆอาจพิจารณาได้จากองค์ประกอบต่างๆเช่น 1. ผู้ใช้ที่เป็นเจ้าของโปรเซสเช่นโปรเซสของผู้ใช้ธรรมดาจะมีลำดับความสำคัญต่ำกว่าผู้ใช้ที่เป็นผู้ควบคุมดูแลระบบ 2. ประเภทของโปรเซสเช่นถ้าเป็นโปรเซสในbatch mode มักมีลำดับความสำคัญต่ำกว่าinteractive mode เพราะในระบบโต้ตอบต้องตอบสนองให้กับผู้ใช้ให้เร็วที่สุดเท่าที่จะทำได้แต่สำหรับในระบบแบตช์นั้นเราส่งงานให้ระบบทำแล้วรอรับผลลัพธ์จากระบบเมื่องานนั้นเสร็จสิ้น 3. ผู้ใช้ที่ยอมจ่ายเงินเพิ่มเพื่อให้งานเสร็จเร็วขึ้น 4. ระยะเวลาที่โปรเซสเข้ามาอยู่ในระบบถ้าเข้ามาอยู่นานแล้วจะได้รับลำดับความสำคัญเพิ่มขึ้นเพราะเห็นว่าควรจะได้จบออกไปจากระบบเสียทีแต่ในบางระบบก็อาจมีความเห็นแตกต่างกันคือไหนๆก็อยู่นานแล้วอยู่นานอีกสักหน่อยคงจะไม่เป็นไร(ในกรณีโปรเซสมีขนาดใหญ่มากๆ )
ปัญหาของอัลกอริทึมแบบนี้คือโปรเซสที่มีลำดับความสำคัญต่ำอาจจะไม่มีโอกาสได้เข้าไปใช้ซีพียูเลยถ้าหากว่ามีโปรเซสที่มีลำดับความสำคัญสูงกว่าอยู่เป็นจำนวนมากซึ่งโดยปกติแล้วโปรเซสที่มีลำดับความสำคัญต่ำเหล่านี้กว่าจะได้รับซีพียูมาทำงานก็อาจจะเป็นเวลานานหรือไม่ก็ต้องถูกยกเลิกไปในที่สุดเพราะระบบคอมพิวเตอร์อาจมีการติดขัดและต้องเริ่มเปิดเครื่องกันใหม่ปัญหาของอัลกอริทึมแบบนี้คือโปรเซสที่มีลำดับความสำคัญต่ำอาจจะไม่มีโอกาสได้เข้าไปใช้ซีพียูเลยถ้าหากว่ามีโปรเซสที่มีลำดับความสำคัญสูงกว่าอยู่เป็นจำนวนมากซึ่งโดยปกติแล้วโปรเซสที่มีลำดับความสำคัญต่ำเหล่านี้กว่าจะได้รับซีพียูมาทำงานก็อาจจะเป็นเวลานานหรือไม่ก็ต้องถูกยกเลิกไปในที่สุดเพราะระบบคอมพิวเตอร์อาจมีการติดขัดและต้องเริ่มเปิดเครื่องกันใหม่
การแก้ปัญหาทำได้โดยการเพิ่มลำดับความสำคัญให้กับโปรเซสที่ยังไม่เสร็จเหล่านี้ตามระยะเวลาที่คอยอยู่ในคิวเช่นถ้าเรามีการออกแบบให้มีลำดับความสำคัญจาก 0-127 เราอาจเพิ่มอัลกอริทึมพิเศษลงไปว่าถ้าโปรเซสใดคอยการใช้ซีพียูครบ 15 นาทีให้ลดตัวเลขลำดับขั้นลงทีละขั้นและลดลงเรื่อยๆทุกๆ 15 นาทีซึ่งการทำแบบนี้แม้โปรเซสที่เข้ามาในระบบจะมีลำดับความสำคัญต่ำสุดคือ 127 ก็จะมีโอกาสเข้าไปใช้ซีพียูภายในเวลาไม่เกิน 32 ชั่วโมงเพราะในที่สุดโปรเซสนี้ก็จะมีลำดับความสำคัญมากที่สุดคือเท่ากับ 0
การจัดเวลาแบบวนรอบ(RR : Round-Robin Scheduling) • เป็นวิธีการที่คิดขึ้นมาเพื่อใช้กับระบบคอมพิวเตอร์แบบแบ่งเวลาโดยเฉพาะโดยมีลักษณะการทำงานแบบมาก่อนได้ก่อน(FCFS) แต่ให้มีกรรมวิธีของสิทธิ์ก่อนรวมอยู่ด้วยแต่ละโปรเซสที่เข้ามาในระบบจะถูกจำกัดเวลาการเข้าไปใช้ซีพียูเท่าๆกันซึ่งช่วงเวลานี้จะเป็นช่วงเวลาสั้นๆเรียกว่า“เวลาควอนตัม”(Quantum Time) หรือ“ช่วงเวลา”(Time Slice) ระยะเวลาควอนตัมนี้มีความยาวระหว่าง 10 ถึง 100 มิลลิวินาทีและคิวที่ใช้ก็เป็นแบบวงกลม(Circular Queue) ตัวจัดเวลาจะมีการให้ซีพียูกับโปรเซสที่อยู่ในคิวแบบวนไปรอบๆในแต่ละคาบเวลาที่ให้นั้นโดยจะมีความยาวนานของการได้รับซีพียูมากที่สุดคือ 1 ควอนตัมถ้าโปรเซสใดไม่สามารถกระทำได้สำเร็จภายใน 1 ควอนตัมนี้โปรเซสก็จะต้องถูกนำกลับไปไว้ในคิวเช่นเดิมสถานภาพต่างๆของโปรเซสที่ยังทำไม่สำเร็จจะถูกบันทึกไว้เมื่อถึงโอกาสที่โปรเซสนั้นได้ครอบครองซีพียูอีกครั้งก็จะได้เริ่มต้นตันต่อจากครั้งที่แล้วโดยไม่ต้องเริ่มใหม่ทั้งหมด
การสร้างระบบการทำงานแบบวนรอบเราจะทำคิวที่พร้อมทำงาน(Ready Queue) เป็นแบบมาก่อนได้ก่อนไว้สำหรับเก็บโปรเซสต่างๆโปรเซสที่เข้ามาใหม่จะถูกนำมาต่อไว้ที่หางของคิวตัวจัดเวลาจะเลือกเอาโปรเซสที่อยู่ตรงหัวคิวออกมาแล้วกำหนดให้ timer หยุดการให้เวลาซีพียูหลังจากนั้น1 ควอนตัมแล้วนำโปรเซสออกไปต่อที่หางคิวถ้าหากว่าโปรแกรมยังไม่สิ้นสุดการทำงานโปรเซสบางโปรเซสอาจต้องการใช้ซีพียูน้อยกว่า 1 ควอนตัมก็จะออกจากการครอบครองซีพียูเพื่อให้โปรเซสอื่นที่อยู่หัวคิวเข้ามาทำงานต่อไป
โปรเซส เวลาที่ใช้ P1 P2 P3 24 3 3 เวลาเฉลี่ยของการคอยในวิธีRR จะค่อนข้างนานพิจารณาตัวอย่างต่อไปนี้ สมมติว่าเราใช้เวลาควอนตัมเท่ากับ 4 วินาทีโปรเซสP1 ครอบครองซีพียูในครั้งแรก 4 วินาทีแต่เวลาที่ต้องการจริงคือ 24 วินาทีดังนั้นโปรเซสP1 จึงเหลือเวลาที่ต้องการอีก 20 วินาทีแต่เมื่อเวลาควอนตัมแรกหมดลงที่วินาทีที่ 4โปรเซสP1 ก็จะออกจากการครอบครองซีพียูโปรเซสP2 ซึ่งเป็นโปรเซสถัดไปในคิวก็จะได้ครอบครองซีพียูแต่โปรเซสP2 ต้องการครองครองซีพียูแค่ 3 วินาทีดังนั้นโปรเซสP2 จึงทำเสร็จก่อนเวลาควอนตัมจะหมดลงโปรเซส P3 ที่คอยอยู่ถัดไปในคิวจึงได้เข้าครอบครองซีพียูที่เวลา 7 วินาที
P1 P2 P3 P1 P1 P1 P1 P1 0 4 7 10 14 18 22 26 30 ผลของการทำงานแบบควอนตัมต่อโปรเซสดังกล่าวสามารถแสดงได้ดังนี้ ค่าเฉลี่ยของเวลาที่ต้องคอยคือ 17/3 = 5.66 วินาที
หลักการทำงานของ RR คือจะไม่มีโปรเซสใดๆที่จะได้รับโอกาสในการครอบครองซีพียูเกินหนึ่งควอนตัมไม่ว่าโปรเซสที่กำลังใช้งานอยู่นั้นจะเสร็จหรือไม่ก็ตามเมื่อหมดเวลาของหนึ่งควอนตัมโปรเซสที่กำลังครอบครองซีพียูอยู่นั้นก็จะต้องถูกนำออกมาจากซีพียูและถ้ายังไม่เสร็จก็จะถูกนำเข้าไปในคิวการทำงานแบบ RR จึงเป็นการทำงานแบบให้สิทธิ์ก่อน ถ้ามีโปรเซสอยู่ในคิวจำนวนnโปรเซสและระยะเวลาควอนตัมเท่ากับq หน่วยแต่ละโปรเซสที่อยู่ในคิวจะมีเวลาเฉลี่ยของการคอยไม่นานไปกว่า(n-1)q หน่วยก่อนที่จะได้รับการให้เข้าไปใช้ซีพียูอีกครั้งเช่นถ้ามี 5 โปรเซสและระยะเวลาควอนตัมเป็น 20 วินาทีแต่ละโปรเซสจะต้องคอยในคิวโดยเฉลี่ยประมาณไม่เกิน 80 วินาที (อาจจะน้อยกว่านี้ถ้าหากว่ามีโปรเซสใดๆสามารถทำงานเสร็จโดยใช้เวลาน้อยกว่าเวลาควอนตัม)
ประสิทธิภาพของอัลกอริทึมแบบRR นี้ขึ้นอยู่กับการกำหนดขนาดของเวลาควอนตัมถ้าขนาดของเวลาควอนตัมใหญ่หรือนานเกินไปประสิทธิภาพของการวนรอบก็จะใกล้เคียงกับแบบมาก่อนได้ก่อนแต่ถ้าขนาดเล็กมากเกินไปทรูพุตของระบบก็จะช้าลงเนื่องจากการนำเอาโปรเซสเข้าและออกจากการครอบครองซีพียูจะต้องเสียเวลาบางส่วนไปกับการทำDispatcher ซึ่งถ้าขนาดของควอนตัมเล็กใกล้เคียงกับเวลาของDispatcher เวลาของระบบรวมก็จะหมดไปกับการเอาโปรเซสเข้าและออก(Context Switch) นั่นเอง
การจัดเวลาแบบคิวหลายระดับ(Multilevel Queue Scheduling) • การจัดคิวแบบหลายระดับจะใช้วิธีแบ่งคิวออกเป็นหลายๆระดับโดยที่แต่ละระดับหมายถึงระดับโปรเซสที่มีความสำคัญแตกต่างกันซึ่งการแบ่งระดับความสำคัญของโปรเซสนั้นสามารถแบ่งได้หลายลักษณะไม่ว่าจะแบ่งตามขนาดของโปรเซสจำนวนหน่วยความจำที่ต้องใช้หรือจำนวนอินพุต/เอาต์พุตเป็นต้นโดยที่แต่ละคิวยังสามารถใช้หลักการของการจัดเวลาที่แตกต่างกันได้ด้วยเช่นงานที่เป็นforeground ก็อาจใช้การจัดตารางแบบRR ส่วนงานที่เป็นbackground ก็อาจใช้วิธีการจัดตารางเวลาแบบFCFS นอกจากนี้ยังมีการเพิ่มการจัดเวลาระหว่างคิวอีกด้วยซึ่งอาจเป็นได้ทั้งแบบการจัดลำดับความสำคัญแบบคงที่(Fixed-priority preemptive scheduling) หรือการจัดลำดับความสำคัญแบบเปลี่ยนแปลงได้(variable-priority preemptive scheduling) ก็ได้ซึ่งในแบบหลังนี้โปรเซสอาจมีการปรับตัวเองในเรื่องของระดับความสำคัญด้วยการเลื่อนไปมาระหว่างคิวได้
งานที่เป็นฟอร์กราวนด์(Foreground) หรืออินเตอร์แอ็กทีฟ(Interactive) กับงานที่เป็นแบ็คกราวนด์(Background) หรือแบ็ตช์(Batch) ซึ่งงานทั้งสองแบบนี้ต้องการเวลาตอบสนอง(Response time) ที่แตกต่างกันซึ่งสามารถใช้ระบบการจัดเวลาที่แตกต่างกันได้โดยทั่วไปแล้วงานที่เป็นforeground จะมีระดับชั้นความสำคัญเหนือกว่างานที่เป็น background
ตัวอย่างลักษณะการจัดลำดับความสำคัญแบบคงที่ที่มีคิว 5 คิว System process queue highest priority interactive process queue interactive editing process queue batch 14 process queue student process queue lowest priority
แต่ละคิวมีความสำคัญเหนือกว่าคิวที่อยู่ด้านล่างเสมอนั่นคือโปรเซสที่คอยอยู่ในคิวที่มีความสำคัญต่ำจะมีโอกาสได้ออกมาใช้ซีพียูก็ต่อเมื่อคิวที่มีความสำคัญสูงกว่าไม่มีโปรเซสที่ต้องทำเหลืออยู่หรือทำในขณะที่โปรเซสที่มีลำดับความสำคัญกำลังครองครองซีพียูแล้วมีโปรเซสที่มีลำดับความสำคัญสูงกว่าเข้ามาคอยอยู่ในคิวที่สูงกว่าโปรเซสนี้ก็จะถูกนำออกมาจากซีพียูทันทีแต่ละคิวมีความสำคัญเหนือกว่าคิวที่อยู่ด้านล่างเสมอนั่นคือโปรเซสที่คอยอยู่ในคิวที่มีความสำคัญต่ำจะมีโอกาสได้ออกมาใช้ซีพียูก็ต่อเมื่อคิวที่มีความสำคัญสูงกว่าไม่มีโปรเซสที่ต้องทำเหลืออยู่หรือทำในขณะที่โปรเซสที่มีลำดับความสำคัญกำลังครองครองซีพียูแล้วมีโปรเซสที่มีลำดับความสำคัญสูงกว่าเข้ามาคอยอยู่ในคิวที่สูงกว่าโปรเซสนี้ก็จะถูกนำออกมาจากซีพียูทันที แต่ละคิวอาจจะมีการจัดการคนละแบบหรือแบบเดียวกันแต่มีเวลาควอนตัมที่แตกต่างกันและเพื่อป้องกันไม่ให้โปรเซสที่อยู่ในคิวต่ำต้องคอยนานเกินไปหรืออาจไม่มีโอกาสได้เข้าครองครองซีพียูเลยก็อาจจะต้องมีการกำหนดสัดส่วนเวลาให้กับแต่ละคิวในการครอบครองซีพียูเช่นกำหนดให้เวลา 80% เป็นของโปรเซสที่เป็นforeground และอีก 20% เป็นของงาน background เป็นต้น
สิ่งสำคัญที่ต้องคำนึงถึงเมื่อต้องการที่จะออกแบบการจัดเวลาแบบนี้คือสิ่งสำคัญที่ต้องคำนึงถึงเมื่อต้องการที่จะออกแบบการจัดเวลาแบบนี้คือ 1. จำนวนของคิว 2. วิธีของการจัดเวลาของแต่ละคิว 3. หลักเกณฑ์ในการตัดสินใจเพิ่มความสำคัญของโปรเซส 4. หลักเกณฑ์ในการตัดสินใจลดความสำคัญของโปรเซส 5. หลักเกณฑ์ในการตัดสินใจนำเอาโปรเซสที่ต้องการครอบครองซีพียูเข้ามาในคิว
การจัดเวลาของมัลติเพิลโปรเซสเซอร์ (Multiple-ProcessorScheduling) ในระบบหลายโปรเซสเซอร์นั้นเราทราบว่าจะโปรเซสเซอร์หลายตัวช่วยกันทำงานคอมพิวเตอร์ประเภท MIMD นั้นโปรเซสเซอร์แต่ละตัวทำงานเป็นอิสระมีข้อมูลและคำสั่งเป็นของตนเองดังนั้นมันจึงต้องมีกลไกพิเศษเพื่อช่วยควบคุมการทำงานของมันเพื่อให้ทั้งหมดสามารถทำงานประสานกันได้อย่างมีประสิทธิภาพแต่ก่อนอื่นเราต้องทำให้โปรเซสเซอร์ต่างๆเหล่านั้นสามารถติดต่อส่งข้อมูลระหว่างกันให้ได้เสียก่อนซึ่งเราเรียกการติดต่อนี้ว่าการเชื่อมโยง(Coupling)การเชื่อมโยงระหว่างโปรเซสเซอร์แบ่งได้เป็น 2 ประเภทคือ
ช่องทางสื่อสารร่วม โปรเซสเซอร์ 1 โปรเซสเซอร์ 2 โปรเซสเซอร์ 3 หน่วยความจำ 1 หน่วยความจำ 2 หน่วยความจำ 3 การเชื่อมโยงอย่างหลวม(loosely coupling) • โปรเซสเซอร์แต่ละตัวจะมีหน่วยความจำหลักและหน่วยความจำรองเป็นของตนเองและติดต่อรับส่งข้อมูลผ่านทางช่องทางสื่อสารร่วม(shared communication path) ดังรูป
หน่วยความจำร่วม (Global Storage) ช่องทางสื่อสารร่วม โปรเซสเซอร์ 1 โปรเซสเซอร์ 2 โปรเซสเซอร์ 3 หน่วยความจำ 1 (Local Storage) หน่วยความจำ 2 (Local Storage) หน่วยความจำ 3 (Local Storage) หน่วยความจำร่วม (Global Storage) ช่องทางสื่อสารร่วม โปรเซสเซอร์ 1 โปรเซสเซอร์ 2 โปรเซสเซอร์ 3 การเชื่อมโยงอย่างแน่น(tightly coupling) • มีโครงสร้างหลักที่สำคัญคือโปรเซสเซอร์จะมีการใช้หน่วยความจำหลักร่วมกันโดยโปรเซสเซอร์แต่ละตัวอาจจะมีหน่วยความจำเป็นของตัวเองหรือไม่ก็ได้ดังรูป
วิธีการควบคุมการทำงานทำได้โดยอาจให้โปรเซสเซอร์แต่ละตัวควบคุมการทำงานของตัวมันเองเรียกว่าการทำงานแบบอิสระ(Fully Independent)โดยมากระบบประเภทการเชื่อมโยงแบบหลวมจะมีการทำงานในลักษณะนี้เพราะการติดต่อกันระหว่างโปรเซสเซอร์มักเป็นเพียงการส่งข้อมูลโปรเซสเซอร์จึงต้องควบคุมการทำงานด้วยตัวเองโดยโปรเซสเซอร์แต่ละตัวอาจแยกใช้OS ที่ต่างกันได้
มีอีกวิธีหนึ่งที่ใช้กับระบบที่มีการเชื่อมโยงอย่างแน่นโดยจะให้โปรเซสเซอร์ตัวหนึ่งควบคุมการทำงานของโปรเซสเซอร์อื่นๆเราเรียกโปรเซสเซอร์ที่ทำหน้าที่ควบคุมนี้ว่ามาสเตอร์(Master) และเรียกโปรเซสเซอร์ที่ถูกควบคุมว่าสเลฟ(Slave)ระบบการทำงานแบบนี้เรียกว่าระบบมาสเตอร์-สเลฟ(Master-Slave)ประสิทธิภาพการทำงานของระบบแบบนี้ขึ้นอยู่กับประสิทธิภาพของมาสเตอร์ถ้าโปรเซสเซอร์ที่เป็นมาสเตอร์มีประสิทธิภาพดีแบ่งการทำงานให้โปรเซสเซอร์สเลฟที่เหมาะสมและมีการควบคุมที่ดีระบบก็จะมีประสิทธิภาพดีตามไปด้วยระบบปฏิบัติการของระบบนี้จะทำงานอยู่บนโปรเซสเซอร์มาสเตอร์
ถ้าโปรเซสเซอร์ทุกตัวที่ต่อเชื่อมโยงถึงกันในระบบมีลักษณะเหมือนกันหมดและถูกควบคุมโดยOS ของระบบเราอาจให้โปรเซสเซอร์ในระบบผลัดกันทำหน้าที่รันOS ของระบบได้โดยที่ OS ของระบบสามารถเคลื่อนย้ายไปทำงานบนโปรเซสเซอร์ใดๆในระบบก็ได้เรียกระบบแบบนี้ว่าระบบสมมาตร(Symmetrical Sytstem)
ในระบบคอมพิวเตอร์ที่มีหลายซีพียูปัญหาเราควรจะแยกเป็น 2 กรณีคือกรณีที่ซีพียูหลายตัวนั้นมีลักษณะการทำงานเหมือนกันทุกประการกับซีพียูเหล่านั้นแตกต่างกันซึ่งวิธีการจัดการก็จะยุ่งยากแตกต่างกันในที่นี้เราจะพิจารณาในกรณีที่ซีพียูหลายตัวนั้นมีลักษณะการทำงานเหมือนกันทุกประการ
สิ่งที่ควรต้องสังเกตเป็นอันดับแรก คือการแชร์โหลดให้กับซีพียู (Load Sharing) เพื่อให้ซีพียูแต่ละตัวมีงานทำมากพอๆกันซึ่งวิธีการง่ายๆก็คือการจัดให้ระบบคิวมีเพียงระบบเดียวไม่ว่าจะมีกี่ซีพียูก็ตามวิธีนี้จะมีการนำโปรเซสออกจากคิวเพื่อไปใช้งานซีพียูในทันทีที่มีซีพียูตัวใดตัวหนึ่งว่างงานและพบว่าในคิวยังมีโปรเซสรออยู่ • การทำงานในลักษณะที่ซีพียูแต่ละตัวต่างก็มีระบบการจัดเวลาของตนเองจะต้องมีการออกแบบอย่างระมัดระวังในเรื่องของการที่โปรเซสแต่ละโปรเซสอาจจะต้องการใช้ข้อมูลในฐานข้อมูลในเวลาเดียวกันรวมทั้งต้องระวังไม่ให้ซีพียูที่ว่างงานพร้อมกันเลือกเอาโปรเซสจากคิวที่ใช้ร่วมกันอยู่พร้อมกันซึ่งอาจทำให้มีการดึงเอาโปรเซสเดียวกันเข้าไปทำก็ได้การแก้ปัญหาด้วยการปล่อยงานที่ดึงออกจากคิวพร้อมกับซีพียูตัวอื่นๆทิ้งไปก็ยังสามารถก่อปัญหาในเรื่องที่โปรเซสถูกปล่อยทิ้งออกจากซีพียูพร้อมกันหมดซึ่งอาจทำให้โปรเซสนั้นหายไปจากระบบเลยก็ได้