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

Download Report

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

นงลักษณ์ พรมทอง และวิเชษฐ์ พลายมาศ
การจัดการหน่วยความจา
Memory Management
Learning Objectives
ึ ษาแนวคิดพืน
n เพือ
่ ศก
้ ฐานเกีย
่ วกับการประสาน
ี ย
เวลาของซพ
ี ู ปั ญหาและวิธก
ี ารแก ้ไขเกีย
่ วกับ
การประสานเวลา
n เพือ
่ เข ้าใจเกีย
่ วกับการจัดการหน่วยความจาวิธ ี
ต่างๆ และขัน
้ ตอนวิธข
ี องการจัดการ
หน่วยความจา
ี ของวิธก
n เพือ
่ วิเคราะห์เปรียบเทียบข ้อดีข ้อเสย
ี าร
จัดการวิธต
ี า่ งๆ
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 2
Agenda
n แนวคิดพืน
้ ฐาน (Background)
ั เปลีย
n การสบ
่ น (Swapping)
n การจัดสรรหน่วยความจาแบบพืน
้ ทีต
่ ด
ิ กัน (Contiguous
Allocation)
n การสลับหน ้า (Paging)
่ นหรือเซก
็ เมนต์ (Segmentation)
n การแบ่งสว
n การผสมผสานหน่วยความจาการสลับหน ้าและการแบ่ง
สว่ น (Segmentation with Paging)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 3
แนวคิดพื้นฐาน
Background
ั่ ทีจ
ี ย
n คาสง
่ ะถูกดาเนินการได ้โดยซพ
ี ู จะต ้องถูกดึงมาและเก็บที่
ตาแหน่งในหน่วยความจา รูปแบบการทางานของรอบคาสงั่ เครือ
่ ง
และการปฏิบต
ั งิ านตามคาสงั่ (instruction-execution cycle) จะมี
ขัน
้ ตอนการทางาน ดังนี้
l
l
l
l
ไปนามา (fetch) คือการเริม
่ ต ้นการทางานซงึ่ ระบบจะทาการ
ดึงคาสงั่ แรกจากหน่วยความจา
ถอดรห ัส (decode) คือการทางานต่อจากขัน
้ ตอนที่ 1 โดยนา
คาสงั่ นีไ้ ปทาการถอดรหัส ซงึ่ อาจจะได ้ตัวดาเนินการหรือข ้อมูล
เพือ
่ ใชกั้ บคาสงั่ ถัดไป
กระทาการ (execution) คือการทางานต่อจากขัน
้ ตอนที่ 2
ซงึ่ หลังจากนัน
้ คาสงั่ จะทางานตามตัวดาเนินการทีไ่ ด ้
จ ัดเก็บ (store) ผลลัพธ์จะถูกเก็บกลับไปในหน่วยความจา
หลักต่อไป
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 4
การกาหนดตาแหน่ง
Background (2)
โปรแกรมต ้องนารหัสเครือ
่ ง (machine code) จากหน่วยเก็บ
เข ้ามาไว ้ในหน่วยความจาเพือ
่ ให ้พร ้อมดาเนินการในรูปของ
กระบวนการ
แถวคอยขาเข้า (Input queue)
การสะสมของกระบวนการในดิสก์ทรี่ อยคอยอยู่ เพือ
่ ทีจ
่ ะเข ้า
มาทางานในหน่วยความจาหลักเพือ
่ ดาเนินการโปรแกรม
เลือกกระบวนการในแถวคอยขาเข ้า และดึงกระบวนการไปไว ้ใน
หน่วยความจาหลัก แล ้วกระบวนการจะทางานเข ้าถึงคาสงั่ และ
ข ้อมูล
หลังจากนัน
้ กระบวนการจะออกจากหน่วยความจาหลัก ทาให ้
้
หน่วยความจาหลักว่างลงสาหรับกระบวนการใหม่เข ้ามาใชงาน
ได ้
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 5
การกาหนดตาแหน่ง
Background (3)
ภาพที่ 6.1 การกาหนดเลขทีอ
่ ยูใ่ ห ้กับกระบวนการในหน่วยความจาหลัก
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 6
การนาคาสั ่งและข้อมูลเข้าสู่หน่วยความจา
Background (3)
้
โปรแกรมผู ้ใชจะต
้องทางานหลายขัน
้ ตอนจนกว่าจะถูกดาเนินการ (run)
การกาหนดเลขทีอ
่ ยูข
่ องโปรแกรม (คาสงั่ และข ้อมูล) เพือ
่ แปลงไปเป็ น
เลขทีอ
่ ยูใ่ นหน่วยความจาหลัก มีขน
ั ้ ตอนดังนี้
่ งเวลาแปล (Compile time)
ชว
ั บูรณ์
 ถ ้ารู ้จักตาแหน่งหน่วยความจาไว ้แล ้ว สามารถแปลเลขทีอ
่ ยูส
่ ม
(absolute address) ซงึ่ เป็ นตาแหน่งจริงในหน่วยความจาหลักได ้เลย แต่
ถ ้าตาแหน่งเริม
่ ต ้นเปลีย
่ น ก็ต ้องเริม
่ แปลใหม่
่ งเวลาบรรจุ (Load time)
ชว
 ถ ้ายังไม่รู ้ว่าโปรแกรมจะทางาน ณ เลขทีอ
่ ยูใ่ ดในชว่ งเวลาขณะทีแ
่ ปล
โปรแกรม จะต ้องแปลเลขทีอ
่ ยูเ่ ป็ นแบบย ้ายได ้ (relocatable)
่ งเวลากระทาการ (Execution time)
ชว
 การผูกเลขทีอ
่ ยูจ
่ ะถูกหน่วงเวลาไว ้จนกระทั่งถึงชว่ งเวลาดาเนินการ
กระบวนการมีการย ้ายตลอดการทางานจากหน่วยความจาหลักตอนหนึง่ ไป
อีกตอนหนึง่
 การกาหนดตาแหน่งต ้องมีการหน่วงเวลาจนกระทั่งมีการทางานจริง (run
time) จะต ้องมีฮาร์ดแวร์เฉพาะเตรียมไว ้สาหรับการทางานลักษณะนีด
้ ้วย
(e.g., base and limit registers)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 7
้
ภาพที่ 6.2 ขัน
้ ตอนต่างๆ ในการเรียกใชงานของโปรแกรมผู
้ใช ้
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 8
พื้นที่ว่างของเลขที่อยูแ่ บบตรรกะและแบบกายภาพ
Logical vs. Physical Address Space
แนวคิดเกีย
่ วกับพืน
้ ทีแ
่ บบตรรกะและแบบกายภาพ ถือเป็ นแกนกลางของการ
จัดการหน่วยความจา
เลขทีอ
่ ยูแ
่ บบตรรกะ (Logical address)
ี ย
 เลขทีอ
่ ยูท
่ ถ
ี่ ก
ู สร ้างขึน
้ โดยซพ
ี ู บางทีเรียกว่า เลขทีอ
่ ยูเ่ สมือน (virtual
address)
เลขทีอ
่ ยูแ
่ บบกายภาพ (Physical address)
 เลขทีอ
่ ยูซ
่ งึ่ ถูกมองเห็นได ้โดยหน่วยความจา ถูกบรรจุเข ้าทีเ่ รจิสเตอร์เลขทีอ
่ ยู่
ของหน่วยความจา (memory-address register)
ในชว่ งเวลาแปลและชว่ งเวลาบรรจุ จะมีเลขทีอ
่ ยูแ
่ บบตรรกะและแบบ
กายภาพเหมือนกัน แต่ในชว่ งเวลากระทาการ เลขทีอ
่ ยูข
่ องทัง้ สองแบบจะ
แตกต่างกัน
้ ที่
กลุม
่ ของเลขทีอ
่ ยูแ
่ บบตรรกะทัง้ หมดทีถ
่ ก
ู สร ้างโดยโปรแกรมเรียกว่า พืน
ว่างของเลขทีอ
่ ยูแ
่ บบตรรกะ (logical address space)
กลุม
่ ของเลขทีอ
่ ยูแ
่ บบกายภาพทีส
่ อดคล ้องกับเลขทีอ
่ ยูแ
่ บบตรรกะเหล่านัน
้
้ ทีว่ า
จะเรียกว่า พืน
่ งของเลขทีอ
่ ยูแ
่ บบกายภาพ (physical address space)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 9
หน่วยจัดการหน่วยความจา
Memory-Management Unit (MMU)
เมือ
่ บรรจุกระบวนการเข ้ามาในหน่วยความจา Logical Address
จะต ้องถูกแปลงไปเป็ น Physical Address เรียกวิธก
ี ารนีว้ า่ การ
ย้ายเลขทีอ
่ ยู่ (Relocation)
ฮาร์ดแวร์ทาหน ้าทีแ
่ ปลงเลขทีอ
่ ยูเ่ สมือนให ้เป็ นเลขทีอ
่ ยูจ
่ ริงแบบ
กายภาพคือ MMU
เรจิสเตอร์ฐานทาหน ้าทีเ่ ป็ นเรจิสเตอร์สาหรับย ้ายเลขทีอ
่ ยู่
(relocate register) เพือ
่ ใชอ้ ้างอิงเลขทีอ
่ ยูใ่ นหน่วยความจาทุก
ี ก่อนจึง
ครัง้ ต ้องนาค่าอ ้างอิงทีไ่ ด ้มาบวกกับค่าเรจิสเตอร์ฐานเสย
จะได ้เลขทีอ
่ ยูจ
่ ริง
โปรแกรมผู ้ใชจึ้ งติดต่อกับเลขทีอ
่ ยูแ
่ บบตรรกะ (logical
addresses) เท่านัน
้ จากนัน
้ MMU จะทาการแปลงเลขทีอ
่ ยูแ
่ บบ
ตรรกะไปเป็ นแบบกายภาพ (real physical) ให ้เอง
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 10
้ สเตอร์ย ้ายตาแหน่ง
ภาพที่ 6.3 การย ้ายตาแหน่งแบบพลวัตโดยใชเรจิ
(Dynamic relocation using a relocation register)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 11
การบรรจุแบบพลวัต
Dynamic Loading
้ วยความจาหลักได ้อย่างมีประสท
ิ ธิภาพ
เพือ
่ ให ้สามารถใชหน่
สูงสุด
วิธก
ี ารบรรจุแบบพลวัต (dynamic loading) เป็ นการนา
ั พัทธ์ (relative
โปรแกรมไปไว ้ในหน่วยความจาแบบสม
memory)
โปรแกรมย่อย (routine) ทีไ่ ม่ได ้มีการทางาน จะไม่ถก
ู นามาไว ้
ในหน่วยความจาหลัก แต่จะนาไปไว ้ในหน่วยความจาหลักเมือ
่
้
มีการเรียกใชโปรแกรมย่
อยนีเ้ ท่านัน
้
ั คาสงั่ พิเศษใดๆ จากระบบปฏิบต
ไม่จาเป็ นต ้องอาศย
ั ก
ิ าร แต่
เป็ นหน ้าทีข
่ องผู ้ออกแบบโปรแกรมเอง
ระบบปฏิบต
ั ก
ิ ารอาจชว่ ยได ้โดยการจัดเตรียมรูทน
ี จากคลัง
้
(library routine) สาหรับใชงานการบรรจุ
แบบพลวัตไว ้ให ้
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 12
การเชื่อมโยงแบบพลวัต
Dynamic Linking
ื่ มโยงแบบคงที่ (static
OS บางชนิดจะสนับสนุนเฉพาะการเชอ
linking)
ื่ มโยงแบบพลวัตนัน
ื่ มโยงโปรแกรมจะถูกหน่วงเวลา
การเชอ
้ การเชอ
ไว ้ก่อน จนกว่าจะถึงเวลากระทาการ (execution time)
ื่ มโยงแบบพลวัต โปรแกรมย่อยจะมีการสร ้าง
ในขณะทาการเชอ
้ ยกรูทน
ชุดคาสงั่ เรียกระบบ (stub) ซงึ่ มีขนาดเล็ก เพือ
่ ใชเรี
ี จากคลัง
ทีต
่ ้องการขณะทางาน
stub จะทางานโดยการเปลีย
่ นโปรแกรมตัวเองเป็ นตาแหน่งของ
โปรแกรมย่อยในระบบ และกระทาการกับโปรแกรมย่อยนัน
้
ื่ มโยงแบบพลวัตใชกั้ นอย่างแพร่หลายโดยเฉพาะใน routine
การเชอ
้ งร่วมกัน (shared libraries)
library เรียกว่า การใชคลั
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 13
ตัวอย่างการทางานของโปรแกรม
Static Linked Library (Link ก่อน
รัน)
ขนาดไฟล์ EXE จะใหญ่
Dynamic Linked Library (Link
ตอนรัน)
ขนาดไฟล์ EXE เล็ก จะมีไฟล์
DLL พ่วงเข ้ามาด ้วย
้
ใชไฟล์
DLL ร่วมกันในหลายๆ
กระบวนการได ้
โปรแกรมบน DOS เป็ น Static linked
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 14
ปั ญหาของการจองพื้นที่
หน่วยความจามักจะมีน ้อยกว่าความต ้องการของทุก
กระบวนการเสมอ
้
มีหลายเทคนิคทีใ่ ชในการจองพื
น
้ ทีข
่ องกระบวนการ
้
การซอนทั
บ (Overlay)
ั เปลีย
การสบ
่ น (Swapping)
การจัดสรรพืน
้ ทีแ
่ บบสว่ นเดียว (Single Partition Allocation)
การจัดสรรพืน
้ ทีแ
่ บบหลายสว่ น (Multiple Partition Allocation)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 15
การซ้อนทับ
Overlay
เพือ
่ จัดสรรพืน
้ ทีว่ า่ งให ้กระบวนการทีม
่ ข
ี นาดใหญ่กว่า
ขนาดของหน่วยความจาสามารถทางานได ้
้
การซอนทั
บ (overlay) คือ การเก็บคาสงั่ และข ้อมูลไว ้ใน
้
หน่วยความจาเฉพาะทีจ
่ าเป็ นต ้องใชในขณะนั
น
้ เท่านัน
้
สว่ นทีเ่ หลือให ้เก็บไว ้ในหน่วยเก็บทีอ
่ น
ื่ ก่อน เมือ
่
จาเป็ นต ้องใชจึ้ งเรียกเอามาจากหน่วยเก็บดังกล่าวเข ้ามา
้
ซอนทั
บพืน
้ ทีเ่ ดิมในหน่วยความจา
ผู ้เขียนโปรแกรมต ้องออกแบบการแบ่งสว่ นทัง้ หมด ซงึ่ เป็ น
งานทีค
่ อ
่ นข ้างยุง่ ยากเพราะผู ้เขียนโปรแกรมต ้องรู ้เกีย
่ วกับ
โครงสร ้างของโปรกรม การทางาน ตลอดจนโครงสร ้าง
้
ข ้อมูลทีใ่ ชในโปรแกรมเป็
นอย่างดี
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 16
การซ้อนทับ (2)
Overlay
พัฒนาจากธรรมชาติของโปรแกรม ทีม
่ ก
ี ารทางานซ้าๆ
่ การแปลรหัสของ Compiler หรือ
กันหลายๆ รอบ เชน
Assemble
้ ้ากัน
จะทาการแบ่งรหัสออกเป็ นสว่ นๆ จะมีบางสว่ นทีใ่ ชซ
ในแต่ละรอบ
้
หากเราโหลดเฉพาะข ้อมูลทีจ
่ ะใชในแต่
ละรอบก็จะเป็ น
การประหยัด
้ กซอนทั
้
ข ้อมูลในรอบก่อนหน ้าทีไ่ ม่ใชจะถู
บ (Overlay)
ไป
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 17
้
ภาพที่ 6.4 การซอนทั
บสาหรับตัวแปลภาษาแอสแซมบลีแบบแปลสองรอบ
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 18
การสับเปลี่ยน
Swapping
กระบวนการจาเป็ นต ้องอยูใ่ นหน่วยความจาหลักขณะทางาน แต่อาจถูก
ั เปลีย
สบ
่ น (swap) ไปเก็บไว ้ในหน่วยเก็บชวั่ คราวได ้แล ้วถูกนากลับมาใหม่
เพือ
่ ทางานต่อ เป็ นหลักการเดียวกับหน่วยความจาเสมือน (virtual Memory)
หน่วยเก็บความจุสง
ู (Backing store)
จานแม่เหล็กทีม
่ ค
ี วามเร็วสูง ขนาดใหญ่สามารถเก็บกระบวนการทัง้ หมดในเวลา
เดียวกันได ้เพียงพอ และต ้องสามารถอ่าน-เขียน ทีต
่ าแหน่งใดๆ ก็ได ้โดยตรง
(direct access)
หมุนออกและหมุนเข้า (Roll out, roll in)
ั เปลีย
การสบ
่ นกระบวนการ เกิดในระบบทีใ่ ชล้ าดับความสาคัญเป็ นเกณฑ์ในการ
จัดตารางการทางาน (priority base)
ั เปลีย
ตัวจัดการหน่วยความจาหลักอาจสบ
่ นงานทีม
่ ค
ี วามสาคัญตา่ ออกไปชวั่ คราว
ั เปลีย
แล ้วให ้งานทีม
่ ค
ี วามสาคัญสูงกว่าเข ้าทางานจนเสร็จก่อนจึงสบ
่ นงานทีม
่ ี
ความสาคัญตา่ กลับมาทางานต่อ
เวลาสว่ นใหญ่ของการสลับงานคือ เวลาถ่ายโอน และเวลาถ่ายโอนทัง้ หมด
ั สว่ นแปรผันตรงกับจานวนครัง้ ของการสบ
ั เปลีย
จะมีสด
่ นหน่วยความจา
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 19
Schematic View of Swapping
ั เปลีย
้
ภาพที่ 6.5 การสบ
่ นสองกระบวนการโดยใชจานแม่
เหล็กเป็ นหน่วยพักชวั่ คราว
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 20
การจัดสรรพื้นที่แบบส่วนเดียว
(Single Partition Allocation)
จะแบ่งพืน
้ ทีห
่ น่วยความจาออกเป็ น 2 สว่ น
ระบบ (System)
ผู ้ใช ้ (User)
้
แต่ละสว่ นจะใชแยกจากกั
น และงานคนละประเภท
่ เดียวกับระบบเชงิ กลุม
เชน
่ (Batch system) ซงึ่ DOS ใชวิ้ ธน
ี ี้
USER
OS
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 21
การวางข้อมูลของกระบวนการ
จะวางอย่างไร (ใน User Area) ให ้ไม่ทับกับสว่ น System
วางให ้ไกลจากกันมากทีส
่ ด
ุ
Process1
โอกาส Error ก็ยากขึน
้
OS
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 22
การจัดสรรหน่วยความจาแบบพื้นที่ตดิ กัน
Contiguous Allocation
หน่วยความจาหลักถูกแบ่งเป็ นสองสว่ น
ระบบปฏิบต
ั ก
ิ ารฝั งตัว (Resident OS), มักอยูใ่ นหน่วยความจาสว่ นล่างพร ้อมกับ
interrupt vector
กระบวนการผู ้ใช ้ อยูใ่ นหน่วยความจาสว่ นบน
้
สว่ นของ OS ทีไ่ ม่คอ
่ ยได ้ใชงานจะถู
กแยกไปเก็บไว ้บนดิสก์ เรียกว่า ภาวะชวั่
ครู่ (transient)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 23
การจัดสรรหน่วยความจาแบบพื้นที่ตดิ กัน
Contiguous Allocation
หน่วยความจาหลักถูกแบ่งเป็ นสองสว่ น
ระบบปฏิบต
ั ก
ิ ารฝั งตัว (Resident OS), มักอยูใ่ นหน่วยความจาสว่ นล่างพร ้อมกับ
interrupt vector
กระบวนการผู ้ใช ้ อยูใ่ นหน่วยความจาสว่ นบน
้
สว่ นของ OS ทีไ่ ม่คอ
่ ยได ้ใชงานจะถู
กแยกไปเก็บไว ้บนดิสก์ เรียกว่า ภาวะชวั่
ครู่ (transient)
การจัดสรรพืน
้ ทีแ
่ บบขนาดคงที่ (fixed-size partition) หรือแบบสว่ นเดียว
(Single-partition allocation)
ชุดของเรจิสเตอร์ย ้ายตาแหน่ง (Relocation-register scheme) จะใชส้ าหรับป้ อง
้
กับกระบวนการผู ้ใชจากกระบวนการอื
น
่ และจากการเปลีย
่ นรหัสของ OS และ
ข ้อมูล
ชุดของเรจิสเตอร์ย ้ายตาแหน่ง บรรจุด ้วยค่าเลขทีอ
่ ยูเ่ ชงิ กายภาพทีเ่ ล็กทีส
่ ด
ุ ,
base register บางครัง้ เรียก Offset
บรรจุขอบเขตของทีอ
่ ยูเ่ ชงิ ตรรกะ ซงึ่ แต่ละเลขทีอ
่ ยูจ
่ ะต ้องมีคา่ น ้อยกว่า limit
register
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 24
ภาพที่ 6.6 Base register และ limit register ทาหน ้าทีก
่ าหนดขอบเขต
เลขทีอ
่ ยูเ่ ชงิ ตรรกะ
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 25
ภาพที่ 6.7 ฮาร์ดแวร์สนับสนุนการใชย้ ้ายตาแหน่งด ้วยเรจิสเตอร์ฐานและเรจิสเตอร์
ขอบเขต
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 26
การแบ่งพื้นที่แบบหลายส่วน
(Multiple Partition Allocation)
เป็ นวิธท
ี ม
ี่ ค
ี วามยืดหยุน
่ มากกว่าแบบ Single
Partition
มี 2 แบบ
Fixed Sized Partition ทุกๆ Partition มีขนาด
เท่าๆกัน
Dynamic Allocation ขนาดของ Partition ปรับตาม
ขนาดของกระบวนการ
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 27
การแบ่งส่วนแบบขนาดคงที่
Fix Sized Partition
500B
1000B
ใช ้ 2 Partition
2100B
ใช ้ 3 Partition
เกิดปั ญหาอะไร ?
้
จะมีพน
ื้ ทีจ
่ องไว ้แต่ไม่ได ้ใชงานเลย
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 28
การแบ่งส่วนแบบขนาดคงที่
Fix Sized Partition
1200B
ใช ้ 1200B
2580B
ใช ้ 2580B
เกิดปั ญหาอะไร ?
้ ได ้
เมือ
่ จองใกล ้เต็มจะมีพน
ื้ ทีข
่ นาดเล็กทีใ่ ชไม่
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 29
การจัดสรรหน่วยความจาแบบพื้นที่ตดิ กัน
Contiguous Allocation (cont.)
การจัดสรรพืน
้ ทีแ
่ บบหลายสว่ น (Multiple-partition allocation)
พืน
้ ทีว่ า่ ง (Hole) – บล็อกพืน
้ ทีว่ า่ งในหน่วยความจา พืน
้ ทีว่ า่ งขนาดต่างๆ ที่
กระจายตลอดหน่วยความจา
เมือ
่ กระบวนการมาถึง ก็จะถูกจัดสรรหน่วยความจาจากพืน
้ ทีว่ า่ งขนาดทีใ่ หญ่
เพียงพอกับกระบวนการนั น
้
OS จะเก็บข ้อมูลเกีย
่ วกับ
a) สว่ นทีถ
่ ก
ู จัดสรร (allocated partitions)
b) สว่ นทีว่ า่ ง (free partitions/hole)
OS
OS
OS
OS
process 5
process 5
process 5
process 5
process 9
process 9
process 8
process 2
process 10
process 2
process 2
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 30
process 2
การแตกกระจาย
Fragmentation
จากการจองพืน
้ ทีแ
่ บบ Multiple Partition จะทาให ้เกิดสงิ่ นี้
มี 2 ประเภท
Internal Fragmentation (เกิดกับแบบ Fixed Sized)
External Fragmentation (เกิดกับแบบ Dynamic)
Fix Sized
้ ง
ใชจริ
P1 ใช ้
จอง
P2 ใช ้
Dynamic
้ ้
ไม่มใี ครใชได
Internal Fragment
External Fragment
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 31
การสูญเปล่าที่เกิดจากการแตกกระจาย
Fragmentation
การแตกกระจายแบบภายนอก (External Fragmentation)
พืน
้ ทีห
่ น่วยความจาซงึ่ ว่างเป็ นชว่ งๆ ไม่ตอ
่ เนือ
่ งกัน มีขนาดเล็ก
เกินไปสาหรับงานทีร่ อคอยอยู่
การแตกกระจายแบบภายใน (Internal Fragmentation)
การจัดสรรพืน
้ ทีห
่ น่วยความจาทีม
่ ข
ี นาดใหญ่เกินกว่าทีก
่ ระบวนการ
้
ร ้องขอ สว่ นทีเ่ หลือไว ้ยังไม่ได ้ถูกนาไปใชงาน
การลดการแตกกระจายแบบภายนอกสามารถทาได ้โดยการอ ัดแน่น/
ั น
้ ที่ (compaction)
การกระชบพื
ั เปลีย
การสบ
่ นพืน
้ ทีว่ า่ งในระบบให ้มาอยูร่ วมกันเป็ นผืนเดียวกัน
ต่อเนือ
่ งกัน
ั พัทธ์และ
สามารถทาได ้เฉพาะกรณีทก
ี่ ารย ้ายตาแหน่งเป็ นแบบสม
เกิดขึน
้ ในขณะทางานเท่านัน
้
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 32
การอัดแน่น
Compaction
สาหรับการจองพืน
้ ทีแ
่ บบ Dynamic Allocation นัน
้ จะจอง
หน่วยความจาไปเรือ
่ ยๆ
หากจองไปเรือ
่ ยๆก็จะเกิด External Fragmentation
เราสามารถบีบอัดพืน
้ ทีท
่ อ
ี่ ยูก
่ ระจายกันให ้มาติดกันได ้ จะทาให ้เหลือ
พืน
้ ทีว่ า่ งมากขึน
้ และไม่เกิด External Fragmentation
ี ก็คอ
้
ข ้อเสย
ื ทางานชาลง
เพราะต ้อง Copy
ข ้อมูลทีละไบท์
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 33
ปั ญหาการจัดสรรหน่วยเก็บแบบพลวัต
Dynamic Storage-Allocation Problem
วิธก
ี ารจัดสรรพืน
้ ทีว่ า่ งเมือ
่ มีการร ้องขอขนาด n
การจ ัดลงต ัวครงแรก
ั้
First-fit: การเลือกพืน
้ ทีแ
่ รก (first hole) ที่
พบว่ามีขนาดใหญ่กว่า หรือเท่ากับพืน
้ ทีท
่ ต
ี่ ้องการ
การจ ัดแล้วพอดีทส
ี่ ด
ุ Best-fit: การเลือกพืน
้ ทีท
่ ม
ี่ ข
ี นาดใกล ้เคียงกับ
่ งว่าง
ขนาดพืน
้ ทีท
่ ต
ี่ ้องการมากทีส
่ ด
ุ (smallest hole) ซ(ทาให ้เกิดชอ
ใหม่เล็กทีส
่ ด
ุ )
การจ ัดแล้วเหลือมากทีส
่ ด
ุ Worst-fit: การเลือกพืน
้ ทีท
่ ม
ี่ ข
ี นาด
ใหญ่กว่าขนาดพืน
้ ทีท
่ ต
ี่ ้องการมากทีส
่ ด
ุ (largest hole) (ทาให ้เกิด
่ งว่างใหม่ใหญ่ทส
ชอ
ี่ ด
ุ )
วิธแ
ี รก First-Fit และ Best-Fit ดีกว่าวิธ ี Worst-Fit ในแง่ของ
ิ ธิผลในการใชหน่
้ วยเก็บข ้อมูล
เวลาทีล
่ ดลง และประสท
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 34
การจัดลงตัวครั้งแรก
First Fit
20K
เจอพืน
้ ทีว่ า่ งเมือ
่ ไรก็จองทันที
วิง่ Scan หาจากบนลงล่าง
ทางานได ้เร็ว
First
ข ้อมูลกระจุกตัวอยูแ
่ ต่ข ้างบน
อาจเกิด Fragment ทีม
่ ข
ี นาดใหญ่ได ้
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 35
การจัดแล้วพอดีที่สุด
Best-Fit
ทาการ Scan จากบนลงล่าง
20K
28K
คานวณในแต่ละพืน
้ ทีท
่ งั ้ หน่วยความจา
ตรงไหนมีขนาดใกล ้เคียงกับขนาดของ
โปรเซสทีส
่ ด
ุ ก็จะจองตรงนัน
้
Best
ระบบทางานชา้ เพราะคานวณมาก
เกิด Fragment ขนาดเล็ก แต่มจ
ี านวน
มาก อาจต ้อง Compact บ่อย
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 36
23K
การจัดแล้วเหลือมากที่สุด
Worst-fit
20K
ทาการ Scan จากบนลงล่าง
คานวณในแต่ละพืน
้ ทีท
่ งั ้
หน่วยความจา
ตรงไหนมีขนาดใหญ่กว่าขนาดของ
10K
Worst
โปรเซสทีส
่ ด
ุ ก็จะจองตรงนัน
้
ระบบทางานชา้ เพราะคานวณมาก
28K
โอกาสเกิด Fragment น ้อยลง
5K
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 37
การสลับหน้า
Paging
การจัดสรรพืน
้ ทีห
่ น่วยความจาแบบตรรกะให ้แต่ละกระบวนการที่
้ ้กับพืน
ผ่านมานัน
้ ใชได
้ ทีว่ า่ งแบบกายภาพทีเ่ รียงต่อเนือ
่ งกัน
เท่านัน
้
การสลับหน ้า (paging) สามารถทาให ้กระบวนการเข ้าไปอยูใ่ น
หน่วยความจาหลักได ้โดยไม่ต ้องมีพน
ื้ ทีท
่ เี่ รียงต่อเนือ
่ งกันทัง้
กระบวนการ
หน่วยความจาแบบกายภาพ (physical memory) จะถูก
แบ่งเป็ นสว่ นๆ แต่ละสว่ นมีขนาดเท่ากันเรียกว่า เฟรม
(frame)
หน่วยความจาแบบตรรกะ (logical memory) ก็จะถูกแบ่ง
ออกเป็ นสว่ นๆ เรียกว่า หน้า (page) มีขนาดเท่ากับแต่ละเฟรม
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 38
การสลับหน้า
Paging
มีการจัดเก็บรายการเฟรมว่างไว ้
ในการรันโปรแกรมขนาด n page ต ้องค ้นหาเฟรมว่างขนาด n เพือ
่ บรรจุโปรแกรม
สร ้างตารางหน ้า (page table) เพือ
่ แปลงไปเป็ นทีอ
่ ยูเ่ ชงิ กายภาพ (physical
addresses)
อาจเกิด Internal fragmentation
0
1
โปรเซสมี
ขนาด 3
Pages
0
2 Frames
1
Process
้ น
แต่ละ Page จะใชพื
้ ทีใ่ ดก็ได ้
ไม่ต ้องติดกันก็ได ้
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 39
Memory
วิธีการแปลงเลขที่อยู่
Address Translation Scheme
ี ย
ทุกตาแหน่งถูกกาหนดโดยซพ
ี ู แบ่งเป็ น 2 สว่ นคือ
(page number (p)) และ ออฟเซตของหน ้า (page
offset (d))
้ นตัวชไี้ ปยังตารางเลข
หมายเลขหน ้า Page number (p) – ใชเป็
หน ้า (page table) ในตารางเลขหน ้าทีจ
่ ะมีคา่ ตาแหน่งฐาน หรือ
จุดเริม
่ ต ้น (base address) ของหน ้าจริงในหน่วยความจาหลัก
ออฟเซตของหน ้า Page offset (d) – ค่าตาแหน่งหน ้าจริงทีร่ วม
กับออฟเซตของหน ้า จะเป็ นตาแหน่งจริง (physical memory
address) ในหน่วยความจาหลัก
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 40
Address Translation Architecture
ฮาร์ดแวร์สาหรับการสลับหน ้า
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 41
Paging Example
แบบจาลองการสลับหน ้าของหน่วยความจาแบบกายภาพและตรรกะ
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 42
Paging Example
ตัวอย่างการสลับหน ้าสาหรับหน่วยความจาขนาด 32 ไบต์ ออกเป็ นหน ้าขนาด 4 ไบต์
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 43
เฟรมว่าง
Free Frames
Before allocation
After allocation
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 44
การคานวณหา Address จริง
(Physical Address)
สาหรับโปรเซสจะมองเป็ น p : d (Page : offset)
Page = หมายเลขของ Page, offset = ตาแหน่งของข ้อมูลทีอ
่ ้างอิงภายใน
Page นั น
้ โดยนั บจากขอบของ page
0
1
1 : 30
ข ้อมูลของ Page ที่ 1
อยูห
่ า่ งจากต ้น Page ไป 30 ไบต์
2
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 45
ต่อ -->
ตารางหน้า
Page Table
ในหน่วยความจาจะเก็บ
ข ้อมูลนีไ
้ ว ้ ในรูปแบบตาราง
เป็ นข ้อมูลทีบ
่ อกว่า Page แต่
ละตัวอยูท
่ ี่ Frame ไหนบ ้าง
Page No. Frame No.
0
Page2
1
2
Page0
4
Page1
5
0
4
1
5
2
1
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 46
คานวณโดยใช้ฮาร์ดแวร์
MMU จะคานวณหา Physical Address ให ้กับ CPU
จะหา Frame No. ก่อนแล ้วบวกกับ offset
จาก Frame No. ก็หา Add. เริม
่ ต ้นของ Frame ได ้
Real Addr.
CPU
p
d
f
page
d
frame
0
4
1
5
2
1
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 47
Memory
หน้าร่วม
(Shared Pages)
แบ่งข ้อมูลในโปรเซสออกเป็ นหน ้าๆ (Pages)
แต่ละหน ้ามีหน ้าที่ (Function) แตกต่างกัน
บาง Page สามารถใชร่้ วมกันได ้ระหว่างหลายโปรเซส
code1
code1
code1
code2
code2
code2
data1
P1
data2
data1
data2
P2
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 48
Memory
ประหยัดหน่วยความจา
มากกว่าการโหลด
ทัง้ หมดจาก
ทัง้ 2 โปรเซส
การแบ่งเป็ นตอน/การแบ่งส่วน
(Segmentation)
ั่ การทางาน
จะแบ่งข ้อมูลออกเป็ น Segment ตามฟั งก์ชน
แต่ละ Segment ไม่จาเป็ นต ้องมีขนาดเท่ากัน
จะโหลด main program ไปก่อนเพียง
segment เดียว แล ้วเมือ
่ มีการเรียก section อืน
่ ๆ
ก็จะโหลดเข ้ามาในหน่วยความจาภายหลัง
(Load on demand)
ดังนั น
้ จะประหยัดกว่าโหลดทัง้ หมดในครัง้ เดียว
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 49
การแบ่งเป็ นตอน/การแบ่งส่วน
(Segmentation)
้
โครงร่างของการจัดการหน่วยความจาทีส
่ นั บสนุนมุมมองของผู ้ใชในภาพของ
หน่วยความจา
ั่ การทางาน
จะแบ่งข ้อมูลออกเป็ น Segment ตามฟั งก์ชน
แต่ละ Segment ไม่จาเป็ นต ้องมีขนาดเท่ากัน
็ เมนท์ เซก
็ เมนท์ คือหน่วยทางตรรกะชนิด
ดังนั น
้ โปรแกรมคือ หน่วยรวมของเซก
่
หนึง่ อย่างเชน
main program,
procedure,
function,
method,
object,
local variables, global variables,
common block,
stack,
symbol table, arrays
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 50
User’s View of a Program
จะโหลด main program ไปก่อนเพียง
segment เดียว แล ้วเมือ
่ มีการเรียก section อืน
่ ๆ
ก็จะโหลดเข ้ามาในหน่วยความจาภายหลัง
(Load on demand)
ดังนั น
้ จะประหยัดกว่าโหลดทัง้ หมดในครัง้ เดียว
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 51
Logical View of Segmentation
1
4
1
2
3
4
2
3
user space
physical memory space
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 52
สถาปั ตยกรรมของการแบ่งส่วน
Segmentation Architecture
ทีอ
่ ยูเ่ ชงิ ตรรกะประกอบด ้วย 2 คอลัมน์
<segment-number, offset>,
Segment table – แปลงไปเป็ นทีอ
่ ยูเ่ ชงิ กายภาพขนาด 2 มิต ิ
ประกอบด ้วย
สว่ นฐาน base – กาหนดหมายเลขทีอ
่ ยูเ่ ชงิ กายภาพเริม
่ ต ้นทีอ
่ ยู่
ในหน่วยความจา
สว่ นจากัด limit – ระบุความยาวของ segment.
Segment-table base register (STBR) ชไี้ ปยังทีอ
่ ยูใ่ น
็ เมนท์
หน่วยความจาของตารางเซก
็
Segment-table length register (STLR) แสดงจานวนของเซก
้
เมนท์ทถ
ี่ ก
ู ใชงานโดยโปรแกรม
segment number s is legal if s < STLR.
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 53
Segmentation Architecture (Cont.)
การย ้ายทีอ
่ ยู่ (Relocation)
dynamic
by segment table
้
การใชงานร่
วมกัน (Sharing)
shared segments
same segment number
การจัดสรร (Allocation)
first fit/best fit
external fragmentation
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 54
Segmentation Architecture (Cont.)
เลขทีอ
่ ยูต
่ รรกะประกอบด ้วย 2 สว่ น คือ หมายเลขสว่ น (s), และ (2)
้
ออฟเซตทีช
่ ไี้ ปยังสว่ นนัน
้ (d) ใชหมายเลขส
ว่ นเพือ
่ เป็ นตัวชไี้ ปยัง
ข ้อมูลในตารางเลขสว่ น
่ งในตารางเลขสว่ นมีคา่ ฐานและค่าจากัด
ข ้อมูลแต่ละชอ
ระยะจากขอบ d จะมีคา่ ระหว่าง 0 ถึงค่าขอบเขตของสว่ น
ถ ้า d มากกว่าขอบเขตตอนแล ้วรายงานข ้อมูลผิดพลาดไปยัง
ระบบปฏิบต
ั ก
ิ ารว่ามีการอ ้างอิงตาแหน่งนอกขอบเขตตอน
ถ ้าค่า d ไม่เกินค่าขอบเขตตอน อุปกรณ์จะนาค่า d ไปบวกกับค่าฐาน
เป็ นค่าตาแหน่งจริง
ดังนัน
้ จะเห็นได ้ว่าตารางเลขสว่ นก็คอ
ื แถวลาดับของคูเ่ รจิสเตอร์ฐาน
และจากัด (base-limit) นั่นเอง
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 55
Segmentation Hardware
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 56
Implementation of Page Table
Page table จะถูกเก็บไว ้ในหน่วยความจาหลัก
Page-table base register (PTBR) จะชไี้ ปยัง page table
้
Page-table length register (PRLR) ใชแสดงขนาดขนาดขออง
page table
่ นี้ ต ้องการการอ ้างอิง 2 สว่ นของหน่วยความจาหลัก
วิธก
ี ารเชน
ได ้แก่ หมายเลขสว่ น และ ออฟเซ็ตทีช
่ ไี้ ปยังสว่ นนัน
้
สว่ นแรกสาหรับ page table อีกสว่ นหนึง่ สาหรับข ้อมูล/คาสงั่
ปั ญหาการอ ้างอิงหน่วยความจา 2 สว่ น สามารถแก ้ได ้โดยการใช ้
ฮาร์ดแวร์พเิ ศษทีร่ วดเร็วทาหน ้าทีเ่ ป็ นแคช เรียกว่า
associative memory หรือ translation look-aside
buffers (TLBs)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 57
Associative Memory
ื่ มโยงทาหน ้าทีส
ื ค ้นคูข
หน่วยความจาเชอ
่ บ
่ นาน
Page #
Frame #
Address translation (A´, A´´)
ื่ มโยง จะได ้ frame# ออกไป
ถ ้า A´ คือเรจิสเตอร์เชอ
มิฉะนัน
้ จะได ้ frame # จากpage table ในหน่วยความจา
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 58
Paging Hardware With TLB
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 59
Effective Access Time
Associative Lookup =  time unit
Assume memory cycle time is 1 microsecond
Hit ratio – percentage of times that a page number is found
in the associative registers; ration related to number of
associative registers
Hit ratio = 
Effective Access Time (EAT)
EAT = (1 + )  + (2 + )(1 – )
=2+–
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 60
การป้องกันหน่วยความจา
Memory Protection
้ ตป้ องกันแบบ
การป้ องกันหน่วยความจาทาได ้โดยใชบิ
ื่ มโยง (associating protection bit) เข ้ากับแต่ละเฟรม
เชอ
Valid-invalid bit กาหนดไว ้แต่ละรายการใน page table
ื่ มโยงพืน
“valid” แสดงว่าหน ้าทีเ่ ชอ
้ ทีว่ า่ งเชงิ ตรรกะของ
กระบวนการนัน
้ และคือหน ้าทีถ
่ ก
ู ต ้องต ้อง
่ น
“invalid” แสดงว่า หน ้านัน
้ ไม่ใชพ
ื้ ทีว่ า่ งเชงิ ตรรกะของ
กระบวนการนัน
้
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 61
Valid (v) or Invalid (i) Bit In A Page Table
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 62
โครงสร้างของตารางหน้า
Page Table Structure
การสลับหน ้าแบบลาดับ (Hierarchical Paging)
ตารางหน ้าทีถ
่ ก
ู แฮช (Hashed Page Tables)
ตารางหน ้าย ้อนกลับ (Inverted Page Tables)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 63
ตารางการสลับหน้าแบบลาดับ
Hierarchical Page Tables
แบ่งพืน
้ ทีว่ า่ งเชงิ ตรรกะออกเป็ นหลายตารางหน ้า
(multiple page tables)
เทคนิคอย่างง่ายคือ ตารางหน ้า 2 ระดับ (two-level
page table)
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 64
ตัวอย่างการสลับหน้าแบบ 2 ระดับ
Two-Level Paging Example
ทีอ
่ ยูเ่ ชงิ ตรรกะ (ขนาด 4K page size บนเครือ
่ ง 32 บิต) จะถูกแบ่งออกเป็ น
a page number ประกอบด ้วย 20 bits
a page offset ประกอบด ้วย 12 bits
เมือ
่ page table มีการแบ่งหน ้า page number จะถูกแบ่งออกเป็ น
a 10-bit page number
a 10-bit page offset
ดังนัน
้ ทีอ
่ ยูเ่ ชงิ ตรรกะจึงแสดงดังนี้
page number
pi
10
page offset
p2
d
10
12
โดยที่ pi คือดัชนีทช
ี่ ไี้ ปยัง page table ภายนอก, และ p2 คือ การแทนทีภ
่ ายในหน ้า
นัน
้ ของ page table ภายนอก
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 65
Two-Level Page-Table Scheme
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 66
โครงสร้างการแปลงเลขที่อยู่
Address-Translation Scheme
โครงสร ้างการแปลงเลขทีอ
่ ยูส
่ าหรับสถาปั ตยกรรมการสลับหน ้าแบบ twolevel 32-bit
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 67
ตารางหน้าแฮช
Hashed Page Tables
พืน
้ ทีว่ า่ งร่วมกันทีน
่ ้อยกว่า 32 bits
หมายเลขหน ้าเสมือนคือหมายเลขทีถ
่ ก
ู แฮชไปเป็ น page table ซงึ่
่ องสว่ นประกอบการแฮชไปยัง
page table นีบ
้ รรจุด ้วยสายโซข
ตาแหน่งทีอ
่ ยูเ่ ดียวกัน
่ ส
หมายเลขหน ้าเสมือน จะถูกเปรียบเทียบกับสายโซท
ี่ อดคล ้องกัน
ถ ้าพบว่าสอดคล ้องกัน ก็สามารถแปลงออกไปเป็ นเฟรมเชงิ กายภาพ
ได ้
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 68
Hashed Page Table
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 69
ตารางหน้าย้อนกลับ
Inverted Page Table
หนึง่ รายการต่อหน่วยความจาจริงหนึง่ หน ้า
รายการประกอบด ้วยทีอ
่ ยูเ่ สมือนของหน ้าทีถ
่ ก
ู
จัดเก็บไว ้ในตาแหน่งของหน่วยความจาจริง พร ้อม
กับข ้อมูลเกีย
่ วกับกระบวนการทีค
่ รอบครองหน ้านัน
้
แต่ละ page table จาเป็ ต่อการลดขนาด
หน่วยความจา แต่การเพิม
่ เวลาจาเป็ นสาหรับการ
ค ้นหาตารางทีต
่ ้องการเมือ
่ หน ้านัน
้ ถูกอ ้างถึง
้
การใชตารางแฮช
ก็เพือ
่ จากัดจานวนครัง้ ของการ
ค ้นหารายการตารางหน ้า หรือให ้สามารถค ้นพบได ้
ั้
ในเวลาอันสน
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 70
Inverted Page Table Architecture
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 71
Shared Pages
Shared code
One copy of read-only (reentrant) code shared among
processes (i.e., text editors, compilers, window systems).
Shared code must appear in same location in the logical
address space of all processes
Private code and data
Each process keeps a separate copy of the code and data
The pages for the private code and data can appear
anywhere in the logical address space
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 72
Shared Pages Example
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 73
Segmentation
Memory-management scheme that supports user view of memory
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
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 74
User’s View of a Program
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 75
Logical View of Segmentation
1
4
1
2
3
4
2
3
user space
physical memory space
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 76
Example of Segmentation
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 77
Sharing of Segments
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 78
Segmentation with Paging – MULTICS
The MULTICS system solved problems of external
fragmentation and lengthy search times by paging the
segments
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
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 79
MULTICS Address Translation Scheme
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 80
Segmentation with Paging – Intel 386
As shown in the following diagram, the Intel 386 uses
segmentation with paging for memory management with a
two-level paging scheme
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 81
Intel 30386 Address Translation
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 82
Linux on Intel 80x86
Uses minimal segmentation to keep memory management
implementation more portable
Uses 6 segments:
Kernel code
Kernel data
User code (shared by all user processes, using logical
addresses)
User data (likewise shared)
Task-state (per-process hardware context)
LDT
Uses 2 protection levels:
Kernel mode
User mode
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 83
End of Chapter 8
วิเชษฐ ์ พลายมาศ | ระบบปฏิบต
ั ก
ิ าร (OS: Operating Systems) | การจัดการหน่วยความจา (Memory Management) | 85