Virtual Memory
Detailed VM Example ในเรื่องนี้จะมีการนำเสนอในรูปแบบ ของการทำงานที่เป็นไปตามขั้นตอน เมื่อ เกิดการผิดพลาดของข้อมูล ISR จะทำ หน้าที่เป็น หน่วยความจำเสมือน เมื่อมีการย้ายบิตจาก page table ซึ่งควรที่จะเขียนโจทย์เริ่มต้น ไว้ ( ดังแสดงในหน้า 3 และ 4) และพยายาม หาคำตอบ ของปัญหา จากนั้นให้กลับมาดูข้อมูล เริ่มต้นและตรวจสอบดูว่า คำตอบที่ได้ถูกต้องตรงกับโจทย์หรือไม่
Process 3 Logical Pages Process 7 Logical Pages Process 3 Page Table Proces s 7 Page Table Pageno Loc
Process 7 Address มี logical page เป็น 2100/1024 = 2 ( ได้ผลหารเป็น 2) - index 2 ของ process7 มี page table เป็น -1 ซึ่งยังไม่สามารถทำในนี้ได้ ต้องไปที่ physical RAM page - free RAM page table ไม่มีที่ว่าง ดังนั้นจึง ต้องไปเทียบดูเวลาที่ PID 7 ว่าข้อมูลตัวใดเข้ามาใช้งานนานที่สุดก็เลือก ตัวนั้น ซึ่งตัวที่เข้ามาก่อนตัวอื่น ก็คือ physical RAM page 2 ที่เวลา 10:09 และต้องปรับเวลาล่าสุด จากนั้นกลับไปทำที่ DASD page จาก backing store - Free DASD Page table ที่พื้นที่ว่างอยู่ที่ page 0 ซึ่งสามารถใช้ ตัวนี้ได้โดยใส่เลข 7 ใน Free DASD Page table
- จะได้ physical RAM page 2 มีค่า DASD page เป็น 0 - อัพเดท process 7 page table ที่ 1 ที่ มี pageno เป็น 0 และ location เป็น D - ต่อไปก็อัพเดท process 7 page table ที่ 2 ที่มี RAM page เป็น 2 และ location เป็น R - ลำดับสุดท้าย จะอัพเดท index ที่ 2 ของ Free RAM page table ไปจนถึงการอัพเดท timestamp ตั้งแต่ การเข้าทำงานของ page นี้ ซึ่งได้ผลลัพธ์ดังต่อไปนี้ Process 7 Address 2100 ( ต่อ )
Process 3 Logical Pages Process 7 Logical Pages Proce ss 3 Page Table Proce ss 7 Page Table PagenoLocPagenoLoc
Process 3 Address มี logical page เป็น 100/1024 = ( ได้ ผลหารเป็น 0) - index 0 ของ process 3 page table ที่ location เป็น D จากนั้นไปที่ physical RAM page - free RAM page table ไม่มีที่ว่าง ดังนั้นจึง ต้องไปเทียบดูเวลา ว่าข้อมูลตัวใดเข้ามาใช้งานนานที่สุดก็เลือกตัว นั้น ซึ่งตัวที่เข้ามาก่อน ตัวอื่นก็คือ physical RAM page 5 ที่เวลา 10:12 และต้องปรับเวลาล่าสุด จากนั้นกลับไปทำที่ DASD page จาก backing store - Free DASD Page table ที่พื้นที่ว่างอยู่ที่ page 2 ซึ่งสามารถใช้ตัวนี้ได้ โดยใส่เลข 3 ใน Free DASD Page table ที่ 2
- จะได้ physical RAM page 5 มีค่า DASD page เป็น 2 - อัพเดท process 3 page table ที่ 10 ที่มี pageno เป็น 2 และ location เป็น D - ต่อไปก็อัพเดท process 3 page table ที่ 0 ที่มี RAM page เป็น 5 และ location เป็น R - อัพเดท Free DASD page table ที่ 3 ที่มีค่า เป็น -1 ตั้งแต่ page ที่ทำได้ - ลำดับสุดท้าย จะอัพเดท index ที่ 5 ของ Free RAM page table ไปจนถึงการอัพเดท timestamp ตั้งแต่การ เข้าทำงานของ page นี้ Process 3 Address 100 ( ต่อ )
Process 3 Logical Pages Process 7 Logical Pages Proce ss 3 Page Table Proce ss 7 Page Table PagenoLocPagenoLoc
Process 7 Address มี logical page เป็น 4097/1024 = 4 ( ได้ผลหารเป็น 4) - index 4 ของ process7 มี page table เป็น -1 ต้องไปที่ physical RAM page - free RAM page table ไม่มีที่ว่าง ดังนั้น จึงต้องไปเทียบดูเวลา ว่าข้อมูลตัวใดเข้ามาใช้งานนานที่สุดก็เลือก ตัวนั้น ซึ่งตัวที่เข้ามา ก่อนตัวอื่น ก็คือ physical RAM page 3 ที่เวลา 10:14 และต้อง ปรับเวลาล่าสุดจากนั้นกลับไปทำที่ DASD page จาก backing store
Process 7 Address 4097 ( ต่อ ) - Free DASD Page table ที่มี DASD page 3 ซึ่งสามารถใช้ตัวนี้ได้ โดยใส่เลข 3 ใน Free DASD Page table ที่ 3 - จะได้ physical RAM page 3 มีค่า DASD page เป็น 3 - อัพเดท process 3 page table ที่ 4 ที่มี pageno เป็น 3 และ location เป็น D - ต่อไปก็อัพเดท process 7 page table ที่ 4 ที่มี RAM page เป็น 3 และ location เป็น R - ลำดับสุดท้าย จะอัพเดท index ที่ 3 ของ Free RAM page table ไปจนถึง การอัพเดท timestamp ตั้งแต่การเข้าทำงาน ของ page นี้ และเปลี่ยนค่า ของ PID ที่เป็น 7
Process 3 Logical Pages Process 7 Logical Pages Proce ss 3 Page Table Proce ss 7 Page Table PagenoLocPagenoLoc
Process 3 Address มี logical page เป็น 4100/1024 = 4 ( ได้ผลหารเป็น 4) - index 4 ของ process 3 page table แสดง page เป็น DASD ต้องไปที่ physical RAM page - free RAM page table ไม่มีที่ว่าง ดังนั้น จึงต้องไปเทียบดูเวลา ว่าข้อมูลตัวใดเข้ามาใช้งานนานที่สุดก็เลือก ตัวนั้น ซึ่งตัวที่เข้ามา ก่อนตัว อื่นก็คือ physical RAM page 0 ที่เวลา 10:15 และต้อง ปรับเวลา ล่าสุดจากนั้นกลับไปทำที่ DASD page จาก backing store
Process 3 Address 4100 ( ต่อ ) - Free DASD Page table ที่มี DASD page 5 ซึ่งสามารถใช้ตัวนี้ได้ โดยใส่เลข 7 ใน Free DASD Page table ที่ 5 - จะได้ physical RAM page 0 มีค่า DASD page เป็น 5 - อัพเดท process 7 page table ที่ 0 ที่มี pageno เป็น 5 และ location เป็น D - ต่อไปก็อัพเดท process 3 page table ที่ 4 ที่มี RAM page เป็น 0 และ location เป็น R - ลำดับสุดท้าย จะอัพเดท index ที่ 0 ของ Free RAM page table ไปจนถึง การอัพเดท timestamp ตั้งแต่การเข้าทำงาน ของ page นี้ และเปลี่ยนค่าของ PID ที่เป็น 3
Process 3 Logical Pages Process 7 Logical Pages Proce ss 3 Page Table Proce ss 7 Page Table PagenoLocPagenoLoc
Process 7 Address มี logical page เป็น 200/1024 = 0 ( ได้ ผลหารเป็น 0) - index 0 ของ process 7 page table แสดง page เป็น DASD ต้องไปที่ physical RAM page - free RAM page table ไม่มีที่ว่าง ดังนั้นจึง ต้องไปเทียบดูเวลา ว่าข้อมูลตัวใดเข้ามาใช้งานนานที่สุดก็เลือกตัว นั้น ซึ่งตัวที่เข้ามาก่อน ตัวอื่นก็คือ physical RAM page 4 ที่เวลา 10:16 และต้องปรับเวลาล่าสุด จากนั้นกลับไปทำที่ DASD page จาก backing store - Free DASD Page table ที่มี DASD page 3 ซึ่งสามารถใช้ตัวนี้ได้ โดยใส่เลข 7 ใน Free DASD Page table ที่ 3
Process 7 Address 200 ( ต่อ ) - จะได้ physical RAM page 4 มีค่า DASD page เป็น 3 - อัพเดท process 7 page table ที่ 9 ที่มี pageno เป็น 3 และ location เป็น D - ต่อไปก็อัพเดท process 7 page table ที่ 0 ที่มี RAM page เป็น 4 และ location เป็น R - อ่านข้อมูลจาก DASD ที่ page 5 จาก physical RAM page 4 - อัพเดท Free RAM ที่ index 5 ที่มีค่าเป็น ลำดับสุดท้าย จะอัพเดท index ที่ 4 ของ Free RAM page table ไปจนถึงการอัพเดท timestamp ตั้งแต่การ เข้าทำงานของ page นี้
Process 3 Logical Pages Process 7 Logical Pages Proce ss 3 Page Table Proce ss 7 Page Table PagenoLocPagenoLoc
Process 3 Address มี logical page เป็น 200/1024 = 0 - index ที่ 0 ของ process 3 มี page table แสดง page เป็น RAM ดังนั้นจึงสามารถนำข้อมูลมาใช้ได้เลย