1 / 45

การจัดการหน่วยความจำ Memory Management

การจัดการหน่วยความจำ Memory Management. นงลักษณ์ พรมทอง และวิเชษฐ์ พลายมาศ. Virtual Memory. Background Demand Paging Process Creation Page Replacement Allocation of Frames Thrashing Operating System Examples. Learning Objectives. เพื่อศึกษาความสำคัญของหน่วยความจำเสมือน

reece
Download Presentation

การจัดการหน่วยความจำ Memory Management

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. การจัดการหน่วยความจำMemory Management นงลักษณ์ พรมทอง และวิเชษฐ์ พลายมาศ

  2. Virtual Memory • Background • Demand Paging • Process Creation • Page Replacement • Allocation of Frames • Thrashing • Operating System Examples

  3. Learning Objectives • เพื่อศึกษาความสำคัญของหน่วยความจำเสมือน • เพื่อเข้าใจการสลับหน้าตามคำขอทันที (demand paging) ของหน่วยความจำเสมือน • เพื่อเข้าใจถึงความซับซ้อนและค่าใช้จ่ายในการใช้งานหน่วยความจำเสมือน

  4. ความเป็นมา Background • ชุดคำสั่งที่จะถูกกระทำการได้นั้นจะต้องอยู่ในหน่วยความจำกายภาพเสมอ • เราจำเป็นต้องใส่พื้นที่เลขที่อยู่ของหน่วยความจำแบบตรรกะทั้งหมดลงในหน่วยความจำแบบกายภาพ (แต่ถูกจำกัดด้วยขนาดของพื้นที่หน่วยความจำจริง) • กรณี single program • ใช้วิธีการ overlay คือการทำให้โปรแกรมที่มีขนาดใหญ่กว่าพื้นที่ในหน่วยความจำ ให้สามารถดำเนินได้จัดการโดยโปรแกรมเมอร์ • โดยการแบ่งโปรแกรมออกเป็นโปรแกรมย่อย (sub program) หลายๆ ส่วน และให้แต่ละส่วนมีขนาดเล็กกว่าหน่วยความจำ • กรณี Multiprogram • ใช้หน่วยความจำเสมือน (virtual memory) จัดการโดย OS

  5. ความเป็นมา Background • โปรแกรมจะถูกแบ่งออกเป็น 2 ส่วน main program เป็นส่วนของโปรแกรมที่อยู่ในหน่วยความจำไปตลอดจนกระทั่งการทำงานสิ้นสุดลง และ Sub-Program ในส่วนที่เหลือ จะถูกแบ่งออกเป็นส่วนย่อยๆ และจะถูกโหลดเข้าสู่หน่วยความจำก็ต่อเมื่อต้องการรันเท่านั้น

  6. ความเป็นมา Background • หน่วยความจำเสมือน (Virtual memory) – การแยกส่วนของหน่วยความเชิงตรรกะ (logical memory) ของผู้ใช้ออกจากหน่วยความจำเชิงกายภาพ (physical memory) • มีเพียงส่วนของโปรแกรมที่ต้องการอยู่ในหน่วยความจำเพื่อกระทำการ (execution) เท่านั้น • พื้นที่ (Logical address)จึงสามารถใหญ่กว่าขนาดของพื้นที่หน่วยความจำเชิงกายภาพ (physical address space) ได้ • ยินยอมให้มีการใช้พื้นที่หน่วยความจำร่วมกันได้ จากหลายๆ กระบวนการ • ทำให้มีการสร้างกระบวนการขึ้นมาได้โดยสะดวก • Virtual memory สามารถใช้งานผ่าน • Demand paging • Demand segmentation

  7. Virtual Memory That is Larger Than Physical Memory

  8. Demand Paging • นำ page ไปไว้ในหน่วยความจำเฉพาะเมื่อเวลาที่ต้องการเท่านั้น • ลดการใช้ (Less I/O needed) • ลดการใช้หน่วยความจำ (Less memory needed) • โต้ตอบได้รวดเร็วกว่า (Faster response) • รองรับผู้ใช้ได้มากกว่า (More users) • Page ที่ต้องการ  ต้องการมีการอ้างอิงถึง • invalid reference  ยกเลิก (abort) • not-in-memory  นำเข้าหน่วยความจำ (bring to memory)

  9. Transfer of a Paged Memory to Contiguous Disk Space

  10. Valid-Invalid Bit • จะมี valid–invalid bit เชื่อมโยงอยู่ในแต่ละรายการ page table (1  in-memory, 0 not-in-memory) • ต้องกำหนดค่าเริ่มต้น valid–invalid เป็น 0 ทุกรายการ (entries) • Example of a page table snapshot. • ระหว่างการแปลงเลขที่อยู่ ถ้า valid–invalid bit ใน page table entry เป็น 0  page fault Frame # valid-invalid bit 1 1 1 1 0  0 0 page table

  11. Page Table When Some Pages Are Not in Main Memory

  12. การผิดหน้าPage Fault • ถ้าเคยมีการอ้างอิงบน page ครั้งแรกของการอ้างอิงจะ trap to OS  page fault • OS จะมองหาตารางอื่นเพื่อตัดสินใจว่า • Invalid reference  abort. • ยังไม่มีอยู่ในหน่วยความจำ • จะหา empty frame • Swap page ไปยัง frame นั้น • Reset tables, validation bit = 1. • เริ่มคำสั่ง: Least Recently Used • block moveเพิ่มหรือลดตำแหน่งอย่างอัตโนมัติ

  13. Steps in Handling a Page Fault

  14. จะเป็นอย่างไรถ้าไม่มีเฟรมว่าง (free frame)? • การแทนที่ Page (Page replacement) – จะค้นหาบาง page ในหน่วยความจำที่ยังไม่ได้มีการใช้งานจริง แล้วสลับออกไป (swap out) • algorithm • performance – ต้องใช้ algorithm ที่ทำให้ผลการค้นหาจำนวนการผิดหน้าเหลือน้อยที่สุด • บางหน้า (page) อาจมีการนำเข้าออกหน่วยความจำหลายครั้ง

  15. Performance of Demand Paging • Page Fault Rate 0  p  1.0 • if p = 0 no page faults • if p = 1, every reference is a fault • Effective Access Time (EAT) EAT = (1 – p) x memory access + p (page fault overhead + [swap page out ] + swap page in + restart overhead)

  16. Demand Paging Example • Memory access time = 1 microsecond • 50% ของเวลาที่มีการแก้ไข page ที่ถูกแทนที่ และต้องถูกสลับออกไป • Swap Page Time = 10 msec = 10,000 msec EAT = (1 – p) x 1 + p (15000) 1 + 15000P (in msec)

  17. การสร้างกระบวนการProcess Creation • Virtual memory ยินยอมให้ใช้ประโยชน์อย่างอื่นได้ในขณะที่สร้างกระบวนการ - Copy-on-Write - Memory-Mapped Files

  18. Copy-on-Write • Copy-on-Write (COW) ยินยอมให้ทั้ง parent and child processes ในการกำหนดค่า shareใน page เดียวกันในหน่วยความจำ • ถ้าแม้มีการแก้ไข page ที่ใช้ร่วมกัน ก็จะมีเพียง page นั้นที่ถูกสำเนาไป • COW จะมีการสร้างกระบวนการที่สะดวกกว่า เช่นเดียวกับการสำ page ที่มีการแก้ไข • Free pages จะถูกจัดสรรจาก poolของ zeroed-out pages.

  19. Memory-Mapped Files • Memory-mapped file I/O ยินยอมให้ file I/O ถูกใช้งานเหมือนรูทีนการเข้าถึงหน่วยความจำได้โดยการ mapping a disk block ไปเป็น page ในหน่วยความจำ • ไฟล์จะถูกกำหนดค่าเริ่มต้นของการอ่านโดยใช้ demand paging สัดส่วนของ page-sized ของไฟล์ที่อ่านจากระบบไฟล์ไปยัง physical page. ลำดับย่อยของ reads/writes ไฟล์จะดำเนินการเช่นเดียวกับการเข้าถึงหน่วยความจำ • การเข้าถึงไฟล์อย่างง่ายโดย treating file I/O ผ่านหน่วยความจำมากกว่าการใช้read()write() system calls. • อนุญาตให้หลายกระบวนการทำการ map ไฟล์เดียวกันให้ใช้ pages ร่วมกันในหน่วยความจำได้อีกด้วย

  20. Memory Mapped Files

  21. การแทนที่หน้าPage Replacement • การป้องกันการจัดสรรเกินหน่วยความจำได้โดยการแก้ไข page-fault service routine เพิ่มเข้าไปใน page replacement • ใช้modify (dirty) bitในการลด overhead ของการถ่ายหน้า โดยการแก้ไขเฉพาะหน้าที่ถูกเขียนลงบนดิสก์เท่านั้น • Page replacement จะแยกจากกันอย่างอิสระระหว่าง logical memory และ physical memory – virtual memory ขนาดใหญ่สามารถสร้างบน physical memory ที่มีขนาดเล็กกว่าได้

  22. Need For Page Replacement

  23. Basic Page Replacement • หาตำแหน่งของ page ที่ต้องการบนดิสก์ • หา free frame: - ถ้ามี free frame ก็ใช้ - ถ้าไม่มี free frame ให้ใช้ page replacement algorithm ในการเลือกvictim frame • อ่าน page ที่ต้องการไปไว้บน free frame ใหม่แล้ว Update ตาราง page และ frame • เริ่มดำเนินการกระบวนการ

  24. Page Replacement

  25. Page Replacement Algorithms • ต้องการให้มีอัตราการผิดหน้าต่ำที่สุด (lowest page-fault rate) • ประเมิน algorithm โดยรัน reference string บนหน่วยความจำและคำนวณจำนวน page faults ของ string นั้น • In all our examples, the reference string is 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5.

  26. Graph of Page Faults Versus The Number of Frames

  27. First-In-First-Out (FIFO) Algorithm • Reference string: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 • 3 frames (3 pages สามารถอยู่ในหน่วยความจำ ณ เวลาใดเวลาหนึ่ง ต่อหนึ่งกระบวนการ) • 4 frames • FIFO Replacement – Belady’s Anomaly • frames ยิ่งมาก  page faults ยิ่งลดลง 1 1 4 5 2 2 1 3 9 page faults 3 3 2 4 1 1 5 4 2 2 1 10 page faults 5 3 3 2 4 4 3

  28. FIFO Page Replacement

  29. FIFO Illustrating Belady’s Anamoly

  30. Optimal Algorithm • แทนที่ page ที่จะไม่ถูกเรียกใช้อีกในเวลาอันใกล้นี้ • 4 frames example 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 • จะแทนที่โดยวิธีใด • จะวัดประสิทธิภาพของอัลกอริธึมได้อย่างไร 1 4 2 6 page faults 3 4 5

  31. Optimal Page Replacement

  32. Least Recently Used (LRU) Algorithm • Reference string: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 • ใช้ตัวนับ (Counter implementation) • นับรายการ (entry) ทุก page ที่เข้ามา, ทุกครั้งที่ page ถูกอ้างอิงผ่านรายการ, แล้วสำเนาค่านาฬิกาไปยัง counter • เมื่อต้องการเปลี่ยน page ก็ให้มองหา counter เพื่อจะใช้เปลี่ยนหน้า 1 5 2 3 5 4 4 3

  33. LRU Page Replacement

  34. LRU Algorithm (Cont.) • ใช้แบบสแต็ก (Stack implementation) – เก็บสแต็กของหมายเลขหน้า (page numbers) ในรูปการเชื่อมโยงแบบคู่ (double link form): • Page referenced: • ย้ายเพ็จนั้นไปยังด้านบน • ใช้ 6 pointers ในการเปลี่ยน • ไม่จำเป็นต้องค้นหาเพื่อแทนที่ • การใช้ stack algorithm ช่วยแก้ปัญหา Belady’s Anomaly • แต่ต้องใช้อุปกรณ์ช่วยแทนการใช้เขียนโปรแกรมควบคุมการเรียก interrupt เอง

  35. Use Of A Stack to Record The Most Recent Page References

  36. LRU Approximation Algorithms • การเพิ่มบิตอ้างอิง (Additional-Reference-bits algorithm) • ใช้บนระบบที่ไม่มีอุปกรณ์ช่วย • จับคู่แต่ละหน้าด้วย bit, ค่าเริ่มต้นเป็น = 0 (ยังไม่ใช้) • เมื่อหน้าถูกอ้างอิง บิตอ้างอิงกะจะถูกเปลี่ยนเป็น 1 (ใช้แล้ว) • การแทนที่ในระบบนี้สามารถตรวจสอบได้ว่ามีหน้าใดถูกใช้แล้วหรือยัง • การให้โอกาสครั้งที่สอง (Second chance) • ใช้บิตอ้างอิง (reference bit) ใช้การแทนที่แบบนาฬิกา (Clock replacement) เพื่อป้องกันการสับเปลี่ยนหน้าที่ถูกเรียกใช้บ่อยออกไป • ถ้าหน้าถูกแทนที่ (ตามลำดับนาฬิกา) บิตอ้างอิงจะ = 1 จากนั้น: • เปลี่ยนบิตกลับไปเป็น 0 • เปลี่ยนเวลาที่เข้ามาในหน่วยความจำให้เหมือนเพิ่งเข้ามา • ทำการตรวจสอบหน้าอื่นๆ ตามหลักการเช่นเดียวกัน

  37. Second-Chance (clock) Page-Replacement Algorithm

  38. Counting Algorithms • การใช้ตัวนับการอ้างอิงของแต่ละหน้าไว้ • LFU (least frequently used) Algorithm: การเก็บจำนวนครั้งที่หน้าถูกอ้างอิง และเลือกที่ถูกอ้างอิงน้อยที่สุดออกก่อน • MFU (most frequently used) Algorithm: อยู่บนสมมุติฐานที่ว่า หน้าที่ถูกอ้างอิงน้อยนั้นมีโอกาสที่จะถูกมากในเวลาต่อไปเพราะอาจเป็นหน้าที่เพิ่งถูกย้ายเข้ามาในหน่วยความจำ • อย่างไรก็ตาม วิธีการแทนที่หน้าทั้งแบบใช้น้อยออกก่อนและแบบใช้มากออกก่อนนั้นเป็นแนวคิดที่ไม่แตกต่างกันเท่าใดนัก ประสิทธิภาพจึงขึ้นอยู่กับการคาดการณ์ล่วงหน้าได้ถูกต้องมากน้อยแค่ไหน การใช้งานมีค่าใช้จ่ายสูง และสู้วิธีการแบบเหมาะที่สุด (OPT) ไม่ได้

  39. Page-Buffering Algorithm • ระบบที่มักเก็บหน้าว่างๆ ไว้เป็นกลุ่มๆ • เมื่อเกิด page fault หน้าว่างๆ หน้าหนึ่งก็จะถูกเลือกมาใช้ แต่ยังไม่ย้ายออกไปทันที • ระบบจะอ่านหน้าที่ต้องการเข้ามาในเนื้อที่ว่างได้เลยโดยไม่ต้องรอให้มีการย้ายหน้าเดิมออกไปก่อน • ทำให้ลดเวลาในการย้ายหน้าลงมาก เมื่อมีเวลาว่าง ระบบค่อยทำการย้ายหน้าที่เลือกออกไปในภายหลัง จากนั้น รวมพื้นที่ว่างเข้าไว้ในกลุ่ม (clustering)

  40. Operating System Examples • Windows NT • Solaris 2

  41. Windows NT • ใช้ demand paging ร่วมกับclusteringโดยใส่ใน page รอบๆบริเวณที่เกิดการผิดหน้า • กระบวนการทั้งหมดจะถูกกำหนด working set minimumและworking set maximum • Working set minimum คือจำนวนต่ำสุดของหน้าอยู่ในหน่วยความจำ • กระบวนการหนึ่งอาจถูกกำหนด working set maximum มีอยู่หลายๆ หน้า • เมื่อพื้นที่ว่างในหน่วยความจำเหลือกว่าค่าเป้าหมายที่กำหนดไว้ (threshold) การตัดแต่ง working set อย่างอัตโนมัติ (automatic working set trimming)ก็จะเริ่มทำงาน เพื่อคืนพื้นที่ว่างของหน่วยความจำ • Working set trimming จะย้ายหน้าออกจากกระบวนการที่มีการใช้งานหน้า working set minimum ของกระบวนการเหล่านั้น

  42. Paging System ของ Windows NT

  43. Address translation ของ Windows

  44. Solaris 2 • บำรุงรักษารายการของหน้าว่าง (free pages) เพื่อกำหนดให้กับกระบวนการที่เกิดการผิดหน้า • Lotsfree – threshold parameter จุดเริ่มต้นของการค้นหาหน้า • การค้นหาหน้าจะทำโดยกระบวนการสลับหน้าออก (pageout process) • Pageout scans pages using modified clock algorithm. • Scanrateคือ อัตราที่หน้าจะถูกสแกน มีขอบเขตตั้งแต่ slowscanถึงfastscan • Pageoutถูกเรียกใช้บ่อยหรือไม่ขึ้นกับจำนวนหน่วยความจำที่ว่างเหลือมากน้อยเพียงใด

  45. Solar Page Scanner

More Related