หน่วยความจำเสมือน (Virtual Memory)
• ใช้เทคโนโลยีของดิสก์เป็นหน่วยความจำสำรอง หรือหน่วยความจำเสมือน
• หน่วยความจำประเภทดิสก์ถูกจัดอยู่ในระดับล่างของหน่วยความจำ
หน่วยความจำเสมือน (Virtual Memory)
• หน่วยความจำเสมือน จำเป็นต้องใช้กระบวนการเชื่อมโยงข้อมูล (Mapping)
• ระบบปฏิบัติการจะทำหน้าที่จัดสรรพื้นที่สำหรับการทำงานบนหน่วยความจำและบนดิสก์ แล้วทำการสลับเปลี่ยนไปมาเมื่อโปรแกรมต้องการ
• ข้อดีก็คือโปรแกรมสามารถมีขนาดใหญ่กว่าหน่วยความจำจริงได้ เนื่องจากมีการจัดสรรไปไว้บนดิสก์
การวางโปรแกรมทับซ้อน (Overlays)
• การใช้วิธีวางโปรแกรมทับซ้อนกัน (Overlay) ทำให้สามารถเขียนโค้ดของตัวเองทับโค้ดอื่น ๆ ได้ตามที่ต้องการ โดยโปรแกรมเมอร์จัดการ
การแบ่งออกเป็นหน้า (Paging)
• มีการแบ่งพื้นที่และแอ็ดเดรสของหน่วยความจำเสมือนออกเป็น บล็อก ๆ ที่เท่ากันที่เราจะเรียกว่า หน้า (Page)
การผิดหน้า (Page Fault)
• การผิดหน้า (Page fault) เกิดจากมีหน่วยความจำเสมือน ที่ถูกอ้างอิงถึงนั้นไม่ได้อยู่ในหน่วยความจำหลัก ทำให้เกิดกระบวนการ
• ถ้าเฟรมของหน้าใดหน้าหนึ่งถูกกำหนดว่าจะมีการเขียนโปรแกรมหรือข้อมูลทับ เนื้อหาในเฟรมหน้านั้นก็จะถูกเขียนลงในหน่วยความจำสำรอง เพื่อให้มีการบันทึกค่าดังกล่าวก่อนที่เฟรมของหน้านั้นจะถูกเขียนข้อมูลทับ
• หน้าของข้อมูลที่เราต้องการเข้าถึงและเก็บไว้ในหน่วยความจำสำรอง จะถูกเขียนลงในหน่วยความจำหลัก (ในเฟรมหน้าที่เราได้กำหนดไว้ในข้อ 1)
• ตารางหน้า จะถูกอัปเดทข้อมูลการเชื่อมโยงระหว่างหน่วยความจำเสมือน เข้ากับหน่วยความจำหลักใหม่
• ทำงานอื่น ๆ ต่อไป
ตารางหน้า (Page Table)
• ตารางหน้ามีจำนวนเรกคอร์ดเท่ากับจำนวนหน้าที่มีในหน่วยความจำเสมือน และฟิลด์ต่าง ๆ ดังนี้
• Present bit
• Disk address
• Page frame
บัพเฟอร์ค้นหาที่อยู่ (Translation Lookaside Buffer)
• ปกติเมื่อมีการอ้างถึงหน่วยความจำเสมือน จะมีการเรียกหน่วยความจำหลัก 2 ครั้ง (ทำให้ใช้เวลาเป็น 2 เท่า)
• ดึงแถวของตารางหน้า
• ดึงข้อมูลที่ต้องการออกจากหน่วยความจำหลัก
• เป็นบัพเฟอร์ที่ทำหน้าที่เก็บแถวของตารางหน้าที่ใช้งานล่าสุด
ไม่มีความคิดเห็น:
แสดงความคิดเห็น