ใบงานที่ 5 ระบบหน่วยความจำเสมือน

ใบงานที่ 5 ระบบหน่วยความจำเสมือน
จัดทำโดย นายสัญชัย  สุดเอก
รหัส 6031280007



ประเภทของการจัดการหน่วยความจำ 


 



การจัดการหน่วยความจำ


 


ระบบหน่วยความจำเสมือน (Virtual Memory)

การจัดการหน่วยความจำสามารถแบ่งออกเป็น 2 ประเภทใหญ่ ๆ
1.ระบบหน่วยความจำจริง
    ขนาดของโปรแกรมจะต้องไม่ใหญ่กว่าขนาดของหน่วยความจำที่มีอยู่ ลบด้วยขนาดของหน่วยความจำที่เป็นส่วนของ OS
2.ระบบหน่วยความจำเสมือน
    ขนาดของโปรแกรมจะมีขนาดเท่าใดก็ได้ 

 

หน่วยความจำเสมือนมีขนาดใหญ่กว่าหน่วยความจำจริง  



แนวคิดของหน่วยความจำเสมือน
  • ผู้เขียนโปรแกรมหรือผู้ใช้จะไม่ถูกจำกัดในเรื่องของขนาดของหน่วยความจำอีกต่อไป
  • OS จะจัดการให้ผู้ใช้สามารถใช้หน่วยความจำได้มากกว่าหน่วยความจำจริงที่มีอยู่
  • โปรแกรมทั้งโปรแกรมโดยส่วนใหญ่ไม่ได้ถูกใช้งานพร้อมกันทั้งหมด ซึ่งการทำงานของโปรแกรมจะเริ่มทำงานจากส่วนต้นโปรแกรม แล้วค่อย ๆ เลื่อนลงมาจนกระทั่งถึงท้ายโปรแกรม
  • ในขณะที่โปรแกรมกำลังทำงานอยู่ที่ส่วนต้นโปรแกรม ที่ปลายโปรแกรมก็ยังไม่ถูกใช้งาน เมื่อโปรแกรมทำงานมาถึงส่วนท้าย ๆ โปรแกรม ส่วนต้น ๆ โปรแกรมก็ไม่ถูกใช้งาน
  • ดังนั้นในช่วงที่โปรแกรมทำงานอยู่ที่ส่วนต้น ๆ ก็ไม่มีความจำเป็นต้องโหลดเอาส่วนท้าย ๆ โปรแกรมลงไปในหน่วยความจำให้เปลืองเนื้อที่
  • เมื่อโปรแกรมทำงานมาจนถึงส่วนที่ยังไม่ได้โหลดเข้าไปในหน่วยความจำ OS จะจัดการดึงเอาส่วนนั้นมาจากหน่วยความจำรอง
  • โดยที่อาจจะโหลดไปทับส่วนต้น ๆ ของโปรแกรมที่อยู่ในหน่วยความจำ หรือโหลดลงไปในส่วนอื่น ๆ ของหน่วยความจำก็ได้
  • จากหลักการดังกล่าวเราจึงสามารถรันโปรแกรมที่มีขนาดใหญ่กว่าหน่วยความจำที่มีอยู่ได้  


การแปลงแอดเดรส (Address Mapping)
  •   เนื่องจากขนาดของโปรแกรมมีขนาดใหญ่กว่าขนาดของหน่วยความจำ ดังนั้นจึงต้องมีการอ้างอิงแอดเดรสระหว่างแอดเดรสของหน่วยความจำจริงกับแอดเดรสของโปรแกรม
  •   แอดเดรสจริง (Real Address หรือ Physical Address) หมายถึงแอดเดรสในหน่วยความจำจริงเท่านั้น
  •   แอดเดรสเสมือน (Virtual Address หรือ Logical Address) หมายถึงแอดเดรสที่โปรแกรมอ้างถึง
  •  ดังนั้นจึงต้องมีกลไกการแปลงแอดเดรสจากแอดเดรสเสมือนให้เป็นแอดเดรสจริง ณ.ตำแหน่งที่โปรแกรมส่วนนั้นถูกวางลงไป ซึ่งเราเรียกว่าการแปลงส่งแอดเดรส (Address Mapping)





  •  เทคนิคการแปลงแอดเดรสมีอยู่หลายวิธี แต่วิธีที่นิยมใช้กันอย่างแพร่หลายคือ dynamic address translation (DAT)
  •  วิธีการที่จะจัดการหน่วยความจำจริงให้สามารถทำงานโปรแกรมที่มีขนาดใหญ่ จะใช้หลักการแบ่งโปรแกรมออกเป็นส่วนย่อย ๆ หลาย ๆ ส่วนเรียกว่าบล็อก (Block)
  •  ขนาดของบล็อกแบ่งออกเป็น 2 แบบคือทุกบล็อกมีขนาดเท่ากัน หรือบล็อกมีขนาดไม่เท่ากัน ดังนั้นระบบหน่วยความจำเสมือนจึงแบ่งได้เป็น 2 แบบ
1.หน่วยความจำเสมือนระบบหน้า (Paging system)
2.หน่วยความจำเสมือนระบบเซกเมนต์ (Segment system)

ระบบหน่วยความจำเสมือนจึงแบ่งได้เป็น 2 แบบ
1.หน่วยความจำเสมือนระบบหน้า (Paging system)
2.หน่วยความจำเสมือนระบบเซกเมนต์ (Segment system)

การแปลงส่งแอดเดรส

1.การแปลงส่งแบบตรง (direct mapping)
2.การแปลงส่งแบบสาระ(associative mapping)
3.การแปลงส่งแบบผสมระหว่างสาระและแบบตรง combined associative/direct mapping


หน่วยความจำเสมือนระบบหน้า (Paging system)

  • เป็นการจัดแบ่งโปรแกรมออกเป็นบล็อกที่มีขนาดเท่า ๆ กันทุกบล็อก โดยจะเรียกบล็อกแต่ละบล็อกว่าหน้า (Page)
  • ตัวอย่างการทำงานในระบบหน้า
    -ระบบมีหน่วยความจำขนาด 100 Kbyte = 100,000 Byte = 105 Byte
    -ต้องการรันโปรแกรมที่มีขนาด 1000 Kbyte = 1,000,000




  •  โปรแกรมของผู้ใช้ไม่ว่าจะมีขนาดใหญ่เท่าใด จะต้องถูกเก็บอยู่ในหน่วยความจำรอง ซึ่งโดยส่วนมากได้แก่ ดิสก์ เนื่องจากมีความจุสูง
  •  เมื่อผู้ใช้สั่งรันโปรแกรม OS จะโหลดเอาโปรแกรมจากดิสก์เข้าไปในหน่วยความจำครั้งละ 1 หน้า นั่นคือ 1 หน้าในโปรแกรมก็จะเข้าไปใช้เนื้อที่ในหน่วยความจำ 1 หน้าเช่นกัน
  •  เมื่อโปรแกรมหนึ่งครอบครองหน้าใดในหน่วยความจำแล้ว โปรแกรมอื่นจะใช้หน้านั้นอีกไม่ได้
  •  โปรแกรมจะครอบครองหน่วยความจำจริงเป็นจำนวนเต็มของหน้า
  •  ดังนั้นต้องมีวิธีการแปลงแอดเดรสจากแอดเดรสเสมือนเป็นแอดเดรสจริง

การแปลงแอดเดรสในระบบหน้า 

  •  OS จะสร้างตารางไว้สำหรับโปรเซส คือ ตารางหน้า (Page table)
  •  สมมุติว่าหน่วยความจำเสมือนมีขนาด 1000 หน้า และหน่วยความจำจริงมีขนาด 100 หน้า
  •  ตารางหน้าก็จะมีขนาด 1000 ช่อง ได้แก่ช่องที่ 000-999
ช่องที่ 000 สำหรับหน้าที่ 000
ช่องที่ 001 สำหรับหน้าที่ 001




ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

พาวเวอร์ซัพพลาย(Power Supply)

เครื่องปริ้นแบบต่างๆ

ใบงานที่4 การจัดเวลาซีพียู (CPU Scheduling)