ระบบหน่วยความจำเสมือน
นาย ธนโชติ ฟ้าคะนอง ชทค.1/1 เลขที่5 64301280005
ระบบหน่วยความจำเสมือน
(Virtual Memory)
ประเภทของการจัดการหน่วยความจำ
•การจัดการหน่วยความจำสามารถแบ่งออกเป็น
2 ประเภทใหญ่ ๆ
–ระบบหน่วยความจำจริง
ขนาดของโปรแกรมจะต้องไม่ใหญ่กว่าขนาดของหน่วยความจำที่มีอยู่ ลบด้วยขนาดของหน่วยความจำที่เป็นส่วนของ OS
–ระบบหน่วยความจำเสมือน
ขนาดของโปรแกรมจะมีขนาดเท่าใดก็ได้
แนวคิดของหน่วยความจำเสมือน
ผู้เขียนโปรแกรมหรือผู้ใช้จะไม่ถูกจำกัดในเรื่องของขนาดของหน่วยความจำอีกต่อไป
•OS จะจัดการให้ผู้ใช้สามารถใช้หน่วยความจำได้มากกว่าหน่วยความจำจริงที่มีอยู่
•โปรแกรมทั้งโปรแกรมโดยส่วนใหญ่ไม่ได้ถูกใช้งานพร้อมกันทั้งหมด
ซึ่งการทำงานของโปรแกรมจะเริ่มทำงานจากส่วนต้นโปรแกรม
แล้วค่อย ๆ เลื่อนลงมาจนกระทั่งถึงท้ายโปรแกรม
•ในขณะที่โปรแกรมกำลังทำงานอยู่ที่ส่วนต้นโปรแกรม
ที่ปลายโปรแกรมก็ยังไม่ถูกใช้งาน เมื่อโปรแกรมทำงานมาถึงส่วนท้าย ๆ โปรแกรม
ส่วนต้น ๆ โปรแกรมก็ไม่ถูกใช้งาน
การแปลงแอดเดรส (Address Mapping)
เนื่องจากขนาดของโปรแกรมมีขนาดใหญ่กว่าขนาดของหน่วยความจำ
ดังนั้นจึงต้องมีการอ้างอิงแอดเดรสระหว่างแอดเดรสของหน่วยความจำจริงกับแอดเดรสของโปรแกรม
-แอดเดรสจริง (Real Address หรือ Physical Address) หมายถึงแอดเดรสในหน่วยความจำจริงเท่านั้น
-แอดเดรสเสมือน (Virtual Address หรือ Logical Address) หมายถึงแอดเดรสที่โปรแกรมอ้างถึง
-ดังนั้นจึงต้องมีกลไกการแปลงแอดเดรสจากแอดเดรสเสมือนให้เป็นแอดเดรสจริง
ณ.ตำแหน่งที่โปรแกรมส่วนนั้นถูกวางลงไป ซึ่งเราเรียกว่าการแปลงส่งแอดเดรส
(Address Mapping)
ระบบหน่วยความจำเสมือนจึงแบ่งได้เป็น 2 แบบ
-หน่วยความจำเสมือนระบบหน้า (Paging system)
-หน่วยความจำเสมือนระบบเซกเมนต์ (Segment system)
หน่วยความจำเสมือนระบบหน้า (Paging system)
เป็นการจัดแบ่งโปรแกรมออกเป็นบล็อกที่มีขนาดเท่า ๆ กันทุกบล็อก โดยจะเรียกบล็อกแต่ละบล็อกว่าหน้า(Page)
หน่วยความจำเสมือนระบบเซกเมนต์(Segment System)
-มีลักษณะการทำงานคล้ายกับระบบหน้า (Page System) ต่างกันตรงที่ขนาดของบล็อกไม่จำเป็นต้องเท่ากัน
-ตารางเซกเมนต์
(Segment table) จะมีคอลัมน์มากกว่าตารางหน้าอยู่ 1
คอลัมน์ใช้เก็บขนาดของเซกเมนต์นั้นไว้ เพื่อให้ OS
ทราบว่าแต่ละเซกเมนต์มีขนาดเท่าใด
-การอ่านหรือเขียนข้อมูลจากหน่วยความจำรองและการหาเนื้อที่ในหน่วยความจำจริงจะกระทำตามขนาดของเซกเมนต์
เช่นถ้าเซกเมนต์มีขนาด 5 Kbytes การโหลดจากดิสก์ต้องโหลดข้อมูลขึ้นมา 5
Kbytes ในขณะเดียวกันก็ต้องหาเนื้อที่ว่างในหน่วยความจำที่มีขนาด 5 Kbytes
ด้วยเช่นกัน
หน่วยความจำเสมือนระบบผสมหน้าและเซกเมนต์
-ระบบจะแบ่งหน่วยความจำออกเป็นหน้าที่มีขนาดเท่ากัน
-ในโปรแกรมของผู้ใช้ จะถูกแบ่งออกเป็นเซกเมนต์
-ภายในเซกเมนต์จะถูกแบ่งออกเป็นหลายๆหน้า
-ดังนั้นขนาดของเซกเมนต์จะเป็นจำนวนเท่าของหน้า
-แต่ละเซกเมนต์ของโปรแกรมไม่จำเป็นต้องอยู่เรียงกันในหน่วยความจำแต่ละหน้าในเซกเมนต์
-เดียวกันก็ไม่จำเป็นต้องอยู่เรียงติดกันในหน่วยความจำจริง
-การผสมเอาระบบหน้าและเซกเมนต์เข้าด้วยกันทำให้ประสิทธิภาพการทำงานของระบบดีขึ้น
-ระบบผสมนี้ แอดเดรสเสมือนจะแบ่งออกเป็น 3 ส่วน คือ หมายเลขหน้าเซกเมนต์ หมายเลขหน้า และดีสเพลซเมนต์
-นำหมายเลขเซกเมนต์ (S)ของแอดเดรสเสมือนไปหาแอดเดรสของตารางหน้าที่เก็บอยู่ในตารางเซกเมนต์
-เมื่อทราบว่าตารางหน้าอยู่ที่ใดในหน่วยความจำแล้ว
-ใช้หมายเลขหน้า P เพื่อหาแอดเดรสของหน้า P’ในหน่วยความจำ
-นำค่าแอดเดรสนี้บวกกับดีสเพลซเมนต์ก็จะได้แอดเดรสจริงในหน่วยความจำ
ยุทธวิธีการเฟตซ์
ยุทธวิธีการเฟตซ์ (Fetch Strategy) หมายถึงการโหลดหน้าหรือเซกเมนต์จากดิสก์เข้าไปในหน่วยความจำ แบ่งออกได้เป็น 2 วิธี คือ
-การเฟตซ์แบบต้องการ (demand fetch) OS จะโหลดเฉพาะหน้าหรือเซกเมนต์ ที่ต้องการใช้เท่านั้นเข้าไปในหน่วยความจำ
-การเฟตซ์แบบคาดเดา
(anticipate fetch) จะมีการคาดเดาว่าหน้าหรือ
เซกเมนต์ไหนจะถูกใช้เป็นหน้าหรือเซกเมนต์ต่อไป
และจะโหลดหน้าหรือเซกเมนต์นั้นเข้าไปไว้ในหน่วยความจำล่วงหน้า
(ก่อนเกิดการใช้งานจริง)ทำให้โปรแกรมทำงานได้เร็วขึ้o
ลำดับชั้นของหน่วยความจำ
•การขนย้ายข้อมูลระหว่างแคชกับแรม
–มีลักษณะการทำงานเหมือนกับการขนย้ายข้อมูลระหว่างดิสก์กับแรมในระบบหน่วยความจำเสมือน
•ความแตกต่างกันระหว่างแคชกับแรม
–ในการขนย้ายข้อมูลเป็นไปโดยวงจรทางฮาร์ดแวร์
ไม่มีส่วนเกี่ยวข้องกับโปรแกรมใดๆทั้งสิ้น(รวมทั้ง
OS เองด้วย)ซีพียูบางตัวถูกสร้างขึ้นโดยมีแคชติดมาด้วย
ทำให้การทำงานของซีพียูมีความเร็วสูงขึ้น
ความคิดเห็น
แสดงความคิดเห็น