วันจันทร์ที่ 29 มกราคม พ.ศ. 2561

บทที่5 หน่วยความจำเสมือน Virtual Memory

บทที่5
หน่วยความจำเสมือน
Virtual Memory
จัดทำโดย
นาย สราวุฒิ เชื้อกสิกรรม รหัสนักศึกษา6031280064

หน่วยความจำเสมือน (Virtual memory)
           หน่วยความจำประเภทหนึ่งใช้สำหรับแสดงผล เป็นหน่วยความจำที่ถูกสร้างขึ้นมาในกรณีที่หน่วยความจำแรมไม่พอใช้ โดยระบบปฏิบัติการจะมีการนำเอาพื้นที่ในฮาร์ดดิสก์บางส่วนมาเป็นพื้นที่ทำงานชั่วคราวในขณะเปิดแฟ้มข้อมูล และจะลบทิ้งเมื่อปิดแฟ้มข้อมูล เราจึงเรียกว่า หน่วยความจำเสมือนข้อเสียของการใช้หน่วยความจำเสมือนคือ ถ้าพื้นที่ว่างมีน้อยกว่าที่กำหนดไว้ คอมพิวเตอร์จะทำงานช้าลง การใช้งานฮาร์ดดิสก์จึงมักจะให้มีเนื้อที่ที่ไม่ได้ใช้งาน เหลือไว้ไม่น้อยกว่า 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 แล้ว
Invalid = ไม่อยู่ใน Physical 

Page Fault
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 เต็ม
จะทำการเลือกหา “พื้นที่” (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
                                                         

เป็นการพัฒนาจาก 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

ไม่มีความคิดเห็น:

แสดงความคิดเห็น