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

 นาย ธนโชติ ฟ้าคะนอง ชทค.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 เองด้วย)ซีพียูบางตัวถูกสร้างขึ้นโดยมีแคชติดมาด้วย ทำให้การทำงานของซีพียูมีความเร็วสูงขึ้น

ความคิดเห็น