Chapter 9:  หน่วยความจำเสมือน Virtual Memory <ul><li>Background </li></ul><ul><li>Demand Paging </li></ul><ul><li>Process ...
Background <ul><li>พื้นฐาน  </li></ul><ul><li>หน่วยความจำเสมือน เป็นการแบ่งหน่วยความจำเชิงตรรกของผู้ใช้ออกจาก หน่วยความจำท...
Virtual Memory That is Larger Than Physical Memory หน่วยความจำเสมือนที่มีขนาดใหญ่กว่าหน่วยความจำทางกายภาพ
Demand Paging <ul><li>การจัดเพจแบบตามความต้องการ </li></ul><ul><li>นำเพจไปไว้ในหน่วยความจำ เมื่อมีความต้องการ ต่างๆ ดังนี้...
Transfer of a Paged Memory to Contiguous Disk Space การโอนย้ายหน่วยความจำที่ถูกจัดเพจ ไปไว้ยังพื้นที่ต่อเนื่องบนดิสก์
Valid-Invalid Bit <ul><li>บิทบ่งชี้ความถูกต้องและไม่ถูกต้อง </li></ul><ul><li>ด้วยการเข้าถึงแต่ละตารางเพจ สัมพันธ์อยู่กับบ...
Page Table When Some Pages Are Not in Main Memory ตารางเพจ ในขณะที่บางเพจไม่อยู่ในหน่วยความจำหลัก
เพจผิดพลาด  Page Fault <ul><li>หากเกิดการอ้างอิงไปยังเพจใดๆ การอ้างอิงครั้งแรก จะแทรปไปยังระบบปฏิบัติการ     เพจผิดพลาด <...
ขั้นตอนในการจัดการเพจผิด  Steps in Handling a Page Fault
ขั้นตอนในการจัดการเพจผิด  Steps in Handling a Page Fault 1.  ตรวจดูตารางข้อมูลการควบคุมโปรเซส  ( PCB)  ที่อ้างอิงถึงเพจที่...
กรณีไม่มีเฟรมว่างจะเกิดอะไรขึ้น   What happens if there is no free frame? <ul><li>การจัดสรรพื้นที่ให้เพจใหม่ โดยหาเพจใดๆ ใ...
ประสิทธิภาพของการจัดเพจตามความต้องการที่เกิดขึ้น Performance of Demand Paging <ul><li>อัตราการเกิดเพจผิดพลาด  </li></ul><u...
ตัวอย่างการจัดเพจตามความต้องการ Demand Paging Example <ul><li>Swap Page Time = 10 msec = 10,000 msec </li></ul><ul><li>EAT...
การสร้างโปรเซส Process Creation <ul><li>Virtual memory allows other benefits during process creation: </li></ul><ul><li>- ...
COW  ยอมให้ทั้งโปรเซสต้นกำเนิดและโปรเซสลูก สามารถใช้เพจร่วมกันในหน่วยความจำ  หาก ทั้งสองโปรเซสเปลี่ยนแปลงเพจที่ใช้งานร่วมก...
Memory-Mapped Files <ul><li>Memory-mapped file I/O allows file I/O to be treated as routine memory access by  mapping  a d...
Memory Mapped Files
Page Replacement <ul><li>การสลับแทนที่เพจ  </li></ul><ul><li>การเกิดการอ้างอิงถึงเพจที่ไม่มีอยู่ในหน่วยความจำหลัก ทำให้เกิ...
Page Replacement <ul><li>แต่หากการโหลดเพจที่ต้องการนั้นกลับเข้ามา ระบบไม่สามารถจัดหาเฟรมว่างเพื่อรองรับเพจนั้นได้ ระบบสามา...
Page Replacement <ul><li>2.  การให้โปรเซสใดๆ หยุดการทำงานชั่วคราว เพื่อสามารถนำเพจที่เกิดจากการอ้างอิงของโปรเซสใดๆ นั้นไปเ...
Page Replacement <ul><li>3.  โดยวิธีที่สองนี้เรียกว่า เทคนิคการสับเปลี่ยนเพจ  (Page Replacement)  กล่าวคือหากในหน่วยความจำ...
Need For Page Replacement
Basic Page Replacement <ul><li>Find the location of the desired page on disk. </li></ul><ul><li>Find a free frame: - If th...
Page Replacement
Page Replacement Algorithms <ul><li>In all our examples, the reference string is  </li></ul><ul><li>1, 2, 3, 4, 1, 2, 5, 1...
Graph of Page Faults Versus The Number of Frames
First-In-First-Out (FIFO) Algorithm   อัลกอริธึมแบบ มาก่อนออกก่อน  <ul><li>Reference string: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3,...
FIFO Page Replacement (First-In-First-Out Algorithm: FIFO) เป็นวิธีการจัดการที่ง่ายที่สุด  เลือกเพจที่มีอายุอยู่ในหน่วยควา...
FIFO Illustrating Belady’s Anomaly
Optimal Algorithm <ul><li>Replace page that will not be used for longest period of time. </li></ul><ul><li>4 frames exampl...
Optimal Page Replacement <ul><li>อัลกอริธึมแบบประสิทธิภาพดี </li></ul><ul><li>เป็นวิธีที่สามารถลดปัญหาการเกิดความผิดพลาดกา...
Least Recently Used (LRU) Algorithm <ul><li>Reference string:  1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 </li></ul><ul><li>Counte...
LRU Page Replacement <ul><li>อัลกอริธึมแบบเพจที่เคยถูกใช้เป็นครั้งสุดท้ายนานที่สุด  </li></ul><ul><li>ด้วยแบบประสิทธิภาพดี...
LRU Algorithm (Cont.) LRU  เป็นวิธีที่ให้ผลทางประสิทธิภาพใกล้เคียงกับแบบประสิทธิภาพดี มากที่สุดโดยมีแนวคิดในการจัดการคือ เ...
Use Of A Stack to Record The Most Recent Page References การใช้แสต็กในการจัดการกับ อ้างอิงถึงเพจเพื่อให้เพจที่ถูกอ้างอิงถึ...
LRU Approximation Algorithms  อัลกอริธึมเลียนแบบ  LRU  <ul><li>โดยอาศัยบิทอ้างอิง  </li></ul><ul><ul><li>ขณะเริ่มต้นเพจใดๆ...
Second-Chance (clock) Page-Replacement Algorithm
Counting Algorithms   อัลกอริธึมการนับ  <ul><li>ใช้ตัวนับจำนวนในการอ้างอิงถึงแต่ละเพจ  </li></ul><ul><li>อัลกอริธึมแบบ  LF...
Allocation of Frames <ul><li>Each process needs  minimum  number of pages. </li></ul><ul><li>Example:  IBM 370 – 6 pages t...
Fixed Allocation <ul><li>Equal allocation – e.g., if 100 frames and 5 processes, give each 20 pages. </li></ul><ul><li>Pro...
Priority Allocation <ul><li>Use a proportional allocation scheme using priorities rather than size. </li></ul><ul><li>If p...
Global vs. Local Allocation <ul><li>Global  replacement – process selects a replacement frame from the set of all frames; ...
Thrashing <ul><li>If a process does not have “enough” pages, the page-fault rate is very high.  This leads to: </li></ul><...
Thrashing  <ul><li>Why does paging work? Locality model </li></ul><ul><ul><li>Process migrates from one locality to anothe...
Locality In A Memory-Reference Pattern
Working-Set Model <ul><li>      working-set window    a fixed number of page references  Example:  10,000 instruction <...
Working-set model
Keeping Track of the Working Set <ul><li>Approximate with interval timer + a reference bit </li></ul><ul><li>Example:    ...
Page-Fault Frequency Scheme <ul><li>Establish “acceptable” page-fault rate. </li></ul><ul><ul><li>If actual rate too low, ...
Other Considerations <ul><li>Prepaging  </li></ul><ul><li>Page size selection </li></ul><ul><ul><li>fragmentation </li></u...
Other Considerations (Cont.) <ul><li>TLB Reach  - The amount of memory accessible from the TLB. </li></ul><ul><li>TLB Reac...
Increasing the Size of the TLB <ul><li>Increase the Page Size . This may lead to an increase in fragmentation as not all a...
Other Considerations (Cont.) <ul><li>Program structure </li></ul><ul><ul><li>int A[][] = new int[1024][1024]; </li></ul></...
Other Considerations (Cont.) <ul><li>I/O Interlock  – Pages must sometimes be locked into memory. </li></ul><ul><li>Consid...
Reason Why Frames Used For I/O Must Be In Memory
Demand Segmentation <ul><li>Used when insufficient hardware to implement demand paging. </li></ul><ul><li>OS/2 allocates m...
Operating System Examples <ul><li>Windows NT </li></ul><ul><li>Solaris 2 </li></ul>
Windows NT <ul><li>Uses demand paging with  clustering . Clustering brings in pages surrounding the faulting page. </li></...
Solaris 2 <ul><li>Maintains a list of free pages to assign faulting processes. </li></ul><ul><li>Lotsfree  – threshold par...
Solaris 2 Page Scanner
Fig 10.03
Fig. 10.2
Upcoming SlideShare
Loading in...5
×

Ch10th

6,467

Published on

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,467
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide
  • Ch10th

    1. 1. Chapter 9: หน่วยความจำเสมือน Virtual Memory <ul><li>Background </li></ul><ul><li>Demand Paging </li></ul><ul><li>Process Creation </li></ul><ul><li>Page Replacement </li></ul><ul><li>Allocation of Frames </li></ul><ul><li>Thrashing </li></ul><ul><li>Demand Segmentation </li></ul><ul><li>Operating System Examples </li></ul><ul><li>พื้นฐาน </li></ul><ul><li>การจัดเพจตามต้องความต้องการ </li></ul><ul><li>การสร้างโปรเซส </li></ul><ul><li>การแทนที่เพจ </li></ul><ul><li>การจัดสรรพื้นที่สำหรับเฟรม </li></ul><ul><li>การทำแธรช </li></ul><ul><li>การทำเซ็กเม้นท์ตามความต้องการ </li></ul><ul><li>ตัวอย่างระบบปฏิบัติการ </li></ul>
    2. 2. Background <ul><li>พื้นฐาน </li></ul><ul><li>หน่วยความจำเสมือน เป็นการแบ่งหน่วยความจำเชิงตรรกของผู้ใช้ออกจาก หน่วยความจำทางกายภาพ </li></ul><ul><li>เป็นส่วนเดียวของโปรแกรมที่ต้องการเข้าไปอยู่ในหน่วยความจำ เพื่อการเอ็กซ์ซีคิวท์หรือการประมวลผล </li></ul><ul><li>พื้นที่แอดเดรสเชิงตรรก สามารถที่จะมีขนาดที่ใหญ่กว่าพื้นที่แอดเดรสทางกายภาพ </li></ul><ul><li>ยอมให้พื้นที่แอดเดรสถูกแบ่งปันการใช้งานจากหลายๆ โปรเซส </li></ul><ul><li>ยอมให้เกิดหรือสร้างโปรเซสหลายโปรเซสขึ้นได้อย่างมีประสิทธิภาพ </li></ul><ul><li>หน่วยความจำเสมือน สามารถถูกใช้ผ่าน </li></ul><ul><li>การจัดเพจตามความต้องการ </li></ul><ul><li>การทำเซ็กเม้นท์ตามความต้องการ </li></ul>
    3. 3. Virtual Memory That is Larger Than Physical Memory หน่วยความจำเสมือนที่มีขนาดใหญ่กว่าหน่วยความจำทางกายภาพ
    4. 4. Demand Paging <ul><li>การจัดเพจแบบตามความต้องการ </li></ul><ul><li>นำเพจไปไว้ในหน่วยความจำ เมื่อมีความต้องการ ต่างๆ ดังนี้ </li></ul><ul><li>มีความต้องใช้อินพุทเอ้าท์พุทน้อย </li></ul><ul><li>มีความต้องการใช้หน่วยความจำน้อย </li></ul><ul><li>มีการตอบสนองที่รวดเร็ว </li></ul><ul><li>มีผู้ใช้งานจำนวนมาก </li></ul><ul><li>มีความต้องการเพจ  โดยการอ้างอิงถึง </li></ul><ul><li>การอ้างอิงไม่ถูกต้อง  ปฏิเสธ </li></ul><ul><li>ไม่อยู่ในหน่วยความจำ  นำไปไว้ในหน่วยความจำ </li></ul>
    5. 5. Transfer of a Paged Memory to Contiguous Disk Space การโอนย้ายหน่วยความจำที่ถูกจัดเพจ ไปไว้ยังพื้นที่ต่อเนื่องบนดิสก์
    6. 6. Valid-Invalid Bit <ul><li>บิทบ่งชี้ความถูกต้องและไม่ถูกต้อง </li></ul><ul><li>ด้วยการเข้าถึงแต่ละตารางเพจ สัมพันธ์อยู่กับบิทบ่งชี้ความถูกต้องและไม่ถูกต้อง </li></ul><ul><li>( 1  อยู่ในหน่วยความจำ , 0  ไม่อยู่ในหน่วยความจำ ) </li></ul><ul><li>ในเวลาเริ่มต้นบิทบ่งชี้ความถูกต้องและไม่ถูกต้องถูกกำหนดให้เป็น 0 สำหรับทุกๆ การเข้าถึง </li></ul><ul><li>ตัวอย่างของตารางเพจ </li></ul><ul><li>ในขณะทำการแปลงค่าแอดเดรส หากบิทบ่งชี้ฯ ในการเข้าถึงตารางเพจ มีค่าเป็น 0  ไม่สามารถเข้าถึงเพจได้ หรือเกิดการผิดพลาด </li></ul>1 1 1 1 0 0 0  Frame # valid-invalid bit page table
    7. 7. Page Table When Some Pages Are Not in Main Memory ตารางเพจ ในขณะที่บางเพจไม่อยู่ในหน่วยความจำหลัก
    8. 8. เพจผิดพลาด Page Fault <ul><li>หากเกิดการอ้างอิงไปยังเพจใดๆ การอ้างอิงครั้งแรก จะแทรปไปยังระบบปฏิบัติการ  เพจผิดพลาด </li></ul><ul><li>ระบบปฏิบัติการจะพิจารณาไปยังตารางอื่นๆ เพื่อการตัดสินใจ </li></ul><ul><li>การอ้างอิงไม่ถูกต้อง  ปฏิเสธ </li></ul><ul><li>ยังไม่อยู่ในหน่วยความจำ </li></ul><ul><li>รับเฟรมว่าง </li></ul><ul><li>สลับเพจไปไว้ในเฟรม </li></ul><ul><li>กำหนดค่าตารางใหม่ บิทบ่งชี้ฯ = 1 </li></ul><ul><li>ทำคำสั่งอีกครั้ง </li></ul><ul><li>auto increment/decrement location </li></ul>
    9. 9. ขั้นตอนในการจัดการเพจผิด Steps in Handling a Page Fault
    10. 10. ขั้นตอนในการจัดการเพจผิด Steps in Handling a Page Fault 1. ตรวจดูตารางข้อมูลการควบคุมโปรเซส ( PCB) ที่อ้างอิงถึงเพจที่ต้องการถูกต้องหรือไม่ 2. หากการอ้างอิงผิดพลาดให้ยกเลิก โปรเซส หากการอ้างอิงถูกต้อง แต่เพจที่ต้องการไม่มีอยู่ในหน่วยความจำหลัก ให้ไปดำเนินการขั้นต่อไป 3. หาพื้นที่ว่างในเฟรม 1 เพจ โดยอาจเลือกจากรายการแสดงแฟรมว่าง 4. ส่งรีเควสต์ไปยังฮาร์ดดิสก์ เพื่อให้ฮาร์ดดิสก์ทำการอ่านเพจที่ต้องการส่งมาไว้ยังพื้นที่ว่างในเฟรมที่เลือกไว้ก่อนหน้า 5. เมื่อดิสก์โหลดเพจเสร็จสิ้นแล้ว ระบบจะทำการแก้ไขบิตสถานะในตารางเพจ เป็น “สามารถใช้งานได้” 6. ให้โปรเซสทำงานต่อจากจุดที่เกิด “การอ้างอิงถึงเพจผิดพลาด หรือ Page Fault ” โปรเซสก็จะสามารถทำงานต่อไปเสมือนหนึ่งว่า เพจที่ต้องการใช้งานมีอยู่ในหน่วยความจำตลอดเวลา
    11. 11. กรณีไม่มีเฟรมว่างจะเกิดอะไรขึ้น What happens if there is no free frame? <ul><li>การจัดสรรพื้นที่ให้เพจใหม่ โดยหาเพจใดๆ ในหน่วยความจำ แต่ไม่ได้ถูกใช้งานจริง และทำการสลับมันออกไป </li></ul><ul><ul><li>อัลกอริธึม </li></ul></ul><ul><ul><li>ประสิทธิภาพ ต้องการอัลกอริธึมเพื่อจัดการให้ได้ผลลัพท์ ที่มีจำนวนเพจผิดพลาดน้อยที่สุด </li></ul></ul><ul><li>โดยเพจเดียวกันอาจถูกนำไปไว้ยังหน่วยความจำเวลาต่างๆ กัน </li></ul>
    12. 12. ประสิทธิภาพของการจัดเพจตามความต้องการที่เกิดขึ้น Performance of Demand Paging <ul><li>อัตราการเกิดเพจผิดพลาด </li></ul><ul><li>ให้ P เป็นโอกาสการเกิดความผิดพลาดการจัดเพจผิดพลาด เพื่อประสิทธิภาพที่ดีจึงต้องการให้ P มีค่าเข้าใกล้ 0 มากที่สุด ซึ่งหมายถึงเกิดความผิดพลาดน้อยที่สุด </li></ul><ul><li>ระยะเวลาการเข้าถึงหน่วยความจำ Effective Access Time (EAT) </li></ul><ul><li>EAT = (1 – p ) x memory access </li></ul><ul><li>+ p (page fault overhead </li></ul><ul><li>+ [swap page out ] </li></ul><ul><li>+ swap page in </li></ul><ul><li>+ restart overhead) </li></ul>
    13. 13. ตัวอย่างการจัดเพจตามความต้องการ Demand Paging Example <ul><li>Swap Page Time = 10 msec = 10,000 msec </li></ul><ul><li>EAT = (1 – p) x 1 + p (15000) </li></ul><ul><li>1 + 15000P (in msec) </li></ul><ul><li>ระยะเวลาในการเข้าถึงหน่วยความจำ 1 ไมโครวินาที </li></ul><ul><li>50 % ของระยะเวลาของเพจที่ถูกใช้ไปในการสลับเข้าออกจากพื้นที่หน่วยความจำ </li></ul><ul><li>ระยะเวลาในการสลับการทำงาน </li></ul>
    14. 14. การสร้างโปรเซส Process Creation <ul><li>Virtual memory allows other benefits during process creation: </li></ul><ul><li>- Copy-on-Write </li></ul><ul><li>- Memory-Mapped Files </li></ul><ul><li>หน่วยความจำเสมือนยอมให้เกิดการทำงานอื่นๆ ขึ้นได้ระหว่างการสร้างโปรเซส </li></ul><ul><li>ก๊อปปี้ ขณะ เขียน </li></ul><ul><li>ไฟล์ที่แมพค่าเข้ากับหน่วยความจำ </li></ul>
    15. 15. COW ยอมให้ทั้งโปรเซสต้นกำเนิดและโปรเซสลูก สามารถใช้เพจร่วมกันในหน่วยความจำ หาก ทั้งสองโปรเซสเปลี่ยนแปลงเพจที่ใช้งานร่วมกัน ก็เพียงทำการสำเนาเพจนั้นไว้ก่อน COW ยอมให้การสร้างโปรเซสหลายโปรเซสได้อย่างมีประสิทธิภาพ โดยเพียงแต่แก้ไขเพจที่ถูกสำเนา เพจว่างถูกจัดสรรให้จาก พูลของเพจที่ไม่ได้ถูกใช้งาน Copy-on-Write
    16. 16. Memory-Mapped Files <ul><li>Memory-mapped file I/O allows file I/O to be treated as routine memory access by mapping a disk block to a page in memory. </li></ul><ul><li>A file is initially read using demand paging. A page-sized portion of the file is read from the file system into a physical page. Subsequent reads/writes to/from the file are treated as ordinary memory accesses. </li></ul><ul><li>Simplifies file access by treating file I/O through memory rather than read() write() system calls. </li></ul><ul><li>Also allows several processes to map the same file allowing the pages in memory to be shared. </li></ul>
    17. 17. Memory Mapped Files
    18. 18. Page Replacement <ul><li>การสลับแทนที่เพจ </li></ul><ul><li>การเกิดการอ้างอิงถึงเพจที่ไม่มีอยู่ในหน่วยความจำหลัก ทำให้เกิดปัญหาการผิดพลาดการจัดเพจ โดยฮาร์ดแวร์จะทำการแจ้งไปยังระบบปฏิบัติการ โดยตรวจสอบความผิดพลาดที่เกิดขึ้นจากตารางการขัดจังหวะ จากนั้นระบบจะดำเนินการโหลดเพจที่ต้องการกลับมาไว้ยังพื้นที่ในเฟรมว่างที่จัดสรรไว้ก่อนแล้ว เพื่อการทำงานของโปรเซสที่ต้องการใช้หรือเกิดการอ้างอิงถึงเพจดังกล่าวสามารถทำงานต่อไปได้ </li></ul>
    19. 19. Page Replacement <ul><li>แต่หากการโหลดเพจที่ต้องการนั้นกลับเข้ามา ระบบไม่สามารถจัดหาเฟรมว่างเพื่อรองรับเพจนั้นได้ ระบบสามารถดำเนินการด้วยวิธีต่อไปนี้ </li></ul><ul><li>ให้โปรเซสที่อ้างอิงถึงเพจนั้นหยุดการทำงาน ชั่วคราวจนกว่าจะเกิดเฟรมว่างจากการคืนทรัพยากรของโปรเซสอื่นๆ แต่ด้วยวิธีนี้จะส่งผลต่อผู้ใช้งานที่สั่งให้เกิดการทำงานของโปรเซสนั้นขึ้น และทำให้ประสิทธิภาพการทำงานของระบบโดยรวมลดลง </li></ul>
    20. 20. Page Replacement <ul><li>2. การให้โปรเซสใดๆ หยุดการทำงานชั่วคราว เพื่อสามารถนำเพจที่เกิดจากการอ้างอิงของโปรเซสใดๆ นั้นไปเก็จไว้ยังฮาร์ดดิสก์ก่อน ซึ่งจะทำให้เกิดพื้นที่ว่างหรือเฟรมว่างในหน่วยความจำหลัก และสามารถนำเฟรมว่างที่เกิดขึ้นนี้ไปให้เพจที่ต้องการเข้าใช้งานก่อน </li></ul>
    21. 21. Page Replacement <ul><li>3. โดยวิธีที่สองนี้เรียกว่า เทคนิคการสับเปลี่ยนเพจ (Page Replacement) กล่าวคือหากในหน่วยความจำหลักไม่มีเฟรมว่างอยู่เลย อันเนื่องมาจากการใช้งานของเพจใดๆ อยู่เต็มทุกพื้นที่ เมื่อเกิดความต้องการการเข้าใช้งานเฟรม หรือต้องการเฟรมว่าง จากเพจที่เกิดขึ้นใหม่และจำเป็นต้องจัดสรรเฟรมว่างให้ใช้งานก่อน ระบบจะทำการจัดสรรเฟรมว่างด้วยการนำเพจที่มีอยู่ในหน่วยความจำหลักก่อนหน้านี้ และเกิดการใช้งานน้อยที่สุดหรือเกิดขึ้นก่อนสุด ให้ออกไปจากหน่วยความจำหลักไปไว้ยังฮาร์ดดิสก์ก่อนชั่วคราวเพื่อให้เกิดเฟรมว่างขึ้นในหน่วยความจำหลัก จากนั้นจึงนำเฟรมที่ว่างขึ้นไปให้กับเพจที่เกิดขึ้นภายหลังและจำเป็นต้องเข้าทำงานก่อนเข้าใช้ ทั้งนี้ระบบจะต้องทำการแก้ไขตารางการจัดเพจให้สถานะของเพจที่ถูกนำออกไปจากหน่วยความจำหลักนั้นมีสถานะเป็นไม่สามารถใช้งานได้เพื่อป้องกันความผิดพลาดที่อาจเกิดขึ้นจากโปรเซสที่อ้างถึงเพจนั้นด้วย </li></ul>
    22. 22. Need For Page Replacement
    23. 23. Basic Page Replacement <ul><li>Find the location of the desired page on disk. </li></ul><ul><li>Find a free frame: - If there is a free frame, use it. - If there is no free frame, use a page replacement algorithm to select a victim frame. </li></ul><ul><li>Read the desired page into the (newly) free frame. Update the page and frame tables. </li></ul><ul><li>Restart the process. </li></ul>
    24. 24. Page Replacement
    25. 25. Page Replacement Algorithms <ul><li>In all our examples, the reference string is </li></ul><ul><li>1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5. </li></ul><ul><li>อัลกอริธึมการสลับเพจ </li></ul><ul><li>ด้วยเทคนิคการสลับเพจมีหลากหลายวิธี โดยปกติจะเลือกใช้วิธีที่ทำให้เกิดความผิดพลาดในการอ้างอิงถึงเพจ ต่ำสุด </li></ul><ul><li>สามารถค้นหาวิธีที่ดีที่สุดได้ด้วยการทดสอบด้วยการสร้างข้อมูล เพื่อให้เกิดการเข้าใช้ และดูว่าวิธีใดเกิดการผิดพลาดน้อยครั้งที่สุด </li></ul>
    26. 26. Graph of Page Faults Versus The Number of Frames
    27. 27. First-In-First-Out (FIFO) Algorithm อัลกอริธึมแบบ มาก่อนออกก่อน <ul><li>Reference string: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 </li></ul><ul><li>3 frames (3 pages can be in memory at a time per process) </li></ul><ul><li>4 frames </li></ul><ul><li>FIFO Replacement – Belady’s Anomaly </li></ul><ul><ul><li>more frames  less page faults </li></ul></ul>1 2 3 1 2 3 4 1 2 5 3 4 9 page faults 1 2 3 1 2 3 5 1 2 4 5 10 page faults 4 4 3
    28. 28. FIFO Page Replacement (First-In-First-Out Algorithm: FIFO) เป็นวิธีการจัดการที่ง่ายที่สุด เลือกเพจที่มีอายุอยู่ในหน่วยความจำหลักมากที่สุด เป็นเพจที่จะต้องออกไปก่อน แต่ด้วยวิธีนี้เพจที่เก็บค่าสำคัญเพื่อการทำงานหลักของระบบอาจเป็นเพจที่ถูกเลือกให้เป็นเพจที่ต้องออกจากหน่วยความจำ และเมื่อเกิดการอ้างอิงถึงเพจนั้นก็จะต้องทำการโหลดเข้ามาใหม่ หากเพจนั้นถูกอ้างอิงถึงบ่อย จะทำให้เกิดความผิดพลาดในการจัดเพจ ขึ้นบ่อยไปด้วยแม้ว่าจะสามารถโหลดเพจนั้นกลับเข้ามาใหม่ก็ตามแต่ก็จะเกิดความสูญเสียเวลาและงานขึ้น ทำให้ประสิทธิภาพของระบบลดลง ปรากฏการณ์เช่นนี้เรียกว่า ความผิดปกติ แบบเบลาดี้
    29. 29. FIFO Illustrating Belady’s Anomaly
    30. 30. Optimal Algorithm <ul><li>Replace page that will not be used for longest period of time. </li></ul><ul><li>4 frames example </li></ul><ul><li> 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 </li></ul><ul><li>How do you know this? </li></ul><ul><li>Used for measuring how well your algorithm performs. </li></ul>1 2 3 4 6 page faults 4 5
    31. 31. Optimal Page Replacement <ul><li>อัลกอริธึมแบบประสิทธิภาพดี </li></ul><ul><li>เป็นวิธีที่สามารถลดปัญหาการเกิดความผิดพลาดการจัดเพจ และหลีกเลี่ยงปัญหาความผิดพลาดแลลเบลาดี้ </li></ul><ul><li>เลือกสับเปลี่ยนเพจที่จะเกิดการอ้างอิงถึงในอนาคตอันไกลที่สุด ออกจากหน่วยความจำก่อน </li></ul><ul><li>ทำให้เกิดความผิดพลาดจากการจัดเพจขึ้นน้อยที่สุด </li></ul>
    32. 32. Least Recently Used (LRU) Algorithm <ul><li>Reference string: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 </li></ul><ul><li>Counter implementation </li></ul><ul><ul><li>Every page entry has a counter; every time page is referenced through this entry, copy the clock into the counter. </li></ul></ul><ul><ul><li>When a page needs to be changed, look at the counters to determine which are to change. </li></ul></ul>1 2 3 5 4 4 3 5
    33. 33. LRU Page Replacement <ul><li>อัลกอริธึมแบบเพจที่เคยถูกใช้เป็นครั้งสุดท้ายนานที่สุด </li></ul><ul><li>ด้วยแบบประสิทธิภาพดีที่สุดยากต่อการเขียนโปรแกรม เนื่องจากยากที่จะทราบได้ว่าเพจใดจะถูกเรียกใช้ในอนาคตอันไกลสุด เพราะต้องเกิดจากการคาดการณ์ซึ่งยากที่จะคาดการณ์ได้ </li></ul>
    34. 34. LRU Algorithm (Cont.) LRU เป็นวิธีที่ให้ผลทางประสิทธิภาพใกล้เคียงกับแบบประสิทธิภาพดี มากที่สุดโดยมีแนวคิดในการจัดการคือ เมื่อเกิดความต้องการที่จะต้องสลับเพจหนึ่งเพจใดออกจากหน่วยความจำหลัก ระบบจะเลือกเพจที่เคยถูกใช้เป็นครั้งสุดท้ายที่มีระยะเวลานานที่สุด หรืออีกนัยหนึ่งคือเพจนั้นเคยถูกใช้งานล่าสุดมานานกว่าเพจใดๆ ในระบบ จึงคาดว่าระบบนั้นอาจจะไม่ถูกใช้งานหรืออีกนานกว่าจะถูกใช้งาน หรือมีความถี่ที่ถูกอ้างอิงถึงน้อยที่สุดนั่นเอง ระบบก็จะเลือกนำเพจนี้ออกไปจากหน่วยความจำหลักก่อนเพื่อเปิดโอกาสให้เกิดเฟรมว่างขึ้นในหน่วยความจำหลักและสามารถให้เพจที่เกิดขึ้นใหม่และจำเป็นต้องเข้าใช้หน่วยความจำหลักสามารถทำงานได้ ระบบจะทำการบันทึกเวลาที่แต่ละเพจถูกอ้างอิงถึง ครั้งล่าสุดไว้ เมื่อต้องการเลือกเพจใดให้ออกจากหน่วยความจำ ก็จะเลือกจากเพจที่ไม่ถูกอ้างอิงหรือใช้งานเป็นระยะเวลานานที่สุด
    35. 35. Use Of A Stack to Record The Most Recent Page References การใช้แสต็กในการจัดการกับ อ้างอิงถึงเพจเพื่อให้เพจที่ถูกอ้างอิงถึงล่าสุดอยู่บนสุด
    36. 36. LRU Approximation Algorithms อัลกอริธึมเลียนแบบ LRU <ul><li>โดยอาศัยบิทอ้างอิง </li></ul><ul><ul><li>ขณะเริ่มต้นเพจใดๆ จะถูกกำหนดให้มีบิทด้างอิงมีค่าเป็น 0 </li></ul></ul><ul><ul><li>เมื่อเพจนั้นๆ ถูกอ้างอิงถึงบิทอ้างอิงจะถูกเปลี่ยนค่าไปเป็น 1 </li></ul></ul><ul><li>อัลกอริธึมแบบ เปิดโอกาสให้เป็นครั้งที่สอง </li></ul><ul><ul><li>มีการอ้างอิงถึงบิทอ้างอิง </li></ul></ul><ul><ul><li>มีการสลับเวลา </li></ul></ul><ul><ul><li>เมื่อเพจถูกโหลดกลับเข้ามาใว้ในหน่วยความจำอีกครั้ง จากการกำหนดของเวลา และบิทอ้างอิงมีค่าเป็น 1 แล้วให้ดำเนินการ </li></ul></ul><ul><ul><ul><li>กำหนดค่าบิทอ้างอิงให้เป็น 0 </li></ul></ul></ul><ul><ul><ul><li>นำเพจออกจากหน่วยความจำ </li></ul></ul></ul><ul><ul><ul><li>นำเพจถัดไปมาไว้ในหน่วยความจำ ด้วยเงื่อนไขเช่นเดียวกัน </li></ul></ul></ul>
    37. 37. Second-Chance (clock) Page-Replacement Algorithm
    38. 38. Counting Algorithms อัลกอริธึมการนับ <ul><li>ใช้ตัวนับจำนวนในการอ้างอิงถึงแต่ละเพจ </li></ul><ul><li>อัลกอริธึมแบบ LFU จะเลือกเพจที่ต้องถูกนำออกจาหน่วยความจำจากการนับที่มีค่าน้อยที่สุด </li></ul><ul><li>อัลกอริธึมแบบ MFU จะเลือกเพจที่มีการอ้างอิงถึงมากออกก่อน จากแนวคิดที่ว่าเพจที่มีการอ้างอิงถึงน้อยเป็นเพจที่เพิ่งเกิดใหม่ ส่วนเพจที่ถูกอ้างอิงถึงบ่อยเป็นเพจที่เกิดขึ้นมานานแล้ว </li></ul>
    39. 39. Allocation of Frames <ul><li>Each process needs minimum number of pages. </li></ul><ul><li>Example: IBM 370 – 6 pages to handle SS MOVE instruction: </li></ul><ul><ul><li>instruction is 6 bytes, might span 2 pages. </li></ul></ul><ul><ul><li>2 pages to handle from . </li></ul></ul><ul><ul><li>2 pages to handle to . </li></ul></ul><ul><li>Two major allocation schemes. </li></ul><ul><ul><li>fixed allocation </li></ul></ul><ul><ul><li>priority allocation </li></ul></ul>
    40. 40. Fixed Allocation <ul><li>Equal allocation – e.g., if 100 frames and 5 processes, give each 20 pages. </li></ul><ul><li>Proportional allocation – Allocate according to the size of process. </li></ul>
    41. 41. Priority Allocation <ul><li>Use a proportional allocation scheme using priorities rather than size. </li></ul><ul><li>If process P i generates a page fault, </li></ul><ul><ul><li>select for replacement one of its frames. </li></ul></ul><ul><ul><li>select for replacement a frame from a process with lower priority number. </li></ul></ul>
    42. 42. Global vs. Local Allocation <ul><li>Global replacement – process selects a replacement frame from the set of all frames; one process can take a frame from another. </li></ul><ul><li>Local replacement – each process selects from only its own set of allocated frames. </li></ul>
    43. 43. Thrashing <ul><li>If a process does not have “enough” pages, the page-fault rate is very high. This leads to: </li></ul><ul><ul><li>low CPU utilization. </li></ul></ul><ul><ul><li>operating system thinks that it needs to increase the degree of multiprogramming. </li></ul></ul><ul><ul><li>another process added to the system. </li></ul></ul><ul><li>Thrashing  a process is busy swapping pages in and out. </li></ul>
    44. 44. Thrashing <ul><li>Why does paging work? Locality model </li></ul><ul><ul><li>Process migrates from one locality to another. </li></ul></ul><ul><ul><li>Localities may overlap. </li></ul></ul><ul><li>Why does thrashing occur?  size of locality > total memory size </li></ul>
    45. 45. Locality In A Memory-Reference Pattern
    46. 46. Working-Set Model <ul><li>  working-set window  a fixed number of page references Example: 10,000 instruction </li></ul><ul><li>WSS i (working set of Process P i ) = total number of pages referenced in the most recent  (varies in time) </li></ul><ul><ul><li>if  too small will not encompass entire locality. </li></ul></ul><ul><ul><li>if  too large will encompass several localities. </li></ul></ul><ul><ul><li>if  =   will encompass entire program. </li></ul></ul><ul><li>D =  WSS i  total demand frames </li></ul><ul><li>if D > m  Thrashing </li></ul><ul><li>Policy if D > m, then suspend one of the processes. </li></ul>
    47. 47. Working-set model
    48. 48. Keeping Track of the Working Set <ul><li>Approximate with interval timer + a reference bit </li></ul><ul><li>Example:  = 10,000 </li></ul><ul><ul><li>Timer interrupts after every 5000 time units. </li></ul></ul><ul><ul><li>Keep in memory 2 bits for each page. </li></ul></ul><ul><ul><li>Whenever a timer interrupts copy and sets the values of all reference bits to 0. </li></ul></ul><ul><ul><li>If one of the bits in memory = 1  page in working set. </li></ul></ul><ul><li>Why is this not completely accurate? </li></ul><ul><li>Improvement = 10 bits and interrupt every 1000 time units. </li></ul>
    49. 49. Page-Fault Frequency Scheme <ul><li>Establish “acceptable” page-fault rate. </li></ul><ul><ul><li>If actual rate too low, process loses frame. </li></ul></ul><ul><ul><li>If actual rate too high, process gains frame. </li></ul></ul>
    50. 50. Other Considerations <ul><li>Prepaging </li></ul><ul><li>Page size selection </li></ul><ul><ul><li>fragmentation </li></ul></ul><ul><ul><li>table size </li></ul></ul><ul><ul><li>I/O overhead </li></ul></ul><ul><ul><li>locality </li></ul></ul>
    51. 51. Other Considerations (Cont.) <ul><li>TLB Reach - The amount of memory accessible from the TLB. </li></ul><ul><li>TLB Reach = (TLB Size) X (Page Size) </li></ul><ul><li>Ideally, the working set of each process is stored in the TLB. Otherwise there is a high degree of page faults. </li></ul>
    52. 52. Increasing the Size of the TLB <ul><li>Increase the Page Size . This may lead to an increase in fragmentation as not all applications require a large page size. </li></ul><ul><li>Provide Multiple Page Sizes . This allows applications that require larger page sizes the opportunity to use them without an increase in fragmentation. </li></ul>
    53. 53. Other Considerations (Cont.) <ul><li>Program structure </li></ul><ul><ul><li>int A[][] = new int[1024][1024]; </li></ul></ul><ul><ul><li>Each row is stored in one page </li></ul></ul><ul><ul><li>Program 1 for (j = 0; j < A.length; j++) for (i = 0; i < A.length; i++) A[i,j] = 0; 1024 x 1024 page faults </li></ul></ul><ul><ul><li>Program 2 for (i = 0; i < A.length; i++) for (j = 0; j < A.length; j++) A[i,j] = 0; </li></ul></ul><ul><ul><li>1024 page faults </li></ul></ul>
    54. 54. Other Considerations (Cont.) <ul><li>I/O Interlock – Pages must sometimes be locked into memory. </li></ul><ul><li>Consider I/O. Pages that are used for copying a file from a device must be locked from being selected for eviction by a page replacement algorithm. </li></ul>
    55. 55. Reason Why Frames Used For I/O Must Be In Memory
    56. 56. Demand Segmentation <ul><li>Used when insufficient hardware to implement demand paging. </li></ul><ul><li>OS/2 allocates memory in segments, which it keeps track of through segment descriptors </li></ul><ul><li>Segment descriptor contains a valid bit to indicate whether the segment is currently in memory. </li></ul><ul><ul><li>If segment is in main memory, access continues, </li></ul></ul><ul><ul><li>If not in memory, segment fault. </li></ul></ul>
    57. 57. Operating System Examples <ul><li>Windows NT </li></ul><ul><li>Solaris 2 </li></ul>
    58. 58. Windows NT <ul><li>Uses demand paging with clustering . Clustering brings in pages surrounding the faulting page. </li></ul><ul><li>Processes are assigned working set minimum and working set maximum . </li></ul><ul><li>Working set minimum is the minimum number of pages the process is guaranteed to have in memory. </li></ul><ul><li>A process may be assigned as many pages up to its working set maximum. </li></ul><ul><li>When the amount of free memory in the system falls below a threshold, automatic working set trimming is performed to restore the amount of free memory. </li></ul><ul><li>Working set trimming removes pages from processes that have pages in excess of their working set minimum. </li></ul>
    59. 59. Solaris 2 <ul><li>Maintains a list of free pages to assign faulting processes. </li></ul><ul><li>Lotsfree – threshold parameter to begin paging. </li></ul><ul><li>Paging is performed by pageout process. </li></ul><ul><li>Pageout scans pages using modified clock algorithm. </li></ul><ul><li>Scanrate is the rate at which pages are scanned. This ranged from slowscan to fastscan . </li></ul><ul><li>Pageout is called more frequently depending upon the amount of free memory available. </li></ul>
    60. 60. Solaris 2 Page Scanner
    61. 61. Fig 10.03
    62. 62. Fig. 10.2

    ×