More Related Content
More from maysasithon (10)
บทที่ 7
- 6. หน่วยความจาเสมือนระบบหน้า (Paging System)
ในระบบที่แบ่งบล็อกเป็นหน้า มีการทางานที่ค่อนข้างง่าย
เหมาะแก่การที่จะใช้อธิบายให้เกิดความเข้าใจในการทางาน และ
เพื่อให้เข้าใจการทางานของระบบปฏิบัติการในระบบหน้าง่ายยิ่งขึ้น
จึงสมมติระบบหน้าขึ้นมาระบบหนึ่ง
สมมติว่าในระบบมีหน่วยความจาอยู่ 100 กิโลไบต์แต่อาศัย
ระบบหน่วยความจาเสมือนทาให้ผู้ใช้สามารถรันหรือเขียน
โปรแกรมที่มีขนาดโตได้ถึง 1,000 กิโลไบต์ดังนั้น แอดเดรส
เสมือนจะเป็นเลข 6 หลัก ส่วนแอดเดรสจริงมีเพียง 5 หลัก สมมติว่า
ระบบปฏิบัติการกาหนดให้ 1 หน้าที่ขนาด 1 กิโลไบต์ถ้าจะอ้างถึง
แอดเดรสต่าง ๆ ภายในหน้า 1 หน้า จะต้องใช้เลข 3 หลัก
- 7. การแปลงส่งแบบสาระ (Associative Mapping)
วิธีการแปลงส่งแอดเดรส เรียกอีกอย่างว่า เป็นการแปลงส่งแบบ
ตรง (Direct Mapping) แต่ยังมีวิธีการแปลงแอดเดรสอีกวิธีหนึ่งซึ่งมี
ความเร็วสูงกว่ามาก เรียกว่าการแปลงส่งแบบสาระ (Associative
Mapping) วิธีการแปลงคือ หมายเลขหน้าจากแอดเดรสเสมือนถูกส่งเข้า
ไปตรวจสอบในตารางที่เรียกว่า ตารางหน้าแบบสาระ (Associative Pa
Table) พร้อมกันทุกช่อง และจะได้ค่าแอดเดรสเริ่มต้นของหน้าใน
หน่วยความจาจริงที่เก็บหน้านี้เอาไว้ออกมาทันที แอดเดรสที่ได้นี้ก็จะ
นาไปบวกกับดีสเพลซเมนต์ ผลลัพธ์ที่ได้ก็คือแอดเดรสจริงใน
หน่วยความจา แต่ถ้าเกิดความผิดพลาดของหน้า
- 8. ระบบการใช้หน้าร่วม (Sharing Page System)
ในการทางานของระบบผู้ใช้หลายคน ณ ขณะใดขณะหนึ่ง ผู้ใช้
แต่ละคนอาจเรียกใช้โปรแกรมเดียวพร้อมกันก็ได้เช่น นาย A, B
และ C เรียกใช้โปรแกรมเอดิเตอร์ (Editor) โปรแกรมเดียวกันพร้อม
กันทั้ง 3คน ในกรณีเช่นนี้ ระบบปฏิบัติการ จะต้องนาโคด
โปรแกรมเอดิเตอร์ตัวเดียวกัน โหลดเข้าไปในหน่วยความจาถึง 3
ครั้ง โปรแกรมเอดิเตอร์ก็จะปรากฏอยู่ในหน่วยความจาถึง 3 แห่ง
แต่ถ้าผู้ใช้ทั้ง 3 คนสามารถใช้โคดโปรแกรมร่วมกันได้เราก็จะ
สามารถประหยัดเนื้อที่ของหน่วยความจาไปได้มาก เพราะโครต
ของโปรแกรมเอดิเตอร์จะปรากฏอยู่ในหน่วยความจาเพียงแห่งเดียว
- 9. หน่วยความจาเสมือนระบบเซ็กเมนต์ (Segmentation
System)
หน่วยความจาเสมือนระบบเซ็กเมนต์ มีลักษณะการทางานคล้ายกับ
ระบบหน้ามาก ต่างกันที่ขนาดของบล็อกไม่จาเป็นต้องเท่ากัน จึงทา
ให้มีความซับซ้อนในการทางานเพิ่มขึ้น ตารางเซ้กเมนต์ (Segment
Table) ซึ่งทาหน้าที่เช่นเดียวกับตารางหน้า จะมีคอลัมน์เพิ่มขึ้นจาก
ตารางหน้าอีก 1 คอลัมน์เป็นคอลัมน์ที่เก็บขนาดของเซ็กเมนต์เอาไว้
ทั้งนี้เพื่อให้ระบบปฏิบัติการ ทราบว่าแต่ละเซ็กเมนต์มีขนาดเท่าใด
การอ่านหรือเขียนข้อมูลจากหน่วยความจารองและการหาเนื้อที่ใน
หน่วยความจาจริงจะกระทาตามขนาดของเซ็กเมนต์ เช่น ถ้าเซ็ก
เมนต์นั้นมีขนาด 5 กิโลไบต์การโหลดจากดิสก์ก็ต้องโหลดข้อมูล
ขึ้นมา 5 กิโลไบต์
- 11. อัลกอริทึมการแทนที่
เมื่อเกิด Page Fault ของหน้าในระบบหน้า และในหน่วยความจาไม่
มีหน้าใดว่างอยู่เลย ก่อนที่ระบบปฏิบัติการจะโหลดเอาหน้าใหม่เข้า
มาในหน่วยความจานั้น ระบบปฏิบัติการ ต้องตัดสินใจก่อนว่าควร
จะเลือกใครหน้าใดเพื่อที่จะวางหน้าใหม่ทับลงไป สิ่งที่
ระบบปฏิบัติการใช้ในการตัดสินใจเลือกหน้าเรียกว่า อัลกอริทึมการ
แทนที่ (Replacement Strategy) ซึ่งมีอยู่ 5 วิธีด้วยกัน คือ
- 12. 1. แบบสุ่ม (Random) เลือกโดยการสุ่มเดา ทุกหน้ามีโอกาสถูกเลือก
เท่ากันหมด
2. FIFO (First In First Out) หน้าใดที่ถูกโหลดเข้ามาใน
หน่วยความจาก่อนก็จะถูกเลือกออกไปก่อนเรียงตามลาดับเวลา
3. NFU (Not Frequently Used) เลือกหน้าที่ถูกใช้น้อยครั้งที่สุด
ทั้งนี้เพราะหน้าที่ถูกใช้น้อยโอกาสที่ถูกใช้เวลาต่อมาก็จะน้อยด้วย
ดังนั้น จึงควรเอาออกจากหน่วยความจาแต่วิธีนี้อาจจะทาให้หน้าที่
พึ่งถูกโหลดเข้ามาถูกเลือกออกไปได้เพราะหน้าที่พึงถูกโหลดเข้า
มาอยู่ใหม่จานวนการใช้ย่อมน้อยกว่าหน้าซึ่งอยู่มานานแล้ว
- 13. 4. LRU (Least Recently Used) แต่ละหน้าจะมีการบันทึกเวลาใน
การใช้ครั้งหลังสุดไว้หน้าใดที่ไม่ได้ถูกใช้มานานมากที่สุดจะถูก
เลือก วิธีนี้จะเป็นผลเสียต่อโปรแกรมที่มีการทางานแบบวนรอบ
(Loop) และวนรอบมีขนาดใหญ่มาก ๆ (หลาย ๆ หน้า)
5. NUR (Not Used Recently) แต่ละหน้าจะมีบิตกากับอยู่2 บิตคือ
บิตอ้างอิง (Referent Bit) และบิตแก้ไข (Modify Bit) เมื่อหน้าถูก
โหลดเข้าไปในหน่วยความจา 2 บิตนี้จะเป็น 0 เมื่อใดที่มีการอ้างถึง
หน้าใดบิตอ้างอิงของหน้านั้นจะเป็น 1 และเมื่อหน้านั้นถูกแก้ไข
อะไรบางอย่างภายในหน้าบิตแก้ไขจะเป็น 1 ทุก ๆ ช่วงเวลาหนึ่ง
เช่น 10 มิลลิวินาที บิตอ้างอิงของทุก ๆ หน้า จะถูกเปลี่ยนเป็น 0
หมด
- 14. อัลกอริทึมการเฟตซ์
อัลกอริทึมการเฟตซ์ (Fetch Strategy) หมายถึง วิธีการโหลดหน้า
หรือเซ็กเมนต์จากดิสก์เข้าไปในหน่วยความจา แบ่งออกเป็น 2 วิธี
1. การเฟตซ์แบบต้องการ (Demand Fetch) วิธีนี้
ระบบปฏิบัติการ จะโหลดเฉพาะหน้าหรือเซ็กต์เมนต์ ที่ต้องการใช้
เท่านั้นเข้าไปในหน่วยความจา
2. การเฟตซ์แบบคาดเดา (Anticipate Fetch) ระบบปฏิบัติการ
จะมีการคาดเดาว่าหน้า หรือ เซ็กเมนต์ไหนจะถูกใช้เป็นหน้าหรือ
เซ็กเมนต์ต่อไป และจะโหลดหน้าหรือเซ็กเมนต์นั้นเข้าไปไว้
หน่วยความจาล่วงหน้า