งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

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

งานนำเสนอที่คล้ายกัน


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

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

2 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 2 Learning Objectives n เพื่อศึกษาแนวคิดพื้นฐานเกี่ยวกับการประสาน เวลาของซีพียู ปัญหาและวิธีการแก้ไขเกี่ยวกับ การประสานเวลา n เพื่อเข้าใจเกี่ยวกับการจัดการหน่วยความจำวิธี ต่างๆ และขั้นตอนวิธีของการจัดการ หน่วยความจำ n เพื่อวิเคราะห์เปรียบเทียบข้อดีข้อเสียของวิธีการ จัดการวิธีต่างๆ

3 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 3 Agenda n แนวคิดพื้นฐาน (Background) n การสับเปลี่ยน (Swapping) n การจัดสรรหน่วยความจำแบบพื้นที่ติดกัน (Contiguous Allocation) n การสลับหน้า (Paging) n การแบ่งส่วนหรือเซ็กเมนต์ (Segmentation) n การผสมผสานหน่วยความจำการสลับหน้าและการแบ่ง ส่วน (Segmentation with Paging)

4 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 4 แนวคิดพื้นฐาน แนวคิดพื้นฐาน Background n คำสั่งที่จะถูกดำเนินการได้โดยซีพียู จะต้องถูกดึงมาและเก็บที่ ตำแหน่งในหน่วยความจำ รูปแบบการทำงานของรอบคำสั่งเครื่อง และการปฏิบัติงานตามคำสั่ง (instruction-execution cycle) จะมี ขั้นตอนการทำงาน ดังนี้ l ไปนำมา (fetch) คือการเริ่มต้นการทำงานซึ่งระบบจะทำการ ดึงคำสั่งแรกจากหน่วยความจำ l ถอดรหัส (decode) คือการทำงานต่อจากขั้นตอนที่ 1 โดยนำ คำสั่งนี้ไปทำการถอดรหัส ซึ่งอาจจะได้ตัวดำเนินการหรือข้อมูล เพื่อใช้กับคำสั่งถัดไป l กระทำการ (execution) คือการทำงานต่อจากขั้นตอนที่ 2 ซึ่งหลังจากนั้นคำสั่งจะทำงานตามตัวดำเนินการที่ได้ l จัดเก็บ (store) ผลลัพธ์จะถูกเก็บกลับไปในหน่วยความจำ หลักต่อไป

5 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 5 การกำหนดตำแหน่ง การกำหนดตำแหน่ง Background (2) n โปรแกรมต้องนำรหัสเครื่อง (machine code) จากหน่วยเก็บ เข้ามาไว้ในหน่วยความจำเพื่อให้พร้อมดำเนินการในรูปของ กระบวนการ n แถวคอยขาเข้า (Input queue) l การสะสมของกระบวนการในดิสก์ที่รอยคอยอยู่ เพื่อที่จะเข้า มาทำงานในหน่วยความจำหลักเพื่อดำเนินการโปรแกรม n เลือกกระบวนการในแถวคอยขาเข้า และดึงกระบวนการไปไว้ใน หน่วยความจำหลัก แล้วกระบวนการจะทำงานเข้าถึงคำสั่งและ ข้อมูล n หลังจากนั้น กระบวนการจะออกจากหน่วยความจำหลัก ทำให้ หน่วยความจำหลักว่างลงสำหรับกระบวนการใหม่เข้ามาใช้งาน ได้

6 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 6 การกำหนดตำแหน่ง การกำหนดตำแหน่ง Background (3) ภาพที่ 6.1 การกำหนดเลขที่อยู่ให้กับกระบวนการในหน่วยความจำหลัก

7 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 7 n โปรแกรมผู้ใช้จะต้องทำงานหลายขั้นตอนจนกว่าจะถูกดำเนินการ (run) n การกำหนดเลขที่อยู่ของโปรแกรม (คำสั่งและข้อมูล) เพื่อแปลงไปเป็น เลขที่อยู่ในหน่วยความจำหลัก มีขั้นตอนดังนี้ l ช่วงเวลาแปล (Compile time)  ถ้ารู้จักตำแหน่งหน่วยความจำไว้แล้ว สามารถแปลเลขที่อยู่สัมบูรณ์ (absolute address) ซึ่งเป็นตำแหน่งจริงในหน่วยความจำหลักได้เลย แต่ ถ้าตำแหน่งเริ่มต้นเปลี่ยน ก็ต้องเริ่มแปลใหม่ l ช่วงเวลาบรรจุ (Load time)  ถ้ายังไม่รู้ว่าโปรแกรมจะทำงาน ณ เลขที่อยู่ใดในช่วงเวลาขณะที่แปล โปรแกรม จะต้องแปลเลขที่อยู่เป็นแบบย้ายได้ (relocatable) l ช่วงเวลากระทำการ (Execution time)  การผูกเลขที่อยู่จะถูกหน่วงเวลาไว้จนกระทั่งถึงช่วงเวลาดำเนินการ กระบวนการมีการย้ายตลอดการทำงานจากหน่วยความจำหลักตอนหนึ่งไป อีกตอนหนึ่ง  การกำหนดตำแหน่งต้องมีการหน่วงเวลาจนกระทั่งมีการทำงานจริง (run time) จะต้องมีฮาร์ดแวร์เฉพาะเตรียมไว้สำหรับการทำงานลักษณะนี้ด้วย (e.g., base and limit registers) การนำคำสั่งและข้อมูลเข้าสู่ หน่วยความจำ การนำคำสั่งและข้อมูลเข้าสู่ หน่วยความจำ Background (3)

8 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 8 ภาพที่ 6.2 ขั้นตอนต่างๆ ในการเรียกใช้งานของโปรแกรมผู้ใช้

9 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 9 พื้นที่ว่างของเลขที่อยู่แบบตรรกะ และแบบกายภาพ พื้นที่ว่างของเลขที่อยู่แบบตรรกะ และแบบกายภาพ Logical vs. Physical Address Space n แนวคิดเกี่ยวกับพื้นที่แบบตรรกะและแบบกายภาพ ถือเป็นแกนกลางของการ จัดการหน่วยความจำ l เลขที่อยู่แบบตรรกะ (Logical address)  เลขที่อยู่ที่ถูกสร้างขึ้นโดยซีพียู บางทีเรียกว่า เลขที่อยู่เสมือน (virtual address) l เลขที่อยู่แบบกายภาพ (Physical address)  เลขที่อยู่ซึ่งถูกมองเห็นได้โดยหน่วยความจำ ถูกบรรจุเข้าที่เรจิสเตอร์เลขที่อยู่ ของหน่วยความจำ (memory-address register) n ในช่วงเวลาแปลและช่วงเวลาบรรจุ จะมีเลขที่อยู่แบบตรรกะและแบบ กายภาพเหมือนกัน แต่ในช่วงเวลากระทำการ เลขที่อยู่ของทั้งสองแบบจะ แตกต่างกัน n กลุ่มของเลขที่อยู่แบบตรรกะทั้งหมดที่ถูกสร้างโดยโปรแกรมเรียกว่า พื้นที่ ว่างของเลขที่อยู่แบบตรรกะ (logical address space) n กลุ่มของเลขที่อยู่แบบกายภาพที่สอดคล้องกับเลขที่อยู่แบบตรรกะเหล่านั้น จะเรียกว่า พื้นที่ว่างของเลขที่อยู่แบบกายภาพ (physical address space)

10 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 10 หน่วยจัดการหน่วยความจำ หน่วยจัดการหน่วยความจำ Memory-Management Unit (MMU) n เมื่อบรรจุกระบวนการเข้ามาในหน่วยความจำ Logical Address จะต้องถูกแปลงไปเป็น Physical Address เรียกวิธีการนี้ว่าการ ย้ายเลขที่อยู่ (Relocation) n ฮาร์ดแวร์ทำหน้าที่แปลงเลขที่อยู่เสมือนให้เป็นเลขที่อยู่จริงแบบ กายภาพคือ MMU n เรจิสเตอร์ฐานทำหน้าที่เป็นเรจิสเตอร์สำหรับย้ายเลขที่อยู่ (relocate register) เพื่อใช้อ้างอิงเลขที่อยู่ในหน่วยความจำทุก ครั้ง ต้องนำค่าอ้างอิงที่ได้มาบวกกับค่าเรจิสเตอร์ฐานเสียก่อนจึง จะได้เลขที่อยู่จริง n โปรแกรมผู้ใช้จึงติดต่อกับเลขที่อยู่แบบตรรกะ (logical addresses) เท่านั้น จากนั้น MMU จะทำการแปลงเลขที่อยู่แบบ ตรรกะไปเป็นแบบกายภาพ (real physical) ให้เอง

11 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 11 ภาพที่ 6.3 การย้ายตำแหน่งแบบพลวัตโดยใช้เรจิสเตอร์ย้ายตำแหน่ง (Dynamic relocation using a relocation register)

12 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 12 การบรรจุแบบพลวัต การบรรจุแบบพลวัต Dynamic Loading n เพื่อให้สามารถใช้หน่วยความจำหลักได้อย่างมีประสิทธิภาพ สูงสุด n วิธีการบรรจุแบบพลวัต (dynamic loading) เป็นการนำ โปรแกรมไปไว้ในหน่วยความจำแบบสัมพัทธ์ (relative memory) n โปรแกรมย่อย (routine) ที่ไม่ได้มีการทำงาน จะไม่ถูกนำมาไว้ ในหน่วยความจำหลัก แต่จะนำไปไว้ในหน่วยความจำหลักเมื่อ มีการเรียกใช้โปรแกรมย่อยนี้เท่านั้น n ไม่จำเป็นต้องอาศัยคำสั่งพิเศษใดๆ จากระบบปฏิบัติการ แต่ เป็นหน้าที่ของผู้ออกแบบโปรแกรมเอง n ระบบปฏิบัติการอาจช่วยได้โดยการจัดเตรียมรูทีนจากคลัง (library routine) สำหรับใช้งานการบรรจุแบบพลวัตไว้ให้

13 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 13 การเชื่อมโยงแบบพลวัต การเชื่อมโยงแบบพลวัต Dynamic Linking n OS บางชนิดจะสนับสนุนเฉพาะการเชื่อมโยงแบบคงที่ (static linking) n การเชื่อมโยงแบบพลวัตนั้น การเชื่อมโยงโปรแกรมจะถูกหน่วงเวลา ไว้ก่อน จนกว่าจะถึงเวลากระทำการ (execution time) n ในขณะทำการเชื่อมโยงแบบพลวัต โปรแกรมย่อยจะมีการสร้าง ชุดคำสั่งเรียกระบบ (stub) ซึ่งมีขนาดเล็ก เพื่อใช้เรียกรูทีนจากคลัง ที่ต้องการขณะทำงาน n stub จะทำงานโดยการเปลี่ยนโปรแกรมตัวเองเป็นตำแหน่งของ โปรแกรมย่อยในระบบ และกระทำการกับโปรแกรมย่อยนั้น n การเชื่อมโยงแบบพลวัตใช้กันอย่างแพร่หลายโดยเฉพาะใน routine library เรียกว่า การใช้คลังร่วมกัน (shared libraries)

14 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 14 ตัวอย่างการทำงานของโปรแกรม n Static Linked Library (Link ก่อน รัน) l ขนาดไฟล์ EXE จะใหญ่ n Dynamic Linked Library (Link ตอนรัน) l ขนาดไฟล์ EXE เล็ก จะมีไฟล์ DLL พ่วงเข้ามาด้วย l ใช้ไฟล์ DLL ร่วมกันในหลายๆ กระบวนการได้ โปรแกรมบน DOS เป็น Static linked

15 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 15 ปัญหาของการจองพื้นที่ n หน่วยความจำมักจะมีน้อยกว่าความต้องการของทุก กระบวนการเสมอ n มีหลายเทคนิคที่ใช้ในการจองพื้นที่ของกระบวนการ l การซ้อนทับ (Overlay) l การสับเปลี่ยน (Swapping) l การจัดสรรพื้นที่แบบส่วนเดียว (Single Partition Allocation) l การจัดสรรพื้นที่แบบหลายส่วน (Multiple Partition Allocation)

16 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 16 การซ้อนทับ การซ้อนทับ Overlay n เพื่อจัดสรรพื้นที่ว่างให้กระบวนการที่มีขนาดใหญ่กว่า ขนาดของหน่วยความจำสามารถทำงานได้ n การซ้อนทับ (overlay) คือ การเก็บคำสั่งและข้อมูลไว้ใน หน่วยความจำเฉพาะที่จำเป็นต้องใช้ในขณะนั้นเท่านั้น ส่วนที่เหลือให้เก็บไว้ในหน่วยเก็บที่อื่นก่อน เมื่อ จำเป็นต้องใช้จึงเรียกเอามาจากหน่วยเก็บดังกล่าวเข้ามา ซ้อนทับพื้นที่เดิมในหน่วยความจำ n ผู้เขียนโปรแกรมต้องออกแบบการแบ่งส่วนทั้งหมด ซึ่งเป็น งานที่ค่อนข้างยุ่งยากเพราะผู้เขียนโปรแกรมต้องรู้เกี่ยวกับ โครงสร้างของโปรกรม การทำงาน ตลอดจนโครงสร้าง ข้อมูลที่ใช้ในโปรแกรมเป็นอย่างดี

17 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 17 การซ้อนทับ การซ้อนทับ (2) Overlay n พัฒนาจากธรรมชาติของโปรแกรม ที่มีการทำงานซ้ำๆ กันหลายๆ รอบ เช่น การแปลรหัสของ Compiler หรือ Assemble n จะทำการแบ่งรหัสออกเป็นส่วนๆ จะมีบางส่วนที่ใช้ซ้ำกัน ในแต่ละรอบ n หากเราโหลดเฉพาะข้อมูลที่จะใช้ในแต่ละรอบก็จะเป็น การประหยัด n ข้อมูลในรอบก่อนหน้าที่ไม่ใช้จะถูกซ้อนทับ (Overlay) ไป

18 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 18 ภาพที่ 6.4 การซ้อนทับสำหรับตัวแปลภาษาแอสแซมบลีแบบแปลสองรอบ

19 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 19 การสับเปลี่ยน การสับเปลี่ยน Swapping n กระบวนการจำเป็นต้องอยู่ในหน่วยความจำหลักขณะทำงาน แต่อาจถูก สับเปลี่ยน (swap) ไปเก็บไว้ในหน่วยเก็บชั่วคราวได้แล้วถูกนำกลับมาใหม่ เพื่อทำงานต่อ เป็นหลักการเดียวกับหน่วยความจำเสมือน (virtual Memory) n หน่วยเก็บความจุสูง (Backing store) l จานแม่เหล็กที่มีความเร็วสูง ขนาดใหญ่สามารถเก็บกระบวนการทั้งหมดในเวลา เดียวกันได้เพียงพอ และต้องสามารถอ่าน-เขียน ที่ตำแหน่งใดๆ ก็ได้โดยตรง (direct access) n หมุนออกและหมุนเข้า (Roll out, roll in) l การสับเปลี่ยนกระบวนการ เกิดในระบบที่ใช้ลำดับความสำคัญเป็นเกณฑ์ในการ จัดตารางการทำงาน (priority base) l ตัวจัดการหน่วยความจำหลักอาจสับเปลี่ยนงานที่มีความสำคัญต่ำออกไปชั่วคราว แล้วให้งานที่มีความสำคัญสูงกว่าเข้าทำงานจนเสร็จก่อนจึงสับเปลี่ยนงานที่มี ความสำคัญต่ำกลับมาทำงานต่อ n เวลาส่วนใหญ่ของการสลับงานคือ เวลาถ่ายโอน และเวลาถ่ายโอนทั้งหมด จะมีสัดส่วนแปรผันตรงกับจำนวนครั้งของการสับเปลี่ยนหน่วยความจำ

20 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 20 Schematic View of Swapping ภาพที่ 6.5 การสับเปลี่ยนสองกระบวนการโดยใช้จานแม่เหล็กเป็นหน่วยพักชั่วคราว

21 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 21 การจัดสรรพื้นที่แบบส่วนเดียว การจัดสรรพื้นที่แบบส่วนเดียว (Single Partition Allocation) n จะแบ่งพื้นที่หน่วยความจำออกเป็น 2 ส่วน l ระบบ (System) l ผู้ใช้ (User) n แต่ละส่วนจะใช้แยกจากกัน และงานคนละประเภท n เช่นเดียวกับระบบเชิงกลุ่ม (Batch system) ซึ่ง DOS ใช้วิธีนี้ OS USER

22 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 22 การวางข้อมูลของกระบวนการ n จะวางอย่างไร (ใน User Area) ให้ไม่ทับกับส่วน System n วางให้ไกลจากกันมากที่สุด OS Process1 โอกาส Error ก็ยากขึ้น

23 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 23 การจัดสรรหน่วยความจำแบบพื้นที่ ติดกัน การจัดสรรหน่วยความจำแบบพื้นที่ ติดกัน Contiguous Allocation n หน่วยความจำหลักถูกแบ่งเป็นสองส่วน l ระบบปฏิบัติการฝังตัว (Resident OS), มักอยู่ในหน่วยความจำส่วนล่างพร้อมกับ interrupt vector l กระบวนการผู้ใช้ อยู่ในหน่วยความจำส่วนบน n ส่วนของ OS ที่ไม่ค่อยได้ใช้งานจะถูกแยกไปเก็บไว้บนดิสก์ เรียกว่า ภาวะชั่ว ครู่ (transient)

24 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 24 การจัดสรรหน่วยความจำแบบพื้นที่ ติดกัน การจัดสรรหน่วยความจำแบบพื้นที่ ติดกัน Contiguous Allocation n หน่วยความจำหลักถูกแบ่งเป็นสองส่วน l ระบบปฏิบัติการฝังตัว (Resident OS), มักอยู่ในหน่วยความจำส่วนล่างพร้อมกับ interrupt vector l กระบวนการผู้ใช้ อยู่ในหน่วยความจำส่วนบน n ส่วนของ OS ที่ไม่ค่อยได้ใช้งานจะถูกแยกไปเก็บไว้บนดิสก์ เรียกว่า ภาวะชั่ว ครู่ (transient) n การจัดสรรพื้นที่แบบขนาดคงที่ (fixed-size partition) หรือแบบส่วนเดียว (Single-partition allocation) l ชุดของเรจิสเตอร์ย้ายตำแหน่ง (Relocation-register scheme) จะใช้สำหรับป้อง กับกระบวนการผู้ใช้จากกระบวนการอื่น และจากการเปลี่ยนรหัสของ OS และ ข้อมูล l ชุดของเรจิสเตอร์ย้ายตำแหน่ง บรรจุด้วยค่าเลขที่อยู่เชิงกายภาพที่เล็กที่สุด, base register บางครั้งเรียก Offset l บรรจุขอบเขตของที่อยู่เชิงตรรกะ ซึ่งแต่ละเลขที่อยู่จะต้องมีค่าน้อยกว่า limit register

25 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 25 ภาพที่ 6.6 Base register และ limit register ทำหน้าที่กำหนดขอบเขต เลขที่อยู่เชิงตรรกะ

26 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 26 ภาพที่ 6.7 ฮาร์ดแวร์สนับสนุนการใช้ย้ายตำแหน่งด้วยเรจิสเตอร์ฐานและเรจิสเตอร์ ขอบเขต

27 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 27 การแบ่งพื้นที่แบบหลายส่วน การแบ่งพื้นที่แบบหลายส่วน (Multiple Partition Allocation) n เป็นวิธีที่มีความยืดหยุ่นมากกว่าแบบ Single Partition n มี 2 แบบ l Fixed Sized Partition ทุกๆ Partition มีขนาด เท่าๆกัน l Dynamic Allocation ขนาดของ Partition ปรับตาม ขนาดของกระบวนการ

28 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 28 การแบ่งส่วนแบบขนาดคงที่ การแบ่งส่วนแบบขนาดคงที่ Fix Sized Partition 500B 1000B ใช้ 2 Partition 2100B ใช้ 3 Partition เกิดปัญหาอะไร ? จะมีพื้นที่จองไว้แต่ไม่ได้ใช้งานเลย

29 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 29 การแบ่งส่วนแบบขนาดคงที่ การแบ่งส่วนแบบขนาดคงที่ Fix Sized Partition 1200B ใช้ 1200B 2580B ใช้ 2580B เกิดปัญหาอะไร ? เมื่อจองใกล้เต็มจะมีพื้นที่ขนาดเล็กที่ใช้ไม่ได้

30 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 30 n การจัดสรรพื้นที่แบบหลายส่วน (Multiple-partition allocation) l พื้นที่ว่าง (Hole) – บล็อกพื้นที่ว่างในหน่วยความจำ พื้นที่ว่างขนาดต่างๆ ที่ กระจายตลอดหน่วยความจำ l เมื่อกระบวนการมาถึง ก็จะถูกจัดสรรหน่วยความจำจากพื้นที่ว่างขนาดที่ใหญ่ เพียงพอกับกระบวนการนั้น l OS จะเก็บข้อมูลเกี่ยวกับ a) ส่วนที่ถูกจัดสรร (allocated partitions) b) ส่วนที่ว่าง (free partitions/hole) OS process 5 process 8 process 2 OS process 5 process 2 OS process 5 process 2 OS process 5 process 9 process 2 process 9 process 10 การจัดสรรหน่วยความจำแบบพื้นที่ ติดกัน การจัดสรรหน่วยความจำแบบพื้นที่ ติดกัน Contiguous Allocation (cont.)

31 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 31 การแตกกระจาย การแตกกระจาย Fragmentation n จากการจองพื้นที่แบบ Multiple Partition จะทำให้เกิดสิ่งนี้ n มี 2 ประเภท l Internal Fragmentation (เกิดกับแบบ Fixed Sized) l External Fragmentation (เกิดกับแบบ Dynamic) จอง ใช้จริง Internal Fragment P1 ใช้ P2 ใช้ External Fragment ไม่มีใครใช้ได้ Fix Sized Dynamic

32 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 32 การสูญเปล่าที่เกิดจากการแตก กระจาย การสูญเปล่าที่เกิดจากการแตก กระจาย Fragmentation n การแตกกระจายแบบภายนอก (External Fragmentation) l พื้นที่หน่วยความจำซึ่งว่างเป็นช่วงๆ ไม่ต่อเนื่องกัน มีขนาดเล็ก เกินไปสำหรับงานที่รอคอยอยู่ n การแตกกระจายแบบภายใน (Internal Fragmentation) l การจัดสรรพื้นที่หน่วยความจำที่มีขนาดใหญ่เกินกว่าที่กระบวนการ ร้องขอ ส่วนที่เหลือไว้ยังไม่ได้ถูกนำไปใช้งาน n การลดการแตกกระจายแบบภายนอกสามารถทำได้โดยการอัดแน่น/ การกระชับพื้นที่ (compaction) l การสับเปลี่ยนพื้นที่ว่างในระบบให้มาอยู่รวมกันเป็นผืนเดียวกัน ต่อเนื่องกัน l สามารถทำได้เฉพาะกรณีที่การย้ายตำแหน่งเป็นแบบสัมพัทธ์และ เกิดขึ้นในขณะทำงานเท่านั้น

33 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 33 การอัดแน่น การอัดแน่น Compaction n สำหรับการจองพื้นที่แบบ Dynamic Allocation นั้นจะจอง หน่วยความจำไปเรื่อยๆ n หากจองไปเรื่อยๆก็จะเกิด External Fragmentation n เราสามารถบีบอัดพื้นที่ที่อยู่กระจายกันให้มาติดกันได้ จะทำให้เหลือ พื้นที่ว่างมากขึ้นและไม่เกิด External Fragmentation ข้อเสียก็คือทำงานช้าลง เพราะต้อง Copy ข้อมูลทีละไบท์

34 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 34 ปัญหาการจัดสรรหน่วยเก็บแบบ พลวัต ปัญหาการจัดสรรหน่วยเก็บแบบ พลวัต Dynamic Storage-Allocation Problem n การจัดลงตัวครั้งแรก First-fit: การเลือกพื้นที่แรก (first hole) ที่ พบว่ามีขนาดใหญ่กว่า หรือเท่ากับพื้นที่ที่ต้องการ n การจัดแล้วพอดีที่สุด Best-fit: การเลือกพื้นที่ที่มีขนาดใกล้เคียงกับ ขนาดพื้นที่ที่ต้องการมากที่สุด (smallest hole) ซ(ทำให้เกิดช่องว่าง ใหม่เล็กที่สุด) n การจัดแล้วเหลือมากที่สุด Worst-fit: การเลือกพื้นที่ที่มีขนาด ใหญ่กว่าขนาดพื้นที่ที่ต้องการมากที่สุด (largest hole) (ทำให้เกิด ช่องว่างใหม่ใหญ่ที่สุด) วิธีการจัดสรรพื้นที่ว่างเมื่อมีการร้องขอขนาด n วิธีแรก First-Fit และ Best-Fit ดีกว่าวิธี Worst-Fit ในแง่ของ เวลาที่ลดลง และประสิทธิผลในการใช้หน่วยเก็บข้อมูล

35 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 35 การจัดลงตัวครั้งแรก การจัดลงตัวครั้งแรก First Fit n เจอพื้นที่ว่างเมื่อไรก็จองทันที n วิ่ง Scan หาจากบนลงล่าง n ทำงานได้เร็ว n ข้อมูลกระจุกตัวอยู่แต่ข้างบน n อาจเกิด Fragment ที่มีขนาดใหญ่ได้ 20K First

36 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 36 การจัดแล้วพอดีที่สุด การจัดแล้วพอดีที่สุด Best-Fit n ทำการ Scan จากบนลงล่าง n คำนวณในแต่ละพื้นที่ทั้งหน่วยความจำ n ตรงไหนมีขนาดใกล้เคียงกับขนาดของ โปรเซสที่สุดก็จะจองตรงนั้น n ระบบทำงานช้า เพราะคำนวณมาก n เกิด Fragment ขนาดเล็ก แต่มีจำนวน มาก อาจต้อง Compact บ่อย 20K Best 28K 23K

37 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 37 การจัดแล้วเหลือมากที่สุด การจัดแล้วเหลือมากที่สุด Worst-fit n ทำการ Scan จากบนลงล่าง n คำนวณในแต่ละพื้นที่ทั้ง หน่วยความจำ n ตรงไหนมีขนาดใหญ่กว่าขนาดของ โปรเซสที่สุดก็จะจองตรงนั้น n ระบบทำงานช้า เพราะคำนวณมาก n โอกาสเกิด Fragment น้อยลง 20K Worst 28K 10K 5K

38 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 38 การสลับหน้า การสลับหน้า Paging n การจัดสรรพื้นที่หน่วยความจำแบบตรรกะให้แต่ละกระบวนการที่ ผ่านมานั้น ใช้ได้กับพื้นที่ว่างแบบกายภาพที่เรียงต่อเนื่องกัน เท่านั้น n การสลับหน้า (paging) สามารถทำให้กระบวนการเข้าไปอยู่ใน หน่วยความจำหลักได้โดยไม่ต้องมีพื้นที่ที่เรียงต่อเนื่องกันทั้ง กระบวนการ n หน่วยความจำแบบกายภาพ (physical memory) จะถูก แบ่งเป็นส่วนๆ แต่ละส่วนมีขนาดเท่ากันเรียกว่า เฟรม (frame) n หน่วยความจำแบบตรรกะ (logical memory) ก็จะถูกแบ่ง ออกเป็นส่วนๆ เรียกว่า หน้า (page) มีขนาดเท่ากับแต่ละเฟรม

39 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 39 การสลับหน้า การสลับหน้า Paging n มีการจัดเก็บรายการเฟรมว่างไว้ n ในการรันโปรแกรมขนาด n page ต้องค้นหาเฟรมว่างขนาด n เพื่อบรรจุโปรแกรม n สร้างตารางหน้า (page table) เพื่อแปลงไปเป็นที่อยู่เชิงกายภาพ (physical addresses) n อาจเกิด Internal fragmentation โปรเซสมี ขนาด 3 Pages Frames Memory Process แต่ละ Page จะใช้พื้นที่ใดก็ได้ ไม่ต้องติดกันก็ได้

40 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 40 วิธีการแปลงเลขที่อยู่ วิธีการแปลงเลขที่อยู่ Address Translation Scheme n ทุกตำแหน่งถูกกำหนดโดยซีพียู แบ่งเป็น 2 ส่วนคือ (page number (p)) และ ออฟเซตของหน้า (page offset (d)) l หมายเลขหน้า Page number (p) – ใช้เป็นตัวชี้ไปยังตารางเลข หน้า (page table) ในตารางเลขหน้าที่จะมีค่าตำแหน่งฐาน หรือ จุดเริ่มต้น (base address) ของหน้าจริงในหน่วยความจำหลัก l ออฟเซตของหน้า Page offset (d) – ค่าตำแหน่งหน้าจริงที่รวม กับออฟเซตของหน้า จะเป็นตำแหน่งจริง (physical memory address) ในหน่วยความจำหลัก

41 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 41 Address Translation Architecture ฮาร์ดแวร์สำหรับการสลับหน้า

42 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 42 Paging Example แบบจำลองการสลับหน้าของหน่วยความจำแบบกายภาพและตรรกะ

43 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 43 Paging Example ตัวอย่างการสลับหน้าสำหรับหน่วยความจำขนาด 32 ไบต์ ออกเป็นหน้าขนาด 4 ไบต์

44 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 44 เฟรมว่าง เฟรมว่าง Free Frames Before allocation After allocation

45 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 45 การคำนวณหา Address จริง การคำนวณหา Address จริง (Physical Address) n สำหรับโปรเซสจะมองเป็น p : d (Page : offset) n Page = หมายเลขของ Page, offset = ตำแหน่งของข้อมูลที่อ้างอิงภายใน Page นั้นโดยนับจากขอบของ page 1 : 30 ข้อมูลของ Page ที่ 1 อยู่ห่างจากต้น Page ไป 30 ไบต์ ต่อ -->

46 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 46 ตารางหน้า ตารางหน้า Page Table n ในหน่วยความจำจะเก็บ ข้อมูลนี้ไว้ ในรูปแบบตาราง n เป็นข้อมูลที่บอกว่า Page แต่ ละตัวอยู่ที่ Frame ไหนบ้าง Page No.Frame No Page2 Page0 Page1

47 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 47คำนวณโดยใช้ฮาร์ดแวร์ n MMU จะคำนวณหา Physical Address ให้กับ CPU n จะหา Frame No. ก่อนแล้วบวกกับ offset n จาก Frame No. ก็หา Add. เริ่มต้นของ Frame ได้ CPU pd pageframe fd Memory Real Addr.

48 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 48 หน้าร่วม หน้าร่วม (Shared Pages) n แบ่งข้อมูลในโปรเซสออกเป็นหน้าๆ (Pages) n แต่ละหน้ามีหน้าที่ (Function) แตกต่างกัน n บาง Page สามารถใช้ร่วมกันได้ระหว่างหลายโปรเซส code1 code2 data1 code1 code2 data2 P1 P2 code1 code2 data2 data1 Memory ประหยัดหน่วยความจำ มากกว่าการโหลด ทั้งหมดจาก ทั้ง 2 โปรเซส

49 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 49 การแบ่งเป็นตอน / การแบ่งส่วน การแบ่งเป็นตอน / การแบ่งส่วน (Segmentation) n จะแบ่งข้อมูลออกเป็น Segment ตามฟังก์ชั่นการทำงาน n แต่ละ Segment ไม่จำเป็นต้องมีขนาดเท่ากัน จะโหลด main program ไปก่อนเพียง segment เดียว แล้วเมื่อมีการเรียก section อื่นๆ ก็จะโหลดเข้ามาในหน่วยความจำภายหลัง (Load on demand) ดังนั้น จะประหยัดกว่าโหลดทั้งหมดในครั้งเดียว

50 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 50 การแบ่งเป็นตอน / การแบ่งส่วน การแบ่งเป็นตอน / การแบ่งส่วน (Segmentation) n โครงร่างของการจัดการหน่วยความจำที่สนับสนุนมุมมองของผู้ใช้ในภาพของ หน่วยความจำ n จะแบ่งข้อมูลออกเป็น Segment ตามฟังก์ชั่นการทำงาน n แต่ละ Segment ไม่จำเป็นต้องมีขนาดเท่ากัน n ดังนั้น โปรแกรมคือ หน่วยรวมของเซ็กเมนท์ เซ็กเมนท์ คือหน่วยทางตรรกะชนิด หนึ่งอย่างเช่น main program, procedure, function, method, object, local variables, global variables, common block, stack, symbol table, arrays

51 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 51 User’s View of a Program จะโหลด main program ไปก่อนเพียง segment เดียว แล้วเมื่อมีการเรียก section อื่นๆ ก็จะโหลดเข้ามาในหน่วยความจำภายหลัง (Load on demand) ดังนั้น จะประหยัดกว่าโหลดทั้งหมดในครั้งเดียว

52 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 52 Logical View of Segmentation user spacephysical memory space

53 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 53 สถาปัตยกรรมของการแบ่งส่วน สถาปัตยกรรมของการแบ่งส่วน Segmentation Architecture n ที่อยู่เชิงตรรกะประกอบด้วย 2 คอลัมน์, n Segment table – แปลงไปเป็นที่อยู่เชิงกายภาพขนาด 2 มิติ ประกอบด้วย l ส่วนฐาน base – กำหนดหมายเลขที่อยู่เชิงกายภาพเริ่มต้นที่อยู่ ในหน่วยความจำ l ส่วนจำกัด limit – ระบุความยาวของ segment. n Segment-table base register (STBR) ชี้ไปยังที่อยู่ใน หน่วยความจำของตารางเซ็กเมนท์ n Segment-table length register (STLR) แสดงจำนวนของเซ็ก เมนท์ที่ถูกใช้งานโดยโปรแกรม segment number s is legal if s < STLR.

54 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 54 Segmentation Architecture (Cont.) n การย้ายที่อยู่ (Relocation) l dynamic l by segment table n การใช้งานร่วมกัน (Sharing) l shared segments l same segment number n การจัดสรร (Allocation) l first fit/best fit l external fragmentation

55 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 55 Segmentation Architecture (Cont.) n เลขที่อยู่ตรรกะประกอบด้วย 2 ส่วน คือ หมายเลขส่วน (s), และ (2) ออฟเซตที่ชี้ไปยังส่วนนั้น (d) ใช้หมายเลขส่วนเพื่อเป็นตัวชี้ไปยัง ข้อมูลในตารางเลขส่วน n ข้อมูลแต่ละช่องในตารางเลขส่วนมีค่าฐานและค่าจำกัด n ระยะจากขอบ d จะมีค่าระหว่าง 0 ถึงค่าขอบเขตของส่วน n ถ้า d มากกว่าขอบเขตตอนแล้วรายงานข้อมูลผิดพลาดไปยัง ระบบปฏิบัติการว่ามีการอ้างอิงตำแหน่งนอกขอบเขตตอน n ถ้าค่า d ไม่เกินค่าขอบเขตตอน อุปกรณ์จะนำค่า d ไปบวกกับค่าฐาน เป็นค่าตำแหน่งจริง n ดังนั้น จะเห็นได้ว่าตารางเลขส่วนก็คือ แถวลำดับของคู่เรจิสเตอร์ฐาน และจำกัด (base-limit) นั่นเอง

56 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 56 Segmentation Hardware

57 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 57 Implementation of Page Table n Page table จะถูกเก็บไว้ในหน่วยความจำหลัก n Page-table base register (PTBR) จะชี้ไปยัง page table n Page-table length register (PRLR) ใช้แสดงขนาดขนาดขออง page table n วิธีการเช่นนี้ ต้องการการอ้างอิง 2 ส่วนของหน่วยความจำหลัก ได้แก่ หมายเลขส่วน และ ออฟเซ็ตที่ชี้ไปยังส่วนนั้น n ส่วนแรกสำหรับ page table อีกส่วนหนึ่งสำหรับข้อมูล/คำสั่ง n ปัญหาการอ้างอิงหน่วยความจำ 2 ส่วน สามารถแก้ได้โดยการใช้ ฮาร์ดแวร์พิเศษที่รวดเร็วทำหน้าที่เป็นแคช เรียกว่า associative memory หรือ translation look-aside buffers (TLBs)

58 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 58 Associative Memory n หน่วยความจำเชื่อมโยงทำหน้าที่สืบค้นคู่ขนาน Address translation (A´, A´´) l ถ้า A´ คือเรจิสเตอร์เชื่อมโยง จะได้ frame# ออกไป l มิฉะนั้น จะได้ frame # จากpage table ในหน่วยความจำ Page #Frame #

59 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 59 Paging Hardware With TLB

60 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 60 Effective Access Time n Associative Lookup =  time unit n Assume memory cycle time is 1 microsecond n Hit ratio – percentage of times that a page number is found in the associative registers; ration related to number of associative registers n Hit ratio =  n Effective Access Time (EAT) EAT = (1 +  )  + (2 +  )(1 –  ) = 2 +  – 

61 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 61 การป้องกันหน่วยความจำ การป้องกันหน่วยความจำ Memory Protection n การป้องกันหน่วยความจำทำได้โดยใช้บิตป้องกันแบบ เชื่อมโยง (associating protection bit) เข้ากับแต่ละเฟรม n Valid-invalid bit กำหนดไว้แต่ละรายการใน page table l “valid” แสดงว่าหน้าที่เชื่อมโยงพื้นที่ว่างเชิงตรรกะของ กระบวนการนั้น และคือหน้าที่ถูกต้องต้อง l “invalid” แสดงว่า หน้านั้นไม่ใช่พื้นที่ว่างเชิงตรรกะของ กระบวนการนั้น

62 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 62 Valid (v) or Invalid (i) Bit In A Page Table

63 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 63 โครงสร้างของตารางหน้า โครงสร้างของตารางหน้า Page Table Structure n การสลับหน้าแบบลำดับ (Hierarchical Paging) n ตารางหน้าที่ถูกแฮช (Hashed Page Tables) n ตารางหน้าย้อนกลับ (Inverted Page Tables)

64 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 64 ตารางการสลับหน้าแบบลำดับ ตารางการสลับหน้าแบบลำดับ Hierarchical Page Tables n แบ่งพื้นที่ว่างเชิงตรรกะออกเป็นหลายตารางหน้า (multiple page tables) n เทคนิคอย่างง่ายคือ ตารางหน้า 2 ระดับ (two-level page table)

65 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 65 ตัวอย่างการสลับหน้าแบบ 2 ระดับ ตัวอย่างการสลับหน้าแบบ 2 ระดับ Two-Level Paging Example n ที่อยู่เชิงตรรกะ (ขนาด 4K page size บนเครื่อง 32 บิต) จะถูกแบ่งออกเป็น l a page number ประกอบด้วย 20 bits l a page offset ประกอบด้วย 12 bits n เมื่อ page table มีการแบ่งหน้า page number จะถูกแบ่งออกเป็น l a 10-bit page number l a 10-bit page offset n ดังนั้น ที่อยู่เชิงตรรกะจึงแสดงดังนี้ โดยที่ p i คือดัชนีที่ชี้ไปยัง page table ภายนอก, และ p 2 คือ การแทนที่ภายในหน้า นั้นของ page table ภายนอก page number page offset pipi p2p2 d 10 12

66 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 66 Two-Level Page-Table Scheme

67 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 67 โครงสร้างการแปลงเลขที่อยู่ โครงสร้างการแปลงเลขที่อยู่ Address-Translation Scheme n โครงสร้างการแปลงเลขที่อยู่สำหรับสถาปัตยกรรมการสลับหน้าแบบ two- level 32-bit

68 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 68 ตารางหน้าแฮช ตารางหน้าแฮช Hashed Page Tables n พื้นที่ว่างร่วมกันที่น้อยกว่า 32 bits n หมายเลขหน้าเสมือนคือหมายเลขที่ถูกแฮชไปเป็น page table ซึ่ง page table นี้บรรจุด้วยสายโซ่ของส่วนประกอบการแฮชไปยัง ตำแหน่งที่อยู่เดียวกัน n หมายเลขหน้าเสมือน จะถูกเปรียบเทียบกับสายโซ่ที่สอดคล้องกัน ถ้าพบว่าสอดคล้องกัน ก็สามารถแปลงออกไปเป็นเฟรมเชิงกายภาพ ได้

69 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 69 Hashed Page Table

70 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 70 ตารางหน้าย้อนกลับ ตารางหน้าย้อนกลับ Inverted Page Table n หนึ่งรายการต่อหน่วยความจำจริงหนึ่งหน้า n รายการประกอบด้วยที่อยู่เสมือนของหน้าที่ถูก จัดเก็บไว้ในตำแหน่งของหน่วยความจำจริง พร้อม กับข้อมูลเกี่ยวกับกระบวนการที่ครอบครองหน้านั้น n แต่ละ page table จำเป็ต่อการลดขนาด หน่วยความจำ แต่การเพิ่มเวลาจำเป็นสำหรับการ ค้นหาตารางที่ต้องการเมื่อหน้านั้นถูกอ้างถึง n การใช้ตารางแฮช ก็เพื่อจำกัดจำนวนครั้งของการ ค้นหารายการตารางหน้า หรือให้สามารถค้นพบได้ ในเวลาอันสั้น

71 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 71 Inverted Page Table Architecture

72 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 72 Shared Pages n Shared code l One copy of read-only (reentrant) code shared among processes (i.e., text editors, compilers, window systems). l Shared code must appear in same location in the logical address space of all processes n Private code and data l Each process keeps a separate copy of the code and data l The pages for the private code and data can appear anywhere in the logical address space

73 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 73 Shared Pages Example

74 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 74 Segmentation n Memory-management scheme that supports user view of memory n A program is a collection of segments. A segment is a logical unit such as: main program, procedure, function, method, object, local variables, global variables, common block, stack, symbol table, arrays

75 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 75 User’s View of a Program

76 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 76 Logical View of Segmentation user spacephysical memory space

77 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 77 Example of Segmentation

78 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 78 Sharing of Segments

79 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 79 Segmentation with Paging – MULTICS n The MULTICS system solved problems of external fragmentation and lengthy search times by paging the segments n Solution differs from pure segmentation in that the segment-table entry contains not the base address of the segment, but rather the base address of a page table for this segment

80 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 80 MULTICS Address Translation Scheme

81 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 81 Segmentation with Paging – Intel 386 n As shown in the following diagram, the Intel 386 uses segmentation with paging for memory management with a two-level paging scheme

82 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 82 Intel Address Translation

83 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 83 Linux on Intel 80x86 n Uses minimal segmentation to keep memory management implementation more portable n Uses 6 segments: l Kernel code l Kernel data l User code (shared by all user processes, using logical addresses) l User data (likewise shared) l Task-state (per-process hardware context) l LDT n Uses 2 protection levels: l Kernel mode l User mode

84 End of Chapter 8

85 วิเชษฐ์ พลายมาศ | ระบบปฏิบัติการ (OS: Operating Systems) | การจัดการหน่วยความจำ (Memory Management) | 85


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

งานนำเสนอที่คล้ายกัน


Ads by Google