เนื้อหา
-การจัดเวลาซีพียู
-การจัดคิวในระยะสั้น
-การจัดคิวในระยะยาว
-การจัดคิวในระยะสั้น
-การจัดคิวในระยะยาว
-ระบบหลายโปรเซสเซอร์
-การทำงานของระบบหลายโปรเซสเซอร์
การจัดเวลาซีพียู (CPU Scheduling)
การจัดเวลาซีพียู (CPU Scheduling)
เป็นหลักการทำงานหนึ่งของระบบปฏิบัติการที่ทำให้คอมพิวเตอร์มีความสามารถในการรันโปรแกรมหลาย
ๆ โปรแกรมในเวลาเดียวกัน
ซึ่การแบ่งเวลาการเข้าใช้ซีพียูให้เข้ากับโปรเซสที่อาจถูกส่งเข้ามาหลาย ๆ
โปรเซสพร้อม ๆ กัน ในขณะที่ซีพียูอาจมีจำนวนน้อยกว่าจำนวนโปรเซส
หรืออาจมีซีพียูเพียงตัวเดียว
จะทำให้คอมพิวเตอร์สามารถทำงานได้ในปริมาณงานที่มากขึ้นกว่าการที่ให้ซีพียูทำงานให้เสร็จทีละโปรเซส
ในบทนี้ จะพูดถึงอัลกอลิทึมมีแตกต่างกัน ข้อดีข้อเสีย
และความเหมาะสมต่อระบบงานแบบต่าง ๆ เพื่อการเลือกใช้อย่างถูกต้อง
เป้าหมาย
ใช้งานซีพียูได้อย่างเต็มประสิทธิภาพ
สิ่งที่ต้องคำนึง
ในระบบโปรเซสเซอร์เดียวซีพียูจะทำงานได้ครั้งละ 1 งาน
ถ้ามีหลาย ๆ งานจะต้องเกิดการรอ
สิ่งที่ต้องคำนึง
ในระบบโปรเซสเซอร์เดียวซีพียูจะทำงานได้ครั้งละ 1 งาน
ถ้ามีหลาย ๆ งานจะต้องเกิดการรอ
ระบบโปรแกรมเดียว
-ไม่ซับซ้อน-ทำงานทีละโปรแกรมจนเสร็จกระบวนการ
-ทำงานตัวเองจนเสร็จ หรือจนกระทั่งมีการรออะไรบางอย่าง เช่น I/O
-การรอนี้ทำให้ซีพียูเกิดการว่างงาน อยู่เฉย (idle)
ระบบหลายโปรแกรม
-เสมือนกับหลายโปรแกรมดำเนินไปพร้อมกัน-จะไม่ยอมให้ซีพียูเกิดการรอ
-โปรเซสใดมีการรอการใช้ อุปกรณ์ I/O จะมีการนำออกไปจากซีพียู และนำโปรเซสใหม่เข้า ไปใช้งานซีพียูแทน
ข้อพิจารณาในการจัดเวลา
อัลกอริทึมของการจัดเวลาซีพียู มีคุณสมบัติแตกต่างกันไป ซึ่งอาจจะมีการให้ความสำคัญกับโปรเซสอย่างมากกว่าโปรเซสอื่นๆ ดังนั้นการเลือกอัลกอริทึมสำหรับใช้ในสถาการณ์ต่างๆนั้น เราจำเป็นที่จะต้องพิจารณาถึงคุณสมบัติ เหล่านี้ให้ดีว่ามีข้อดีข้อเสีย อย่างไร
ข้อพิจารณาหลายข้อ ได้ถูกำหนดไว้เพื่อใช้ไปในการเปรียบเทียบอัลกอริทึมต่างๆ ซึ่งลักษณะข้อพิจารณาแต่ละชนิดนั้น สามารถสร้างความแตกต่างให้เห็นได้อย่างชัดเจนในการตัดสินว่าอัลกอริทึมใดดีที่สุด ข้อการพิจารณาดังกล่าวนี้มีดังนี้
- อรรถประโยชน์ของซีพียู (CPU utilization) คือคำนึงถึงการใช้ประโยชน์จากซีพียูอย่างสูงสุด โดยทำให้ซีพียูมีการทำงานมากที่สุดเท่าที่จะทำได้ คิดเป็นเปอร์เซนต์ระหว่าง 0-100% ซีพียูควรถูกใช้งานระหว่าง 40-90%
- ทรูพุต (Throughput) ถ้าหากว่าซีพียูทำงานตลอดเวลาก็หมายความว่างานก็กำลังถูกให้ให้เสร็จ ซึ่งเราสามารถวัดออกมาได้เป็นจำนวนงานที่เสร็จต่อหน่วยเวลา หรือเรียกว่าทรูอินพุต สำหรับงานที่ยาวมาก อัตราการทำงานหรือค่าอินพุต อาจจะเป็นหนึ่งงานต่อชั่วโมง และก็อาจจะเป็นไปได้ว่างานที่สั้น ก็จะทำให้ทรูอินพุตของระบบสามารถวัดได้ถึง 10 งานต่อวินาที
- เวลาทั้งหมด (Turnaround Time) คือช่วงเวลาทั้งหมดที่ใช้ในการทำงานใดงานหนึ่งตั้งแต่เริ่มต้นเข้าไปในระบบ จนงานถูกทำเสร็จเรียบร้อย ซึ่งจะรวมเอาเวลาที่จะต้องรอที่จะเข้าไปในหน่วยความจำ เวลาที่คอยอยู่ในคิว เวลาที่ใช้ซีพียู และเวลาของอินพุต/เอาต์พุต ทั้งหมดเข้าด้วยกัน
- เวลาคอย (Waiting Time) คือช่วงเวลาที่งานใดงานหนึ่งต้องรอการทำงานของตัวจัดเวลา โดยไม่รวมเวลาของการใช้ซีพียู และเวลาของการติดต่ออินพุต/เอาต์พุต ส่วนใหญ่ก็คือเวลาที่งานต้องคอยอยู๋ในคิว (Ready Queue) นั้นเอง
- เวลาตอบสนอง (Response Time)คือเวลาที่วัดระหว่างเวลาที่มีการเรียกร้องขอการกระทำใดๆต่อระบบแล้วมีการตอบรับกลับมา ซึ่งในบางโปรแกรมที่มีการติดต่อกับผู้ใช้ภายนอกมากๆ เวลารวมทั้งหมดอาจไม่ใช่จุดประสงค์หลักที่ต้องการ เพราะเมื่อมีการติดต่อกับโปรแกรมกับผู้ใช้งานภายนอกนั้น ระบบปฏิบัตืการจะสิ้นสุดการรับผิดชอบเมื่อการร้องขออินพุต/เอาต์พุต สิ้นสุดลง ต่อจากนั้นระบบปฏิบัติการก็จะไปจัดการเรื่องภายในเกี่ยวข้องกับซีพียู อุปกรณ์อินพุต/เอาต์พุตต่างๆที่ติดอยู่กับระบบเหล่านี้ก็จะเป็นผู้ติดต่อกับผู้ใช้งาน ดังนั้นเรื่องความเร็วของเวลาตอบสนองมักจะขึ้นอยู่กับอุปกรณ์ อินพุต/เอาต์พุตเหล่านี้ ตัวอย่างเช่น เครื่องพิมพ์ ซีพียูอาจใช้คำนวณใดๆสิ้นสุดแล้ว ได้มีการให้ผลลัพธ์ออกมา และซีพียูก็จะทำงานอื่นต่อไปแล้ว แต่ผลลัพธ์ที่ได้นี้อาจจะต้องใช้เวลาอีกซักระยะยาวกว่าผู้ใช้จะมองเห็นผลลัพธ์ปรากฎบนกระดาษอย่างนี้ เป็นต้น
จากการวัดลักษณะต่างๆของระบบดังกล่าวข้างต้นสรุปได้ว่าสิ่งที่ผู้ออกแบบระบบการจัดการเวลาต้องการก็คือ การทำให้เวลาในการทำงานสั้นที่สุดนั้นเอง แต่ในความเป็นตริงแล้วอาการได้อย่างเสียอย่างมักจะต้องเหิดขึ้น คือเราไม่มามารถ ที่จะได้ระบบที่มามารถทำให้มีการใช้ซีพียูได้สูงสุด โดยที่มีทรูพุท มากที่สุด มีเวลารวมเร็วที่สุด และได้เวลาตอบสนองเร็วที่สุดพร้อมๆกัน ดังนั้นการหาจุดพอดีจากค่าเฉลี่ยของคุณสมบัคิแต่ละชนิดจึงมีความจำเป็นซึ่งบางครั้งอาจจะต้องมีการกำหนดจุดที่ยอมรับได้ไว้จุดใดจุดหนึ่ง ถ้าหากว่าไม่สามารถหาค่าเฉลี่ยได้
อย่างไรก็ตามก็ได้มีการแนะแนวทางไว้ว่า สำหรับระบบคอมพิวเตอร์ที่ทำงานแบบอินเทอร์เอ็กทีฟ ในระบบแบเวลา การทำให้เวลาตอบสนองมีความคงที่แน่นอนสูงสุด มีความสำคัญกว่าการที่ทำให้ระบบมีทรูพุตสูงสุด เพราะว่าผู้ใช้งานอาจจะต้องการระบบแบ่งเวลาในการตอบสนองที่แน่นอนสำหรับผู้ใช้หลายๆคน อย่างไรก็ตามความแน่นอนและเชื่อถือได้ของการตอบสนองคำสั่งในระบบแบ่งเวลาก็อาจเป็นเรื่องที่ไม่มีความสำคัญมากนักในระบบของการทำงาน
หลังจากที่เราได้รู้จักลักษณะต่างๆ ของการจัดเวลาของการทำงานต่างๆ ภานในเครื่องคอมพิวเตอร์แล้ว ต่อไปนี้เราก็จะไปดูรายละเอียดว่า ในการทำงานแต่ละแบบนั้นต้องทำอะไรกันบ้าง เกี่ยวข้องกับระบบการทำงานอะไร แล้วต้องการทรัพยากรชนิดใด ซึ่งการอธิบายให้เข้าใจว่าได้ดีก็ต้องอาศัยตัวอย่างที่มีเวลาซีพียู และเวลาอินพุต/เอาต์พุต หลายร้อยครั้งสลับกัน แต่ในบทนี้จะมีการใช้ตัวอย่างของงานที่มีเวลาซีพียูครั้งเดียว และมุ่งความสนใจไปที่การเปรียบเทียบนะกว่างค่าเฉลี่ยของเวลารอคอย หรือเวลาที่จะต้องคอยอยู่ในคิวเท่านั้น
อัลกอริทึมของการจัดเวลาซีพียู มีคุณสมบัติแตกต่างกันไป ซึ่งอาจจะมีการให้ความสำคัญกับโปรเซสอย่างมากกว่าโปรเซสอื่นๆ ดังนั้นการเลือกอัลกอริทึมสำหรับใช้ในสถาการณ์ต่างๆนั้น เราจำเป็นที่จะต้องพิจารณาถึงคุณสมบัติ เหล่านี้ให้ดีว่ามีข้อดีข้อเสีย อย่างไร
ข้อพิจารณาหลายข้อ ได้ถูกำหนดไว้เพื่อใช้ไปในการเปรียบเทียบอัลกอริทึมต่างๆ ซึ่งลักษณะข้อพิจารณาแต่ละชนิดนั้น สามารถสร้างความแตกต่างให้เห็นได้อย่างชัดเจนในการตัดสินว่าอัลกอริทึมใดดีที่สุด ข้อการพิจารณาดังกล่าวนี้มีดังนี้
- อรรถประโยชน์ของซีพียู (CPU utilization) คือคำนึงถึงการใช้ประโยชน์จากซีพียูอย่างสูงสุด โดยทำให้ซีพียูมีการทำงานมากที่สุดเท่าที่จะทำได้ คิดเป็นเปอร์เซนต์ระหว่าง 0-100% ซีพียูควรถูกใช้งานระหว่าง 40-90%
- ทรูพุต (Throughput) ถ้าหากว่าซีพียูทำงานตลอดเวลาก็หมายความว่างานก็กำลังถูกให้ให้เสร็จ ซึ่งเราสามารถวัดออกมาได้เป็นจำนวนงานที่เสร็จต่อหน่วยเวลา หรือเรียกว่าทรูอินพุต สำหรับงานที่ยาวมาก อัตราการทำงานหรือค่าอินพุต อาจจะเป็นหนึ่งงานต่อชั่วโมง และก็อาจจะเป็นไปได้ว่างานที่สั้น ก็จะทำให้ทรูอินพุตของระบบสามารถวัดได้ถึง 10 งานต่อวินาที
- เวลาทั้งหมด (Turnaround Time) คือช่วงเวลาทั้งหมดที่ใช้ในการทำงานใดงานหนึ่งตั้งแต่เริ่มต้นเข้าไปในระบบ จนงานถูกทำเสร็จเรียบร้อย ซึ่งจะรวมเอาเวลาที่จะต้องรอที่จะเข้าไปในหน่วยความจำ เวลาที่คอยอยู่ในคิว เวลาที่ใช้ซีพียู และเวลาของอินพุต/เอาต์พุต ทั้งหมดเข้าด้วยกัน
- เวลาคอย (Waiting Time) คือช่วงเวลาที่งานใดงานหนึ่งต้องรอการทำงานของตัวจัดเวลา โดยไม่รวมเวลาของการใช้ซีพียู และเวลาของการติดต่ออินพุต/เอาต์พุต ส่วนใหญ่ก็คือเวลาที่งานต้องคอยอยู๋ในคิว (Ready Queue) นั้นเอง
- เวลาตอบสนอง (Response Time)คือเวลาที่วัดระหว่างเวลาที่มีการเรียกร้องขอการกระทำใดๆต่อระบบแล้วมีการตอบรับกลับมา ซึ่งในบางโปรแกรมที่มีการติดต่อกับผู้ใช้ภายนอกมากๆ เวลารวมทั้งหมดอาจไม่ใช่จุดประสงค์หลักที่ต้องการ เพราะเมื่อมีการติดต่อกับโปรแกรมกับผู้ใช้งานภายนอกนั้น ระบบปฏิบัตืการจะสิ้นสุดการรับผิดชอบเมื่อการร้องขออินพุต/เอาต์พุต สิ้นสุดลง ต่อจากนั้นระบบปฏิบัติการก็จะไปจัดการเรื่องภายในเกี่ยวข้องกับซีพียู อุปกรณ์อินพุต/เอาต์พุตต่างๆที่ติดอยู่กับระบบเหล่านี้ก็จะเป็นผู้ติดต่อกับผู้ใช้งาน ดังนั้นเรื่องความเร็วของเวลาตอบสนองมักจะขึ้นอยู่กับอุปกรณ์ อินพุต/เอาต์พุตเหล่านี้ ตัวอย่างเช่น เครื่องพิมพ์ ซีพียูอาจใช้คำนวณใดๆสิ้นสุดแล้ว ได้มีการให้ผลลัพธ์ออกมา และซีพียูก็จะทำงานอื่นต่อไปแล้ว แต่ผลลัพธ์ที่ได้นี้อาจจะต้องใช้เวลาอีกซักระยะยาวกว่าผู้ใช้จะมองเห็นผลลัพธ์ปรากฎบนกระดาษอย่างนี้ เป็นต้น
จากการวัดลักษณะต่างๆของระบบดังกล่าวข้างต้นสรุปได้ว่าสิ่งที่ผู้ออกแบบระบบการจัดการเวลาต้องการก็คือ การทำให้เวลาในการทำงานสั้นที่สุดนั้นเอง แต่ในความเป็นตริงแล้วอาการได้อย่างเสียอย่างมักจะต้องเหิดขึ้น คือเราไม่มามารถ ที่จะได้ระบบที่มามารถทำให้มีการใช้ซีพียูได้สูงสุด โดยที่มีทรูพุท มากที่สุด มีเวลารวมเร็วที่สุด และได้เวลาตอบสนองเร็วที่สุดพร้อมๆกัน ดังนั้นการหาจุดพอดีจากค่าเฉลี่ยของคุณสมบัคิแต่ละชนิดจึงมีความจำเป็นซึ่งบางครั้งอาจจะต้องมีการกำหนดจุดที่ยอมรับได้ไว้จุดใดจุดหนึ่ง ถ้าหากว่าไม่สามารถหาค่าเฉลี่ยได้
อย่างไรก็ตามก็ได้มีการแนะแนวทางไว้ว่า สำหรับระบบคอมพิวเตอร์ที่ทำงานแบบอินเทอร์เอ็กทีฟ ในระบบแบเวลา การทำให้เวลาตอบสนองมีความคงที่แน่นอนสูงสุด มีความสำคัญกว่าการที่ทำให้ระบบมีทรูพุตสูงสุด เพราะว่าผู้ใช้งานอาจจะต้องการระบบแบ่งเวลาในการตอบสนองที่แน่นอนสำหรับผู้ใช้หลายๆคน อย่างไรก็ตามความแน่นอนและเชื่อถือได้ของการตอบสนองคำสั่งในระบบแบ่งเวลาก็อาจเป็นเรื่องที่ไม่มีความสำคัญมากนักในระบบของการทำงาน
หลังจากที่เราได้รู้จักลักษณะต่างๆ ของการจัดเวลาของการทำงานต่างๆ ภานในเครื่องคอมพิวเตอร์แล้ว ต่อไปนี้เราก็จะไปดูรายละเอียดว่า ในการทำงานแต่ละแบบนั้นต้องทำอะไรกันบ้าง เกี่ยวข้องกับระบบการทำงานอะไร แล้วต้องการทรัพยากรชนิดใด ซึ่งการอธิบายให้เข้าใจว่าได้ดีก็ต้องอาศัยตัวอย่างที่มีเวลาซีพียู และเวลาอินพุต/เอาต์พุต หลายร้อยครั้งสลับกัน แต่ในบทนี้จะมีการใช้ตัวอย่างของงานที่มีเวลาซีพียูครั้งเดียว และมุ่งความสนใจไปที่การเปรียบเทียบนะกว่างค่าเฉลี่ยของเวลารอคอย หรือเวลาที่จะต้องคอยอยู่ในคิวเท่านั้น
การจัดคิวระยะสั้น (Short-term scheduling)
ขั้นตอนนี้เป็นการคัดเลือกโปรเซสซึ่งรออยู่ในสถานะพร้อมที่เหมาะสมที่สุดให้เข้าไปอยู่ในสถานะรัน (ครอบครอง CPU)
การจัดคิวให้กับโปรเซสนั้นถือว่าเป็นหน้าที่ของหน่วยจัดคิวในระยะสั้น (Short-term Scheduler) ซึ่งเป็นส่วนหนึ่งใน OS
สำหรับการส่งโปรเซสที่ถูกเลือกแล้วให้เข้าไปอยู่ในสถานะรัน เป็นหน้าที่ของตัวส่ง (Dispatcher) ซึ่งเป็นส่วนหนึ่งใน OS
การจัดคิวให้กับโปรเซสนั้นถือว่าเป็นหน้าที่ของหน่วยจัดคิวในระยะสั้น (Short-term Scheduler) ซึ่งเป็นส่วนหนึ่งใน OS
สำหรับการส่งโปรเซสที่ถูกเลือกแล้วให้เข้าไปอยู่ในสถานะรัน เป็นหน้าที่ของตัวส่ง (Dispatcher) ซึ่งเป็นส่วนหนึ่งใน OS
การจัดคิวแบบมาก่อนได้ก่อน (First-come-first-served : FCFS)
เป็นวิธีการที่ง่ายที่สุด
โปรเซสใดเข้ามารอในคิวก่อนจะมีสิทธิครอบครอง CPU ก่อน
โปรเซสที่ได้ครอบครอง CPU จะทำงานไปจนเสร็จ ไม่มีระยะเวลาควอนตัมซึ่งจำกัดเวลาในการครอบครอง CPU
แต่ถ้าโปรเซสมีการเรียกใช้งานอุปกรณ์อินพุต/เอาท์พุต หรือรอเหตุการณ์บางอย่าง โปรเซสนั้นต้องปลดปล่อยซีพียู และออกจากสถานะรันไปอยู่ในสถานะบล็อค
เมื่อการเรียกใช้อุปกรณ์อินพุต/เอาท์พุตเสร็จสิ้นลง หรือเกิดเหตุการณ์ที่กำลังรออยู่ โปรเซสนั้นจะกลับไปอยู่ต่อท้ายคิวของสถานะพร้อม
โปรเซสใดเข้ามารอในคิวก่อนจะมีสิทธิครอบครอง CPU ก่อน
โปรเซสที่ได้ครอบครอง CPU จะทำงานไปจนเสร็จ ไม่มีระยะเวลาควอนตัมซึ่งจำกัดเวลาในการครอบครอง CPU
แต่ถ้าโปรเซสมีการเรียกใช้งานอุปกรณ์อินพุต/เอาท์พุต หรือรอเหตุการณ์บางอย่าง โปรเซสนั้นต้องปลดปล่อยซีพียู และออกจากสถานะรันไปอยู่ในสถานะบล็อค
เมื่อการเรียกใช้อุปกรณ์อินพุต/เอาท์พุตเสร็จสิ้นลง หรือเกิดเหตุการณ์ที่กำลังรออยู่ โปรเซสนั้นจะกลับไปอยู่ต่อท้ายคิวของสถานะพร้อม
ข้อดีคือการจัดคิวทำได้ง่ายไม่ยุ่งยากซับซ้อน
ตัวอย่างการจัดคิวเมื่อมี 3 โปรเซส ( A,B,C) ต้องการใช้ CPU
ตัวอย่างการจัดคิวเมื่อมี 3 โปรเซส ( A,B,C) ต้องการใช้ CPU
จากตัวอย่างจะพบว่าการจัดคิวแบบ FCFS เป็นผลเสียอย่างมากกับโปรเซส B คือ โปรเซส B ต้องการเวลาในการทำงานเพียง 1 วินาที แต่ต้องรอให้โปรเซส A ซึ่งเข้ามาก่อนทำงานเสร็จ
เวลาเฉลี่ยในการรอ = (15+16)/3 = 10.33 วินาที
ทำให้การทำงานของโปรเซส B นั้นใช้เวลา 16 วินาทีจึงจะเสร็จสิ้น
เทียบเวลาในการทำงานคือ 1/16*100 = 6 %
สำหรับเวลาในการรอคือ 100-6 = 94 % ซึ่งจะเห็นว่าโปรเซส B ต้องเสียเวลารอนานมาก
เวลาเฉลี่ยในการรอ = (15+16)/3 = 10.33 วินาที
ทำให้การทำงานของโปรเซส B นั้นใช้เวลา 16 วินาทีจึงจะเสร็จสิ้น
เทียบเวลาในการทำงานคือ 1/16*100 = 6 %
สำหรับเวลาในการรอคือ 100-6 = 94 % ซึ่งจะเห็นว่าโปรเซส B ต้องเสียเวลารอนานมาก
แต่ถ้ามีโปรเซสหลายตัวที่มีความต้องการเวลาในการทำงานเท่ากัน ก็จะใช้หลักการแบบมาก่อนได้ก่อนมาใช้ในการคัดเลือก
ตัวอย่างการจัดคิวเมื่อมี 4 โปรเซส (A,B,C,D) ต้องการใช้ CPU โดยมีลำดับการเข้ามาในคิวเป็น A,B,C,D
ถึงแม้ว่าลำดับการเข้ามาในคิวอาจจะเป็น A,B,C,D แต่การใช้หลักการของ SJF จะจัดคิวออกมา
ในลักษณะดังนี้
โปรเซส A ต้องรอเวลาในการประมวลผล = 3 วินาที
โปรเซส C ต้องรอเวลาในการประมวลผล = 9 วินาที
โปรเซส B ต้องรอเวลาในการประมวลผล = 16 วินาที
เวลาเฉลี่ยในการรอ = (3+9+16)/4 = 7 วินาที
ถ้าใช้หลักการแบบ FCFS เวลาเฉลี่ยในการรอ = (6+14+21)/4 = 10.25 วินาที
จากการทดลองพบว่า SJF จะให้ค่าเฉลี่ยของการคอยได้ต่ำที่สุด เพราะมีการเลื่อนโปรเซสที่มีเวลาใช้ CPU น้อยสุดมาไว้หน้าคิวนั่นเอง
ปัญหาสำหรับการจัดคิวแบบ SJF คือ ตัวจัดคิวระยะสั้นไม่ทราบว่าแต่ละโปรเซสต้องการใช้เวลาเท่าใด
วิธีแก้คือ
ให้แต่ละโปรเซสกำหนดเวลาที่ต้องการในการใช้ CPU มาด้วย
ให้ OS สร้างโปรเซสเพื่อคำนวณเวลาโดยประมาณของแต่ละโปรเซสที่ต้องการใช้ CPU
การจัดคิวแบบตามลำดับความสำคัญ (Priority Queue)
วิธีนี้จะมีการจัดลำดับความสำคัญให้กับแต่ละโปรเซสที่ต้องการใช้ CPU
ดังนั้นโปรเซสที่อยู่ ณ. ต้นคิวก็จะเป็นโปรเซสที่มีความสำคัญมากที่สุด และลดลงเรื่อย ๆ
โปรเซสที่อยู่ท้ายคิวคือโปรเซสที่มีความสำคัญต่ำสุด
ถ้ามีโปรเซสใหม่เข้ามาในคิว ก็จะมีการแซงคิวได้ถ้าโปรเซสที่เข้ามาใหม่มีลำดับความสำคัญสูงกว่าโปรเซสที่กำลังบรรจุอยู่ในคิว
ตัวอย่างการจัดคิวเมื่อมี 4 โปรเซส ( A,B,C,D) ต้องการใช้ CPU โดยมีลำดับการเข้ามาในคิวเป็น A,B,C,D
ถึงแม้ว่าลำดับการเข้ามาในคิวอาจจะเป็น A,B,C,D แต่การใช้หลักการของการจัดลำดับความสำคัญ จะจัดคิวออกมาในลักษณะดังนี้
โปรเซส B ต้องรอเวลาในการประมวลผล = 5 วินาที
โปรเซส A ต้องรอเวลาในการประมวลผล = 6 วินาที
โปรเซส C ต้องรอเวลาในการประมวลผล = 16 วินาที
เวลาเฉลี่ยในการรอ = (5+6+16)/4 = 6.75 วินาที
ปัญหาที่สำคัญสำหรับการจัดคิวแบบนี้ ได้แก่ โปรเซสที่มีลำดับความสำคัญต่ำอาจจะไม่มีโอกาสได้ใช้ CPU ถ้ามีโปรเซสที่มีลำดับความสำคัญสูงอยู่เป็นจำนวนมาก หรือมีโปรเซสที่มีลำดับความสำคัญสูงเข้ามาใหม่ตลอดเวลา
วิธีการพิจารณากำหนดลำดับความสำคัญของโปรเซสต่าง ๆ อาจพิจารณาได้จากองค์ประกอบต่าง ๆ เช่น
เจ้าของโปรเซส : โปรเซสที่มาจากผู้ใช้ทั่ว ๆ ไป จะมีลำดับความสำคัญต่ำกว่า โปรเซสที่มาจากผู้ควบคุมระบบ
ประเภทของโปรเซส : โปรเซสของงานในระบบแบตซ์ (Batch mode) มักมีลำดับความสำคัญต่ำกว่าโปรเซสของงานแบบตอบโต้ (Interactive mode)
ผู้ใช้ที่ยินยอมจ่ายเงินเพิ่ม
ระยะเวลาที่โปรเซสเข้ามาอยู่ในระบบ
วิธีการนี้จะคล้ายกับแบบ SJF แต่ SRJ จะนำเอาโปรเซสที่เหลือเวลาในการใช้ CPU น้อยที่สุดมาอยู่ที่ต้นคิวเพื่อเข้าไปใช้งาน CPU ก่อน
วิธีการนี้จะทำให้ทั้งโปรเซสที่ต้องการเวลาในการใช้ CPU น้อย และโปรเซสที่ต้องการเวลาในการใช้ CPU มากแต่ใกล้จะจบสามารถออกจากระบบได้เร็วขึ้น
วิธีการนี้นอกจากจะต้องทราบเวลาที่ต้องการใช้ CPU แล้วยังต้องมีการบันทึกเวลาที่โปรเซสทำงานไปแล้วด้วย
การจัดคิวแบบวนรอบ (Round-Robin : RR)
เป็นวิธีการที่คิดขึ้นมาเพื่อใช้กับระบบงานคอมพิวเตอร์แบบแบ่งเวลาโดยเฉพาะ โดยมีลักษณะการจัดคิวเป็นแบบ FCFS แต่ให้มีกรรมวิธีของการให้สิทธิในการครอบครอง CPU ของแต่ละโปรเซส คือ “แต่ละโปรเซสที่เข้ามาในระบบจะถูกจำกัดเวลาการเข้าไปใช้ CPU เท่า ๆ กัน ”
ซึ่งเรียกช่วงเวลานี้ว่า เวลาควันตัม (Quantum Time)
ตัวจัดเวลาระยะสั้นจะมีการให้ CPU กับโปรเซสที่อยู่ในคิวแบบวนรอบ โดยมีกฏเกณฑ์ว่า ถ้าโปรเซสใดไม่สามารถกระทำได้สำเร็จภายใน 1 ควันตัม โปรเซสจะต้องถูกนำกลับไปไว้ในคิวเช่นเดิม
สถานภาพต่าง ๆ ของโปรเซสที่ยังทำไม่เสร็จจะถูกบันทึกไว้ เมื่อถึงโอกาสได้ครอบรอง CPU อีก ก็จะได้เริ่มต้นรันต่อจากครั้งที่แล้วโดยไม่ต้องเริ่มใหม่ทั้งหมด
ตัวอย่างการจัดคิวแบบ FCFS เมื่อมี 3 โปรเซส ( A,B,C) ต้องการใช้ CPU
เวลาเฉลี่ยในการรอ = (15+16)/3 = 10.33 วินาที
ตัวอย่างการจัดคิวแบบ RR เมื่อมี 3 โปรเซส ( A,B,C) ต้องการใช้ CPU โดยมีเวลาควันตัมเป็น 1 วินาที
จากตัวอย่างจะเห็นว่าการทำงานแบบ RR จะเป็นประโยชน์ต่อโปรเซส B หรือโปรเซสที่ต้องการเวลาในการใช้ CPU น้อยแต่เข้าคิวมาทีหลัง
ในทางตรงกันข้ามจะเกิดผลเสียต่อโปรเซส A หรือโปรเซสที่ต้องการเวลาในการใช้ CPU มาก
ประสิทธิภาพของการวนรอบขึ้นอยู่กับการกำหนดขนาดของควันตัมเป็นอย่างยิ่ง
ถ้าขนาดของควันตัมใหญ่หรือนานเกินไป ประสิทธิภาพของการวนรอบก็จะใกล้เคียงกับแบบมาก่อนได้ก่อน
ถ้าขนาดของควันตัมเล็กเกินไป ระยะเวลาที่ใช้ในการทำงานของระบบ (troughput)ก็จะช้าลง
การจัดคิวแบบหลายระดับ
การจัดคิวดังที่กล่าวมาแล้วทั้งสิ้นเป็นการจัดคิวภายในคิวเพียง 1 คิวเท่านั้น เรียกว่าการจัดคิวแบบ 1 ระดับดังรูป
เพื่อให้การจัดคิวเป็นไปอย่างมีประสิทธิภาพมากขึ้น เราจึงจัดให้มีคิวหลาย ๆ คิวแทนที่จะมีเพียงคิวเดียว เรียกว่าเป็นการจัดคิวแบบหลายระดับ
การจัดคิวแบบหลายระดับนั้น แต่ละคิวไม่จำเป็นเป็นต้องเป็นประเภทเดียวกัน
การคัดเลือกโปรเซสนั้นจะคัดเลือกจากคิวที่ 1 ก่อนจนกระทั่งโปรเซสภายในคิวที่ 1 ทำงานเสร็จทั้งหมด แล้วจึงคัดเลือกโปรเซสในคิวลำดับถัดไป
โปรเซสที่มีความสำคัญมาก มักจะอยู่ในคิวระดับแรก โปรเซสที่มีลำดับความสำคัญน้อยลงไปก็จะอยู่ในคิวระดับหลัง
โปรเซสประเภทเดียวกันมักอยู่ในคิวระดับเดียวกัน
การจัดคิวระยะยาว
การจัดคิวระยะสั้นเป็นการจัดคิวในระดับโปรเซส โดยมีตัวจัดคิวระยะสั้นทำหน้าที่คัดเลือกโปรเซสที่อยู่ในคิวที่มีสถานะพร้อม ส่งเข้าไปอยู่ในสถานะรัน
การจัดคิวระยะยาวเป็นการจัดคิวในระดับงาน ไม่ใช่ระดับโปรเซส
เมื่อผู้ใช้ส่งงานเข้ามาในระบบ งานเหล่านี้จะไปรออยู่ในคิวงาน
เมื่อระบบอยู่ในสภาพพร้อมที่จะรับโปรเซสใหม่ได้ เช่นมีหน่วยความจำเหลือมากพอ
ตัวจัดคิวระยะยาวจะคัดเลือกงานที่อยู่ในคิวงานขึ้นมาพร้อมทั้งสร้างโปรเซสใหม่สำหรับงานนั้น ส่งให้กับตัวจัดคิวระยะสั้นทำงานต่อไป
นอกจากนั้นตัวจัดคิวระยะสั้นยังมีหน้าที่ยุติโปรเซสที่จบการทำงานแล้วด้วย
คิวงานจะต่างกับคิวของโปรเซสเล็กน้อย คือ งานที่ถูกคัดเลือกขึ้นมาและสร้างเป็นโปรเซสใหม่แล้วจะไม่มีการวนกลับมาเข้าคิวใหม่เหมือนกับโปรเซส
การคัดเลือกงานเพื่อสร้างโปรเซสใหม่ มีวิธีการเหมือนกับการคัดเลือกโปรเซสที่อยู่ในคิว ยกเว้นวิธีแบบ RR ที่ไม่ได้ใช้กับคิวงาน
ระบบหลายโปรเซสเซอร์ (Multi-processor System)
หมายถึงระบบที่มี CPU หลายตัวช่วยกันทำงาน
ดังนั้นโปรเซสเซอร์ในที่นี้หมายถึง CPU นั่นเอง
การจัดระบบคอมพิวเตอร์ตามการทำงานของโปรเซสเซอร์ เราสามารถแบ่งได้ 4 ประเภทดังนี้
คำสั่งเดี่ยวและข้อมูลเดี่ยว ( Single Instruction Single Data : SISD )
คำสั่งเดี่ยวและหลายชุดข้อมูล ( Single Instruction Multiple Data : SIMD )
หลายชุดคำสั่งและข้อมูลเดี่ยว ( Multiple Instruction Single Data : MISD )
หลายชุดคำสั่งและหลายชุดข้อมูล ( Multiple Instruction Multiple Data : SIMD )
คำสั่งเดี่ยวและข้อมูลเดี่ยว ( Single Instruction Single Data : SISD )
คอมพิวเตอร์ที่ใช้งานทั่วไปในปัจจุบันจะเป็นประเภท SISD
ระบบคอมพิวเตอร์ประเภทนี้มีโปรเซสเซอร์อยู่เพียงตัวเดียว
การทำงานของโปรเซสเซอร์ในระบบนี้จะทำงานได้ทีละ 1 คำสั่งและรับข้อมูลได้ 1 ชุด
P (Processor) แทนโปรเซสเซอร์ I (Instruction) แทนคำสั่ง D (Data) แทนข้อมูล และ O (Output) แทนผลลัพธ์
การทำงานของระบบนี้เป็นการทำงานของโปรเซสเซอร์หลายตัวพร้อมกัน หรือที่เรียกว่าทำงานขนานกัน (parallel processing)
โดยโปรเซสเซอร์ทุกตัวทำคำสั่งเดียวกันหมด แต่มีข้อมูลเป็นของตนเอง ดังนั้นผลลัพธ์ที่ได้จึงมีหลายชุด
SIMD มีประโยชน์ต่องานทางด้านการคำนวณที่ต้องการคำนวณแบบเดียวกันกับข้อมูลหลาย ๆ ชุดเช่น การบวกเมตริกซ์
เช่น
การทำงานของระบบนี้เป็นการทำงานของโปรเซสเซอร์หลายตัวพร้อมกัน หรือที่เรียกว่าทำงานขนานกัน (parallel processing)
โดยโปรเซสเซอร์ทุกตัวจะมีคำสั่งของตนเอง แต่ทุกตัวจะใช้ข้อมูลชุดเดียวกัน
เมื่อโปรเซสเซอร์ตัวแรกทำงานเสร็จ ผลลัพธ์ที่ได้จะเป็นข้อมูลของโปรเซสเซอร์ตัวต่อไป
เช่นถ้าในระบบ MISD หาค่าจากสมการนี้ y = 2*X2+4 โดยที่ x มีค่าระหว่าง 1 ถึง 5
จากตัวอย่างพบว่ามี 3 คำสั่ง
หาค่า X ยกกำลัง 2
คูณผลลัพธ์จากข้อแรก ด้วย 2
เพิ่มค่าผลลัพธ์ที่ได้จากข้อ 2 ด้วย 4
สมมุติว่าแต่ละคำสั่งใช้เวลาคำสั่งละ 1 วินาที
ถ้าเป็นระบบ SISD จะใช้เวลาทั้งสิ้นเท่าใด ถ้าเป็นระบบ MISD จะใช้เวลาทั้งสิ้นเท่าใด
การทำงานของระบบนี้เป็นการทำงานของโปรเซสเซอร์หลายตัวพร้อมกันและโปรเซสเซอร์แต่ละตัวจะมีคำสั่งและข้อมูลเป็นของตนเอง
ดังนั้นในการทำงานแต่ละโปรเซสเซอร์จะเป็นอิสระจากกัน
ตัวอย่างระบบคอมพิวเตอร์ประเภท MIMD ที่เห็นได้ชัดเจนคือระบบเครือข่ายคอมพิวเตอร์ (Computer Network)
อ้างอิงแหล่งที่มา
https://www.google.co.th/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0ahUKEwiBzemCgb3XAhXDFJAKHR4bDCwQFggxMAI&url=https%3A%2F%2Falaska.reru.ac.th%2F4121401%2Fos4.ppt&usg=AOvVaw1rNZSQIve9bReJ5VA_u9ir
https://sites.google.com/site/bthreiynbththi99/1/kar-cad-wela-sph-yu-cpu
http://www.chantra.sru.ac.th/OS.html
http://pedcharatn.exteen.com/20080819/5-cpu
ความคิดเห็น
แสดงความคิดเห็น