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

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โปรแกรมฝึกหัด การเลื่อนและคลิกเมาส์
Advertisements

DSP 6 The Fast Fourier Transform (FFT) การแปลงฟูริเยร์แบบเร็ว
การจัดการความผิดพลาด
for Beginning & Publishing
ไม่อิงพารามิเตอร์เบื้องต้น
การซ้อนทับกัน และคลื่นนิ่ง
โครงสร้างของระบบปฏิบัติการ Operating System Structure
DSP 6 The Fast Fourier Transform (FFT) การแปลงฟูริเยร์แบบเร็ว
EEET0485 Digital Signal Processing Asst.Prof. Peerapol Yuvapoositanon DSP3-1 ผศ.ดร. พีระพล ยุวภูษิตานนท์ ภาควิชา วิศวกรรมอิเล็กทรอนิกส์ DSP 6 The Fast.
ระบบสารสนเทศแผนงานบำรุงทาง
Hashing Function มีหลายฟังก์ชั่น การเลือกใช้ขึ้นอยู่กับความเหมาะสมของข้อมูล ตัวอย่างของฟังก์ชั่นแฮชมีดังนี้ 1. Mod คือการนำค่าคีย์มา mod ด้วยค่า n ใด.
สภาวะแวดล้อมในขณะโปรแกรมทำงาน
Software คือ ชุดคำสั่งหรือ ขั้นตอนการทำงานของคอมพิวเตอร์
โดย นางสาวกนกอร ศิริอำนาจ รหัสนิสิต กลุ่ม 2 Detailed VM Example.
การจัดการหน่วยความจำ Memory Management
การสืบค้นข้อมูลจาก Web OPAC
เนื้อหา ประเภทของโปรแกรมภาษา ขั้นตอนการพัฒนาโปรแกรม
ระบบเครือข่ายคอมพิวเตอร์
Use Case Diagram.
Surachai Wachirahatthapong
Operating System ฉ NASA 4.
C Programming Lecture no. 6: Function.
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
หน่วยความจำเสมือน Virtual Memory.
แนะนำรายวิชา ระบบปฏิบัติการ ภาคเรียนที่ 1/2557
Introduction to Cache Memory Systems
Kampol chanchoengpan it สถาปัตยกรรมคอมพิวเตอร์ Arithmetic and Logic Unit 1.
เครื่องมือช่วยในการจับประเด็น รวบรวมความคิดให้เป็นหมวดหมู่
ทำการตั้งเบิกเพิ่ม แบบฟอร์ม GFMIS.ขบ.02 เพื่อชดใช้ใบสำคัญ
โครงสร้างการจัดเก็บข้อมูลเชิงกายภาพ
PHP:Hypertext Preprocessor
โครงสร้างข้อมูลแบบคิว
Memory Management ในยุคก่อน
1 การสัมมนาผู้ตรวจ ประเมินคุณภาพภายใน ปีการศึกษา 2552 วันพฤหัสบดีที่ 21 ตุลาคม 2553 ณ ห้องประชุม 3222 อาคารสิริคุณากร.
ณัฏฐวุฒิ เอี่ยมอินทร์
บทที่ 3 การวิเคราะห์ Analysis.
การแจกแจงปกติ.
เทคนิคการสืบค้น Google
การดำเนินการทดสอบทางการศึกษาแห่งชาติ (O-NET)
VMVM. นี่คือเอกสารที่นำเสนออย่างเป็นลำดับ สำหรับตัวอย่างการทำงานของ page fault ISR ที่สนับสนุนหน่วยความจำ เสมือน เราจะเคลื่อนย้าย dirty bit จาก page table.
Vm.odp. Detailed VM Example ตัวอย่างการทำงานของ page fault ISR ที่ จะสนับสนุนการทำงานของหน่วยความจำ เสมือน โดยการย้ายบิตที่ไม่จำเป็นออก จากหน้าเว็บ เนื่องจากว่ามันทำให้สับสน.
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
วิชาคณิตศาสตร์ ชั้นประถมศึกษาปีที่6
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
Chapter 4 หมายเลขไอพี และการจัดสรร
ฟังก์ชัน.
ค21201 คณิตศาสตร์เพิ่มเติม 1
บทที่ 3 การจ่ายงาน (Process Management).
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
การลงข้อมูลแผนการสอน
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
School of Information Communication Technology,
แบบฝึกหัด จงหาคำตอบที่ดีที่สุด หรือหาค่ากำไรสูงสุด จาก
Commission Commission on Higher Education Quality Assessment online system CHEQA Updated July 25, 2013
โครงสร้างข้อมูล Queues
การค้นในปริภูมิสถานะ
วิธีเรียงสับเปลี่ยนและวิธีจัดหมู่
กราฟเบื้องต้น.
แผนการจัดการเรียนรู้
โครงสร้างข้อมูลแบบ สแตก (stack)
การค้นในปริภูมิสถานะ
กราฟเบื้องต้น.
Week 13 Basic Algorithm 2 (Searching)
การแบ่งแยกและเอาชนะ Divide & Conquer
บทที่ 3 การจัดการหน่วยความจำ (Memory Management)
Chapter 9: Virtual-Memory Management Dr. Varin Chouvatut
Virtual Memory Why? The need of memory more than the available physical memory. Process 3 Physical Memory Process 2 Process 1 Process 4.
ใบสำเนางานนำเสนอ:

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

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

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

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

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

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

Virtual Memory That is Larger Than Physical Memory

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

Transfer of a Paged Memory to Contiguous Disk Space

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  page table

Page Table When Some Pages Are Not in Main Memory

การผิดหน้า 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 เพิ่มหรือลดตำแหน่งอย่างอัตโนมัติ

Steps in Handling a Page Fault

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

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)

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)

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

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

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 ร่วมกันในหน่วยความจำได้อีกด้วย

Memory Mapped Files

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

Need For Page Replacement

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

Page Replacement

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.

Graph of Page Faults Versus The Number of Frames

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 5 10 page faults 3 3 2 4 4 3

FIFO Page Replacement

FIFO Illustrating Belady’s Anamoly

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

Optimal Page Replacement

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

LRU Page Replacement

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

Use Of A Stack to Record The Most Recent Page References

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

Second-Chance (clock) Page-Replacement Algorithm

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

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

Operating System Examples Windows NT Solaris 2

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 ของกระบวนการเหล่านั้น

Paging System ของ Windows NT

Address translation ของ Windows

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

Solar Page Scanner