You are on page 1of 56

บทที่ 9

การจัดการหน่วยความจำา
Memory Management
เนื้ อหาบรรยาย
 นิ ยามขั้นพื้ นฐาน
 การสับเปลี่ยน (Swapping)
 การจัดสรรพื้ นที่ท่ีตด
ิ กัน (Contiguous Allocation)
 การแบ่งเป็ นหน้า (Paging)
 การแบ่งเป็ นตอน (Segmentation)

Memory Management 2
นิ ยามขั้นพื้ นฐาน
โดยปกติโปรแกรมและข้อมูลจะต้องถูกนำาเข้ามาไว้ใน
หน่วยความจำาหลักเสียก่อน คอมพิวเตอร์จึงจะ
สามารถประมวลผลโปรแกรมและข้อมูลนั้ นได้
 Input queue – คือสถานที่จัดเก็บโปรเซสต่าง ๆ บน
ดิสก์ท่ีรอให้ระบบปฏิบต
ั ิการจัดการนำาเข้ามาสู่หน่วย
ความจำาหลักเพื่อจะได้รบั การประมวลผล
 โปรแกรมของผ้ใู ช้จะต้องถูกดำาเนิ นการหลายขั้นตอน
ก่อนที่จะพร้อมสำาหรับการประมวลผล ซึ่งประกอบไป
ด้วย

Memory Management 3
การผูกคำาสัง่ และข้อมูลเข้าสู่หน่วย
ความจำา
 การผูกค่าคำาสัง่ และข้อมูลเข้ากับหน่วยความจำา หรือการทำา
addressing เกิดขึ้นได้ใน 3 ตำาแหน่ง)
 Compile time: ถ้าทราบค่าตำาแหน่งในหน่วยความจำาได้ก็จะ
สามารถสร้างโค้ดที่ประกอบด้วยตำาแหน่งที่แท้จริงของข้อมูลแต่ละ
ตัว แต่ถ้าตำาแหน่งของคำาสัง่ หรือข้อมูลเปลี่ยนแปลงไปก็จะต้อง
ทำาการคอมไพล์โปรแกรมนั้ นใหม่
 Load time: ในตอนคอมไพล์โปรแกรมจะมีการสร้าง relocatable
code ขึ้นมาก่อน เมื่อทำาการอ่านโปรแกรมเข้าส่ห ู น่วยความจำาจึงจะ
แปลงตำาแหน่งของคำาสัง่ และข้อมูล
 Execution time: การผูกค่าจะยังไม่เกิดขึ้นจนกว่าจะถึงเวลา
ประมวลผลจึงค่อยแปลง relocatable code ซึ่งประกอบด้วย
logical address ให้เป็ น physical address

Memory Management 4
กระบวนการทำางานของ user
program

Memory Management 5
ตำาแหน่งทางตรรกะและทางกายภาพ
 แนวความคิดของการกำาหนดพื้ นที่ทางตรรกะนั้ นคือ ต้องการที่จะแยก
พื้ นที่ทางตรรกะออกจากพื้ นที่ทางกายภาพของหน่วยความจำา
 Logical address – ตำาแหน่งทางตรรกะ เป็ นสิ่งที่ซีพียูสร้างขึ้นมา
เรียกอีกอย่างหนึ่ งว่า ตำาแหน่งเสมือน (Virtual address)
 Physical address – ตำาแหน่งทางกายภาพ คือตำาแหน่งทางกายภาพ
ที่มีอย่จ
ู ริงที่หน่วยบริหารหน่วยความจำา (MMU)
 ตำาแหน่งของ logical address และ physical address จะเหมือนกันใน
ช่วง compile-timeและ load time แต่จะแตกต่างกันในช่วงของ
execution-time
 การแปลงตำาแหน่งทางตรรกะให้เป็ นตำาแหน่งทางกายภาพจำาเป็ นต้องใช้ร ี
จิสเตอร์สองตัวเข้ามาช่วย

Memory Management 6
Memory-Management Unit (MMU)
อุปกรณ์ฮาร์ดแวร์ท่ีทำาการแปลงตำาแหน่งหน่วยความจำา
เสมือนไปเป็ นตำาแหน่งของหน่วยความจำาตรรกะ
 หน้าที่ของ MMU คือเพิ่มค่าใน relocation register
เพื่อที่จะนำาไปรวมกับตำาแหน่งของหน่วยความจำาตรรกะ
และทำาให้สามารถหาค่าตำาแหน่งหน่วยความจำากายภาพ
ได้
 โดยปกติ user program จะทราบเพียงแต่ค่าที่เป็ น
ตรรกะ จะไม่ทราบค่าทางกายภาพเลย ซึ่งโดยปกติก็จะ
เป็ นหน้าที่ของระบบปฏิบัติการทำาหน้าที่ในการแปลงค่า
ให้
Memory Management 7
การทำา Dynamic relocation

Memory Management 8
การทำา Dynamic Loading
 ไม่นำาโดยปกติโปรแกรมย่อยจะไม่ถก ู โหลดลงสู่หน่วย
ความจำา จนกว่าจะถูกเรียก
 ตรวจดูว่าโปรแกรมย่อยนั้ นอยู่ในหน่วยความจำาแล้วหรือ
ยังถ้ายังก็จะนำาโปรแกรมย่อยนั้ นลงสู่หน่วยความจำาหลัก
 โปรแกรมย่อยที่ไม่ได้ใช้กจ ็ ะไม่ถกู นำามาลงสู่หน่วยความ
จำาหลักให้เสียเนื้ อที่
 วิธีน้ ี ไม่จำาเป็ นต้องพึ่งคำาสัง ่ พิเศษใด ๆ จากระบบปฏิบัติ
การ แต่ผใู้ ช้ตอ ้ งเป็ นผ้จ
ู ัดการบริหารโปรแกรม

Memory Management 9
การทำา Dynamic Linking
 การเชื่อมโยงเป็ นการเชื่อมส่วนต่าง ๆ ของโปรแกรมเข้า
ด้วยกันเพื่อให้กลายเป็ นโปรแกรมที่สมบูรณ์พร้อม
สำาหรับการประมวลผล
 โค้ดส่วนเล็กๆเรียกว่า สตรับ (stub) เป็ นตัวแทนของ
โปรแกรมอรรถประโยชน์ท่ีถูกอ้างถึงซึ่งจะต้องถูกนำามา
เชื่อมโยงเข้ากับโปรแกรม
 สตรับจะถูกแทนที่ด้วยตำาแหน่งที่อยู่ของ routine นั้ น ๆ
แล้วจึงถูกประมวลผล
 ระบบปฏิบัติการจะต้องตรวจสอบดูว่าโค้ดส่วนเล็ก ๆ
เหล่านี้ ถูกนำามาไว้ในส่วนของหน่วยความจำาของโปรเซ
สนั้ น ๆ แล้วหรือไม่
Memory Management 10
การทำา Overlays
 หลักการคือจะจัดเก็บโค้ดและข้อมูลที่จำาเป็ นในการ
ประมวลผลเท่านั้ นไว้ในหน่วยความจำา
 นำาวิธก
ี ารนี้ มาใช้เมื่อโปรแกรมมีขอ้ มูลขนาดใหญ่กว่า
หน่วยความจำา
 สร้างใช้งานโดยผ้ใู ช้เอง ไม่ต้องการการสนั บสนุ นพิเศษ
จากระบบปฏิบต ั ก
ิ าร ซึ่งปกติการออกแบบการเขียน
โปรแกรมแบบ overlay จะมีโครงสร้างที่ซบ ั ซ้อน

Memory Management 11
ตัวอย่างการทำา Overlays

Memory Management 12
การทำา Swapping
 เป็ นเทคนิ คการบริหารหน่วยความจำาโดยสามารถที่จะ
ย้ายโปรเซสออกจากหน่วยความจำาเป็ นการชัว่ คราว
แล้วเก็บไว้ใน backing store จากนั้ นสามารถนำากลับ
เข้ามาไว้ในหน่วยความจำาและประมวลผลต่อไปได้
 Backing store เป็ นอุปกรณ์บันทึกข้อมูลที่มีความเร็ว
สูงและมีขนาดใหญ่พอที่จะเก็บสำาเนาของไฟล์ image
ทั้งหมดในหน่วยความจำา
 Roll out, roll in –เป็ นวิธีการที่นำามาใช้ร่วมกับการจัด
ตารางการทำางานของโปรเซส คือการโยกย้ายโปรเซสที่
มีความสำาคัญในระดับตำ่า (lower-priority) ออกไปเก็บ
ไว้ใน backing store ก่อน เรียกว่า roll out แล้วนำา
โปรเซสที่มค ี วามสำาคัญสูงกว่าโหลดเข้ามาไว้ในหน่วย
ความจำาและประมวลผลก่อนได้ เรียกว่า roll in
Memory Management 13
การทำา Swapping (ต่อ)
 เวลาที่เสียไปส่วนใหญ่ในการทำา swap คือเวลาที่ใช้ใน
การถ่ายเทโปรแกรมและข้อมูลจากในหน่วยความ
จำาหลักลงไปใน backing store
 เป็ นเทคโนโลยีท่ีมีการใช้งานในปั จจุบัน เช่น ในระบบ
ปฏิบัตกิ าร Unix, Linux, Windows

Memory Management 14
ตัวอย่างการทำา Swapping

Memory Management 15
การจัดการหน่วยความจำาแบบ
Contiguous Allocation
 พื้ นที่ในหน่วยความจำาหลัก มักถูกแบ่งออกเป็ น 2 ส่วน
คือ
 พื้ นที่สำาหรับจัดเก็บโปรแกรมระบบปฏิบต ั ก
ิ าร เป็ น
ส่วนที่มักจะอยู่ในส่วนที่เป็ น low memory
 พื้ นที่สำาหรับจัดเก็บโปรแกรมของผู้ใช้เป็ นส่วนที่เก็บ
ไว้ใน high memory
 การจัดสรรพื้ นที่บนหน่วยความจำาแบ่งออกเป็ น 2 แบบ
 หน่วยความจำามีโครงสร้างเป็ นส่วนเดียว
 หน่วยความจำามีโครงสร้างเป็ นหลายส่วน

Memory Management 16
การจัดการหน่วยความจำาแบบ
Contiguous Allocation (ต่อ)
 หน่วยความจำามีโครงสร้างเป็ นส่วนเดียว (Single-partition
allocation)
 คือในขณะใดขณะหนึ่ งพื้ นที่ในส่วนที่เป็ น user program จะมี
โปรเซสเพียงแค่โปรเซสเดียว
 รีจิสเตอร์ชนิ ด Relocation-register ถูกใช้ในการรักษาความ
ปลอดภัยให้กับโปรเซสของผู้ใช้ และจากการเปลี่ยนแปลงที่
เกิดจากตัวระบบปฏิบัติการเอง
 รีจิสเตอร์ Relocation register ประกอบด้วยค่าเริม ่ ต้นของ
ตำาแหน่งทางกายภาพของโปรแกรมผู้ใช้ส่วนรีจิสเตอร์ limit
register ใช้บอกขนาดของตำาแหน่งหน่วยความจำาตรรกะ

Memory Management 17
ตัวอย่างการทำางานของ Relocation
and Limit Registers

Memory Management 18
การจัดการหน่วยความจำาแบบ
Contiguous Allocation (ต่อ)
 หน่วยความจำามีโครงสร้างเป็ นหลายส่วน (Multiple-partition allocation)
 คือในพื้ นที่บนหน่วยความจำาส่วนที่เป็ น user program สามารถมีโปรเซสที่เก็บไว้หลายโปรเซสได้
 หลุม (Hole) – คือ พื้ นที่ในหน่วยความจำากายภาพส่วนหนึ่ งที่ไม่มก ี ารเก็บโปรเซสใดไว้เลยใน
พื้ นที่สว่ นนั้ น ปกติจะมีกระจัดกระจายอย่ท ู ัว่ ไปในหน่วยความจำาหลัก
 เมื่อทำาการอ่านโปรเซสเข้ามากในหน่วยความจำา ระบบจะค้นหาหลุมที่มข ี นาดใหญ่พอที่จะใส่
โปรเซสนั้ นไว้ได้แล้วจึงนำาโปรเซสนั้ นเข้ามาในหน่วยความจำา
 ระบบปฏิบัตก ิ ารจะต้องบันทึกข้อมูลเกี่ยวกับพื้ นที่สว่ นที่ได้รบ ั มอบหมายให้แก่โปรเซสต่าง ๆ
ไปแล้วและพื้ นที่สว่ นที่ยงั ว่างอยู่
 พื้ นที่ท่ีมีโปรเซสถูกโหลดมาเก็บไว้ (allocated partitions)
 พื้ นที่ว่าง หรือ free partitions หรือ hole

Memory Management 19
ตัวอย่างการจัดเก็บโปรเซสแบบ
มีโครงสร้างเป็ นหลายส่วน

OS OS OS OS

process 5 process 5 process 5 process 5

process 9 process 9

process 8 process 10

process 2 process 2 process 2 process 2

Memory Management 20
วิธใี นการเลือกหลุมเพื่อเก็บโปรเซส
การเลือกหลุมเพื่อเก็บโปรเซสใหม่ท่ีเข้ามาถึงอยู่ 3 วิธีดว
้ ยกัน คือ
 First-fit: ทำาการค้นหาและอ่านโปรเซสเข้าไปในหลุมแรกที่พบที่มีขนาดใหญ่พอ
 Best-fit: ให้เลือกหลุมทีเล็กที่สด
ุ แต่มีขนาดใหญ่พอที่จะนำาโปรแกรมนั้ น ๆ
เข้าไปได้ ผลที่เกิดขึ้นคือจะเกิดหลุมที่มีขนาดเล็กมากเป็ นจำานวนมากซึ่งมักจะ
เป็ นหลุมที่เล็กเกินกว่าจะนำาไปใช้ประโยชน์ได้
 Worst-fit: ให้เลือกหลุมที่ใหญ่ท่ีสดุ ก่อนเสมอซึ่งจะทำาให้เหลือหลุมที่ยงั คงมี
ขนาดใหญ่ท่ีอาจจะสามารถนำาไปใช้งานให้เกิดประโยชน์

Memory Management 21
วิธใี นการเลือกหลุมเพื่อเก็บโปรเซส
(ต่อ)
• แบบ First-fit และ best-fit ทำาให้เกิดการใช้ประโยชน์
หน่วยความจำาดีกว่าแบบ worst-fit เมื่อพิจารณาถึงการ
ใช้งานพื้ นที่หน่วยความจำา เป็ นประเด็นหลัก

Memory Management 22
ความหมายของ Fragmentation
 External Fragmentation – แฟรกเมนเตชันแบบ
ภายนอก คือพื้ นที่ท่ีเป็ นหลุมทั้งหมด ซึ่งมักจะกระจาย
อยู่ในหน่วยความจำาและไม่ต่อเนื่ องกัน
 Internal Fragmentation – แฟรกเมนเตชันแบบ
ภายใน เกิดขึ้นเนื่ องจากได้อ่านโปรเซสเข้ามาไว้ในพื้ นที่
ที่ขนาดใหญ่กว่าที่ตอ ้ งการ ทำาให้กลายเป็ นพื้ นที่เหลือใช้
อยู่อันใหม่ในพื้ นที่ท่ีกำาหนด

Memory Management 23
ความหมายของ Fragmentation
(ต่อ)
 วิธีการแก้ปัญหาแฟรกเมนเตชันแบบภายนอก โดยการยุบรวม
(compaction)
 ให้จัดการวางตำาแหน่งของโปรเซสต่าง ๆ ในหน่วยความ
จำาหลักเสียใหม่โดยนำามาเรียงต่อกันไม่ให้มีช่องว่าง ทำาให้
เกิดช่องว่างใหม่ท่ีมีขนาดใหญ่ข้ ึนเพื่อที่จะสามารถเก็บโปร
เซสอื่นเข้าไปได้
 วิธีน้ ี จะสามารถใช้งานได้เมื่อมีการกำาหนดตำาแหน่งหน่วย
ความจำาแบบสามารถย้ายตำาแหน่งของโปรเซสไปไว้ใน
ตำาแหน่งใด ๆ ในหน่วยความจำาได้
 แต่อาจจะเกิดปั ญหาในเรื่องของหน่วยรับ -ส่งข้อมูล
เนื่ องจากมีการเคลื่อนย้ายตำาแหน่งของโปรเซส
Memory Management 24
การแบ่งเป็ นหน้า (Paging)
 พื้ นที่หน่วยความจำาตรรกะของโปรเซสหนึ่ งอาจไม่ได้รบ ั
การจัดสรรให้เป็ นพื้ นที่ท่ีติดเป็ นผืนเดียวกัน จะถูกจัด
เก็บแบบกระจายอยู่ในหน่วยความจำา
 ทำาการแบ่งหน่วยความจำากายภาพออกเป็ นส่วนเล็ก ๆ ที่
มีขนาดเท่ากันเรียกว่า เฟรม (frames)โดยทัว่ ไปจะมี
ขนาดระหว่าง 512 ไบท์ ถึง 8 kbytes
 (ทำาการแบ่งหน่วยความจำาตรรกะออกเป็ นส่วนเล็ก ๆ ที่
มีขนาดเท่ากันและมีขนาดเท่ากับเฟรม เรียกว่า เพจ
(pages)
 ระบบปฏิบัตก ิ ารจะต้องจดบันทึกเฟรมที่ว่างอยู่ท้ ังหมด
เพื่อเตรียมพร้อมที่จะโหลดโปรเซสเข้ามา
Memory Management 25
การแบ่งเป็ นหน้า (Paging) (ต่อ)
 ถ้าต้องการนำาโปรแกรมทีมีขนาด n เพจเข้ามาไว้ใน
หน่วยความจำา จะต้องใช้หน่วยความจำากายภาพจำานวน
n เฟรมเช่นกัน
 จัดทำาตารางเพจ(page table)เพื่อแปลงหมายเลขเพจให้
กลายเป็ นหมายเลขเฟรม
 ซึ่งวิธีน้ ี สามารถแก้ไขปั ญหาแฟรกเมนเตชันภายนอกได้
แต่ยังคงมีปัญหาแฟรกเมนเตชันภายในอยู่

Memory Management 26
การแปลงตำาแหน่งที่อยู่
 ตำาแหน่งที่อยู่ท่ีถก
ู อ้างอิงโดยซีพียูน้ ั นเป็ นตำาแหน่งที่อยู่
ทางตรรกะ ซึ่งแบ่งออกเป็ น
 Page number (p) – หมายเลขเพจ ถูกนำามาใช้เป็ น
ดรรชนี สำาหรับตารางเพจซึ่งจะมีตำาแหน่งเฟรมเก็บ
อยู่
 Page offset (d) –ค่าอ๊อฟเซท จะถูกนำามารวมกับ
ตำาแหน่งเฟรมที่ได้จากตารางเพจเพื่อคำานวณหา
ตำาแหน่งกายภาพที่แท้จริงของตำาแหน่งทางตรรกะที่
อ้างอิงนั้ น

Memory Management 27
การแปลงตำาแหน่งที่อยู่ (ต่อ)

Memory Management 28
ตัวอย่าง Paging

Memory Management 29
ตัวอย่าง Paging (ต่อ)

Memory Management 30
การจัดการเฟรมที่ว่าง (Free
Frames)

Before allocation After allocation
Memory Management 31
การจัดการกับ Page Table
 ตารางเพจของแต่ละโปรเซสจะถูกจัดเก็บไว้ในหน่วยความจำาเสมอ
 ตารางเพจต้องใช้รจ ี ิสเตอร์ Page-table base register เพื่อชี้ไปยังตาราง
เพจ
 ตารางเพจต้องใช้รจ ี ิสเตอร์ Page-table length register เพื่อบอกขนาด
ของตารางเพจ
 ซึ่งวิธีน้ ี ทำาให้ในแต่ละครั้งที่ทำาการอ่านค่า จำาเป็ นต้องเข้าถึงหน่วยความ
จำาถึงสองครั้ง ครั้งแรกเพื่ออ่านค่าในตารางเพจ ครั้งที่สองเพื่อไปอ่าน
ข้อมูลยังตำาแหน่งที่ต้องการออกมา
 การเข้าถึงหน่วยความจำาถึงสองครั้งถือเป็ นปั ญหาที่ต้องแก้ไข ดังนั้ นจึง
มีการนำาแคชเข้ามาช่วย โดยการมี associative memory หรือ
translation look-aside buffers (TLBs) ทำาหน้าที่เป็ นบัฟเฟอร์ให้

Memory Management 32
Paging Hardware ด้วย TLB

Memory Management 33
การป้ องกันหน่วยความจำา
 การปกป้ องหน่วยความจำา ทำาได้ด้วยการเพิ่มบิตพิเศษ
เข้าไปในทุก ๆ เฟรม เก็บไว้ในตารางเพจ
 คือ Valid-invalid bit จะมีความหมายดังนี้
 “valid” แสดงว่าข้อมูลนั้ นถูกอ่านเข้ามาในหน่วย
ความจำากายภาพแล้ว ทำาให้สามารถใช้งานได้ทันที
 “invalid” แสดงว่าข้อมูลในเพจนั้ นไม่มีอยู่ในหน่วย
ความจำากายภาพ จึงไม่สามารถใช้งานได้

Memory Management 34
Valid (v) or Invalid (i) Bit ใน
ตารางเพจ

Memory Management 35
โครงสร้างตารางเพจ
 แบบ Hierarchical Paging
 แบบ Hashed Page Tables
 แบบ Inverted Page Tables

Memory Management 36
แบบ Hierarchical Paging
 ทำาการแบ่งพื้ นทีหน่วยความจำาทางตรรกะออกเป็ น
ตารางเพจหลายระดับเพื่อช่วยในการค้นหาข้อมูลที่
ต้องการได้ง่ายขึ้น
 วิธท
ี ่ีนิยมใช้กน
ั คือ แบ่งตารางเพจออกเป็ นสองระดับ

Memory Management 37
ตัวอย่างตารางเพจแบบสองระดับ
 กำาหนดให้ตำาแหน่งทางตรรกะขนาด 32 บิต แต่ละเพจมี
ขนด 4 K ถูกแบ่งออกเป็ น
 หมายเลขเพจประกอบด้วย 20 บิต
 ค่า page offset ประกอบด้วย 12 บิต
 ซึ่งหมายเลขเพจทั้ง 20 บิต จะถูกแบ่งแยกย่อยออกเป็ น
 10 บิตเป็ นหมายเลขเพจของตารางเพจชั้นนอก
 อีก 10 บิตเป็ นหมายเลขเพจของตารางเพจชั้นใน
จะได้
 page ตามในรูpage
number ปข้าoffset
งล่างนี้
pi p2 d

10 10 12

Memory Management 38
ตัวอย่างตารางเพจแบบสอง
ระดับ(ต่อ)

Memory Management 39
เทคนิ คการแปลงตำาแหน่ง
 ตัวอย่างการแปลงตำาแหน่งแบบมีตารางเพจสองระดับ
และมีตำาแหน่งขนาด 32 บิต

Memory Management 40
แบบ Hashed Page Tables
 นิ ยมใช้ในระบบที่มีขนาดของตำาแหน่ง > 32 บิต
 ค่าหมายเลขเพจแบบตรรกะจะถูกแฮชเข้าไปเก็บไว้ใน
ตารางเพจ ซึ่งแต่ละตำาแหน่งจะประกอบด้วยค่าที่เมื่อ
ผ่านฟั งก์ชันแฮชแล้ว ได้คา่ เท่ากัน
 จากนั้ นนำาหมายเลขเพจแบบตรรกะมาเปรียบเทียบใน
แต่ละสายของตำาแหน่งนั้ น ถ้าพบค่าที่อยู่ถด ั ไปก็คอ
ื ค่า
หมายเลขเฟรมที่เก็บเอาไว้

Memory Management 41
แบบ Hashed Page Tables (ต่อ)

Memory Management 42
แบบ Inverted Page Table
 ข้อมูลในตารางเพจประกอบด้วยข้อมูลเพียงตัวเดียว
 ข้อมูลที่ใส่เข้าไปประกอบไปด้วย ข้อมูลตำาแหน่งเสมือน
(Virtual Address) ของแต่ละเพจ และข้อมูลที่
เกี่ยวข้องกับโปรเซสที่เป็ นเจ้าของเพจนั้ นๆอยู่
 เทคนิ คนี้ เป็ นการลดพื้ นที่ท่ีใช้ในการเก็บข้อมูลในตาราง
เพจ แต่เป็ นการเพิ่มเวลาที่ใช้ในการค้นหาข้อมูลใน
ตารางเพจ
 สามารถใช้เทคนิ คตารางแฮช (Hash Table) มาช่วยใน
การจำากัดการค้นหา

Memory Management 43
เทคนิ ค Inverted Page Table

Memory Management 44
การใช้เพจร่วมกันของโปรเซส
(Shared Pages)
 การใช้โค็ชร่วมกัน (Shared code)
 โดยการให้มีหนึ่ งสำาเนาเป็ นแบบ read-only และแชร์ให้กับโปรเซ
สอื่นๆ เช่น text editors, compilers, window systems เป็ นต้น
 โค็ดในส่วนที่แชร์ร่วมกันจะต้องปรากฏอยู่ในพื้ นที่ในตำาแหน่งเสมือน
ที่เดียวกัน สำาหรับในทุกๆโปรฌซส
 โค็ดเฉพาะและข้อมูล (Private code and data)
 แต่ละโปรเซสจะต้องเก็บส่วนที่เป็ นโค็ดเฉพาะและส่วนของขอ้มูล
แยกเอาไว้ตา่ งหาก
 เพจของขอ้มูลในส่วนที่เป็ นโค๊ดเฉพาะและตัวข้อมูล สามารถถูก
เก็บไว้ท่ีใดก็ได้ในตำาแหน่งหน่วยความจำาเสมือน

Memory Management 45
ตัวอย่างการใช้เพจร่วมกันของ
โปรเซส

Memory Management 46
การจัดการหน่วยความจำาแบบ
Segmentation
 การจัดการหน่วยความจำาแบบ Segmentation เป็ นการ
จัดการหน่วยความจำาแบบอาศัยมุมมองของผู้ใช้เป็ น
หลัก โดยเป็ นการแบ่งแต่ละส่วนออกเป็ นโมดูลตาม
โปรแกรมที่ผู้ใช้เขียนขึ้นมา
 โดยทัว่ ไปโปรแกรมคอมพิวเตอร์กค ็ ือ กล่ม
ุ ของ
segment หลายๆ segment มารวมกัน
 เป็ นการแบ่งหน่วยความจำาออกเป็ นส่วน ๆ ตามขนาด
ของแต่ละโมดูลของโปรแกรมผ้ใู ช้

Memory Management 47
การจัดการหน่วยความจำาแบบ
Segmentation (ต่อ)
 แต่ละโมดูลอาจมีขนาดไม่เท่ากัน เรียกว่า เซกเมนต์
โปรแกรมจึงประกอบด้วยหลายเซกเมนต์ เช่น
main program,
procedure,
function,
method,
object,
local variables, global variables,
common block,

Memory Management 48
โปรแกรมในมุมมองของผู้ใช้

Memory Management 49
Segmentation ในมุมมองเสมือน
1

4
1

2

3 2
4

3

user space physical memory space
Memory Management 50
โครงสร้างของ Segmentation
 ตำาแหน่งที่อยู่แบบเสมือน ประกอบด้วยข้อมูล 2 ส่วน คือ
segment-number และ offset
<segment-number, offset>,
 Segment table –ตารางเซกเมนต์ของตนเองประกอบด้วย
ตัวเลข 2 ตัวคือ
 base – ตำาแหน่งฐาน คือตำาแหน่งเริม ่ ต้นของตำาแหน่ง
กายภาพของเซกเมนต์น้ ั น ๆ ที่อยู่ในหน่วยความจำา
 limit –ขนาด เป็ นตัวบอกขนาดของแต่ละเซกเมนต์
 Segment-table base register (STBR) ใช้เป็ นตัวชี้ตำาแหน่งใน
การเก็บตำาแหน่งของตารางเซกเมนต์ในหน่วยความจำา
 Segment-table length register (STLR) เป็ นตัวเก็บขนาดของ
เซกเมนต์ของโปรเซสที่กำาลังประมวลผลอยู่ในขณะนั้ น

Memory Management 51
โครงสร้างของ Segmentation (ต่อ)
 การเปลี่ยนตำาแหน่ง
 เป็ นลักษณะแบบ dynamic
 อาศัย segment table เป็ นตัวบอกตำาแหน่ง

 การใช้ segment ร่วมกัน
 เป็ นการแชร์ segment ร่วมกันระหว่างโปรเซส
 โดยตำาแหน่งที่แชร์จะมีค่า segment number เหมือน
กัน

Memory Management 52
โครงสร้างของ Segmentation (ต่อ)
 การจัดสรรพื้ นที่บนหน่วยความจำา
 อัลกอริธึมที่ใช้เป็ นแบบ first fit/best fit
 ยังคงมีปัญหาของ external fragmentation อยู่
 การรักษาความปลอดภัยบนหน่วยความจำา
 โดยการเพิ่มค่าลงไปใน segment table
 เรียกว่า validation bit
 เมื่อมีคา
่ เป็ น 0 ⇒ หมายถึง illegal segment

Memory Management 53
ลักษณะของ Segmentation

Memory Management 54
ตัวอย่างของ Segmentation

Memory Management 55
ตัวอย่างการใช้ Segment ร่วม
กัน

Memory Management 56