Object-Oriented Software Development

Download Report

Transcript Object-Oriented Software Development

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