Operating System 2

Download Report

Transcript Operating System 2

Operating System 2
By Juthawut Chantharamalee
Suan Dusit Rajabhat University (Computer Science)
บทที่ 2 การจัดการหน่วยความจา
(Memory Management)
บทที่ 2
Suan Dusit Rajabhat University (Computer Science)
การจัดการหน่วยความจา (Memory Management)
 หน่วยความจาเป็ นส่วนทีส่ าคัญทีส่ ุดในระบบคอมพิวเตอร์ ถือเป็ นศูนย์กลางให้การ
ดาเนินการด้านต่างๆ ในระบบคอมพิวเตอร์เป็ นไปอย่างราบรืน่ และมีประสิทธิภาพสูงสุด
โดยภายในหน่วยความจาจะมีการทางานหลายส่วน เช่น การทางานของโปรแกรมจานวน
มาก ซึง่ ต้องมีการแบ่งพืน้ ทีก่ ารใช้งานและวิธกี ารจัดการด้านต่างๆ ซึง่ หน่วยความจาที่
ใช้ในการจัดเก็บแบ่งออกเป็ น 2 ส่วน ได้แก่
1.หน่วยความจาหลัก (Main Memory)
2.
หน่วยความจาเสมือน (Virtual Memory)
โดยแต่ละวิธใี นการจัดเก็บข้อมูลทัง้ สองส่วนมีขอ้ ดีและข้อเสียต่างกันขึน้ อยู่กบั
ซอฟต์แวร์และฮาร์ดแวร์ทเี่ ลือกใช้ว่าสอดคล้องและสนับสนุนการทางานและวิธกี ารที่
จัดเก็บในหน่วยความจาทีเ่ ลือกใช้มากน้อยเพียงใด ดังรูปที่ 2.1
3
Suan Dusit Rajabhat University (Computer Science)
หน่วยความจาหลัก (Main Memory)
 ประกอบไปด้วยอารเรย์ขนาดใหญ่ (large array) ซึง่ ภายในประกอบไปเวิร์ด
(words) และไบต์ (bytes) ซึง่ แต่ละทีจ่ ะมีเลขตาแหน่ง (address) เป็ นของ
ตัวเอง นอกจากนีห้ น่วยความจาหลักยังทาหน้าทีเ่ ก็บชนิดกระบวนการในการประมวลผล
คาสัง่ (a typical instruction-execution cycle) เพือ่ ให้หน่วย
ประมวลผลกลาง (Central Processing Unit: CPU)
นาไปใช้ในการประมวลแล้วจึงส่งผลลัพธ์ของคาสัง่ นัน้ ๆ กลับมาจัดเก็บกลับไว้ใน
หน่วยความจาหลักอีกที
4
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.1.แสดงกระบวนการทางานของหน่วยความจาหลัก (Main Memory)
5
Suan Dusit Rajabhat University (Computer Science)
หน่วยความจาเสมือน (Virtual Memory)
 เป็ นเทคนิคทีอ่ นุญาตให้โปรเซส (Process) สามารถประมวลผลได้นอก
หน่วยความจาหลักโดยไม่ต้องคานึงถึงขนาดพืน้ ทีใ่ ช้ในการประมวลผลว่าเพียงพอกับ
ขนาดของโปรแกรมหรือไม่ นอกจากนีย้ งั ง่ายต่อการแชร์ไฟล์ (Share files)
พืน้ ทีว่ ่าง (Address Space) และเพิม่ ประสิทธิภาพให้โปรเซสทางานได้เร็วขึน้
เพราะไม่ต้องคอยตรวจสอบขนาดของหน่วยความจาทางกายภาพ
(Physical Memory)
6
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.2 แสดงความสัมพันธ์ระหว่างหน่วยความเสมือน (Virtual Memory)
และหน่วยความจาทางกายภาพ (Physical Memory)
7
Suan Dusit Rajabhat University (Computer Science)
การเชื่อมโยงตาแหน่ง (Address Binding)
 โดยทัว่ ไปโปรเซสทีจ่ ะถูกนาไปประมวลผลจะขึน้ อยู่กบั การจัดการหน่วยความจาทีเ่ ลือกใช้
โปรเซสอาจจะถูกเคลือ่ นย้ายกลับไปกลับมาระหว่างดิสก์และหน่วยความจาก่อนทีม่ นั จะถูก
ประมวลผล โดยระบบปฏิบตั กิ ารจะมีการเก็บโปรเซสทีร่ อประมวลผลตามลาดับคิว
(input queue) ของโปรเซสทีจ่ ะนาเข้ามาประมวลผลในหน่วยความจาร่วมทัง้ ยัง
เชือ่ มโยงกับค่าเริม่ ต้นของตาแหน่ง ระบบคอมพิวเตอร์มกั เริม่ ต้นค่าตาแหน่งเชือ่ มโยงที่
ค่า 00000 อีกยังแบ่งค่าทีเ่ ชือ่ มโยงตาแหน่ง ได้เป็ น ค่าจริง (Absolute
address) ของโปรเซสทีอ่ ยู่ในหน่วยความจา และค่าตาแหน่งทีส่ มั พันธ์
(Relative address) หรือชุดคาสัง่ ต่างๆ ทีไ่ ด้รบั หลังจากการคอมไฟล์
8
Suan Dusit Rajabhat University (Computer Science)
การจาแนกการเชือ่ มโยงของคาสัง่ และตาแหน่งของข้อมูลในหน่วยความจา
สามารถแบ่งแต่ละขัน้ ตอนตามช่วงเวลาได้ดงั นี้
 1.ช่วงเวลาคอมไฟล์ (Compile time) คือ ช่วงเวลาทีค่ าสัง่ หรือข้อมูลถูกแปล
คาสัง่ โดยการคอมไฟล์โดยตัวคอมไฟเลอร์ (Compiler) โดยตัวคอมไฟเลอร์จะ
ค้นหาตาแหน่งจริง (Absolute Code) ในหน่วยความจาเมือ่ พบแล้วจะสร้างโค้ด
ทาให้ระบบปฏิบตั กิ ารสามารถประมวลผลคาสัง่ หรือข้อมูลนัน้ ได้ทนั ที แต่หากตาแหน่ง
จริงถูกเปลีย่ นแปลง ตัวคอมไฟเลอร์กจ็ ะทาการรีคอมไฟล์ (Recompile) โค้ด
คาสัง่ หรือข้อมูลนัน้ ใหม่ทุกครัง้
9
Suan Dusit Rajabhat University (Computer Science)
การจาแนกการเชือ่ มโยงของคาสัง่ และตาแหน่งของข้อมูลในหน่วยความจา
สามารถแบ่งแต่ละขัน้ ตอนตามช่วงเวลาได้ดงั นี้
 2.ช่วงเวลาโหลด (Load time) ช่วงเวลาทีค่ าสัง่ หรือข้อมูลถูกโหลดเข้าสู่
หน่วยความจาโดยลาดับแรกตัวคอมไฟเลอร์จะสร้างโค้ดทีส่ ามารถประมวลผลได้ทนั ที
(Relocation code)ขึน้ มาก่อน หลังจากคาสัง่ หรือข้อมูลถูกโหลดเข้าสู่
หน่วยความจาแล้วตัวคอมไฟเลอร์จะทาการแปลตาแหน่งทีโ่ หลดเข้ามาให้เป็ นตาแหน่งจริง
(Absolute Code) เพือ่ ให้ระบบปฏิบตั กิ ารสามารถประมวลผลคาสัง่ หรือข้อมูล
นัน้ ได้โดยไม่ต้องเสียเวลาในการคอมไฟล์ใหม่ทุกครัง้ แต่จะเสียเวลาเฉพาะตอนโหลดคาสัง่
หรือข้อมูลนัน้ เข้ามาในหน่วยความจา
10
Suan Dusit Rajabhat University (Computer Science)
การจาแนกการเชือ่ มโยงของคาสัง่ และตาแหน่งของข้อมูลในหน่วยความจา
สามารถแบ่งแต่ละขัน้ ตอนตามช่วงเวลาได้ดงั นี้
 3.ช่วงเวลาประมวลผล (Execution time) ช่วงเวลาทีค่ าสัง่ หรือข้อมูลถูก
ประมวลผล โดยตัวคอมไฟเลอร์จะทาการเชือ่ มโยงตาแหน่งและแปลโค้ดคาสัง่ หรือข้อมูล
ของตาแหน่งนัน้ ๆ เข้าไปเก็บไว้ในหน่วยความจาขณะทีร่ ะบบปฏิบตั กิ ารกาลังประมวลผล
(Run time) ทาให้ระบบปฏิบตั กิ ารต้องเสียเวลาในการแปลตาแหน่งคาสัง่ หรือข้อมูล
ต่างๆ ก่อนถูกนามาเข้าสู่กระบวนการประมวลผลทุกครัง้
11
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.2 แสดงช่วงเวลาเชือ่ มโยงตาแหน่ง (Address Binding)
12
Suan Dusit Rajabhat University (Computer Science)
การเชื่อมโยงระหว่างพื้นที่ทางกายภาพกับพื้นที่ทางตรรกะ
(Logical- Versus Physical-Address Space)
 จะมีการอ้างอิงถึงตาแหน่งทีเ่ กีย่ วข้องอยู่ 2 ประเภทคือ
1.ตาแหน่งพืน้ ทีท่ างตรรกะ (Logical Address Space) หรือเรียกอีกชือ่
หนึง่ ว่า ตาแหน่งเสมือน (Virtual Address) ซึง่ ถูกสร้างขึน้ (Generate)
โดยหน่วยประมวลผลกลาง (CPU) เพือ่ ใช้ในการแลกเปลีย่ นข้อมูล โดยกลุ่มของ
ตาแหน่งพืน้ ทีท่ างตรรกะ (Logical Address Space) ทัง้ หมดถูกสร้างโดย
โปรแกรม
2.ตาแหน่งพืน้ ทีท่ างกายภาพ (Physical Address Space) คือตาแหน่งที่
อยู่ในหน่วยความจาหลัก (Memory Unit) และทางานโดยตอบสนอง
(Corresponding) กับตาแหน่งทางตรระกะ (Logical Address) เสมอ
13
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.3 ตัวอย่างของการทางานของหน่วยจัดการหน่วยความจา
(Memory Management Unit : MMU)
14
Suan Dusit Rajabhat University (Computer Science)
การโหลดแบบพลวัต (Dynamic Loading)
 เนือ่ งจากพืน้ ทีท่ ใี่ ช้ในการประมวลผลในหน่วยความจาทางกายภาพ (Physical
Memory) มีการจากัดขนาดข้อมูล ดังนัน้ โปรแกรมคาสัง่ และข้อมูลทัง้ หมดของ
กระบวนการ (Process) จะต้องมีขนาดเล็กกว่าหน่วยความจาทางกายภาพ
(Physical Memory) ในขณะทีโ่ หลดข้อมูลทัง้ หมดเข้าสู่พน้ ื ทีว่ ่างใน
หน่วยความจาในแต่ละครัง้ จะต้องมีการตรวจสอบขนาดของข้อมูล เพือ่ จะช่วยให้การ
ประมวลผลโปรแกรมคาสัง่ และการโหลดข้อมูลเข้าหน่วยความจาทาได้รวดเร็วขึน้
ลักษณะการทางานดังกล่าวนีเ้ รียกว่า การโหลดแบบพลวัต (Dynamic
Loading) ซึง่ วิธกี ารทางานจะไม่โหลดโปรแกรมย่อย (Routine) จนกว่าจะมี
การเรียกใช้งาน (Call) ทาให้ไม่สน้ ิ เปลืองเนือ้ ทีใ่ นหน่วยความจา
15
Suan Dusit Rajabhat University (Computer Science)
การโหลดแบบพลวัต (Dynamic Loading)
 ทุกครัง้ ทีโ่ ปรแกรมหลัก (Main Program) ถูกโหลดเข้าสู่หน่วยความจาเพือ่ ทา
การประมวลผล และมีการเรียกใช้โปรแกรมย่อย (Routine) จะมีการตรวจสอบ
โปรแกรมแกรมย่อยแรกก่อน (Routine First) ควบคู่กบั การโหลดโปรแกรมย่อย
ตัวอืน่ ไปด้วย กรณีทไี่ ม่มกี ารโหลดโปรแกรมย่อย ตัวเชือ่ มโยงการย้ายตาแหน่ง
(Relocation linking Loader) จะทาการโหลดโปรแกรมย่อยไปเก็บไว้ใน
ตารางเพือ่ ระบุตาแหน่ง (Address Table) ซึง่ ตัวโปรแกรมจะทาการปรับเปลีย่ น
ตาแหน่งทีม่ ผี ลกระทบกับการเคลือ่ นย้ายตาแหน่งโดยไม่ต้องอาศัยระบบปฏิบตั ใิ นการ
จัดการ ซึง่ ตัวโปรแกรมจะเป็ นตัวจัดการเหตุการณ์ดงั กล่าวเอง
16
Suan Dusit Rajabhat University (Computer Science)
การใช้ไลบรารีร่วมกัน และการเชื่อมโยงแบบพลวัต
(Dynamic Linking and Shared Libraries)
 วิธกี ารเชือ่ มโยงแบบพลวัต (Dynamic Linking) มีความคล้ายกันกับการ
โหลดแบบพลวัต (Dynamic Loading) ต่างกันตรงเวลาทีใ่ ช้ในการเชือ่ มโยงที่
มากกว่าเมือ่ ระบบต้องการเรียกใช้งานโปรแกรมย่อย (Subroutine
Libraries) โดยใช้ชุดคาสัง่ ขนาดเล็กทีช่ อื่ ว่า สตับ๊ (Stub) โดยทีช่ ุดคาสัง่ นีเ้ มือ่
ถูกประมวลผล ก็จะทาการตรวจสอบว่ามีโปรแกรมย่อยทีต่ ้องการใช้งานอยู่ใน
หน่วยความจาแล้วหรือยัง ถ้าไม่มชี ุดคาสัง่ สตับ๊ (Stub) นีก้ จ็ ะทาการโหลดโปรแกรม
ย่อยใหม่เข้าสู่หน่วยความจาทันทีและจะแทนทีค่ ่าตาแน่งโปรแกรมย่อยใหม่ทบั ตาแหน่ง
โปรแกรมย่อยเดิมทันทีโดยเรียกกระบวนการทางานนีว้ ่า วิธกี ารเชือ่ มโยงแบบพลวัต
(Dynamic Linking)
17
Suan Dusit Rajabhat University (Computer Science)
การใช้ไลบรารีร่วมกัน และการเชื่อมโยงแบบพลวัต
(Dynamic Linking and Shared Libraries)
 โดยทีท่ ุกๆ โปรเซสจะใช้ภาษาของไลบรารีในการประมวลมลเพียงหนึง่ ครัง้ ในการทาสาเนา
รหัสไลบรารี (Library code) ซึง่ เป็ นไฟล์ทมี่ นี ามสกุลเป็ น .dll โดยการทางานใน
การปรับเปลีย่ นไลบรารี (Update library) จากไลบรารีรุ่นเก่า
(Old Library) เป็ นไลบรารีรุ่นใหม่ (New Library) จะมีการสร้างการ
เชือ่ มโยงไลบรารีแบบอัตโนมัต ิ เพือ่ ให้ระบบสามารถเรียกใช้งานไฟล์ .dll นีจ้ ากโปรแกรม
ย่อยได้ โดยลักษณะการใช้ไฟล์ร่วมกัน (Shared Libraries)
18
Suan Dusit Rajabhat University (Computer Science)
การแบ่งส่วน (Overlay)
 เป็ นวิธนี ใ้ ี ช้ในกรณีทโี่ ปรเซสมีขนาดใหญ่กว่าหน่วยความจาทีจ่ ดั เก็บ จาเป็ นทีจ่ ะต้อง
จัดสรรหน่วยความจาให้เหมาะสมโดยการแบ่งส่วน (Overlay) หลักการทางานของ
การแบ่งส่วนโดยทีค่ าสัง่ และข้อมูลจะถูกเก็บอยู่ในหน่วยความจาตามขนาดของ
หน่วยความจาทีม่ ี ซึง่ จะต้องอาศัยการทางานของตัวขับในการแบ่งส่วน
(Overlay Driver) เพือ่ โหลดคาสัง่ ทีต่ ้องการใช้งานหน่วยความจาเข้ามาใช้งาน
จนเสร็จก่อนแล้วจึงสลับให้คาสัง่ อืน่ ทีต่ ้องการใช้งานหน่วยความจาเข้ามาทาใช้งาน
หน่วยความจาต่อไป
19
Suan Dusit Rajabhat University (Computer Science)
ตัวอย่าง (Example)
 พิจารณาจากตัวเอสเซมเบอร์ ในการจัดการนาเข้าการทางานของ 2 โปรเซส โดยทีโ่ ปรเซส 1
ต้องการทีจ่ ะใช้ตารางสัญลักษณ์ (Symbol Table) โปรเซส 2 ต้องการทีจ่ ะสร้างคาสัง่
ภาษาเครือ่ ง (Machine-language code) เราอาจจะต้องทาการแบ่งพาร์ ทชิ นั่ ให้ตวั เอ
สเซมเบอร์ ในการจัดการการนาเข้าทางานของคาสัง่ ในโปรเซส 1 และโปรเซส 1 และการใช้งาน
ตารางสัญลักษณ์ (Symbol Table) และโปรแกรมย่อยปกติ (Common Routine)
ในหน่วยความจาร่ วมกันทัง้ สองโปรเซส โดยกาหนดขนาดการใช้งานของแต่ละคาสัง่ ได้ดงั นี้
การนาเข้าครัง้ ที่ 1 (Pass 1)
70 KB
การนาเข้าครัง้ ที่ 2 (Pass 2)
80 KB
ตารางสัญลักษณ์ (Symbol Table)
20 KB
โปรแกรมย่อยปกติ (Common Routine)
30 KB
20
Suan Dusit Rajabhat University (Computer Science)
ตัวอย่าง (Example)
 วิธกี ารแก้ปญ
ั หา เราจะแบ่งออกเป็ นสองส่วน (Two Overlays) คือ Overlay A
ทางานกับตารางสัญลักษณ์ (Symbol Table) กับตารางสัญลักษณ์ (Symbol
Table) โปรแกรมย่อยปกติ (Common Routine) และการนาเข้าครัง้ ที่ 1
(Pass 1) ส่วน Overlay B ก็ทางาน (Symbol Table) โปรแกรมย่อยปกติ
(Common Routine) และการนาเข้าครัง้ ที่ 2 (Pass 2) ระบบจะทาการเพิม่ ตัว
ขับในการแบ่งส่วน (Overlay Driver) ขนาด 10 KB เพือ่ โหลดคาสัง่ ใน
Overlay A ทีต่ ้องการใช้งานหน่วยความจา 120KB จนทางานเสร็จ แล้วจึงกระโดด
กลับไปทีต่ วั ขับในการแบ่งส่วนอีกครัง้ เพือ่ โหลดคาสัง่ ใน Overlay B ทีต่ ้องการใช้งาน
หน่วยความจา 130KB โดยเข้าไปแทนที่ (Overwriting) Overlay A
แสดงได้ดงั รูปที่ 2.4 ซึง่ ทาให้ตวั เอสเซมเบอร์ สามารถทีจ่ ะประมวลบนพืน้ ทีห่ น่วยความจา
ขนาด 150KB ได้
21
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.4 การแบ่งส่วนหน่วยความจาสาหรับการนาเข้าของโปรเซสครัง้ ที่ 1 - 2 ของตัวเอสเซมเบอร์
(Overlays for two-pass assembler)
22
Suan Dusit Rajabhat University (Computer Science)
กลยุทย์ในการจัดการหน่วยความจา (Memory Strategy)
 การจัดการหน่วยความจาถือว่าเป็ นหน้าทีห่ นึง่ ของระบบปฏิบตั กิ าร เพือ่ จัดสรรพืน้ ที่
หน่วยความจาให้กบั โปรแกรมหรือข้อมูลต่างๆ ได้อย่างถูกต้องเหมาะสม
แบ่งออกเป็ น 3 วิธี ดังนี้
1.กลยุทธ์ การโหลด (Fetch Strategy) เป็ นกลยุทธ์ ทใี่ ช้ในการโหลดคาสัง่ หรือข้อมูล
ต่างๆ จากหน่วยเก็บข้อมูลสารองเข้าสู่หน่วยความจาหลัก แบ่งออกเป็ น 2 วิธี
1.1 Demand Fetch Strategy คือ วิธกี ารโหลดเฉพาะคาสัง่ หรือข้อมูลต่างๆ ที่
ต้องการใช้งานเข้าสู่หน่วยความจาหลัก
1.2 Anticipate Fetch Strategy คือ วิธกี ารคาดเดาว่าคาสัง่ หรือข้อมูลใดจะ
ถูกโหลดเข้าสู่หน่วยความจาหลักก่อนทีจ่ ะถูกใช้งานจริง
23
Suan Dusit Rajabhat University (Computer Science)
กลยุทย์ในการจัดการหน่วยความจา (Memory Strategy)
2. กลยุทธ์การวาง (Placement Strategy) เป็ นกลยุทธ์ทใี่ ช้ในการจัดว่างคาสัง่
หรือข้อมูลใหม่เข้าสูหน่วยความจาหลักบนพืน้ ทีว่ ่างในหน่วยความจาทีเ่ รียกว่า “โฮล
(Hole)”เพือ่ ให้กบั โปรแกรมหรือข้อมูลต่างๆ ไว้ให้เหมาะสมกับขนาดคาสัง่ หรือข้อมูลนัน้
3. กลยุทธ์การแทนที่ (Replacement Strategy) โดยระบบปฏิบตั กิ ารจะเป็ น
ส่วนทีช่ ่วยในการตัดสินใจว่าจะเลือกวิธใี ดในการแทนทีค่ าสัง่ ข้อมูลในหน่วยความจาหลัก
(Main Memory) ให้เหมาะสมทีส่ ุดมี 5 วิธดี งั นี้
2.1 วิธสี ุ่ม (Random) คือ การสุ่มหาพืน้ ทีว่ ่างในหน่วยความจา โดยคาสัง่ หรือ
ข้อมูลมีโอกาสถูกเลือกมาใช้งานเท่ากัน
2.2 วิธมี าก่อนได้ใช้ก่อน (First-in, First-out : FIFO) คือ คาสัง่ หรือ
ข้อมูลใดถูกโหลดเข้าไปใช้งานหน่วยความจาหลักก่อนจะถูกเลือกออกไปก่อน
24
Suan Dusit Rajabhat University (Computer Science)
กลยุทย์ในการจัดการหน่วยความจา (Memory Strategy)
2.3 NFU (Not Frequency Use) คือ การเลือกคาสัง่ หรือข้อมูลทีถ่ ูกใช้
งานน้อยทีส่ ุดออกไปก่อน เนือ่ งจากคาสัง่ หรือข้อมูลกลุม่ นีถ้ ูกใช้งานน้อยโอกาสจะถูกโหลด
เข้ามาใช้งานอีกก็นอ้ ยตามไปด้วย ดังนัน้ จึงควรนาออกจากหน่วยความจาหลัก
2.4 LRU (Lead Recently Use) คือ วิธที เี่ ก็บเวลาการใช้งาน
หน่วยความจาครัง้ ล่าสุด โดยคาสัง่ หรือข้อมูลทีไ่ ม่ได้ถูกนามาใช้งานนานทีส่ ุดจะถูกเลือก
ออกไปก่อน
2.5 NRU (Not Recently Use) คือ วิธนี แ้ ี ต่ละคาสัง่ หรือข้อมูลจะเพิม่ บิต
ข้อมูลทีเ่ กีย่ วข้อง 2 บิตด้วยกันคือ บิตอ้างอิง (Reference Bit) และบิตแก้ไข
(Modify Bit) ซึง่ จะมีค่าเป็ น 0 เมือ่ มีการเข้าถึงคาสัง่ หรือข้อมูลและจะมีค่าเป็ น 1
เมือ่ มีการแก้ไข
25
Suan Dusit Rajabhat University (Computer Science)
การสับเปลี่ยน (Swapping)
เป็ นวิธที ใี่ นการสลับโปรเซสทีต่ ้องการจะเข้าหรือออกเพือ่ ประมวลผลในหน่วยความจา โดย
หลักการจะต้องสลับโปรเซสเก่าออกมาก่อนแล้วจึงนาเข้าโปรเซสใหม่เข้าไปใช้งาน
หน่วยความจาโดยนาเข้าไปเก็บไว้ในระบบสนับสนุนการจัดเก็บ (Backing Store)
แสดงได้ดงั รูปที่ 2.5 โดยใช้ Priority-base Scheduling Algorithms
ถ้าโปรเซสใดมี Higher-priority process เข้ามาถึงและต้องการจะใช้บริการ
หน่วยความจา ตัวจัดการหน่วยความจาสามารถทีจ่ ะทาการสลับเอา Lowerpriority process ออกไปก่อนเพือ่ ให้โปรเซสใดมี Higher-priority
process ทางานให้เสร็จก่อน โปรเซสทีม่ ี Lower-priority process จึงจะ
สลับกลับมา (Swap back) เพือ่ ทางานในหน่วยความจาต่อไปได้
26
Suan Dusit Rajabhat University (Computer Science)
การสับเปลี่ยน (Swapping)
 บางครัง้ เราอาจจะเรียกวิธกี ารสลับแบบนีว้ ่า การหมุนเข้า (Roll in) หรือหมุนออก
(Roll out) โดยระบบปฏิบตั กิ ารจะเป็ นส่วนจัดการเหตุการณ์ในการสลับโปรเซสเข้าออก จากหน่วยความจาดังนี้
1. กระบวนการ (Process) ดาเนินการเสร็จสิน้
2. กระบวนการ (Process) ร้องขอการใช้งานอุ ปกรณ์ I/O
3.
กระบวนการ (Process) หมดเวลาการทางาน (Quantum Time)
ดังนัน้ หลักการสาคัญในการสับเปลีย่ น (Swapping) จะต้องคานึงถึง
ระยะเวลาในการเคลือ่ นย้าย (Transfer) กระบวนการซึง่ เป็ นสัดส่วนโดยตรงกับ
จานวนขนาดหรือพืน้ ทีใ่ นหน่วยความจาทีม่ อี ยู่ด้วย
27
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2,5 การสับเปลีย่ นระหว่าง 2 โปรเซส ในการใช้งานพืน้ ทีด่ สิ ก์ในการจัดเก็บ
(Swapping of two processes using a disk as a backing store)
28
Suan Dusit Rajabhat University (Computer Science)
การจัดสรรหน่วยความจาที่ต่อเนื่องกัน
(Continues Memory Allocation)
 หน่วยความจาหลักต้องจาเป็ นจะต้องอานวยความสะดวกให้กบั ระบบปฏิบตั กิ ารและความ
หลากของผู ใ้ ช้งานโปรเซส ดังนัน้ ในแต่ละโปรเซส (Process) จึงมีความต้องการใช้
พืน้ ทีใ่ นหน่วยความจาอย่างต่อเนือ่ ง จึงเป็ นหน้าทีข่ องระบบปฏิบตั กิ ารในการจัดสรร
พืน้ ทีห่ น่วยความจาในหน่วยความจาให้มปี ะสิทธิภาพสูงสุด ซึง่ โดยทัว่ ไปแล้ว
หน่วยความจาหลัก (Main Memory) จะถูกแบ่งออกเป็ น 2 ส่วน คือ
หน่วยความจาระดับบน (High Memory) ซึง่ เป็ นส่วนทีใ่ ช้ตดิ ต่อกับส่วนของ
ผู ใ้ ช้ (User) และหน่วยความจาระดับล่าง (Low Memory) ซึง่ เป็ นส่วนของ
ระบบปฏิบตั กิ าร (Operating System) ซึง่ แสดงได้ดงั รูปที่ 2.6
29
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.6 การแบ่งระดับของหน่วยความจาหลัก
(The Level of Main Memory)
30
Suan Dusit Rajabhat University (Computer Science)
การจัดสรรหน่วยความจาที่ต่อเนื่องกัน
(Continues Memory Allocation)
 นอกจากนีก้ ารจัดสรรพืน้ ทีใ่ นหน่วยความจาหลัก (Main Memory) เกีย่ วข้อง
กับการป้ องกัน ซึง่ จะต้องพิจารณาจากผู ใ้ ช้งานโปรเซส (User Processes) และ
ผู ท้ เี่ กีย่ วข้องกับการใช้งานโปรเซสอืน่ ด้วย โดยมีการตรวจสอบค่าตาแหน่งในรีจสิ เตอร์
(Register) ต่างๆ เพือ่ ป้ องกันการแก้ไขคาสัง่ หรือข้อมูลในส่วนของระบบปฏิบตั กิ าร
(Operating System) และในส่วนของผู ใ้ ช้ (User) ทีก่ าลังทางานอยู่ เช่น
1. รีจสิ เตอร์ยา้ ย
ตาแหน่ง (Relocation Register) เป็ นรีจสิ เตอร์ทภี่ ายในบรรจุค่าทีเ่ ล็กทีส่ ุด
ของตาแหน่งทางกายภาพ (Smallest Physical)
31
Suan Dusit Rajabhat University (Computer Science)
การจัดสรรหน่วยความจาที่ต่อเนื่องกัน
(Continues Memory Allocation)
 2. รีจสิ เตอร์ขอบเขต (Limit Register) เป็ นรีจสิ เตอร์ทภี่ ายในบรรจุขนาดหรือ
ช่วงของตาแหน่งทางตรรกะ (Logical Address) เช่น
รีจสิ เตอร์ยา้ ยตาแหน่ง (Relocation Register) = 100040
รีจสิ เตอร์ขอบเขต (Limit Register) = 74600
โดย Logical Address < Limit Register)
โดยหน่วยจัดการหน่วยความจา (Main Memory Unit: MMU) จะทา
การจับคู่ (Map) ตาแหน่งทางตรรกะ (Logical Address) แบบพลวัต
(Dynamically) โดยการเพิม่ ค่าลงไปในรีจสิ เตอร์ยา้ ยตาแหน่ง
(Relocation Register) แล้วส่งค่าตาแหน่งไปยังหน่วยความจาหลัก
(Main Memory) อีกที แสดงได้ดงั รูปที่ 2.7
32
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.7 แสดงภาพฮาร์ดแวร์ทสี่ นับสนุนการทางานของรีจสิ เตอร์ยา้ ยตาแหน่งรีจสิ เตอร์ ขอบเขต
(Hardware Support for relocation and limit registers)
33
Suan Dusit Rajabhat University (Computer Science)
การจัดสรรพืน้ ทีใ่ นหน่วยความจาแบ่งออกเป็ น 2 รูปแบบ ดังนี้
 1.การจัดสรรหน่วยความจาแบบพืน้ ทีเ่ ดียว (Single-partition Allocation)
วิธนี ห้ ี น่วยความจาจะไม่ถูกแบ่งพืน้ ที่ โดยโปรเซสในส่วนของระบบปฏิบตั กิ ารจะอยู่ในส่วน
หน่วยความจาระดับล่าง (Low Memory) และส่วนของโปรเซสของผู ใ้ ช้อยู่ใน
ส่วนหน่วยความจาระดับบน (High Memory) โดยเกีย่ วข้องกับรีจสิ เตอร์ยา้ ย
ตาแหน่ง (Relocation Register) ในการแยกโปรเซส (Process) ในส่วน
ของผู ใ้ ช้ออกจากส่วนของระบบปฏิบตั กิ ารและรีจสิ เตอร์ขอบเขต (Limit Register)
เป็ นรีจสิ เตอร์ทใี่ ช้ระบุขนาดของค่าตาแหน่งทางตรรกะ (Logical Address) โดย
ค่าตาแหน่งทางตรรกะ (Logical Address) ต้องน้อยกว่ารีจสิ เตอร์ขอบเขต
(Limit Register) เสมอ
34
Suan Dusit Rajabhat University (Computer Science)
การจัดสรรพืน้ ทีใ่ นหน่วยความจาแบ่งออกเป็ น 2 รูปแบบ ดังนี้
 2.การจัดสรรหน่วยความจาแบบหลายพืน้ ที่ (Multiple-partition Allocation)
วิธนี ห้ ี น่วยความจาจะถูกแบ่งตามจานวน Process มีวธิ กี ารจัดสรร 2 รูปแบบ ดังนี้
2.1 การแบ่งแบบคงที่ (Fixed Partition) โดยการแบ่งพืน้ ทีห่ น่วยความจาออ
อกเป็ นหลาย ๆ พาร์ทชิ นั่ (Partition) แต่ละพาร์ทชิ นั่ มีขนาดเท่ากันและบรรจุ
โปรเซสอยู่ภายในเพียงหนึง่ โปรเซสเท่านัน้ โดยทีจ่ านวนพาร์ทชิ นั่ ถูกกาหนดโดยจานวน
โปรเซสทีม่ อี ยู่ในหน่วยความจา ข้อเสียของวิธคี อื หากโปรเซสทีบ่ รรจุอยู่ในหน่วยความจา
มีขนาดเล็กกว่าพาร์ทชิ นั่ ทีก่ าหนดจะทาให้เหลือพืน้ ทีใ่ นหน่วยความจา (พาร์ทชิ นั่ มีพน้ ื ที่
ว่างเหลือ) เรียกพืน้ ทีว่ ่างทีเ่ หลือนีว้ ่า “Internal Fragmentation” กรณีทขี่ นาด
ของโปรเซสมีขนาดใหญ่กว่าพาร์ทชิ นั่ ทีก่ าหนดก็จะไม่สามารถนาโปรเซสนัน้ เข้าไปใช้งาน
พืน้ ทีใ่ นหน่วยความจาหลักได้
35
Suan Dusit Rajabhat University (Computer Science)
การจัดสรรพืน้ ทีใ่ นหน่วยความจาแบ่งออกเป็ น 2 รูปแบบ ดังนี้
 2.2 การแบ่งแบบพลวัต (Dynamic Partition) เป็ นการแบ่งพืน้ ทีต่ ามขนาดของ
โปรเซส โดยการใช้พน้ ื ทีว่ ่างทางกายภาพทีเ่ รียกว่า โฮล (Hold) เมือ่ มีโปรเซส
ต้องการใช้งานพืน้ ทีใ่ นหน่วยความจา ระบบปฏิบตั กิ ารจามีหน้าทีใ่ นค้นหาพืน้ ทีโ่ ฮล
(Hold) ทีม่ ขี นาดใหญ่เพียงพอกับโปรเซส แล้วจึงนาโปรเซสนัน้ เข้าไปใช้งาน
หน่วยความจาและจะทาการเก็บข้อมูลของโปรเซสอืน่ ทีย่ งั ไม่ได้นาเข้าไปใช้งาน
หน่วยความจาและพืน้ ทีว่ ่าง (Free Partition Hold) ทีย่ งั ไม่ได้ถูกจัดสรร
ให้กบั โปรเซสใดๆ ด้วยแถวคอยการทางาน (Job Queue) โดยสัมพันธ์กบั เวลาทีใ่ ช้
งานจริง (Use time) ของแต่โปรเซสด้วย แสดงดังรูปที่ 2.8
36
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.8 แสดงการแบ่งหน่วยความจาแบบพลวัต (Dynamic Partition)
37
Suan Dusit Rajabhat University (Computer Science)
ปัญหาการจัดสรรพืน้ ทีห่ น่วยความจาแบบพลวัต
(Dynamic Storage-allocation Problem)
 ทีพ
่ บบ่อยคือการคืนพืน้ ทีห่ น่วยความจาให้กบั ระบบเมือ่ โปรเซสได้ทางานเสร็จแล้วทาให้
เกิดพืน้ ทีว่ ่างในหน่วยความจา “โฮล (Hold)” ดังนัน้ เราจึงใช้วธิ กี ารวาง
(Placement) เพือ่ ใช้แก้ปญั หาดังกล่าวซึง่ จะทาให้การจัดสรรพืน้ ทีว่ ่างใน
หน่วยความจาให้เกิดประโยชน์สูงสุด ดังนี้
- First fit เป็ นการเลือกโฮลตัวแรก (First Hold) ทีพ่ บก่อนและมีขนาด
ใหญ่เพียงพอกับโปรเซสทีจ่ ะนาเข้าไปวางในหน่วยความจา ซึง่ เป็ นวิธที ใี่ ช้เวลาน้อยทีส่ ุด
38
Suan Dusit Rajabhat University (Computer Science)
ปัญหาการจัดสรรพืน้ ทีห่ น่วยความจาแบบพลวัต
(Dynamic Storage-allocation Problem)
 - Best fit
เป็ นการเลือกโฮลทีม่ ขี นากเล็กทีส่ ุด (smallest Hold) เพือ่ ให้
เหมาะสมทีส่ ุดกับโปรเซสทีจ่ ะนาเข้าไปวางในหน่วยความจา ซึง่ ต้องทาการค้นหาทัง้
รายการทีเ่ ก็บขนาดของโฮล (Hold) ทีว่ ่าง ซึง่ เป็ นวิธจี ดั สรรพืน้ ทีว่ ่างใน
หน่วยความจาให้เกิดประโยชน์สูงสุดเพราะเหลือพืน้ ทีว่ ่างโฮลน้อยทีส่ ุด (smallest
leftover hold) แต่กเ็ สียเวลาการค้นหา
-Worst fit เป็ นการเลือกโฮลขนาดทีใ่ หญ่ทสี่ ุด (Largest Hold) เพือ่ ให้
เหมาะสมทีส่ ุดกับโปรเซสทีจ่ ะนาเข้าไปวางในหน่วยความจา ซึง่ ต้องทาการค้นหาทัง้
รายการทีเ่ ก็บขนาดของโฮล (Hold) ทีว่ ่าง วิธนี อ้ ี าจจะดีกว่าวิธี Best fit เพราะ
เหลือพืน้ ทีว่ ่างโฮลน้อยกว่า
39
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.9 แสดงการวิธกี ารวาง (Placement) แบบต่างๆ
40
Suan Dusit Rajabhat University (Computer Science)
วิธกี ารจัดสรรพืน้ ทีใ่ นหน่วยความจาให้กบั แต่ละโปรเซส
 1. การบีบอัด (Compression) หรือการจัดระเบียบพืน้ ที่
(Defragmentation) เป็ นการจัดพืน้ ทีว่ ่างระหว่างโปรเซสใหม่ โดยการสับเปลีย่ น
ตาแหน่งของโปรเซสต่างๆ ในหน่วยความจาให้เรียงต่อกัน ทาให้มพี น้ ื ทีเ่ พิม่ ขึน้ หรือมี
ขนาดใหญ่ขน้ ึ ซึง่ เหมาะกับการจัดสรรพืน้ ทีแ่ บบพลวัต (Dynamic Allocation)
ระบบปฏิบตั กิ ารจะเป็ นตัวจัดการโดยทีโ่ ปรเซสต่างๆ จะถูกย้ายไปยังตาแหน่งต่างๆ โดย
อัตโนมัต ิ
2. อนุญาตให้ตาแหน่งพืน้ ทีท่ างตรรกะ (Logical Address) ของโปรเซสทีไ่ ม่ได้อยู่
ติดกัน (Noncontiguous) โดยทีโ่ ปรเซสจะถูกจัดสรรไว้บนพืน้ ทีห่ น่วยความจาทาง
กายภาพ (Allocated Physical Memory) ทีใ่ ดก็ได้โดยทุกตาแหน่งสามารถใช้
งานพืน้ ทีด่ งั กล่าวได้
41
Suan Dusit Rajabhat University (Computer Science)
การแบ่งหน้า (Paging)
 การแบ่งหน้า (Paging) เป็ นการจัดสรรพืน้ ทีว่ ่างบนหน่วยความจา โดยทาให้โปรเซส
ทีอ่ ยู่บนหน่วยความจาได้โดยไม่ต้องเรียงต่อเนือ่ งกันทัง้ โปรเซสเป็ นการใช้พน้ ื ทีว่ ่างอยู่
กระจัดกระจายโดยไม่สูญเปล่า และไม่จาเป็ นจะต้องบีบอัดพืน้ ทีว่ ่างในหน่วยความจาก่อน
แบ่งออกเป็ น 2 ประเภท ดังนี้
1. การจัดสรรหน่วยความจาทางกายภาพ (Paging Model of Physical
Memory) เป็ นวิธกี ารแบ่งพืน้ ทีใ่ ห้มขี นาดคง (Fixed-Size Block) เรียก
พืน้ ทีส่ ่วนนีว่า เฟรม (Frames) โดยทีข่ นาดของเพจถูกกาหนดโดยฮาร์ ดแวร์ ขนาด
ของเพจเป็ นขนาดยกกาลัง 2 มีขนาดอยู่ระหว่าง 512 ไบต์ถงึ 16 MB ต่อเพจ
ขึน้ อยู่กบั สถาปัตยกรรมของคอมพิวเตอร์
42
Suan Dusit Rajabhat University (Computer Science)
การแบ่งหน้า (Paging)
 2. การจัดสรรหน่วยความจาทางตรรกะ
(Paging Model of Logical Memory) เป็ นวิธกี ารแบ่งพืน้ ทีแ่ บบ
บล็อค (Block) เรียกพืน้ ทีส่ ่วนนีว้ ่า เพจ (Pages) โดยกาหนดขนาดเพจเท่ากับ
ขนาดเฟรม รูปที่ 2.10 แสดงภาพของฮาร์ดแวร์ซงึ่ จะเป็ นตัวจัดการแบ่งหน้า
ทุกๆ ตาแหน่งจะถูกจัดสรรโดยหน่วยประมวลผลกลาง (CPU) โดยแบ่งออกเป็ น
สองส่วน คือ
43
Suan Dusit Rajabhat University (Computer Science)
การแบ่งหน้า (Paging)
 2.1 หมายเลขเพจ (Page Number: p) โดยหมายเลขเพจจะใช้ดรรชนี
(Index) เพือ่ ชีไ้ ปยังตารางเพจ (Page Table) ซึง่ ภายในบรรจุตาแหน่งเริม่ ต้น
(Base Address) ของแต่ละเพจในหน่วยความจาทางกายภาพ (Physical
Memory)
2.2 ขอบเขตเพจ (Page Offset: d) คือ ตาแหน่งจริงในหน่วยความจา ที่
นามารวมกับตาแหน่งเริม่ ต้น (Base Address) ทีไ่ ด้จากตารางเพจ (Page
Table) เพือ่ ใช้คานวณหาตาแหน่งของหน่วยความจาทางกายภาพ (Physical
Memory)
44
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.10 ฮาร์ดแวร์การแบ่งตาราง (Hardware Paging)
45
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.11 แสดงรูปแบบการแบ่งเพจในหน่วยความจาแบบตรรกะและหน่วยความจาแบบกายภาพ
(Paging model of logical and physical memory)
46
Suan Dusit Rajabhat University (Computer Science)
ฮาร์ดแวร์กับการสนับสนุนการแบ่งหน้า
(Hardware Support)
 การนาฮาร์ดแวร์กบั การสนับสนุนการจัดการตารางเพจ (Page Table) ทาได้
หลายทาง ซึง่ การเข่ถงึ ตาแหน่งในหน่วยความจาแต่ละครัง้ จะต้องมีอ่านข้อมูลจาก
หน่วยความจาทางกายภาพ (Physical Memory) ถึงสองครัง้ ครัง้ ทีห่ นึง่
จากตารางเพจ (Page Table) และครัง้ ทีส่ องจากตาแหน่งข้อมูลทางกายภาพ
(Physical Address) ทาให้เสียเวลาและการเข้าถึงหน่วยความจาล่าช้า ดังนัน้ วิธี
มาตรฐานทีใ่ ช้แก้ปญั หาจาเป็ นต้องใช้ฮาร์ดแวร์ขนาดเล็กทีม่ คี วามเร็ว (Hardware
Cache) ในการอ่านและจัดเก็บข้อมูลสูง (Fast-Lookup) ซึง่ เรียกฮาร์ดแวร์
ชนิดนีว้ ่า “Translation Look-aside Buffer (TLB)”
47
Suan Dusit Rajabhat University (Computer Science)
ฮาร์ดแวร์กับการสนับสนุนการแบ่งหน้า
(Hardware Support)
 ข้อมูลจะถูกอ่านจากหน่วยความจาทางกายภาพ (Physical Memory) เพียง
ครัง้ เดียว แล้วจัดเก็บลง TLB ซึง่ เป็ นหน่วยความจาทีม่ คี วามเร็วสูง (High
Speed Memory) ซึง่ ประกอบไปด้วยสองส่วนด้วยกัน คือ ส่วนทีห่ นึง่ เก็บ
กุญแจ (Key) หรือเท็กซ์ (Tag) ส่วนทีส่ องเก็บค่า (Value) หากต้องการอ่าน
ข้อมูลจากหน่วยความจาก็จาทาการ เปรียบเทียบกุญแจว่าตรงกันหรือไม่ ถ้าพบรายการ
ทีค่ ้นหาทีส่ อดคล้องกับค่าของฟิ ลด์ (Value Field) ก็จะส่งคืนค่ากับไปให้ ซึง่
ประสิทธิภาพของการค้นหาจะรวดเร็ว แต่ฮาร์ดแวร์ชนิดนีจ้ ะมีราคาแพง และค่าของ
จานวนข้อมูลทีเ่ ข้ามาอยู่ใน TLB จะมีขนาดไม่ใหญ่มากนักมักมีค่าอยู่ระหว่าง 64 ถึง
1024 ตัว
48
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.12 ฮาร์ดแวร์กบั การสนับสนุนการแบ่งหน้าด้วย TLB
(Paging hardware with Table look-aside buffer)
49
Suan Dusit Rajabhat University (Computer Science)
ฮาร์ดแวร์กับการสนับสนุนการแบ่งหน้า
(Hardware Support)
 ในกรณีท ี่ TLB เต็ม ระบบปฏิบตั กิ ารก็จะทาการเลือกหรือลบบางเพจออก
(Flushed or Erased) และนาเพจทีใ่ ช้อยู่ลา่ สุดไปแทนที่ แต่ในบาง TLB จะไม่
อนุญาตให้สามารถทาวิธกี ารแบบนีไ้ ด้ ซึง่ จะทาให้เกิดการ “Wired Down” เช่น
เพจทีเ่ ก็บคาสัง่ ในส่วนของแกนกลาง (Kernel Code) เป็ นต้น
ดังนัน้ เปอร์เซ็นต์ของเวลาในการค้นหาหมายเลขเพจ (Page Numbers)
ทีพ่ บใน TLB เราเรียกว่า “ อัตราส่วนทีพ่ บ (Hit Ratio)” เช่น 80%
อัตราส่วนทีพ่ บหมายความว่า เราต้องการการค้นหาหมายเลขเพจใน TLB แล้วเจอ
80% ของเวลาทัง้ หมด
50
Suan Dusit Rajabhat University (Computer Science)
ฮาร์ดแวร์กับการสนับสนุนการแบ่งหน้า
(Hardware Support)
 ถ้าเราใช้เวลา 20 Nano sec ในการค้นหา ใน TLB และ 100 Nano sec
ในการเข้าถึงหน่วยความจา (Access Memory) ดังนัน้ เวลาทัง้ หมดทีใ่ ช้ไป
(Mapped-Memory Access) จะเท่ากับ 120 Nanoseconds เมือ่
หมายเลขเพจ (Page Numbers) อยู่ใน TLB แต่ถา้ ไม่พบหมายเลขเพจ
(Page Numbers) ใน TLB ซึง่ เสียเวลาไป 20 Nano sec และเสียเวลา
ครัง้ แรกไปในการเข้าถึงหน่วยความจาสาหรับการค้นหาในตารางเพจ (Page
Table) 100 Nano sec และเสีย่ เวลาครัง้ ทีส่ องในการค้นหาหมายเลขเฟรม
(Frame Numbers) อีก 100 Nano sec ซึง่ จะใช้เวลาทัง้ หมดในการ
ค้นหาเท่ากับ 200 Nano sec
51
Suan Dusit Rajabhat University (Computer Science)
ประสิทธิภาพของเวลาในการเข้าถึงเข้าถึงหน่วยความจา
(Effective Memory-Access Time)
 Effective Memory-Access Time= 0.80 X 120 + 0.20 X 220
= 140 Nanoseconds
สรุปได้ว่า เวลาจะช้าลงไปถึง 40% ในการเข้าถึงหน่วยความจา
(คือจาก 100 เป็ น 140 นาโนวินาที)
Ex ถ้า 98% ของอัตราส่วนทีพ่ บหมายความว่าอย่างไร อธิบายได้ดงั นี้
Effective Memory-Access Time = 0.98 X 120 + 0.02 X 220
= 122 Nanoseconds
สรุปได้ว่า เวลาจะช้าลงไปถึง 22% ในการเข้าถึงหน่วยความจา
(คือจาก 100 เป็ น 122 นาโนวินาที)
52
Suan Dusit Rajabhat University (Computer Science)
การป้องกันหน่วยความจา (Memory Protection)
 โดยปกติจานวนบิต (Bits) ทีเ่ ก็บอยู่ในตารางเพจ (Page Table) เราสามารถ
กาหนดบิตเพือ่ ใช้การตรวจสอบและกาหนดเพจในการ อ่าน-เขียน (Read-Write)
หรืออ่านข้อมูลเท่านัน้ (Read-Only) ซึง่ เรียกบิตพิเศษนีว้ ่า “กลุม่ บิตป้ องกัน
(Associating Protection Bits)” ให้กบั ทุกๆ เฟรม ทีอ่ ยู่ในหน่วยความจา
(Main Memory) ซึง่ แบ่งบิตสถานะออกเป็ น 2 บิต คือ
1. บิตใช้งานได้ (Valid Bit) เป็ นบิตสถานะทีบ่ อกว่าข้อมูลในเพจถูกอ่านเข้าสู่
หน่วยความจาทางกายภาพแล้ว และสามารถนาไปใช้งานได้ทนั ที
53
Suan Dusit Rajabhat University (Computer Science)
การป้องกันหน่วยความจา (Memory Protection)
 2. บิตใช้งานไม่ได้ (Invalid Bit) เป็ นบิตสถานะทีบ่ อกว่าข้อมูลในเพจนัน้ ไม่มอี ยู่ใน
หน่วยความจาทางกายภาพแล้ว (Physical Memory) และไม่สามารถนาไปใช้
งานได้ อาจเกิดจากกรณีทรี่ ะบบปฏิบตั กิ ารยังไม่ได้อ่านข้อมูลจากเพจเข้าสู่หน่วยความจา
หลัก (Main Memory) หรือข้อมูลของเพจทีต่ ้องการอ่านนัน้ ถูกสลับ
(Swapped) ออกจากหน่วยความจาแล้ว ซึง่ จะทาให้เกิดข้อผิดพลาดขึน้ ทีเ่ รียกว่า
“การผิดหน้า (Page Fault)” จึงจาเป็ นต้องโหลดเพจข้อมูลเข้าสู่หน่วยความจา
ก่อนแล้วจึงเปลีย่ นค่าของบิตใช้งานไม่ได้ (Invalid Bit) ให้เป็ นบิตใช้งานได้
(Valid Bit) แล้วจึงทาการประมวลผลข้อมูลนัน้ ใหม่อกี ครัง้ หนึง่
54
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.13 แสดงตารางเพจของบิตทีใ่ ช้งานได้-บิตทีใ่ ช้งานไม่ได้
(Valid (v) or Invalid (i) Bit in a Page Table)
55
Suan Dusit Rajabhat University (Computer Science)
การใช้เพจร่วมกัน (Shared Pages)
 เป็ นวิธกี ารแบ่งปันการใช้เพจร่วมกันในรูปแบบการแบ่งเวลา (Time-Sharing)
โดยข้อมูลนัน้ จะเป็ นข้อมูลทีใ่ ช้อยู่ในลักษณะมีี สามารถเปลีย่ นแปลงได้ (Non-Selfmodifying Code) ในขณะทีม่ กี ารประมวลผล แต่ใช้งานร่วมกันได้ เรียกข้อมูล
ชนิดนีว้ ่า “Reentrant Code” หรือ “Pure Code” ซึง่ จะเก็บไว้ในตาแหน่ง
ทางตรรกะ (Logical Address) เดียวกัน แต่ละโปรเซสมีขอ้ มูลเพจ (Own
Data Page) เป็ นของตัวเอง
56
Suan Dusit Rajabhat University (Computer Science)
การใช้เพจร่วมกัน (Shared Pages)
 รูปที่ 2.14 แสดงการใช้เพจร่วมกันระหว่างโปรเซส ซึง่ ประกอบไปด้วย 3 โปรเซส คือ
P1, P2, และ P3 ต้องการใช้งานโปรแกรม Text Editor ร่วมกันใน Page
0, Page1 และ Page3 ทีถ่ ูกจัดเก็บไว้ในหมายเลขเฟรมที่ 3, 4 และ 6 ดังนัน้ ถ้า
ระบบปฏิบตั กิ ารมีผูต้ ้องการใช้งาน 40 คน กาลังใช้งานโปรแกรม Text Editor
ซึง่ ใช้พน้ ื ที่ 150 KB และใช้เพจสาหรับเก็บข้อมูล 50 KB ดังนัน้ หากโปรเซสต่างใช้
งานพืน้ ทีใ่ นหน่วยความจาไม่ร่วมกันจะต้องใช้พน้ ื ทีใ่ นหน่วยความจาเท่ากับ 40 x
(150 + 50) = 8000 KB
57
Suan Dusit Rajabhat University (Computer Science)
การใช้เพจร่วมกัน (Shared Pages)
 แต่หากโปรเซสทัง้ หมดใช้งานเพจร่วมกันจะใช้พน้ ื ทีใ่ นหน่วยความจาเท่ากับ 150 +
(40 x 50) = 1250 KB ซึง่ จะช่วยลดการใช้พน้ ื ทีใ่ นหน่วยความจาลงได้ แต่ก ็
มีขอ้ เสียคือถ้าโปรเซสใดโปรเซสหนึง่ เสร็จจะไม่สามารถลบข้อมูลในเพจทีใ่ ช้งานร่วมกัน
(Shared Pages) ได้ ต้องรอจนกว่าโปรเซสอืน่ จะใช้งานข้อมูลในเพจทีใ่ ช้งาน
ร่วมกันเสร็จก่อนจึงจะลบข้อมูลในเพจได้ การใช้งานของโปรแกรมร่วมกันแบบอืน่ เช่น
คอมไพเลอร์ (Compilers) การประมวลผลในส่วนไลบรารี (Run-Time
Libraries) ระบบฐานข้อมูล (Database System) เป็ นต้น
58
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.14 แสดงภาพแวดล้อมของการใช้งานเพจร่วมกัน
(Sharing of Code In a Paging Environment)
59
Suan Dusit Rajabhat University (Computer Science)
โครงสร้างของตารางเพจ (Memory Protection)
เทคนิคการสร้างตารางเพจแบ่งออกเป็ น 3 รูปแบบ ได้แก่
 1.โครงสร้างแบบลาดับชั้น (Hierarchical Paging)
ระบบคอมพิวเตอร์สมัยใหม่จะสบับสนุนตาแหน่งพืน้ ทีท่ างตรรกะ (LogicalAddress Space) ขนาดใหญ่ (232 ถึง 264) ซึง่ โครงสร้างแบบลาดับชัน้ เป็ น
การแบ่งพืน้ ทีท่ างตรรกะออกเป็ นตารางเพจ (Page Table) หลายตาราง โดยใช้
อักอริทมึ ในการแบ่งเพจแบบ 2 ระดับ (Two-Level Page Table) ได้แก่
1.1 หมายเลขเพจ (Page Number)
1.2 ขอบเขตเพจ (Page Offset)
60
Suan Dusit Rajabhat University (Computer Science)
โครงสร้างของตารางเพจ (Memory Protection)
เทคนิคการสร้างตารางเพจแบ่งออกเป็ น 3 รูปแบบ ได้แก่
 Ex ระบบคอมพิวเตอร์ขนาด 32 บิต ประกอบด้วยเพจขนาด (Page Size) 4 KB
ตาแหน่งทางตรรกะถูกแบ่งเป็ น 2 ส่วน คือ ส่วนแรกขนาด 20 บิต (Bits) เก็บ
หมายเลขเพจ (Page Number) และส่วนทีส่ องขนาด 12 บิต (Bits) เก็บ
ขอบเขตเพจ (Page Offset) ซึง่ แสดงโครงสร้างข้อมูลดังนี้
61
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.15 แสดงโครงสร้างตาแหน่งทางตรรกะแบบ 2 ระดับขนาด 32 บิต
(Address Translation for a Two-Level 32-Bit Paging Architecture)
62
Suan Dusit Rajabhat University (Computer Science)
โครงสร้างของตารางเพจ (Memory Protection)
เทคนิคการสร้างตารางเพจแบ่งออกเป็ น 3 รูปแบบ ได้แก่
 2.โครงสร้างแบบตารางเฮช (Hash Page Table)
ระบบคอมพิวเตอร์ทจี่ ะใช้โครงสร้างแบบนี้ ต้องมีตาแหน่งขนาดพืน้ ทีม่ ากกว่า 32 บิต
โดยค่าของเฮชจะอยู่ภายในหมายเลขเพจเสมือน (Virtual-Page Number)
ซึง่ แต่ละหน่วย (Elements) ในตารางเฮชภายในจะมีลงิ ก์ลสิ ต์ (Link List)
เชือ่ มโยงไปยังหน่วยทีอ่ ยู่ในพืน้ ทีเ่ ดียวกัน โดยข้อมูลในแต่ละหน่วยจะประกอบไปด้วย
2.1 ค่าหมายเลขเพจเสมือน (Virtual-Page Number)
2.2 ค่าดรรชนีทชี่ ไ้ ี ปยังเฟรมเพจ (Page Frame)
2.3 ค่าของพอยเตอร์ (Pointer) ทีช่ ไ้ ี ปยังหน่วยทีเ่ ชือ่ มโยงใน Link List
63
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.16 แสดงโครงสร้างแบบตารางแฮช (Hashed Page Table)
64
Suan Dusit Rajabhat University (Computer Science)
โครงสร้างของตารางเพจ (Memory Protection)
เทคนิคการสร้างตารางเพจแบ่งออกเป็ น 3 รูปแบบ ได้แก่
 3.โครงสร้างเพจแบบผกผัน (Inverted Page Table) ระบบ
คอมพิวเตอร์ทจี่ ะใช้โครงสร้างแบบนี้ ต้องมีคุณสมบัตกิ าหนดโดย Page Table จะมี
เพียงหนึง่ โปรเซสใช้งานพืน้ ทีห่ น่วยความจา โดยโปรแกรมหรือข้อมูลจะประกอบไปด้วย
ตาแหน่งของเพจเสมือน (Virtual-Address of Page) ทีเ่ ก็บอยู่ใน
หน่วยความจาจริง (Real Memory) ดังรูปที่ 2.17 จะมีเพียงหนึง่ ตารางเพจ
(One Page Table) เท่านัน้ ทีอ่ ยู่ในหน่วยความจา โดยแต่ละตาแหน่งของเพจ
เสมือน (Virtual-Address of Page) ประกอบไปด้วย
< process-id, page-number, offset >
65
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.17 แสดงโครงสร้างแบบผกผัน (Inverted Page Table)
66
Suan Dusit Rajabhat University (Computer Science)
การแบ่งส่วน (Segmentation)
 วิธกี ารนีเ้ ป็ นการจัดสรรพืน้ ทีใ่ นหน่วยความจาหลักออกเป็ นส่วนๆ ตามขนาดของ
โปรแกรมหรือโมดูลย่อย เรียกพืน้ ทีน่ ว้ ี ่า Segment โดยแต่ละโมดูลจะถูกแบ่งออกเป็ น
ส่วนๆ (Segments) ทีม่ ขี นาดไม่เท่ากัน เช่น โปรแกรมหลัก ไรซีเยอร์ ฟั งก์ชนั ตัว
แปร บล็อก สแต็ก ตารางสัญลักษณ์ และอาร์เรย์ ซึง่ แต่ละโมดูลจะมีการทางานสัมพันธ์
กัน แสดงดังรูปที่ 2.18
67
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.18 แสดงโครงสร้างแบบแบ่งส่วน (Segmentation)
68
Suan Dusit Rajabhat University (Computer Science)
การแบ่งส่วน (Segmentation)
 Ex จากรูปที่ 2.19 กาหนดให้มกี ารแบ่งส่วน (Segment) ออกเป็ น 5 ส่วน
(Segment) มีหมายเลขตัง่ แต่ 0 ถึง 4 โดยแต่ละส่วน (Segment) ถูกจัดเก็บ
อยู่ในหน่วยความจาทางกายภาพ (Physical memory) ภายในตารางการแบ่ง
ส่วนมีขอ้ มูลอยู่ภายใน โดยกาหนดตาแหน่งเริม่ ต้นเรียกว่าตาแหน่งฐาน (Base) และ
ขนาดของการแบ่งส่วนเรียกว่า Limit อธิบายได้ดงั นี้
1.กาหนดให้ Segment 2 มีความยาว 400 ไบต์และตาแหน่งเริม่ ต้น
(Base of Segment) ที่ 4300 ดังนัน้ ถ้ามีการอ้างอิงไปยังไบต์ท ี่ 53 ของ
Segment 2 ก็จะทาการจับคู่ (Map) ไปยังตาแหน่งเริม่ ต้นบวกกับตาแหน่งที่
อ้างอิงถึงจะได้เท่ากับ 4300 + 53 = 4353
69
Suan Dusit Rajabhat University (Computer Science)
การแบ่งส่วน (Segmentation)
 Ex 2.กาหนดให้ Segment 3 มีความยาว 1000 ไบต์และตาแหน่งเริม่ ต้น
(Base of Segment) ที่ 3200 ดังนัน้ ถ้ามีการอ้างอิงไปยังไบต์ท ี่ 852 ของ
Segment 3 ก็จะทาการจับคู่ (Map) ไปยังตาแหน่งเริม่ ต้นบวกกับตาแหน่งที่
อ้างอิงถึงจะได้เท่ากับ 3200 + 852 = 4052
3.กาหนดให้ Segment 0 มีความยาว 1000 ไบต์และตาแหน่งเริม่ ต้น
(Base of Segment) ที่ 1400 ดังนัน้ ถ้ามีการอ้างอิงไปยังไบต์ท ี่ 1222 ซึง่
Segment 0 มีความยาวเพียง 1000 ไบต์ เป็ นหน้าทีข่ องระบบปฏิบตั กิ ารในการ
เลือ่ น (Tab) ไปยัง Segment อืน่ ๆ ทีม่ ขี นาดความยาวไบต์ (Bytes Long)
ทีม่ ขี นาดเพียงพอกับตาแหน่งทีต่ ้องการอ้างถึง
70
Suan Dusit Rajabhat University (Computer Science)
รูปที่ 2.19 แสดงโครงสร้างตารางการแบ่งส่วน (Segmentation Table)
71
Suan Dusit Rajabhat University (Computer Science)
สรุป (Conclusion)
 การจัดการหน่วยความจา (Memory Management) เป็ นหน้าทีห่ นึง่ ของ
ระบบปฏิบตั กิ าร ซึง่ มีหน้าทีห่ ลักในการจัดสรรพืน้ ทีใ่ นการใช้งานให้กบั หลายโปรแกรม
(Multiprogramming) หรือข้อมูลต่างๆ โดยใช้ฮาร์ดแวร์ (Hardware
provided) เข้าไปช่วยสนับสนุนวิธกี ารเข้าถึงตาแหน่งในหน่วยความจาทัง้ ในส่วน
หน่วยความจาทางตรรกะ (Logical memory) และหน่วยความจาทางกายภาพ
(Physical memory) ซึง่ มีหน่วยประมวลผลกลาง (CPU) เป็ นตัว
ประมวลผล (Generated) อีกที
72
Suan Dusit Rajabhat University (Computer Science)
สรุป (Conclusion)
 Memory Management Algorithms มี 4 แบบ คือ
1. การจัดสรรแบบต่อเนือ่ ง (Contiguous allocations)
2. การแบ่งหน้า (Paging)
3. การแบ่งส่วน (Segmentation)
4.
การผสมผสานระหว่างวิธแี บ่งหน้าและแบ่งส่วน
(Combination of
Paging and Segmentation
73
Suan Dusit Rajabhat University (Computer Science)
สรุป (Conclusion)
Memory Management Strategy
1. ความสามารถของฮาร์แวร์ (Hardware Support) เป็ นพืน้ ฐานทีช่ าวย
สนับสนุนการทางานของกระบวนการการแบ่งหน้า (Paging) และการแบ่งส่วน
(Segmentation) โดยโครงสร้างตารางการจับคู่ระหว่างข้อมูลและตาแหน่งของ
หน่วยความจาหลัก
2. ประสิทธิภาพ (Performance) วิธที ใี่ ช้จดั การหน่วยความจาหลักแต่ละวิธจี ะมี
ความซับซ้อน และใช้ระยะเวลาในการจับคู่ระหว่างหน่วยความจาทางตรรกะ (Logical
memory) และหน่วยความจาทางกายภาพ (Physical memory) ดังนัน้
ระบบปฏิบตั กิ ารจึงต้องเลือกใช้วธิ ที เี่ หมาะสมและรวดเร็ว
74
Suan Dusit Rajabhat University (Computer Science)
สรุป (Conclusion)
Memory Management Strategy
3. การจัดการพืน้ ทีว่ ่าง (Fragmentation) ในระบบคอมพิวเตอร์แบบหลาย
โปรแกรม (Multiprogramming) มีความสามารถในการประมวลผลสูง จะต้องมี
การจัดการพืน้ ทีว่ ่างทีเ่ หมาะสมกับขนาดของ Process เพือ้ ป้ องกันปัญหาทีเ่ กิดขึน้
4. การย้ายตาแหน่ง (Relocation) การนจัดการหน่วยความจาหลักทีด่ คี วร
สามารถย้ายโปรเซส (Process) ในหน่วยความจาหลักได้อย่างอัตโนมัตเิ พือ่ แก้ปญั หา
การเกิดพิน้ ทีว่ ่าง (Fragmentation) ในหน่วยความจาหลัก
5. การสลับ (Swapping) กลไกการสลับ Process เข้า-ออก จาก
หน่วยความจาหลัก ควรให้มกี ารสลับโปรเซสให้นอ้ ยทีส่ ุดภายในหนึง่ หน่วยเวลา
75
Suan Dusit Rajabhat University (Computer Science)
สรุป (Conclusion)
Memory Management Strategy
6. การใช้งานร่วมกัน (Sharing) ระบบปฏิบตั กิ ารทีด่ คี วรสามารถจัดสรรโรปแกรม
หรือข้อมูลต่างๆ ให้สามารถทางานร่วมกันได้ เพือ่ ให้โปรเซส (Process) จานวนมาก
สามารถทางานร่วมกันได้
7. การป้ องกัน (Protection) การป้ องกันคาสัง่ หรือข้อมูลต่างๆ โครงสร้าง
ข้อกาหนดเงือ่ นไขในการอ่านหรือเขียนข้อมูล โดยระบบต้องมีการตรวจสอบคาสัง่ หรือ
ข้อมูลต่างๆ ขณะกาลังประมวลผล พร้อมถึงแสดงข้อผิดพลาดได้
76
Suan Dusit Rajabhat University (Computer Science)
The End
Lesson 2
Suan Dusit Rajabhat University (Computer Science)