85
กกกกกกกกกกกกกกกกกก กกกกกกกกกกกกกกกกกก กกก กกก Memory Management กกกกกกกก กกกกกก กกกกกกกกกก กกกกกกก

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

Embed Size (px)

DESCRIPTION

การจัดการหน่วยความจำ Memory Management. นงลักษณ์ พรมทอง และวิเชษฐ์ พลายมาศ. Learning Objectives. เพื่อศึกษาแนวคิดพื้นฐานเกี่ยวกับการประสานเวลาของซีพียู ปัญหาและวิธีการแก้ไขเกี่ยวกับการประสานเวลา เพื่อเข้าใจเกี่ยวกับการจัดการหน่วยความจำวิธีต่างๆ และขั้นตอนวิธีของการจัดการหน่วยความจำ - PowerPoint PPT Presentation

Citation preview

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

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

น่งลั�กษณ์� พรมทอง แลัะว�เชษฐ์� พลัายมาศ

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

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

Learning ObjectivesLearning Objectives

เพื่��อศึ�กษาแน่วค�ดพื่��น่ฐาน่เก!�ยวก�บการประสาน่เวลาของซี!พื่!ย' ป(ญหาและว�ธี!การแก+ไขเก!�ยวก�บการประสาน่เวลา

เพื่��อเข+าใจัเก!�ยวก�บการจั�ดการหน่�วยความจั�าว�ธี!ติ�างๆ และข��น่ติอน่ว�ธี!ของการจั�ดการหน่�วยความจั�า

เพื่��อว�เคราะห/เปร!ยบเที!ยบข+อด!ข+อเส!ยของว�ธี!การจั�ดการว�ธี!ติ�างๆ

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

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

AgendaAgenda

แน่วค�ดพื่��น่ฐาน่ (Background) การส�บเปล!�ยน่ (Swapping) การจั�ดสรรหน่�วยความจั�าแบบพื่��น่ที!�ติ�ดก�น่ (Contiguous

Allocation) การสล�บหน่+า (Paging) การแบ�งส�วน่หร�อเซี1กเมน่ติ/ (Segmentation) การผสมผสาน่หน่�วยความจั�าการสล�บหน่+าและการแบ�งส�วน่

(Segmentation with Paging)

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

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

แน่วค�ดพ� น่ฐ์าน่ แน่วค�ดพ� น่ฐ์าน่ Background

ค�าส��งที!�จัะถู'กด�าเน่�น่การได+โดยซี!พื่!ย' จัะติ+องถู'กด�งมาและเก1บที!�ติ�าแหน่�งใน่หน่�วยความจั�า ร'ปแบบการที�างาน่ของรอบค�าส��งเคร��องและการปฏิ�บ�ติ�งาน่ติามค�าส��ง (instruction-execution cycle) จัะม!ข��น่ติอน่การที�างาน่ ด�งน่!� ไปน่�ามา (fetch) ค�อการเร��มติ+น่การที�างาน่ซี��งระบบจัะที�าการด�ง

ค�าส��งแรกจัากหน่�วยความจั�า ถอดรห�ส (decode) ค�อการที�างาน่ติ�อจัากข��น่ติอน่ที!� 1 โดยน่�า

ค�าส��งน่!�ไปที�าการถูอดรห�ส ซี��งอาจัจัะได+ติ�วด�าเน่�น่การหร�อข+อม'ล เพื่��อใช้+ก�บค�าส��งถู�ดไป

กระท�าการ (execution) ค�อการที�างาน่ติ�อจัากข��น่ติอน่ที!� 2 ซี��งหล�งจัากน่��น่ค�าส��งจัะที�างาน่ติามติ�วด�าเน่�น่การที!�ได+

จั�ดเก%บ (store) ผลล�พื่ธี/จัะถู'กเก1บกล�บไปใน่หน่�วยความจั�าหล�กติ�อไป

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

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

การก�าหน่ดตำ�าแหน่งการก�าหน่ดตำ�าแหน่งBackground (2)

โปรแกรมติ+องน่�ารห�สเคร��อง (machine code) จัากหน่�วยเก1บเข+ามาไว+ใน่หน่�วยความจั�าเพื่��อให+พื่ร+อมด�าเน่�น่การใน่ร'ปของกระบวน่การ

แถวคอยขาเข)า (Input queue) การสะสมของกระบวน่การใน่ด�สก/ที!�รอยคอยอย'� เพื่��อที!�จัะเข+ามา

ที�างาน่ใน่หน่�วยความจั�าหล�กเพื่��อด�าเน่�น่การโปรแกรม เล�อกกระบวน่การใน่แถูวคอยขาเข+า และด�งกระบวน่การไปไว+ใน่

หน่�วยความจั�าหล�ก แล+วกระบวน่การจัะที�างาน่เข+าถู�งค�าส��งและข+อม'ล

หล�งจัากน่��น่ กระบวน่การจัะออกจัากหน่�วยความจั�าหล�ก ที�าให+หน่�วยความจั�าหล�กว�างลงส�าหร�บกระบวน่การใหม�เข+ามาใช้+งาน่ได+

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

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

การก�าหน่ดตำ�าแหน่งการก�าหน่ดตำ�าแหน่งBackground (3)

ภาพื่ที!� 6.1 การก�าหน่ดเลขที!�อย'�ให+ก�บกระบวน่การใน่หน่�วยความจั�าหล�ก

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

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

โปรแกรมผ'+ใช้+จัะติ+องที�างาน่หลายข��น่ติอน่จัน่กว�าจัะถู'กด�าเน่�น่การ (run) การก�าหน่ดเลขที!�อย'�ของโปรแกรม (ค�าส��งและข+อม'ล ) เพื่��อแปลงไปเป7น่เลขที!�

อย'�ใน่หน่�วยความจั�าหล�ก ม!ข� �น่ติอน่ด�งน่!� ชวงเวลัาแปลั (Compile time)

ถู+าร' +จั�กติ�าแหน่�งหน่�วยความจั�าไว+แล+ว สามารถูแปลเลขที!�อย'�ส�มบ'รณ์/ (absolute address) ซี��งเป7น่ติ�าแหน่�งจัร�งใน่หน่�วยความจั�าหล�กได+เลย แติ�ถู+าติ�าแหน่�งเร��มติ+น่เปล!�ยน่ ก1ติ+องเร��มแปลใหม�

ชวงเวลัาบรรจั* (Load time) ถู+าย�งไม�ร' +ว�าโปรแกรมจัะที�างาน่ ณ์ เลขที!�อย'�ใดใน่ช้�วงเวลาขณ์ะที!�แปลโปรแกรม

จัะติ+องแปลเลขที!�อย'�เป7น่แบบย+ายได+ (relocatable) ชวงเวลัากระท�าการ (Execution time)

การผ'กเลขที!�อย'�จัะถู'กหน่�วงเวลาไว+จัน่กระที��งถู�งช้�วงเวลาด�าเน่�น่การ กระบวน่การม!การย+ายติลอดการที�างาน่จัากหน่�วยความจั�าหล�กติอน่หน่��งไปอ!กติอน่หน่��ง

การก�าหน่ดติ�าแหน่�งติ+องม!การหน่�วงเวลาจัน่กระที��งม!การที�างาน่จัร�ง (run time) จัะติ+องม!ฮาร/ดแวร/เฉพื่าะเติร!ยมไว+ส�าหร�บการที�างาน่ล�กษณ์ะน่!�ด+วย (e.g., base and limit registers)

การน่�าค�าส�+งแลัะข)อม,ลัเข)าส,หน่วยการน่�าค�าส�+งแลัะข)อม,ลัเข)าส,หน่วยความจั�าความจั�า

Background (3)

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

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

ภาพื่ที!� 6.2 ข� �น่ติอน่ติ�างๆ ใน่การเร!ยกใช้+งาน่ของโปรแกรมผ'+ใช้+

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

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

พ� น่ท-+วางของเลัขท-+อย,แบบตำรรกะแลัะพ� น่ท-+วางของเลัขท-+อย,แบบตำรรกะแลัะแบบกายภาพแบบกายภาพ

Logical vs. Physical Address Space แน่วค�ดเก!�ยวก�บพื่��น่ที!�แบบติรรกะและแบบกายภาพื่ ถู�อเป7น่แกน่กลางของการ

จั�ดการหน่�วยความจั�า เลัขท-+อย,แบบตำรรกะ (Logical address)

เลขที!�อย'�ที!�ถู'กสร+างข��น่โดยซี!พื่!ย' บางที!เร!ยกว�า เลขที!�อย'�เสม�อน่ (virtual address) เลัขท-+อย,แบบกายภาพ (Physical address)

เลขที!�อย'�ซี��งถู'กมองเห1น่ได+โดยหน่�วยความจั�า ถู'กบรรจั;เข+าที!�เรจั�สเติอร/เลขที!�อย'�ของหน่�วยความจั�า (memory-address register)

ใน่ช้�วงเวลาแปลและช้�วงเวลาบรรจั; จัะม!เลขที!�อย'�แบบติรรกะและแบบกายภาพื่เหม�อน่ก�น่ แติ�ใน่ช้�วงเวลากระที�าการ เลขที!�อย'�ของที��งสองแบบจัะแติกติ�างก�น่

กล;�มของเลขที!�อย'�แบบติรรกะที��งหมดที!�ถู'กสร+างโดยโปรแกรมเร!ยกว�า พ� น่ท-+วางของเลัขท-+อย,แบบตำรรกะ (logical address space)

กล;�มของเลขที!�อย'�แบบกายภาพื่ที!�สอดคล+องก�บเลขที!�อย'�แบบติรรกะเหล�าน่��น่จัะเร!ยกว�า พ� น่ท-+วางของเลัขท-+อย,แบบกายภาพ (physical address space)

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

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

หน่วยจั�ดการหน่วยความจั�าหน่วยจั�ดการหน่วยความจั�าMemory-Management Unit (MMU)

เม��อบรรจั;กระบวน่การเข+ามาใน่หน่�วยความจั�า Logical Address จัะติ+องถู'กแปลงไปเป7น่ Physical Address เร!ยกว�ธี!การน่!�ว�าการย)ายเลัขท-+อย, (Relocation)

ฮาร/ดแวร/ที�าหน่+าที!�แปลงเลขที!�อย'�เสม�อน่ให+เป7น่เลขที!�อย'�จัร�งแบบกายภาพื่ค�อ MMU

เรจั�สเติอร/ฐาน่ที�าหน่+าที!�เป7น่เรจั�สเติอร/ส�าหร�บย+ายเลขที!�อย'� (relocate register) เพื่��อใช้+อ+างอ�งเลขที!�อย'�ใน่หน่�วยความจั�าที;กคร��ง ติ+องน่�าค�าอ+างอ�งที!�ได+มาบวกก�บค�าเรจั�สเติอร/ฐาน่เส!ยก�อน่จั�งจัะได+เลขที!�อย'�จัร�ง

โปรแกรมผ'+ใช้+จั�งติ�ดติ�อก�บเลขที!�อย'�แบบติรรกะ (logical addresses ) เที�าน่��น่ จัากน่��น่ MMU จัะที�าการแปลงเลขที!�อย'�แบบติรรกะไปเป7น่แบบกายภาพื่ (real physical) ให+เอง

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

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

ภาพื่ที!� 63. การย+ายติ�าแหน่�งแบบพื่ลว�ติโดยใช้+เรจั�สเติอร/ย+ายติ�าแหน่�ง (Dynamic relocation using a relocation register)

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

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

การบรรจั*แบบพลัว�ตำการบรรจั*แบบพลัว�ตำDynamic Loading

เพื่��อให+สามารถูใช้+หน่�วยความจั�าหล�กได+อย�างม!ประส�ทีธี�ภาพื่ส'งส;ด ว�ธี!การบรรจั;แบบพื่ลว�ติ (dynamic loading) เป7น่การน่�า

โปรแกรมไปไว+ใน่หน่�วยความจั�าแบบส�มพื่�ทีธี/ (relative memory )

โปรแกรมย�อย (routine) ที!�ไม�ได+ม!การที�างาน่ จัะไม�ถู'กน่�ามาไว+ใน่หน่�วยความจั�าหล�ก แติ�จัะน่�าไปไว+ใน่หน่�วยความจั�าหล�กเม��อม!การเร!ยกใช้+โปรแกรมย�อยน่!�เที�าน่��น่

ไม�จั�าเป7น่ติ+องอาศึ�ยค�าส��งพื่�เศึษใดๆ จัากระบบปฏิ�บ�ติ�การ แติ�เป7น่หน่+าที!�ของผ'+ออกแบบโปรแกรมเอง

ระบบปฏิ�บ�ติ�การอาจัช้�วยได+โดยการจั�ดเติร!ยมร'ที!น่จัากคล�ง (library routine) ส�าหร�บใช้+งาน่การบรรจั;แบบพื่ลว�ติไว+ให+

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

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

การเช�+อมโยงแบบพลัว�ตำการเช�+อมโยงแบบพลัว�ตำDynamic Linking

OS บางช้น่�ดจัะสน่�บสน่;น่เฉพื่าะการเช้��อมโยงแบบคงที!� (static linking)

การเช้��อมโยงแบบพื่ลว�ติน่��น่ การเช้��อมโยงโปรแกรมจัะถู'กหน่�วงเวลาไว+ก�อน่ จัน่กว�าจัะถู�งเวลากระที�าการ (execution time)

ใน่ขณ์ะที�าการเช้��อมโยงแบบพื่ลว�ติ โปรแกรมย�อยจัะม!การสร+างช้;ดค�าส��งเร!ยกระบบ (stub) ซี��งม!ขน่าดเล1ก เพื่��อใช้+เร!ยกร'ที!น่จัากคล�งที!�ติ+องการขณ์ะที�างาน่

stub จัะที�างาน่โดยการเปล!�ยน่โปรแกรมติ�วเองเป7น่ติ�าแหน่�งของโปรแกรมย�อยใน่ระบบ และกระที�าการก�บโปรแกรมย�อยน่��น่

การเช้��อมโยงแบบพื่ลว�ติใช้+ก�น่อย�างแพื่ร�หลายโดยเฉพื่าะใน่ routine library เร!ยกว�า การใช้+คล�งร�วมก�น่ (shared libraries)

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

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

ตำ�วอยางการท�างาน่ของโปรแกรมตำ�วอยางการท�างาน่ของโปรแกรม Static Linked Library (Link

ก�อน่ร�น่) ขน่าดไฟล/ EXE จัะใหญ�

Dynamic Linked Library (Link ติอน่ร�น่) ขน่าดไฟล/ EXE เล1ก จัะม!ไฟล/ DLL

พื่�วงเข+ามาด+วย ใช้+ไฟล/ DLL ร�วมก�น่ใน่หลายๆ

กระบวน่การได+

โปรแกรมบน่ DOS เป7น่ Static linked

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

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

ป0ญหาของการจัองพ� น่ท-+ป0ญหาของการจัองพ� น่ท-+ หน่�วยความจั�าม�กจัะม!น่+อยกว�าความติ+องการของที;ก

กระบวน่การเสมอ ม!หลายเทีคน่�คที!�ใช้+ใน่การจัองพื่��น่ที!�ของกระบวน่การ

การซี+อน่ที�บ (Overlay) การส�บเปล!�ยน่ (Swapping) การจั�ดสรรพื่��น่ที!�แบบส�วน่เด!ยว (Single Partition

Allocation) การจั�ดสรรพื่��น่ที!�แบบหลายส�วน่ (Multiple Partition

Allocation)

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

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

การซ้)อน่ท�บการซ้)อน่ท�บOverlay

เพื่��อจั�ดสรรพื่��น่ที!�ว�างให+กระบวน่การที!�ม!ขน่าดใหญ�กว�าขน่าดของหน่�วยความจั�าสามารถูที�างาน่ได+

การซี+อน่ที�บ (overlay) ค�อ การเก1บค�าส��งและข+อม'ลไว+ใน่หน่�วยความจั�าเฉพื่าะที!�จั�าเป7น่ติ+องใช้+ใน่ขณ์ะน่��น่เที�าน่��น่ ส�วน่ที!�เหล�อให+เก1บไว+ใน่หน่�วยเก1บที!�อ��น่ก�อน่ เม��อจั�าเป7น่ติ+องใช้+จั�งเร!ยกเอามาจัากหน่�วยเก1บด�งกล�าวเข+ามาซี+อน่ที�บพื่��น่ที!�เด�มใน่หน่�วยความจั�า

ผ'+เข!ยน่โปรแกรมติ+องออกแบบการแบ�งส�วน่ที��งหมด ซี��งเป7น่งาน่ที!�ค�อน่ข+างย;�งยากเพื่ราะผ'+เข!ยน่โปรแกรมติ+องร' +เก!�ยวก�บโครงสร+างของโปรกรม การที�างาน่ ติลอดจัน่โครงสร+างข+อม'ลที!�ใช้+ใน่โปรแกรมเป7น่อย�างด!

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

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

การซ้)อน่ท�บการซ้)อน่ท�บ 2( )Overlay

พื่�ฒน่าจัากธีรรมช้าติ�ของโปรแกรม ที!�ม!การที�างาน่ซี��าๆ ก�น่หลายๆ รอบ เช้�น่ การแปลรห�สของ Compiler หร�อ Assemble

จัะที�าการแบ�งรห�สออกเป7น่ส�วน่ๆ จัะม!บางส�วน่ที!�ใช้+ซี��าก�น่ใน่แติ�ละรอบ

หากเราโหลดเฉพื่าะข+อม'ลที!�จัะใช้+ใน่แติ�ละรอบก1จัะเป7น่การประหย�ด

ข+อม'ลใน่รอบก�อน่หน่+าที!�ไม�ใช้+จัะถู'กซี+อน่ที�บ (Overlay) ไป

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

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

ภาพื่ที!� 64. การซี+อน่ที�บส�าหร�บติ�วแปลภาษาแอสแซีมบล!แบบแปลสองรอบ

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

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

การส�บเปลั-+ยน่การส�บเปลั-+ยน่Swapping

กระบวน่การจั�าเป7น่ติ+องอย'�ใน่หน่�วยความจั�าหล�กขณ์ะที�างาน่ แติ�อาจัถู'กส�บเปล!�ยน่ (swap) ไปเก1บไว+ใน่หน่�วยเก1บช้��วคราวได+แล+วถู'กน่�ากล�บมาใหม�เพื่��อที�างาน่ติ�อ เป7น่หล�กการเด!ยวก�บหน่�วยความจั�าเสม�อน่ (virtual Memory)

หน่วยเก%บความจั*ส,ง (Backing store) จัาน่แม�เหล1กที!�ม!ความเร1วส'ง ขน่าดใหญ�สามารถูเก1บกระบวน่การที��งหมดใน่เวลา

เด!ยวก�น่ได+เพื่!ยงพื่อ และติ+องสามารถูอ�าน่-เข!ยน่ ที!�ติ�าแหน่�งใดๆ ก1ได+โดยติรง (direct access)

หม*น่ออกแลัะหม*น่เข)า (Roll out, roll in) การส�บเปล!�ยน่กระบวน่การ เก�ดใน่ระบบที!�ใช้+ล�าด�บความส�าค�ญเป7น่เกณ์ฑ์/ใน่การจั�ด

ติารางการที�างาน่ (priority base) ติ�วจั�ดการหน่�วยความจั�าหล�กอาจัส�บเปล!�ยน่งาน่ที!�ม!ความส�าค�ญติ��าออกไปช้��วคราว

แล+วให+งาน่ที!�ม!ความส�าค�ญส'งกว�าเข+าที�างาน่จัน่เสร1จัก�อน่จั�งส�บเปล!�ยน่งาน่ที!�ม!ความส�าค�ญติ��ากล�บมาที�างาน่ติ�อ

เวลาส�วน่ใหญ�ของการสล�บงาน่ค�อ เวลาถู�ายโอน่ และเวลาถู�ายโอน่ที��งหมดจัะม!ส�ดส�วน่แปรผ�น่ติรงก�บจั�าน่วน่คร��งของการส�บเปล!�ยน่หน่�วยความจั�า

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

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

Schematic View of Swapping

ภาพื่ที!� 6.5 การส�บเปล!�ยน่สองกระบวน่การโดยใช้+จัาน่แม�เหล1กเป7น่หน่�วยพื่�กช้��วคราว

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

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

การจั�ดสรรพ� น่ท-+แบบสวน่เด-ยวการจั�ดสรรพ� น่ท-+แบบสวน่เด-ยว(Single Partition Allocation)

จัะแบ�งพื่��น่ที!�หน่�วยความจั�าออกเป7น่ 2 ส�วน่ ระบบ (System) ผ'+ใช้+ (User)

แติ�ละส�วน่จัะใช้+แยกจัากก�น่ และงาน่คน่ละประเภที เช้�น่เด!ยวก�บระบบเช้�งกล;�ม (Batch system) ซี��ง DOS ใช้+ว�ธี!น่!�

OS

USER

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

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

การวางข)อม,ลัของกระบวน่การการวางข)อม,ลัของกระบวน่การ จัะวางอย�างไร (ใน่ User Area) ให+ไม�ที�บก�บส�วน่ System วางให+ไกลจัากก�น่มากที!�ส;ด

OS

Process1

โอกาส Error ก1ยากข��น่

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

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

การจั�ดสรรหน่วยความจั�าแบบพ� น่ท-+ตำ�ดการจั�ดสรรหน่วยความจั�าแบบพ� น่ท-+ตำ�ดก�น่ก�น่

Contiguous Allocation

หน่�วยความจั�าหล�กถู'กแบ�งเป7น่สองส�วน่ ระบบปฏิ�บ�ติ�การฝั(งติ�ว (Resident OS), ม�กอย'�ใน่หน่�วยความจั�าส�วน่ล�างพื่ร+อมก�บ

interrupt vector กระบวน่การผ'+ใช้+ อย'�ใน่หน่�วยความจั�าส�วน่บน่

ส�วน่ของ OS ที!�ไม�ค�อยได+ใช้+งาน่จัะถู'กแยกไปเก1บไว+บน่ด�สก/ เร!ยกว�า ภาวะช้��วคร' � (transient)

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

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

การจั�ดสรรหน่วยความจั�าแบบพ� น่ท-+ตำ�ดการจั�ดสรรหน่วยความจั�าแบบพ� น่ท-+ตำ�ดก�น่ก�น่

Contiguous Allocation หน่�วยความจั�าหล�กถู'กแบ�งเป7น่สองส�วน่

ระบบปฏิ�บ�ติ�การฝั(งติ�ว (Resident OS), ม�กอย'�ใน่หน่�วยความจั�าส�วน่ล�างพื่ร+อมก�บ interrupt vector

กระบวน่การผ'+ใช้+ อย'�ใน่หน่�วยความจั�าส�วน่บน่ ส�วน่ของ OS ที!�ไม�ค�อยได+ใช้+งาน่จัะถู'กแยกไปเก1บไว+บน่ด�สก/ เร!ยกว�า ภาวะช้��วคร' �

(transient) การจั�ดสรรพื่��น่ที!�แบบขน่าดคงที!� (fixed-size partition) หร�อแบบส�วน่เด!ยว

(Single-partition allocation) ช้;ดของเรจั�สเติอร/ย+ายติ�าแหน่�ง (Relocation-register scheme) จัะใช้+ส�าหร�บ

ปAองก�บกระบวน่การผ'+ใช้+จัากกระบวน่การอ��น่ และจัากการเปล!�ยน่รห�สของ OS และข+อม'ล

ช้;ดของเรจั�สเติอร/ย+ายติ�าแหน่�ง บรรจั;ด+วยค�าเลขที!�อย'�เช้�งกายภาพื่ที!�เล1กที!�ส;ด , base register บางคร��งเร!ยก Offset

บรรจั;ขอบเขติของที!�อย'�เช้�งติรรกะ ซี��งแติ�ละเลขที!�อย'�จัะติ+องม!ค�าน่+อยกว�า limit register

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

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

ภาพื่ที!� 66. Base register และ limit register ที�าหน่+าที!�ก�าหน่ดขอบเขติเลขที!�อย'�เช้�งติรรกะ

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

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

ภาพื่ที!� 67 ฮาร/ดแวร/สน่�บสน่;น่การใช้+ย+ายติ�าแหน่�งด+วยเรจั�สเติอร/ฐาน่และเรจั�สเติอร/ขอบเขติ

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

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

การแบงพ� น่ท-+แบบหลัายสวน่การแบงพ� น่ท-+แบบหลัายสวน่(Multiple Partition Allocation)

เป7น่ว�ธี!ที!�ม!ความย�ดหย;�น่มากกว�าแบบ Single Partition

ม! 2 แบบ Fixed Sized Partition ที;กๆ Partition ม!ขน่าด

เที�าๆก�น่ Dynamic Allocation ขน่าดของ Partition ปร�บ

ติามขน่าดของกระบวน่การ

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

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

การแบงสวน่แบบขน่าดคงท-+การแบงสวน่แบบขน่าดคงท-+Fix Sized Partition

500B

1000B

ใช้+ 2 Partition

2100B

ใช้+ 3 Partition

เก�ดป(ญหาอะไร ?

จัะม!พื่��น่ที!�จัองไว+แติ�ไม�ได+ใช้+งาน่เลย

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

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

การแบงสวน่แบบขน่าดคงท-+การแบงสวน่แบบขน่าดคงท-+Fix Sized Partition

1200B

ใช้+ 1200B

2580B

ใช้+ 2580B

เก�ดป(ญหาอะไร ?

เม��อจัองใกล+เติ1มจัะม!พื่��น่ที!�ขน่าดเล1กที!�ใช้+ไม�ได+

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

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

การจั�ดสรรพื่��น่ที!�แบบหลายส�วน่ (Multiple-partition allocation) พื่��น่ที!�ว�าง (Hole) – บล1อกพื่��น่ที!�ว�างใน่หน่�วยความจั�า พื่��น่ที!�ว�างขน่าดติ�างๆ ที!�

กระจัายติลอดหน่�วยความจั�า เม��อกระบวน่การมาถู�ง ก1จัะถู'กจั�ดสรรหน่�วยความจั�าจัากพื่��น่ที!�ว�างขน่าดที!�ใหญ�

เพื่!ยงพื่อก�บกระบวน่การน่��น่ OS จัะเก1บข+อม'ลเก!�ยวก�บ

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.)

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

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

การแตำกกระจัาย การแตำกกระจัาย Fragmentation

จัากการจัองพื่��น่ที!�แบบ Multiple Partition จัะที�าให+เก�ดส��งน่!� ม! 2 ประเภที

Internal Fragmentation (เก�ดก�บแบบ Fixed Sized) External Fragmentation (เก�ดก�บแบบ Dynamic)

จัองใช้+จัร�ง

Internal Fragment

P1 ใช้+

P2 ใช้+

External Fragment

ไม�ม!ใครใช้+ได+

Fix Sized Dynamic

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

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

การส,ญเปลัาท-+เก�ดจัากการแตำกการส,ญเปลัาท-+เก�ดจัากการแตำกกระจัายกระจัาย

Fragmentation

การแตำกกระจัายแบบภายน่อก (External Fragmentation) พื่��น่ที!�หน่�วยความจั�าซี��งว�างเป7น่ช้�วงๆ ไม�ติ�อเน่��องก�น่ ม!ขน่าดเล1กเก�น่ไป

ส�าหร�บงาน่ที!�รอคอยอย'� การแตำกกระจัายแบบภายใน่ (Internal Fragmentation)

การจั�ดสรรพื่��น่ที!�หน่�วยความจั�าที!�ม!ขน่าดใหญ�เก�น่กว�าที!�กระบวน่การร+องขอ ส�วน่ที!�เหล�อไว+ย�งไม�ได+ถู'กน่�าไปใช้+งาน่

การลดการแติกกระจัายแบบภายน่อกสามารถูที�าได+โดยการอ�ดแน่น่/การกระช�บพ� น่ท-+ (compaction) การส�บเปล!�ยน่พื่��น่ที!�ว�างใน่ระบบให+มาอย'�รวมก�น่เป7น่ผ�น่เด!ยวก�น่ติ�อ

เน่��องก�น่ สามารถูที�าได+เฉพื่าะกรณ์!ที!�การย+ายติ�าแหน่�งเป7น่แบบส�มพื่�ทีธี/และเก�ด

ข��น่ใน่ขณ์ะที�างาน่เที�าน่��น่

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

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

การอ�ดแน่น่การอ�ดแน่น่Compaction

ส�าหร�บการจัองพื่��น่ที!�แบบ Dynamic Allocation น่��น่จัะจัองหน่�วยความจั�าไปเร��อยๆ

หากจัองไปเร��อยๆก1จัะเก�ด External Fragmentation เราสามารถูบ!บอ�ดพื่��น่ที!�ที!�อย'�กระจัายก�น่ให+มาติ�ดก�น่ได+ จัะที�าให+เหล�อพื่��น่ที!�

ว�างมากข��น่และไม�เก�ด External Fragmentation

ข+อเส!ยก1ค�อที�างาน่ช้+าลง เพื่ราะติ+อง Copy ข+อม'ลที!ละไบที/

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

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

ป0ญหาการจั�ดสรรหน่วยเก%บแบบพลัว�ตำป0ญหาการจั�ดสรรหน่วยเก%บแบบพลัว�ตำDynamic Storage-Allocation Problem

การจั�ดลังตำ�วคร� งแรก First-fit: การเล�อกพื่��น่ที!�แรก (first hole) ที!�พื่บว�าม!ขน่าดใหญ�กว�า หร�อเที�าก�บพื่��น่ที!�ที!�ติ+องการ

การจั�ดแลั)วพอด-ท-+ส*ด Best-fit: การเล�อกพื่��น่ที!�ที!�ม!ขน่าดใกล+เค!ยงก�บขน่าดพื่��น่ที!�ที!�ติ+องการมากที!�ส;ด (smallest hole) ซี(ที�าให+เก�ดช้�องว�างใหม�เล1กที!�ส;ด)

การจั�ดแลั)วเหลั�อมากท-+ส*ด Worst-fit: การเล�อกพื่��น่ที!�ที!�ม!ขน่าดใหญ�กว�าขน่าดพื่��น่ที!�ที!�ติ+องการมากที!�ส;ด (largest hole ) (ที�าให+เก�ดช้�องว�างใหม�ใหญ�ที!�ส;ด)

ว�ธี!การจั�ดสรรพื่��น่ที!�ว�างเม��อม!การร+องขอขน่าด n

ว�ธี!แรก First-Fit และ Best-Fit ด!กว�าว�ธี! Worst-Fit ใน่แง�ของเวลาที!�ลดลง และประส�ทีธี�ผลใน่การใช้+หน่�วยเก1บข+อม'ล

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

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

การจั�ดลังตำ�วคร� งแรก การจั�ดลังตำ�วคร� งแรก First Fit

เจัอพื่��น่ที!�ว�างเม��อไรก1จัองที�น่ที! ว��ง Scan หาจัากบน่ลงล�าง ที�างาน่ได+เร1ว ข+อม'ลกระจั;กติ�วอย'�แติ�ข+างบน่ อาจัเก�ด Fragment ที!�ม!ขน่าดใหญ�ได+

20K

First

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

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

การจั�ดแลั)วพอด-ท-+ส*ดการจั�ดแลั)วพอด-ท-+ส*ด Best-Fit

ที�าการ Scan จัากบน่ลงล�าง ค�าน่วณ์ใน่แติ�ละพื่��น่ที!�ที� �งหน่�วยความจั�า ติรงไหน่ม!ขน่าดใกล+เค!ยงก�บขน่าดของ โปรเซีสที!�ส;ดก1จัะจัองติรงน่��น่ ระบบที�างาน่ช้+า เพื่ราะค�าน่วณ์มาก เก�ด Fragment ขน่าดเล1ก แติ�ม!จั�าน่วน่

มาก อาจัติ+อง Compact บ�อย

20K

Best

28K

23K

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

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

การจั�ดแลั)วเหลั�อมากท-+ส*ดการจั�ดแลั)วเหลั�อมากท-+ส*ด Worst-fit

ที�าการ Scan จัากบน่ลงล�าง ค�าน่วณ์ใน่แติ�ละพื่��น่ที!�ที� �งหน่�วยความ

จั�า ติรงไหน่ม!ขน่าดใหญ�กว�าขน่าดของ โปรเซีสที!�ส;ดก1จัะจัองติรงน่��น่ ระบบที�างาน่ช้+า เพื่ราะค�าน่วณ์มาก โอกาสเก�ด Fragment น่+อยลง

20K

Worst

28K

10K

5K

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

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

การสลั�บหน่)าการสลั�บหน่)าPaging

การจั�ดสรรพื่��น่ที!�หน่�วยความจั�าแบบติรรกะให+แติ�ละกระบวน่การที!�ผ�าน่มาน่��น่ ใช้+ได+ก�บพื่��น่ที!�ว�างแบบกายภาพื่ที!�เร!ยงติ�อเน่��องก�น่เที�าน่��น่

การสล�บหน่+า (paging) สามารถูที�าให+กระบวน่การเข+าไปอย'�ใน่หน่�วยความจั�าหล�กได+โดยไม�ติ+องม!พื่��น่ที!�ที!�เร!ยงติ�อเน่��องก�น่ที��งกระบวน่การ

หน่�วยความจั�าแบบกายภาพื่ (physical memory) จัะถู'กแบ�งเป7น่ส�วน่ๆ แติ�ละส�วน่ม!ขน่าดเที�าก�น่เร!ยกว�า เฟรม (frame)

หน่�วยความจั�าแบบติรรกะ (logical memory) ก1จัะถู'กแบ�งออกเป7น่ส�วน่ๆ เร!ยกว�า หน่)า (page) ม!ขน่าดเที�าก�บแติ�ละเฟรม

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

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

การสลั�บหน่)าการสลั�บหน่)าPaging

ม!การจั�ดเก1บรายการเฟรมว�างไว+ ใน่การร�น่โปรแกรมขน่าด n page ติ+องค+น่หาเฟรมว�างขน่าด n เพื่��อบรรจั;โปรแกรม สร+างติารางหน่+า (page table ) เพื่��อแปลงไปเป7น่ที!�อย'�เช้�งกายภาพื่ (physical

addresses) อาจัเก�ด Internal fragmentation

โปรเซีสม!ขน่าด 3

Pages

Frames

MemoryProcess แติ�ละ Page จัะใช้+พื่��น่ที!�ใดก1ได+ ไม�

ติ+องติ�ดก�น่ก1ได+

0

1

0

1

2

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

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

ว�ธี-การแปลังเลัขท-+อย,ว�ธี-การแปลังเลัขท-+อย,Address Translation Scheme

ที;กติ�าแหน่�งถู'กก�าหน่ดโดยซี!พื่!ย' แบ�งเป7น่ 2 ส�วน่ค�อ (page number (p)) และ ออฟเซีติของหน่+า (page offset (d))

หมายเลขหน่+า Page number (p) – ใช้+เป7น่ติ�วช้!�ไปย�งติารางเลขหน่+า (page table) ใน่ติารางเลขหน่+าที!�จัะม!ค�าติ�าแหน่�งฐาน่ หร�อจั;ดเร��มติ+น่ (base address) ของหน่+าจัร�งใน่หน่�วยความจั�าหล�ก

ออฟเซีติของหน่+า Page offset (d) – ค�าติ�าแหน่�งหน่+าจัร�งที!�รวมก�บออฟเซีติของหน่+า จัะเป7น่ติ�าแหน่�งจัร�ง (physical memory address) ใน่หน่�วยความจั�าหล�ก

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

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

Address Translation Architecture

ฮาร/ดแวร/ส�าหร�บการสล�บหน่+า

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

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

Paging Example

แบบจั�าลองการสล�บหน่+าของหน่�วยความจั�าแบบกายภาพื่และติรรกะ

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

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

Paging Example

ติ�วอย�างการสล�บหน่+าส�าหร�บหน่�วยความจั�าขน่าด 32 ไบติ/ ออกเป7น่หน่+าขน่าด 4 ไบติ/

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

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

เฟรมวางเฟรมวางFree Frames

Before allocation After allocation

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

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

การค�าน่วณ์หา การค�าน่วณ์หา Address Address จัร�งจัร�ง(Physical Address)

ส�าหร�บโปรเซีสจัะมองเป7น่ p : d (Page : offset) Page = หมายเลขของ Page, offset = ติ�าแหน่�งของข+อม'ลที!�อ+างอ�ง

ภายใน่ Page น่��น่โดยน่�บจัากขอบของ page

1 : 30ข+อม'ลของ Page ที!� 1 อย'�ห�างจัากติ+น่ Page ไป 30 ไบติ/

0

1

2

ติ�อ -->

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

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

ตำารางหน่)าตำารางหน่)าPage Table

ใน่หน่�วยความจั�าจัะเก1บข+อม'ลน่!�ไว+ ใน่ร'ปแบบติาราง

เป7น่ข+อม'ลที!�บอกว�า Page แติ�ละติ�วอย'�ที!� Frame ไหน่บ+าง Page No. Frame No.

0 4

1 5

2 1

0

1

2

4

5

Page2

Page0

Page1

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

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

ค�าน่วณ์โดยใช)ฮาร�ดแวร�ค�าน่วณ์โดยใช)ฮาร�ดแวร� MMU จัะค�าน่วณ์หา Physical Address ให+ก�บ

CPU จัะหา Frame No. ก�อน่แล+วบวกก�บ offset จัาก Frame No. ก1หา Add. เร��มติ+น่ของ Frame

ได+

CPU p d

0 4

1 5

2 1

page frame

f dMemory

Real Addr.

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

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

หน่)ารวมหน่)ารวม(Shared Pages)

แบ�งข+อม'ลใน่โปรเซีสออกเป7น่หน่+าๆ (Pages) แติ�ละหน่+าม!หน่+าที!� (Function) แติกติ�างก�น่ บาง Page สามารถูใช้+ร�วมก�น่ได+ระหว�างหลายโปรเซีส

code1

code2

data1

code1

code2

data2

P1 P2

code1

code2

data2

data1Memory

ประหย�ดหน่�วยความจั�ามากกว�าการโหลดที��งหมดจัากที��ง 2 โปรเซีส

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

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

การแบงเป7น่ตำอน่การแบงเป7น่ตำอน่//การแบงสวน่การแบงสวน่(Segmentation)

จัะแบ�งข+อม'ลออกเป7น่ Segment ติามฟ(งก/ช้��น่การที�างาน่ แติ�ละ Segment ไม�จั�าเป7น่ติ+องม!ขน่าดเที�าก�น่

จัะโหลด main program ไปก�อน่เพื่!ยง segment เด!ยว แล+วเม��อม!การเร!ยก section อ��น่ๆก1จัะโหลดเข+ามาใน่หน่�วยความจั�าภายหล�ง (Load on demand)

ด�งน่��น่ จัะประหย�ดกว�าโหลดที��งหมดใน่คร��งเด!ยว

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

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

การแบงเป7น่ตำอน่การแบงเป7น่ตำอน่//การแบงสวน่การแบงสวน่(Segmentation)

โครงร�างของการจั�ดการหน่�วยความจั�าที!�สน่�บสน่;น่ม;มมองของผ'+ใช้+ใน่ภาพื่ของหน่�วยความจั�า

จัะแบ�งข+อม'ลออกเป7น่ Segment ติามฟ(งก/ช้��น่การที�างาน่ แติ�ละ Segment ไม�จั�าเป7น่ติ+องม!ขน่าดเที�าก�น่ ด�งน่��น่ โปรแกรมค�อ หน่�วยรวมของเซี1กเมน่ที/ เซี1กเมน่ที/ ค�อหน่�วยทีางติรรกะช้น่�ดหน่��ง

อย�างเช้�น่ main program,

procedure,

function,

method,

object,

local variables, global variables,

common block,

stack,

symbol table, arrays

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

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

User’s View of a ProgramUser’s View of a Program

จัะโหลด main program ไปก�อน่เพื่!ยง segment เด!ยว แล+วเม��อม!การเร!ยก section อ��น่ๆก1จัะโหลดเข+ามาใน่หน่�วยความจั�าภายหล�ง (Load on demand)

ด�งน่��น่ จัะประหย�ดกว�าโหลดที��งหมดใน่คร��งเด!ยว

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

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

Logical View of Logical View of SegmentationSegmentation

1

3

2

4

1

4

2

3

user space physical memory space

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

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

สถาป0ตำยกรรมของการแบงสวน่สถาป0ตำยกรรมของการแบงสวน่Segmentation Architecture

ที!�อย'�เช้�งติรรกะประกอบด+วย 2 คอล�มน่/<segment-number, offset>,

Segment table – แปลงไปเป7น่ที!�อย'�เช้�งกายภาพื่ขน่าด 2 ม�ติ� ประกอบด+วย ส�วน่ฐาน่ base – ก�าหน่ดหมายเลขที!�อย'�เช้�งกายภาพื่เร��มติ+น่ที!�อย'�ใน่

หน่�วยความจั�า ส�วน่จั�าก�ด limit – ระบ;ความยาวของ segment.

Segment-table base register (STBR) ช้!�ไปย�งที!�อย'�ใน่หน่�วยความจั�าของติารางเซี1กเมน่ที/

Segment-table length register (STLR) แสดงจั�าน่วน่ของเซี1กเมน่ที/ที!�ถู'กใช้+งาน่โดยโปรแกรมsegment number s is legal if s < STLR.

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

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

Segmentation Architecture Segmentation Architecture (Cont.)(Cont.)

การย+ายที!�อย'� (Relocation) dynamic by segment table

การใช้+งาน่ร�วมก�น่ (Sharing) shared segments same segment number

การจั�ดสรร (Allocation) first fit/best fit external fragmentation

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

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

Segmentation Architecture Segmentation Architecture (Cont.)(Cont.)

เลขที!�อย'�ติรรกะประกอบด+วย 2 ส�วน่ ค�อ หมายเลขส�วน่ (s), และ (2) ออฟเซีติที!�ช้!�ไปย�งส�วน่น่��น่ (d) ใช้+หมายเลขส�วน่เพื่��อเป7น่ติ�วช้!�ไปย�งข+อม'ลใน่ติารางเลขส�วน่

ข+อม'ลแติ�ละช้�องใน่ติารางเลขส�วน่ม!ค�าฐาน่และค�าจั�าก�ด ระยะจัากขอบ d จัะม!ค�าระหว�าง 0 ถู�งค�าขอบเขติของส�วน่ ถู+า d มากกว�าขอบเขติติอน่แล+วรายงาน่ข+อม'ลผ�ดพื่ลาดไปย�งระบบปฏิ�บ�ติ�

การว�าม!การอ+างอ�งติ�าแหน่�งน่อกขอบเขติติอน่ ถู+าค�า d ไม�เก�น่ค�าขอบเขติติอน่ อ;ปกรณ์/จัะน่�าค�า d ไปบวกก�บค�าฐาน่เป7น่ค�า

ติ�าแหน่�งจัร�ง ด�งน่��น่ จัะเห1น่ได+ว�าติารางเลขส�วน่ก1ค�อ แถูวล�าด�บของค'�เรจั�สเติอร/ฐาน่และ

จั�าก�ด (base-limit) น่��น่เอง

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

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

Segmentation HardwareSegmentation Hardware

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

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

Implementation of Page Implementation of Page TableTable

Page table จัะถู'กเก1บไว+ใน่หน่�วยความจั�าหล�ก Page-table base register (PTBR) จัะช้!�ไปย�ง page table Page-table length register (PRLR) ใช้+แสดงขน่าดขน่าด

ขออง page table ว�ธี!การเช้�น่น่!� ติ+องการการอ+างอ�ง 2 ส�วน่ของหน่�วยความจั�าหล�ก

ได+แก� หมายเลขส�วน่ และ ออฟเซี1ติที!�ช้!�ไปย�งส�วน่น่��น่ ส�วน่แรกส�าหร�บ page table อ!กส�วน่หน่��งส�าหร�บข+อม'ล/ค�าส��ง ป(ญหาการอ+างอ�งหน่�วยความจั�า 2 ส�วน่ สามารถูแก+ได+โดยการใช้+

ฮาร/ดแวร/พื่�เศึษที!�รวดเร1วที�าหน่+าที!�เป7น่แคช้ เร!ยกว�า associative memory หร�อ translation look-aside buffers (TLBs)

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

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

Associative MemoryAssociative Memory

หน่�วยความจั�าเช้��อมโยงที�าหน่+าที!�ส�บค+น่ค'�ขน่าน่

Address translation (A´, A´´) ถู+า A´ ค�อเรจั�สเติอร/เช้��อมโยง จัะได+ frame# ออกไป ม�ฉะน่��น่ จัะได+ frame # จัากpage table ใน่หน่�วยความจั�า

Page # Frame #

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

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

Paging Hardware With TLBPaging Hardware With TLB

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

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

Effective Access TimeEffective 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 + –

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

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

การป8องก�น่หน่วยความจั�าการป8องก�น่หน่วยความจั�าMemory Protection

การปAองก�น่หน่�วยความจั�าที�าได+โดยใช้+บ�ติปAองก�น่แบบเช้��อมโยง (associating protection bit ) เข+าก�บแติ�ละเฟรม

Valid-invalid bit ก�าหน่ดไว+แติ�ละรายการใน่ page table “valid” แสดงว�าหน่+าที!�เช้��อมโยงพื่��น่ที!�ว�างเช้�งติรรกะของ

กระบวน่การน่��น่ และค�อหน่+าที!�ถู'กติ+องติ+อง “invalid” แสดงว�า หน่+าน่��น่ไม�ใช้�พื่��น่ที!�ว�างเช้�งติรรกะของ

กระบวน่การน่��น่

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

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

Valid (v) or Invalid (i) Bit In Valid (v) or Invalid (i) Bit In A Page TableA Page Table

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

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

โครงสร)างของตำารางหน่)าโครงสร)างของตำารางหน่)าPage Table Structure

การสล�บหน่+าแบบล�าด�บ (Hierarchical Paging) ติารางหน่+าที!�ถู'กแฮช้ (Hashed Page Tables) ติารางหน่+าย+อน่กล�บ (Inverted Page Tables)

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

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

ตำารางการสลั�บหน่)าแบบลั�าด�บ ตำารางการสลั�บหน่)าแบบลั�าด�บ Hierarchical Page Tables

แบ�งพื่��น่ที!�ว�างเช้�งติรรกะออกเป7น่หลายติารางหน่+า (multiple page tables)

เทีคน่�คอย�างง�ายค�อ ติารางหน่+า 2 ระด�บ (two-level page table)

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

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

ตำ�วอยางการสลั�บหน่)าแบบ ตำ�วอยางการสลั�บหน่)าแบบ 2 2 ระด�บระด�บTwo-Level Paging Example

ที!�อย'�เช้�งติรรกะ (ขน่าด 4K page size บน่เคร��อง 32 บ�ติ) จัะถู'กแบ�งออกเป7น่ a page number ประกอบด+วย 20 bits a page offset ประกอบด+วย 12 bits

เม��อ page table ม!การแบ�งหน่+า page number จัะถู'กแบ�งออกเป7น่ a 10-bit page number a 10-bit page offset

ด�งน่��น่ ที!�อย'�เช้�งติรรกะจั�งแสดงด�งน่!�

โดยที!� pi ค�อด�ช้น่!ที!�ช้!�ไปย�ง page table ภายน่อก, และ p2 ค�อ การแทีน่ที!�ภายใน่หน่+าน่��น่ของ page table ภายน่อก

page number page offset

pi p2 d

10 10 12

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

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

Two-Level Page-Table Scheme

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

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

โครงสร)างการแปลังเลัขท-+อย,โครงสร)างการแปลังเลัขท-+อย,Address-Translation Scheme

โครงสร+างการแปลงเลขที!�อย'�ส�าหร�บสถูาป(ติยกรรมการสล�บหน่+าแบบ two-level 32-bit

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

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

ตำารางหน่)าแฮชตำารางหน่)าแฮชHashed Page Tables

พื่��น่ที!�ว�างร�วมก�น่ที!�น่+อยกว�า 32 bits

หมายเลขหน่+าเสม�อน่ค�อหมายเลขที!�ถู'กแฮช้ไปเป7น่ page table ซี��ง page table น่!�บรรจั;ด+วยสายโซี�ของส�วน่ประกอบการแฮช้ไปย�งติ�าแหน่�งที!�อย'�เด!ยวก�น่

หมายเลขหน่+าเสม�อน่ จัะถู'กเปร!ยบเที!ยบก�บสายโซี�ที!�สอดคล+องก�น่ ถู+าพื่บว�าสอดคล+องก�น่ ก1สามารถูแปลงออกไปเป7น่เฟรมเช้�งกายภาพื่ได+

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

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

Hashed Page TableHashed Page Table

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

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

ตำารางหน่)าย)อน่กลั�บตำารางหน่)าย)อน่กลั�บInverted Page Table

หน่��งรายการติ�อหน่�วยความจั�าจัร�งหน่��งหน่+า รายการประกอบด+วยที!�อย'�เสม�อน่ของหน่+าที!�ถู'กจั�ด

เก1บไว+ใน่ติ�าแหน่�งของหน่�วยความจั�าจัร�ง พื่ร+อมก�บข+อม'ลเก!�ยวก�บกระบวน่การที!�ครอบครองหน่+าน่��น่

แติ�ละ page table จั�าเป7ติ�อการลดขน่าดหน่�วยความจั�า แติ�การเพื่��มเวลาจั�าเป7น่ส�าหร�บการค+น่หาติารางที!�ติ+องการเม��อหน่+าน่��น่ถู'กอ+างถู�ง

การใช้+ติารางแฮช้ ก1เพื่��อจั�าก�ดจั�าน่วน่คร��งของการค+น่หารายการติารางหน่+า หร�อให+สามารถูค+น่พื่บได+ใน่เวลาอ�น่ส��น่

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

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

Inverted Page Table Inverted Page Table ArchitectureArchitecture

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

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

Shared PagesShared 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

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

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

Shared Pages ExampleShared Pages Example

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

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

SegmentationSegmentation

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

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

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

User’s View of a ProgramUser’s View of a Program

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

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

Logical View of Logical View of SegmentationSegmentation

1

3

2

4

1

4

2

3

user space physical memory space

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

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

Example of SegmentationExample of Segmentation

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

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

Sharing of SegmentsSharing of Segments

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

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

Segmentation with Paging Segmentation with Paging – MULTICS– 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

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

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

MULTICS Address MULTICS Address Translation SchemeTranslation Scheme

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

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

Segmentation with Paging Segmentation with Paging – Intel 386– Intel 386

As shown in the following diagram, the Intel 386 uses segmentation with paging for memory management with a two-level paging scheme

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

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

Intel 30386 Address Intel 30386 Address TranslationTranslation

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

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

Linux on Intel 80x86Linux 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

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

End of Chapter 8End of Chapter 8

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

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