บทที่5
หน่วยความจำเสมือน
Virtual Memory
จัดทำโดย
นาย สราวุฒิ เชื้อกสิกรรม รหัสนักศึกษา6031280064
หน่วยความจำเสมือน (Virtual memory)
หน่วยความจำประเภทหนึ่งใช้สำหรับแสดงผล เป็นหน่วยความจำที่ถูกสร้างขึ้นมาในกรณีที่หน่วยความจำแรมไม่พอใช้ โดยระบบปฏิบัติการจะมีการนำเอาพื้นที่ในฮาร์ดดิสก์บางส่วนมาเป็นพื้นที่ทำงานชั่วคราวในขณะเปิดแฟ้มข้อมูล และจะลบทิ้งเมื่อปิดแฟ้มข้อมูล เราจึงเรียกว่า “หน่วยความจำเสมือน” ข้อเสียของการใช้หน่วยความจำเสมือนคือ ถ้าพื้นที่ว่างมีน้อยกว่าที่กำหนดไว้ คอมพิวเตอร์จะทำงานช้าลง การใช้งานฮาร์ดดิสก์จึงมักจะให้มีเนื้อที่ที่ไม่ได้ใช้งาน เหลือไว้ไม่น้อยกว่า 10 เปอร์เซ็นต์
ดังนั้น จะนำเอาสื่อสำรองข้อมูลหรือ Harddisk มาช่วยในการทำงานนั่นเอง
หลักการ
จะทำการเลือกหา “พื้นที่” (Victim)เพื่อทำการแทนที่ Page นั้น(Page Replacement)
อัลกอริธึมของการหาพื้นที่
เป็นการพัฒนาจาก
Demand
Pagingหลักการ
=>
แบ่งโปรเซสออกเป็น
Segmentเริ่มทำงานที่
Main
Segmentเมื่อเกิด
Segment
Fault ก็จะ
Swap
in เอา
Segment
ที่ต้องการเข้ามาใน
RAMหลังจากนั้นจะทำงานต่อไปวิธีนี้จะใช้
RAM
มากกว่าแบบ
Demand
Paging แต่การ
Thrashing
จะเกิดขึ้นได้ยาก
อ้างอิง
https://sites.google.com/site/pee7492/hnwy-khwam-ca-semuxn-virtual-memory
https://www.google.co.th/url?sa=t&rct=j&q=&esrc=s&source=web&cd=11&cad=rja&uact=8&ved=0ahUKEwiEw7vWl_zYAhUBaI8KHSz4DaIQFghaMAo&url=http%3A%2F%2Fweb.chandra.ac.th%2Frawin%2Fos2%2Fvirtual_mem.ppt&usg=AOvVaw2rPEQD-IG4raE0c_3-AZoB
หน่วยความจำประเภทหนึ่งใช้สำหรับแสดงผล เป็นหน่วยความจำที่ถูกสร้างขึ้นมาในกรณีที่หน่วยความจำแรมไม่พอใช้ โดยระบบปฏิบัติการจะมีการนำเอาพื้นที่ในฮาร์ดดิสก์บางส่วนมาเป็นพื้นที่ทำงานชั่วคราวในขณะเปิดแฟ้มข้อมูล และจะลบทิ้งเมื่อปิดแฟ้มข้อมูล เราจึงเรียกว่า “หน่วยความจำเสมือน” ข้อเสียของการใช้หน่วยความจำเสมือนคือ ถ้าพื้นที่ว่างมีน้อยกว่าที่กำหนดไว้ คอมพิวเตอร์จะทำงานช้าลง การใช้งานฮาร์ดดิสก์จึงมักจะให้มีเนื้อที่ที่ไม่ได้ใช้งาน เหลือไว้ไม่น้อยกว่า 10 เปอร์เซ็นต์
Virtual Memory
เป็นการสร้างภาพให้ OS มองเห็น RAM มีมากแบบไม่จำกัดแต่ในความเป็นจริง RAM อาจจะมีน้อยก็ได้ดังนั้น จะนำเอาสื่อสำรองข้อมูลหรือ Harddisk มาช่วยในการทำงานนั่นเอง
หลักการ
หาก
RAM
พอก็ใช้
RAM
หากเต็มก็ใช้
Disk
วิเคราะห์
ลองวิเคราะห์เหตุการณ์ดังนี้
ว่าจะเกิดอะไรขึ้น
1. มี RAM
มากและเปิดโปรแกรมมาน้อย
2. มี RAM
มากและเปิดโปรแกรมมาก
3. มี RAM
น้อยและเปิดโปรแกรมมาก
Logical Address
เป็นมุมมองที่โปรเซสมองเห็น Address ของตนเอง จะใช้หลักการของ Paging โดยจะเริ่ม Page แรกที่ Page 0
Page
Table
เก็บข้อมูลว่า
Page
แต่ละ
Page
นั้น
Valid
หรือไม่
Valid
= อยู่ใน
Physical
Memory แล้ว
Memorเป็นหลักการที่บอกว่า
“ขณะนี้ Page
นี้ไม่อยู่ใน
RAM”
จะมีการส่งสัญญาณ Interrupt ไปที่ CPU เพื่อโหลดข้อมูลที่ต้องการนั้นลงไป
ยามปกติ
ข้อมูลทั้งหมดของโปรเซสจะอยู่ใน Disk ก่อนการ Run ในลักษณะของ Page แต่ละ Page มีขนาดที่เท่ากัน (ขนาดเท่ากับเฟรม)
เมื่อถูกเรียกให้ทำงาน
จะเริ่ม Run ที่ Page แรกก่อน ใน Logical Address ซึ่งจริงๆแล้วอยู่ใน Disk ดังนั้น Page แรกก็จะเกิด Page Fault ทันที
จะโหลด Page แรกมาอยู่ใน RAM และทำงานต่อไปหากมี Page Fault ก็จะทำแบบเดิม
ในความเป็นจริง งานไม่จำเป็นต้องเรียงลำดับของ Page เช่น 0->1->2 เพราะอาจมีการกระโดดข้ามเพจได้ หรือบางเพจอาจไม่ถูกเรียกเลยก็ได้
หาก
RAM
เต็มจะมีการส่งสัญญาณ Interrupt ไปที่ CPU เพื่อโหลดข้อมูลที่ต้องการนั้นลงไป
ยามปกติ
ข้อมูลทั้งหมดของโปรเซสจะอยู่ใน Disk ก่อนการ Run ในลักษณะของ Page แต่ละ Page มีขนาดที่เท่ากัน (ขนาดเท่ากับเฟรม)
เมื่อถูกเรียกให้ทำงาน
จะเริ่ม Run ที่ Page แรกก่อน ใน Logical Address ซึ่งจริงๆแล้วอยู่ใน Disk ดังนั้น Page แรกก็จะเกิด Page Fault ทันที
จะโหลด Page แรกมาอยู่ใน RAM และทำงานต่อไปหากมี Page Fault ก็จะทำแบบเดิม
ในความเป็นจริง งานไม่จำเป็นต้องเรียงลำดับของ Page เช่น 0->1->2 เพราะอาจมีการกระโดดข้ามเพจได้ หรือบางเพจอาจไม่ถูกเรียกเลยก็ได้
จะทำการเลือกหา “พื้นที่” (Victim)เพื่อทำการแทนที่ Page นั้น(Page Replacement)
อัลกอริธึมของการหาพื้นที่
จากที่กล่าวมาแล้วว่า
หาก RAM
เต็มจะต้องทำการแทนที่
Page
นั้น
เราจะมีวิธีการใดบ้างในการเลือกเพจพื้นที่ที่จะถูกแทนที่
1.
FIFO
2.
LRU
3.
Optimal
อัลกอริธึม
FIFO
ย่อมาจาก
First-in
First-outหรือ
มาก่อน ออกก่อนเพจใดเข้ามาใน
RAM
ก่อน
เมื่อ RAM
เต็มก็ต้องออกจาก
RAM
ก่อนเช่นกัน
อัลกอริธึม
LRU
ย่อมาจาก
Least
Recently Usedเป็นอัลกอริธึมที่เหมาะสมที่สุด
ในทางปฏิบัติหลักการ
=>
ที่ผ่านมาเพจใดถูกเรียกใช้เป็นปัจจุบันน้อยที่สุด
จะต้องกลายเป็นพื้นที่
อัลกอริธึม
Optimal
เป็นอัลกอริธึมที่ดีที่สุดในทางอุดมคติแต่ในทางปฏิบัติทำได้ยากหลักการ
=>
เพจใดจะใช้อีกในอนาคตอันใกล้
ก็จะเก็บเพจนั้นไว้
ภาวะ
Thrashing
เป็นภาวะที่ระบบหยุดการทำงานไปชั่วขณะเกิดจากมี
Page
Fault เกิดขึ้นตลอดเวลา
ทำให้มีการ Swap
in และ
Swap
out เป็นจำนวนมาก
สาเหตุของการเกิด Thrashing
การทำงานของโปรแกรมจะมีธรรมชาติของมันอย่างที่กล่าวมาแล้วว่าโปรแกรมสามารถกระโดดไป-มาได้เมื่อกระโดดไป-มา
หากข้อมูลของโปรเซสนั้นไม่อยู่ใน RAM ก็ต้อง
Swap
in เข้ามาส่วนใหญ่แล้ว
พื้นที่ไหนถูกเรียกก็จะทำงานอยู่ในบริเวณใกล้ๆกันเรียกว่า
การอ้างถึงใกล้ๆ (Locality
of Reference)
ดังนั้น
ถ้าเรารู้ Locality
of Reference ของแต่ละโปรเซสเราก็สามารถ
Working
Set Model
เป็นวิธีการที่จะหาขอบเขตการทำงานของกลุ่มย่อยๆ
(Locality
of Reference) ภายในโปรเซสเริ่มโดยการเขียน
Reference
String
Reference
String
ก็คือหมายเลขของ Page
ทั้งหมดที่โปรเซสจะเรียกใช้เรียงตามลำดับ
ตัวอย่าง
2
6 1 5 7 7 7 7 5 1 6 2 3 4 1 2 3 4 1 2 3 4 4 4 3 4 4 4 4 1 3 2
หลังจากนั้น
มองหา Working
Set2
6 1 5 7 7 7 7 5 1 6 2 3 4 1 2 3 4 1 2 3 4 4 4 3 4 4 4 4 1 3 2
Plan
การใช้งาน
RAM
ของมันได้
Demand
Segmentation
https://sites.google.com/site/pee7492/hnwy-khwam-ca-semuxn-virtual-memory
https://www.google.co.th/url?sa=t&rct=j&q=&esrc=s&source=web&cd=11&cad=rja&uact=8&ved=0ahUKEwiEw7vWl_zYAhUBaI8KHSz4DaIQFghaMAo&url=http%3A%2F%2Fweb.chandra.ac.th%2Frawin%2Fos2%2Fvirtual_mem.ppt&usg=AOvVaw2rPEQD-IG4raE0c_3-AZoB
ไม่มีความคิดเห็น:
แสดงความคิดเห็น