Please enable JavaScript.
Coggle requires JavaScript to display documents.
บทที่ 8 หน่วยความจำเสมือน, บทที่ 8 หน่วยความจำเสมือน - Coggle Diagram
บทที่ 8 หน่วยความจำเสมือน
บทที่ 8 หน่วยความจำเสมือน
แนวคิดหน่วยความจำเสมือน
เป็นวิธีหนึ่งที่สามารถทำให้โพรเซสทำงานได้ ถึงแม้ว่าโพรเซสนั้นจะไม่ได้อยู่ในหน่วยความจำหลักทั้งหมด
ข้อดี
โปรแกรมของผู้ใช้สามารถมีขนาดใหญ่กว่าหน่วยความจำได้
ประโยขน์ที่หน่วยความจำเสมือนยอมให้แฟ้มข้อมูลและหน่วยความจำถูกแบ่งได้ทั้งสองโพรเซสหรือมากกว่านั้น
หน่วยความจำเสมือนอย่างง่าย ต้องทำให้โพรเซสสามารถแชร์หน่วยความจำเสมือน
หน่วยความจำเสมือนสามารถยอมให้พื้นที่ที่ต้องการแชร์ ระหว่างโพรเซสถูกสร้างจากฟังก์ชั่น the fork() และเรียกผ่าน System Call ดังนั้นโพรเซสสามารถถูกสร้างได้เร็ว
ระบบ libraies สามารถใช้พื้นที่ร่วมกันโดยรวมหลายๆโพรเซสเข้าด้วยกันโดยการแชร์วัตถุไปยังพื้นที่หน่วยความจำเสมือน
การจัดสรรหน้าตามคำร้องขอ
เพจจะถูกนำมาไว้ในหน่วยความจำก็ต่อเมื่อต้องการทำให้เพจสามารถทำงานได้ แม้ว่าจะเหลือพื้นที่หน่วยความจำไม่มาก
ข้อดีของการนำเฉพาะเพจที่ต้องการใช้เข้ามาไว้ในหน่วยความจำ
ลดการใช้หน่วยความจำ
โต้ตอบได้รวดเร็ว
ลดการใช้
รองรับผู้ใช้ได้มากกว่า
หลักการขั้นพื้นฐาน
ต้องมีอุปกรณ์ทางฮาร์ดแวร์ คือ เพิ่มบิตสถานะ อรกหนึ่งบิตต่อช่องในตารางเลขหน้า ถ้าสถานะมีค่าเป็นใช้ได้ แสดงว่าหน้านั้นอยู่ในหน่วยความจำหลัก แต่ถ้าบิตขึ้นสถานะมีค่าใช้ไม่ได้ แสดงว่าหน้านั้นอยู่ในจานบันทึก
อธิบายขั้นตอนในการจัดการผิดหน้า
หาเนื้อที่ว่างในหน่วยความจริง 1 หน้า
จัดคำร้องขอไปยังจานบันทึก เพื่อให้อ่านหน้าที่ต้องการมาไว้ในเนื้อที่ว่างที่เลือกไว้
ถ้าเป็นการอ้างอิงผิดพลาดก็ยกเลิกโพรเซส ถ้าถูกต้องแต่หน้าที่ต้องการนี้ไม่ได้อยู่ในหน่วยความจำหลักให้ดำเนินการขั้นต่อไป
เมื่อจานบันทึกนำหน้าเข้ามาเสร็จแล้ว ระบบก็จะแก้ไขบิตสถานะในตารางเลขหน้าเป็นใช้ได้
ตรวจดูตารางข้อมูลจำเพาะของโพรเซส ว่าหน้าที่ต้องการอ้างอิงถูกต้องหรือไม่
จัดให้โพรเซสทำงานต่อจากจุดที่เกิด การผิดหน้า โพรเซสจึสามารถทำงานต้่อไปได้เสมือนว่าหน้าที่ต้องการอยู่ในหน่วยความจำตลอดเวลา
ประสิทธิภาพของระบบจัดสรรหน้าตามคำขอ
มีผลกระทบต่อประสิทธิภาพของระบบเป็นอย่างมาก ในระบบคอมพิวเตอร์ส่วนใหญ่เวลาใช้เวลาเฉลี่ยในการอ้างอิงหน่วยความจำ มีค่าระหว่าง 10 ถึง 200 นาโนวินาที
เาลาเฉลี่ยในการอ้างอิงหน่วยความจำ :
Effective Access Time(EAT) = (1-p) x ma + p x page fault time
เทคนิคการบันทึกข้อมูลด้วยการคัดลอกข้อมูล
เมื่อพิจารยณาโฑรเซสลูกที่เกิดจากฟังก์ชั้น exec() ทันทีหลังการสร้าง การคัดลอกตำแหน่งพื้นที่ว่างของโฑรเซสแม่ อาจจะไม่จำเป็นหรืออาจใช้วิธีอื่นที่รู้จักในเทคนิค Copy-on-Write ซึ่งทำงานโดยจัดสรรโพรเซสแม่และโพรเซสลูกในขั้นต้นเพจที่เหมือนกันให้ใช้ร่วมกัน
การเชื่องโยงแฟ้มข้อมูลกับหน่วยความจำ
ยินยอมให้แฟ้มข้อมูลทั้งอินพุตและเอาต์พุตถูกใช้งานเหมือนรูทีนการเข้าถึงหน่วยความจำได้โดยการเชื่อมโยงดิกส์บล็อก ไปเป็นเพจในหน่วยความจำ การเข้าถึงแฟ้มข้อมูลอย่างง่ายโดยการดูแลแฟ้มจากอินพุตเอาท์พุต ผ่านหน่วยความจำมากกว่าการใช้ฟังก์ชั่น rea() write() เรียกผ่าน System call() และอนุญาตให้หลายโพรเซสทำการ Map แฟ้มข้อมูลเดียวกันให้ใช้เพจร่วมกันในหน่ยความจำอีกด้วย
อัลกอริทึมการสับเปลี่ยนหน้า
นโยบายการสับเปลี่ยนหน้าเป็นการเลือกหน้าเก่าที่อยู่ในหน่วยความจำออกเพื่อจะแทนที่ด้วยหน้าใหม่ที่จะนำเข้ามา พิจารณาจาก
ในกลุ่มของหน้าที่เราพิจารณา เราจะเลือกหน้าใดที่จะนำไปสับเปลี่ยน
ถ้าเราให้หน่วยความจำแก่โพรเซสใดๆน้อยเท่าไหร่ ก็จะทำให้มีจำนวนโพรเซสเข้ามาใช้งานหน่วยความจำมากขึ้นเท่านั้น
กลุ่มของหน้าที่ถูกพิจารณาให้สับเปลี่ยนหน้านั้นควรจะถูกจำกัดหรือไม่ เพื่อป้องกันไม่ให้โพรเซสที่ทำให้เกิดการผิดหน้าทำงาน
ถ้ามีจำนวนหน้าของโพรเซสหนึ่งๆ ที่สามารถอยู่ในหน่ยความจำหลักน้อย ก็จะทำให้เกิดอัตราการเกิดการผิดหน้าสูงมากขึ้น
มีจำนานเฟรมเท่าไหร่ที่สามารถให้กับโพรเซสแต่ละตัวได้
นอกเหนือจากการกำหนดขนาดของหน้าคงที่ การให้หน่วยความจำเพิ่มกับโพรเวสใดโพรเซสหนึ่งจะไม่มีผลกระทบต่ออัตราการผิดหน้ามากนัก
วิธีสับเปลี่ยนแบบมาก่อน-ออกก่อน
เกณฑ์การตัดสินใจ เมื่อต้องการเลือกหน้าบางหน้าออก ให้เลือกหน้าที่เข้ามานานที่สุด
วิธีสับเปลี่ยนแบบให้โอกาสครั้งที่สอง
วิธีนี้คิดมาเพื่อแก้ปัญหาที่เกิดจากแบบมาก่อน-ออกก่อน
หลักการคือ ค้นหาหน้าที่เก่าที่สุดและไม่ได้ถูกอ้างอิงหรือเรียกใช้งาน แต่ถ้าทุกหน้าในระบบถูกเรียกใช้งานหมด วิธีนี้ก็จะกลายเป็นมาก่อน-ออกก่อน
วิธีสับเปลี่ยนแบบวงจรรอบนาฬิกา
ใช้วิธีเรียงเฟรมทุกเฟรมเป็นรูปวงกลมเหมือนนาฬิกา
วิธีสับเปลี่ยนแบบที่ดีที่สุด
ใช้หลักการ
ให้เลือกสับเปลี่ยนหน้าที่จะไม่ถูกเรียกใช้งาน และมีระยะเวล่รอการเรียกใช้งานที่สุด
วิธีนี้จะทำให้เกิดอัตราการผิดหน้าต่ำสุดสำหรับพื้นที่ๆมีจำนวนเฟรมหนึ่ง
วิธีสับเปลี่ยนแบบที่ไม่ได้ใช้งานออกก่อน
วิธีนี้พัฒนาจากวิธีการสับเปลี่ยนแบบวงจรนาฬิการ โดยพิจารณาบิตที่สำคัญในตารางหน้าเพิ่มขึ้น 1 บิต เนื่องจากระบบปฏิบัติการสามารถทำการเก็บข้อมูลสถิติได้ว่า หน้าใดที่กำลังถูกใช้หรือไม่ได้ใช้งาน
การสับเปลี่ยนแบบใช้งานน้อยที่สุด-ออกก่อน
วิธีนี้จะเป็นการใช้ข้อมูลในอดีตที่ผ่านมาประมาณการอนาคตอันใกล้ โดยอาจจะสับเปลี่ยนหน้าที่ไม่ได้ถูกเรียกใช้งานเป็นเวลานานที่สุดออก ซึ้งเรียกว่าเป็นแบบใช้งานน้อยที่สุดออกก่อน วิธีแบบนี้จะบันถึกเวลาที่แต่ละหน้าถูกอ้างอิงครั้งล่าสุดไว้