Chapter6.pptx

Download Report

Transcript Chapter6.pptx

Memory Management
1
หน้ าที่หน่วยความจาหลัก
◦เก็บระบบปฏิบตั ิการ
◦เก็บโปรแกรมของผู้ใช้
◦เก็บข้ อมูลที่จะใช้
องค์ประกอบหน่วยความจา
◦แอดเดรส (address)
◦ข้ อมูล (data)
2
ความต้ องการหน่วยความจา
◦ความเร็วสูง
◦มีความเสถียรสูง
◦ความจุสงู
◦ราคาต่า
3
หน่ วยความจาหลัก
ROM เป็ นหน่วยความจาถาวร ไม่สญ
ู เสียข้ อมูล
แม้ ไฟดับ มักใช้ เก็บข้ อมูลพื ้นฐานที่จาเป็ น
RAM มักจะใช้ เป็ นหน่วยความจาหลัก มีอยู่ 2
ประเภท คือ static ram และ dynamic
ram
หน่ วยความจาสารอง
 มีความเร็วช้ า เก็บไว้ ได้ นาน เช่น ดิสก์ ฮาร์ ดดิสก์
4
หน่วยความจาหลักเป็ นศูนย์กลางของการทางานต่าง ๆ ของ
ระบบคอมพิวเตอร์ ในปั จจุบนั
 หน่วยความจาหลักคือพื ้นที่เก็บข้ อมูลขนาดใหญ่
ประกอบด้ วย

พื ้นที่เก็บข้ อมูลย่อย มีหน่วยเป็ น Byte
3
 ตาแหน่งหรื อที่อยูข
่ องพื ้นที่ย่อย (Address)

2
1
Memory
5

ส่วนของ OS ที่ทาหน้ าที่จดั การกับหน่วยความจาได้ แก่
ตัวจัดการหน่ วยความจา (Memory
Manager) ซึง่ มีหน้ าที่ตา่ ง ๆ ดังนี ้
ตรวจสอบว่าส่วนใดของหน่วยความจาที่กาลังถูกใช้ งาน ส่วนใด
ว่าง
 จัดหน่วยความจาให้ กบ
ั งานที่ทางาน
 ส่งหน่วยความจาคืนสูร่ ะบบเมื่องานเสร็ จ
 จัดการสลับหน่วยความจาหลัก กับพื ้นที่ฮาร์ ดดิสก์ เมื่อ
หน่วยความจาหลักมีขนาดเล็กเกินไปที่จะให้ งานทางานได้

6
การจัดสรรหน่ วยความจา
แบบต่อเนื่ อง
การจัดสรรหน่ วยความจาแบบไม่
ต่อเนื่ อง
7
 การจัดสรรหน่ วยความจา
แบบต่อเนื่ อง
◦ โปรแกรมหนึง่ ๆ จะถูกโหลดลงหน่วยความจาได้ ก็ตอ่ เมื่อ
มีหน่วยความจาขนาดใหญ่ที่จะวางโค้ ดของโปรแกรมนัน้
ลงไปทังโปรแกรม
้
◦ โปรแกรมจะอยูต่ ิดต่อกันในหน่วยความจาหลักเป็ นผืน
เดียวกัน ไม่มีสว่ นหนึ่งของโปรแกรมแยกจากกัน
◦ ถ้ ามีพื ้นที่วา่ งไม่พอก็จะรอจนกว่าจะมีหน่วยความจาว่าง
เหลือพอ
8
 การจัดสรรหน่ วยความจาแบบไม่
ต่อเนื่อง
◦โปรแกรมจะถูกแบ่งออกเป็ นกลุม่ หรื อส่วนย่อย ๆ หลาย
ๆ ส่วน เมื่อรันโปรแกรมจะโหลดลงหน่วยความจาที่ไหน
ก็ได้ ที่มีที่วา่ งพอ แต่ละส่วนไม่จาเป็ นต้ องเรี ยงต่อเป็ นผืน
เดียว
9
การจัดการหน่วยความจานันมี
้ หลายวิธี ตังแต่
้ การจัดการแบบ
พื ้นฐาน จนถึงแบบที่ซบั ซ้ อน
 การจัดการหน่วยความจาจึงมีการแบ่งออกเป็ น 2 ระบบดังนี ้
 ระบบโปรแกรมเดี่ยว (Monoprogramming or Single
program)
 ระบบหลายโปรแกรม (Multiple program)

10


เป็ นวิธีการจัดการหน่วยความจาที่ง่ายทีส่ ดุ เนื่องจากจะมีโปรแกรม
เพียง 1 โปรแกรมทางานในขณะใดขณะหนึง่
ดังนันการใช้
้
งานหน่วยความจาจะมีเพียงโปรแกรมนัน้ ๆ กับ
ระบบปฏิบตั กิ ารเท่านัน้ ดังรูป
OS
โปรแกรมของ
ผู้ใช้
ว่าง
11
User
program
Operating
system in
RAM
Operatin
g
system
in
ROM
User
program
Device Manager
in ROM
User
progra
m
Operating
system in
RAM
12

จากรูปเราอาจแบ่งหน่วยความจาหลักออกเป็ น 2 ส่วนคือ

ส่ วนของ OS เป็ นหน่วยความจาที่ถกู ครอบครองโดย OS
13
ระบบโปรแกรมเดียว
Monoprogramming or Single
program … ต่อ
่
เมือหน่
วยความจาหลักถูกแบ่งออกเป็ น 2 ส่วน
แล ้ว ตัว OS จึงจาเป็ นต ้องมีวธิ ก
ี ารป้ องกันไม่ให ้
้ ้ามาในส่วนของ OS
โปรแกรมของผู ้ใช ้รุกลาเข
 ถ ้า OS ปล่อยให ้ผู ้ใช ้เข ้ามาใช ้หน่ วยความจาที่
OS ใช ้อยู่ โปรแกรมของผูใ้ ช ้อาจทาลายตัว
โปรแกรมของ OS เสียหายจนระบบทางานไม่ได ้

14
 วิธีที่นิยมในการป้องกันการรุ กล ้าได้ แก่การสร้ างรี จีสเตอร์
ขึ ้นมาในซีพียเู รี ยกว่ารีจส
ี เตอร ์ขอบเขต
(boundary register)
 รี จีสเตอร์ จะทาหน้ าที่เก็บค่าแอสเดรสที่เป็ นรอยต่อระหว่าง
ส่วนของ os และส่วนของผู้ใช้
ระบบหลายโปรแกรม Multiple program
 ระบบคอมพิวเตอร์ สว
่ นใหญ่ในปั จจุบนั อนุญาตให้ มีงาน
หลาย ๆ งานทางานในเวลาเดียวกัน
 การที่ระบบมีหลายงานทางานพร้ อมกันนัน้ หมายความว่าแต่
ละงานต้ องถูกบันทึกอยูใ่ นหน่วยความจาหลัก
 ดังนันเพื
้ ่อให้ คอมพิวเตอร์ สามารถทางานหลายงานพร้ อมกัน
จึงจาเป็ นต้ องทาการแบ่งพื ้นที่หน่วยความจาออกเป็ นส่วน ๆ
สาหรับแต่ละงานเพื่อไม่ให้ ปะปนกัน
ระบบหลายโปรแกรม Multiple program
 การแบ่ งหน่ วยความจาสาหรั บระบบหลาย
โปรแกรมมี 2 แบบ
 การแบ่งหน่วยความจาขนาดคงที่ (Fixed partition
multi-programming)
 การแบ่งหน่วยความจาขนาดไม่คงที่ (Variable
partition multi-programming)
17
การแบ่ งหน่ วยความจาขนาดคงที่
 วิธีนี ้หน่วยความจาจะถูกแบ่งออกเป็ นหลายส่วน
แต่ละส่วนมีขนาด คงที่ และในแต่ละส่วนจะมี
เพียงงานเดียว และการแบ่งนันจะเปลี
้
่ยนแปลงอีก
ไม่ได้
 ดังนันจ
้ านวนงานที่ทางานได้ พร้ อมกันจะเท่ากับ
จานวนส่วนย่อยของหน่วยความจาหลัก
การแบ่ งหน่ วยความจาขนาดคงที่
 การแบ่งหน่วยความจาขนาดคงที่ แบ่งได้ เป็ น 2
แบบ
การแปลงและโหลดด้ วยค่าสัมบูรณ์ (Absolute
translation and loading)
 การแปลงและโหลดด้ วยค่าสัมพัทธ์
(Relocatable translation and loading)

19
การแปลงและโหลดด้ วยค่ าสัมบูรณ์
Absolute translation and loading
ค่าแอดเดรสสัมบูรณ์ คือค่าแอดเดรสจริ ง ๆ ในหน่วยความจา
 หน่วยความจาหลักจะถูกแบ่งออกเป็ นส่วนที่มีขนาดคงที่ และ
แต่ละส่วนจะมีแอดเดรสที่เป็ นขอบเขตบน และล่างอยู่ ดังนัน้
เมื่องานต้ องการใช้ หน่วยความจาหลักในส่วนย่อยใดก็ตาม
OS จะต้ องกาหนดแอดเดรสจริ งให้ กบั งาน เพื่อให้ งานเข้ าไป
ครอบครองหน่วยความจาหลักในส่วนที่ถกู ต้ อง
 นิยมใช้ กับคิวงานที่เป็ นแบบ Multiple queues

การแปลงและโหลดด้ วยค่ าสัมบูรณ์
Absolute translation and loading … ต่ อ
คิวของส่วนที่ 1
งานที่เหมาะกับส่วนที่ 1
คิวของส่วนที่ 2
งานที่เหมาะกับส่วนที่ 2
คิวของส่วนที่ 3
งานที่เหมาะกับส่วนที่ 3
OS
65000
ส่วนที่ 1
60000
ส่วนที่ 2
50000
ส่วนที่ 3
0
การแปลงและโหลดด้ วยค่ าสัมบูรณ์
Absolute translation and loading … ต่ อ


ข้ อเสียของวิธีนีค้ ือ ถ้ างานพร้ อมจะรันแล้ ว แต่สว่ นของ
หน่วยความจาหลักที่ต้องการ กาลังถูกใช้ โดยงานอื่น ก็ต้องรอจนกว่า
งานที่ใช้ หน่วยความจาที่ต้องการทางานเสร็ จสิ ้น ถึงแม้ วา่ ส่วนอื่น ๆ จะ
ว่างอยูก่ ็ตาม ทาให้ สญ
ู เสียหน่วยความจาในส่วนอื่นโดยเปล่า
ประโยชน์
ถ้ างานส่วนใหญ่เป็ นงานที่มีขนาดเล็ก คิวของส่วนที่มีขนาดเล็กจะเต็ม
อยูต่ ลอดเวลา ในขณะที่ควิ ของส่วนที่มีขนาดใหญ่ยงั คงว่างอยู่ ทาให้
งานที่มีขนาดเล็กจะต้ องรอในคิว ในขณะที่หน่วยความจาหลักยัง
เหลืออยูม่ าก
การแปลงและโหลดด้ วยค่ าสัมพัทธ์
Relocatable translation and loading




เพื่อแก้ ปัญหาที่เกิดขึ ้นในการแปลงและโหลดด้ วยค่าสัมบูรณ์ จึงทาให้ เกิด
วิธีการที่เรี ยกว่าการแปลงและโหลดด้ วยค่าสัมพัทธ์
งานจะถูกแปลงให้ ได้ แอดเดรสเป็ นค่าสัมพัทธ์กบั จุดเริ่ มต้ นของงาน จุดเริ่ มต้ น
ของงานก็คือแอดเดรส 0 นัน่ เอง
ถ้ างานมีขนาด 100 byte เมื่องานถูกโหลดลงในหน่วยความจาหลักจะไม่รอให้
แอดเดรส 0 ถึง 100 ว่าง แต่จะโหลดลงส่วนที่มีขนาดมากกว่าหรื อเท่ากับขนาด
ของงาน
ดังนันคิ
้ วงานจึงไม่จาเป็ นต้ องเป็ น Multiple Queues ใช้ เป็ น Single Queues
การแปลงและโหลดด้ วยค่ าสัมพัทธ์
Relocatable translation and loading … ต่ อ
วิธีการจัดคิวใช้ วิธี FCFS คืองานใดมาก่อนก็มีสิทธิ์โหลดลง
ในส่วนของหน่วยความจาหลักที่ชี ้อยู่
 แต่ถ้าขนาดของงานมีขนาดใหญ่กว่าส่วนของหน่วยความจา
หลักที่ชี ้อยู่ OS จะข้ ามงานนันไปท
้ าให้ กบั งานอื่น ๆ ที่อยูถ่ ดั ไป
 สาหรับงานที่ถก
ู ข้ ามก็จะต้ องคอยอยูใ่ นคิว ซึง่ OS จะกาหนด
ว่างานจะถูกมองข้ ามได้ ไม่เกินจานวนครัง้ ที่กาหนด ถ้ าเกิน
ระบบจะต้ องเลือกงานนันเข้
้ าไปทางาน

การแปลงและโหลดด้ วยค่ าสัมพัทธ์
Relocatable translation and loading … ต่ อ
คิว
งาน
OS
65000
ส่วนที่ 1
60000
ส่วนที่ 2
50000
ส่วนที่ 3
0
การป้องกัน OS ในระบบหลายโปรแกรมประเภทแบ่ง
หน่วยความจานิยมใช้ รีจีสเตอร์ ขอบเขตหลาย ๆ ตัว
ส่วนย่อยแต่ละส่วนจะใช้ รีจีสเตอร์ ขอบเขต 2 ตัว ในการ
แยกแยะส่วนแต่ละส่วน เรี ยกว่ารี จีสเตอร์ ขอบเขตบน
(high boundary register) และรี จีสเตอร์
ขอบเขตล่าง (Low boundary register)
 โปรแกรมของผู้ใช้ สามารถข้ ามเข้ าไปในขอบเขตของ OS
ได้ โดยผ่านทางคาสัง่ เรี ยกระบบ

ข้ อเสียของการแบ่ งหน่ วยความจาขนาดคงที่

การแบ่งหน่วยความจาขนาดคงที่เป็ นวิธีการที่ง่ายและไม่ซบั ซ้ อนต่อ
การสร้ าง OS อย่างไรก็ตามมีข้อเสียดังนี ้



พื ้นที่ที่กาหนดให้ มีขนาดและจานวนที่คงที่เมื่อระบบเริ่ มทางานนัน้ จะเป็ น
ตัวจากัดจานวนของงานที่สามารถเข้ ามาใช้ ระบบได้
เนื่องจากระบบมีการกาหนดพื ้นที่แบบคงที่ ดังนันงานที
้
่มีขนาดเล็กจะไม่
สามารถใช้ พื ้นที่ของหน่วยความจาได้ อย่างเต็มประสิทธิภาพ
การจัดแบ่งพื ้นที่แบบคงที่จะทาให้ เกิดส่วนที่ไม่ถกู ใช้ งาน ซึง่ เราเรี ยกว่าเกิด
การแตกกระจาย (Fragmentation) ซึง่ มีอยู่ 2 รูปแบบ
 การแตกกระจายภายนอก (External fragmentation)
 การแตกกระจายภายใน (Internal fragmentation)
ข้ อเสียของการแบ่ งหน่ วยความจาขนาดคงที่
OS
ส่วนที่ 1
ว่าง
การแตกกระจายภายนอก
ส่วนที่ 2
(งานของผู้ใช้ )
ส่วนที่ 3
(งานของผู้ใช้ )
การแตกกระจายภายใน
การแบ่ งหน่ วยความจาขนาดไม่ คงที่
Variable partition multi-programming
จากปั ญหาที่พบของการทางานของการแบ่งหน่วยความจา
ขนาดคงที่ ผู้ออกแบบ OS จึงได้ ทาการปรับปรุงการแบ่ง
หน่วยความจาให้ ดีขึ ้น
 โดยระบบจะกาหนดให้ มีการแบ่งหน่วยความจาตามความ
ต้ องการของงาน และไม่มีการจากัดขอบเขตของ
หน่วยความจาหลัก
 การแบ่งหน่วยความจาแบบนี ้เรี ยกว่า การแบ่ ง
หน่ วยความจาขนาดไม่ คงที่

การแบ่ งหน่ วยความจาขนาดไม่ คงที่
Variable partition multi-programming … ต่ อ

ตัวอย่าง ถ้ าเรามีหน่วยความจาหลักทังหมด
้
1 MB ดังรูป
OS
128 K
OS
320 K
ว่าง
896 K
โปรเซส A
(ต้ องการ 320 K)
ว่าง
320 K
576 K
การแบ่ งหน่ วยความจาขนาดไม่ คงที่
Variable partition multi-programming … ต่ อ
OS
A
ว่าง
OS
320 K
A
320 K
576 K
B
224 K
ว่าง
352 K
โปรเซส B
(ต้ องการ 224 K)
การแบ่ งหน่ วยความจาขนาดไม่ คงที่
Variable partition multi-programming … ต่ อ
OS
OS
A
320 K
A
320 K
B
224 K
B
224 K
352 K
C
288 K
64 K
ว่าง
โปรเซส C
(ต้ องการ 288 K)
ว่าง
การแบ่ งหน่ วยความจาขนาดไม่ คงที่
Variable partition multi-programming … ต่ อ
OS
OS
A
320 K
A
320 K
B
224 K
B
224 K
C
288 K
64 K
C
288 K
64 K
ว่าง
โปรเซส D
(ต้ องการ 128 K)
ว่าง
การแบ่ งหน่ วยความจาขนาดไม่ คงที่
Variable partition multi-programming … ต่ อ
OS
OS
A
320 K
A
320 K
B
224 K
ว่าง
224 K
C
288 K
64 K
C
288 K
64 K
ว่าง
โปรเซส B
(ทางานเสร็จ)
ว่าง
การแบ่ งหน่ วยความจาขนาดไม่ คงที่
Variable partition multi-programming … ต่ อ
OS
A
320 K
OS
A
ว่าง
224 K
D
C
288 K
64 K
ว่าง
C
ว่าง
โปรเซส D
(ต้ องการ 128 K)
ว่าง
320 K
128 K
96 K
288 K
64 K
การแบ่ งหน่ วยความจาขนาดไม่ คงที่
Variable partition multi-programming … ต่ อ
จากรูปจะเห็นว่าเมื่อระบบทางานไปได้ สกั ระยะหนึง่ เราจะพบ
ช่องว่างเกิดขึ ้นอย่างมากมายในหน่วยความจาหลัก ซึ่งจะทา
ให้ การใช้ งานหน่วยความจาหลักมีประสิทธิภาพลดลง
 เราเรี ยกช่องว่างเล็ก ๆ เหล่านี ้ว่า การแตกกระจายภายนอก
(External fragmentation)
 ดังนันการที
้
่จะวางโปรเซสลงในหน่วยความจาหลักนันจะต้
้ อง
มีการตัดสินใจที่ดี ซึง่ OS เรี ยกว่า การจัดยุทธวิธีการวาง

การจัดยุทธวิธีการวาง
เมื่อมีโปรเซสถูกส่งเข้ ามาในหน่วยความจาหลัก ซึง่ ขณะนัน้
หน่วยความจาหลักอาจมีช่องว่างเกิดขึ ้นกระจายไปทัว่
 การจะจัดว่าโปรเซสใดควรจะวางไว้ ในช่องว่างใด มีวิธีการอยู่
3 แบบดังนี ้

เลือกช่ องว่ างที่พบก่ อน (First-Fit)
 เลือกช่ องว่ างที่เหมาะสม (Best-Fit)
 เลือกช่ องว่ างที่ใหญ่ ท่ ส
ี ุด (Worst-Fit)

การจัดยุทธวิธีการวาง … ต่ อ

เลือกช่ องว่ างที่พบก่ อน (First-Fit)
วิธีการนี ้ OS จะตรวจหาช่องว่างใน
หน่วยความจา เมื่อใดที่พบช่องว่างที่มีขนาดใหญ่
พอที่จะวางโปรเซสใหม่ลงไปได้ OS จะเลือก
ช่องว่างนันทั
้ นที ทาให้ การเลือกช่องว่างทาได้
รวดเร็ว
การจัดยุทธวิธีการวาง … ต่ อ

เลือกช่ องว่ างที่เหมาะสม (Best-Fit)
วิธีการนี ้ OS จะตรวจหาช่องว่างที่มีอยูใ่ น
หน่วยความจาทังหมด
้
แล้ วเลือกเอาช่องว่างที่เมื่อ
วางโปรเซสลงไปแล้ วจะเกิดช่องว่างขนาดเล็ก
ที่สดุ
39
่
◦เลือกช่องว่างทีใหญ่
ทสุ
ี่ ด
(Worst-Fit)
การเลือกช่องว่างแบบนี ้จะตรงกันข้ ามกับ
แบบที่ 2 OS จะเลือกช่องว่างที่เมื่อวาง
โปรเซสลงไปแล้ วจะเกิดช่องว่างขนาดใหญ่
ที่สดุ
การจัดยุทธวิธีการวาง … ต่ อ
OS
16 K
ใช้ งาน
14 K
โปรเซสใหม่ขนาด 13 K
ใช้ งาน
5K
ใช้ งาน
30 K
คาถาม จงใช้ ยทุ ธวิธีทงั ้ 3 แบบวางโปรเซสใหม่นี ้
การรวมโฮล (Coalescing Holes)

เมื่อมีชอ่ งว่าง 2 ช่องติดกันในหน่วยความจา OS สามารถที่จะรวม
ช่องว่างทัง้ 2 นี ้เป็ นช่องว่างขนาดใหญ่ช่องเดียว ซึง่ เราเรี ยกว่า การ
รวมโฮล (Coalescing Holes) แสดงดังรูป
OS
โปรแกรมอื่น ๆ
2K
OS
โปรแกรมอื่น ๆ
2K
โปรแกรม A 5 K
5K
โปรแกรมอื่น ๆ
โปรแกรม
A จบ โปรแกรมอื่น ๆ
OS
โปรแกรมอื่น ๆ
7K
โปรแกรมอื่น ๆ
การบีบอัดหน่ วยความจา (Storage Compaction)
ถึงแม้ วา่ จะมีการรวมโฮลเกิดขึ ้น แต่ช่องว่างที่ไม่อยูต่ ิดกันก็
ยังคงมีกระจายอยูใ่ นหน่วยความจา
 ซึง่ การมีช่องว่างขนาดเล็ก ๆ หลายช่อง เมื่อนามารวมกันก็จะ
ทาให้ เกิดช่องว่างขนาดใหญ่ซงึ่ มากพอสาหรับ 1 โปรเซสได้
 OS จะต้ องสามารถที่จะทาการบีบอัดหน่วยความจา โดยย้ าย
เอาหน่วยความจาที่ถกู ครอบครองโดยโปรเซสต่าง ๆ ไปอยู่ชิด
ติดกันที่ด้านใดด้ านหนึง่ ซึง่ จะทาให้ เกิดช่องว่างใหญ่เพียงช่อง
เดียว จึงทาให้ โปรเซสอื่น ๆ สามารถเข้ ามาใช้ หน่วยความจาที่
เหลือได้

การบีบอัดหน่ วยความจา (Storage Compaction) … ต่ อ
OS
16 K
OS
ใช้ งาน 1
ใช้ งาน 1
ใช้ งาน 2
14 K
ใช้ งาน 3
ใช้ งาน 2
5K
ใช้ งาน 3
30 K
ว่าง
การบีบอัดหน่ วยความจา (Storage Compaction) … ต่ อ
 ข้ อเสียของการบีบอัดหน่วยความจา
ระบบจะต้ องหยุดการทางานของโปรเซสทุกโปรเซสไว้
ชัว่ ขณะหนึง่ เพื่อที่จะทาการบีบอัด
 ซึง
่ อาจจะต้ องใช้ เวลามากทาให้ การทางานของระบบ
ช้ าลง โดยเฉพาะกับการทางานในระบบโต้ ตอบ
(Interactive)

เป็ นการสลับโปรแกรมไปสูห่ น่วยความจาสารองเมื่อโปรแกรมไม่
ต้ องการหน่วยความจาหลักเรี ยกว่าการสลับออก
(swapped out) และนาโปรแกรมเข้ ามาใช้ หน่วยความจา
ใหม่เมื่อต้ องการใช้ หน่วยความจาเรี ยกว่าการสลับเข้า
(swapped in)
 โปรแกรมจะอยูใ่ นหน่วยความจาและถูกสลับออกเมื่อเกิดเหตุการณ์
3 กรณี คือ

 โปรแกรมจบ
 โปรแกรมต้ องการใช้ งานอินพุต-เอาต์พตุ
 หมดเวลาควอนตัม
OS
โปรแกรมของ
ผู้ใช้
สลับเข้ า
swapped In
D
A
B
C
ว่าง
สลับออก
swapped out
โปรแกรมของผู้ใช้
เนื่องจากโปรแกรมของผู้ใช้ มีขนาดใหญ่กว่าหน่วยความจาหลัก
จึงต้ องแก้ ปัญหานี ้ ถ้ าเป็ นกรณีโปรแกรมเดี่ยวจะแก้ ปัญหาด้ วย
การทาโอเวอร์ เลย์
 การทาโอเวอร์ เลย์ (overlay) เป็ นหน้ าที่ของผู้เขียนโปรแกรม
เอง OS ไม่ได้ จัดการให้
 ผู้เขียนโปรแกรมแบ่งโปรแกรมออกเป็ นส่วนย่อยหลาย ๆ ส่วน แต่
ละส่วนต้ องมีขนาดเล็กกว่าหน่วยความจา อาศ ัยหลักการ
สลับโปรแกรม โดยที่สว่ นแรกจะอยูใ่ นหน่วยความจา
ตลอดเวลาแล้ วโหลดส่วนอื่นเข้ ามาทับ

โปรแกรมหลัก
OS
ส่ วนที่ 1
โปรแกรมย่ อย
ส่ วนที่ 2
หน่ วยความจา
โปรแกรมของผู้ใช้ แบ่ งเป็ นส่ วนย่ อยต่ าง ๆ
หน่ วยความจาเสมือน (Virtual Memory)




การใช้ หน่วยความจาของโปรแกรมผู้ใช้ ที่กล่าวมานัน้ จะเห็นว่าขนาด
ของโปรแกรมต้ องมีขนาดเล็กกว่าขนาดของหน่วยความจาที่เหลืออยู่
แต่ถ้าโปรแกรมของผู้ใช้ มีขนาดใหญ่กว่า ไม่วา่ เราจะใช้ วิธีการจัดการ
หน่วยความจาที่กล่าวมาแล้ วชนิดใดก็ตามไม่สามารถจะทางานได้
ดังนันถ้
้ าโปรแกรมของผู้ใช้ มีขนาดใหญ่กว่าหน่วยความจาที่เหลือ เรา
แก้ ปัญหาโดยใช้ หน่ วยความจาเสมือน (Virtual Memory)
ใช้ ในกรณีแบบหลายโปรแกรม
Question & Answer
1. นักศึกษาคิดว่าทาไมจึงต้ องมีหน่วยความจาหลัก
2. จงอธิบายภาพข้ างล่างนี ้ตามความเข้ าใจ
3. การจัดการหน่วยความจาเป็ นหน้ าที่ของ OS ส่วนใด และจัดการเรื่ องใดบ้ าง
4 .การรวมโฮล (Coalescing Holes) มีวิธีการทางานอย่างไร จงอธิบาย
5. การแตกกระจาย (Fragmentation) เกิดขึ ้นได้ อย่างไร จงอธิบาย
6. การจะจัดว่าโปรเซสควรจะวางไว้ ในช่องว่างใดในหน่วยความจามีหลักการทางาน
อย่างไร จงอธิบาย
7. การแปลงและโหลดด้ วยค่าสัมบูรณ์ และการแปลงและโหลดด้ วยค่า
สัมพัทธ์ แตกต่างกันอย่างไร
8. การป้องกันไม่ให้ โปรแกรมล่วงล ้ามายังส่วนของ OS ภายในหน่วยความจา ใช้ วิธีการ
ใด
 9. การบีบอัดหน่วยความจา (Storage Compaction) มีหลักการทางาน
อย่างไร
 10. Holes เกิดขึ ้นได้ อย่างไร อธิบายมาพอเข้ าใจ
53