บทที่ 4 Memory Management การจัดการหน่วยความจ า

Download Report

Transcript บทที่ 4 Memory Management การจัดการหน่วยความจ า

่
บทที 4
การจัดการ
หน่Memory
วยความจา
Management
หน่ วยความจาหลัก
 หน ้าทีห
่ น่วยความจาหลัก
เก็บระบบปฏิบต
ั ก
ิ าร
 เก็บโปรแกรมของผู ้ใช ้
 เก็บข ้อมูลทีจ
่ ะใช ้

หน่ วยความจาหลัก
องค์ประกอบหน่วยความจา
แอดเดรส (address)
ข ้อมูล (data)

3
หน่ วยความจาหลัก
 ความต ้องการหน่วยความจา
ความเร็วสูง
 มีความเสถียรสูง
 ความจุสง
ู
 ราคาตา
่

4
ชนิ ดของหน่ วยความจา
หน่ วยความจาหลัก
 ROM เป็ นหน่วยความจาถาวร ไม่
ี ข ้อมูลแม ้ไฟดับ มักใชเก็
้ บ
สูญเสย
ข ้อมูลพืน
้ ฐานทีจ
่ าเป็ น
้ นหน่วยความจา
 RAM มักจะใชเป็
หลัก มีอยู่ 2 ประเภท คือ static
ram และ dynamic ram
 หน่ วยความจาสารอง

การจัดการหน่ วยความจา (Memory
Management)
หน่ วยความจาหลักเป็ นศูนย ์กลางของการ
ทางานต่าง ๆ ของระบบคอมพิวเตอร ์ใน
ปัจจุบน
ั
้ เก็
่ บข ้อมูล
 หน่ วยความจาหลักคือพืนที
ขนาดใหญ่
ประกอบด ้วย
3

้ เก็
่ บข ้อมูลย่อย มีหน่ วยเป็ น Byte
พืนที
2
่ ่ของพืนที
้ ย่่ อย (Address)
1
 ตาแหน่ งหรือทีอยู

Memory
การจัดการหน่ วยความจา (Memory
Management)….ต่อ

่ าหน้าทีจั
่ ดการกับ
ส่วนของ OS ทีท
หน่ วยความจาได ้แก่ ตัวจัดการ
หน่ วยความจา (Memory Manager)
่ หน้าทีต่
่ าง ๆ ดังนี ้
ซึงมี
่ าลัง
ตรวจสอบว่าส่วนใดของหน่ วยความจาทีก
ถูกใช ้งาน ส่วนใดว่าง
่ างาน
 จัดหน่ วยความจาให ้กับงานทีท
่
 ส่งหน่ วยความจาคืนสูร
่ ะบบเมืองานเสร็
จ
้ ่
 จัดการสลับหน่ วยความจาหลัก กับพืนที

การจัดการหน่ วยความจา
(Memory Management)
 การจัดสรรหน่ วยความจา
แบบต่อเนื่ อง
 การจัดสรรหน่ วยความจาแบบไม่
ต่อเนื่ อง
8
การจัดการหน่ วยความจา
(Memory Management) …
 การจัดสรรหน่ วยความจา
ต่
อ
แบบต่อเนื่ อง
โปรแกรมหนึ่ ง ๆ จะถูกโหลดลง
่ หน่ วยความจา
หน่ วยความจาได ้ก็ตอ
่ เมือมี
้ดของโปรแกรมนั้นลง
ขนาดใหญ่ทจะวางโค
ี่
้
ไปทังโปรแกรม
 โปรแกรมจะอยู่ตด
ิ ต่อกันในหน่ วยความจา
หลักเป็ นผืนเดียวกัน ไม่มส
ี ว่ นหนึ่ งของ
โปรแกรมแยกจากกัน

การจัดการหน่ วยความจา
(Memory Management) …
ต่
อ
 การจัดสรรหน่ วยความจาแบบไม่
ต่อเนื่ อง

โปรแกรมจะถูกแบ่งออกเป็ นกลุม
่ หรือ
่ ัน
ส่วนย่อย ๆ หลาย ๆ ส่วน เมือร
โปรแกรมจะโหลดลงหน่ วยความจาที่
่ ทว่ี่ างพอ แต่ละส่วนไม่
ไหนก็ได ้ทีมี
จาเป็ นต ้องเรียงต่อเป็ นผืนเดียว
10
การจัดการหน่ วยความจาหลักแบบ
ต่าง ๆ
 การจัดการหน่ วยความจานั้นมีหลายวิธ ี
้ การจัดการแบบพืนฐาน
้
ตังแต่
จนถึงแบบที่
ซ ับซ ้อน
 การจัดการหน่ วยความจาจึงมีการแบ่ง
ออกเป็ น 2 ระบบดังนี ้

่
ระบบโปรแกรมเดียว
(Monoprogramming or Single
program)
ระบบโปรแกรมเดียว
Monoprogramming or Single
program


่ ด
เป็ นวิธก
ี ารจัดการหน่ วยความจาทีง่่ ายทีสุ
เนื่ องจากจะมีโปรแกรมเพียง
1 โปรแกรม
ทางานในขณะใดขณะหนึ่ ง
OSเพียงโปรแกรม
ดังนั้นการใช ้งานหน่ วยความจาจะมี
นั้น ๆ กับระบบปฏิบต
ั ก
ิ ารเท่าโปรแกรมของ
นั้น ดังรูป
ผูใ้ ช ้
ว่าง
่
ระบบโปรแกรมเดียว
onoprogramming or Single program …
User
program
Operating
system in
RAM
Operating
system in
ROM
User
program
Device Manager
in ROM
User
program
Operating
system in
RAM
ระบบโปรแกรมเดียว
Monoprogramming or Single
program … ต่อ
 จากรูปเราอาจแบ่งหน่ วยความจาหลัก
ออกเป็ น 2 ส่วนคือ
่ ก
ส่วนของ OS เป็ นหน่ วยความจาทีถู
ครอบครองโดย OS
 ส่วนของผู ใ
้ ช้ (User area) คือส่วนที่
สามารถนาโปรแกรมของผูใ้ ช ้ลงไปวางได ้
่ คอื หน่ วยความจาหลักทังหมดที
้
่ อ
ซึงก็
เหลื
จากส่วนของ OS

ระบบโปรแกรมเดียว
Monoprogramming or Single
program … ต่อ
่
 เมือหน่
วยความจาหลักถูกแบ่งออกเป็ น
2
ส่วนแล ้ว ตัว OS จึงจาเป็ นต ้องมีวธิ ก
ี าร
้ ้า
ป้ องกันไม่ให ้โปรแกรมของผู ้ใช ้รุกลาเข
มาในส่วนของ OS
 ถ ้า OS ปล่อยให ้ผู ้ใช ้เข ้ามาใช ้
หน่ วยความจาที่ OS ใช ้อยู่ โปรแกรม
ของผู ้ใช ้อาจทาลายตัวโปรแกรมของ OS
15
่
ระบบโปรแกรมเดียว
Monoprogramming or Single
program … ต่อ ้
่
 วิธท
ี นิ
ี ยมในการป้ องกันการรุกลาได ้แก่การ
้
สร ้างรีจส
ี เตอร ์ขึนมาในซี
พย
ี เู รียกว่ารีจ ี
สเตอร ์ขอบเขต (boundary
register)
่ บค่าแอสเดรสทีเป็
่ น
 รีจส
ี เตอร ์จะทาหน้าทีเก็
รอยต่อระหว่างส่วนของ os และส่วนของ
ผู ้ใช ้
ระบบหลายโปรแกรม Multiple
program
 ระบบคอมพิวเตอร ์ส่วนใหญ่ในปัจจุบน
ั
อนุ ญาตให ้มีงานหลาย ๆ งานทางานในเวลา
เดียวกัน
่
 การทีระบบมี
หลายงานทางานพร ้อมกันนั้น
หมายความว่าแต่ละงานต ้องถูกบันทึกอยู่ใน
หน่ วยความจาหลัก
่ ้คอมพิวเตอร ์สามารถทางาน
 ดังนั้นเพือให
หลายงานพร ้อมกัน จึงจาเป็ นต ้องทาการแบ่ง
้ หน่
่ วยความจาออกเป็ นส่วน ๆ สาหร ับ
พืนที
ระบบหลายโปรแกรม Multiple
program
 การแบ่งหน่ วยความจาสาหร ับระบบ
หลายโปรแกรมมี 2 แบบ
 การแบ่งหน่ วยความจาขนาดคงที่ (Fixed
partition multi-programming)
 การแบ่งหน่ วยความจาขนาดไม่คงที่
(Variable partition multiprogramming)
18
การแบ่งหน่ วยความจาขนาดคงที่
้ วยความจาจะถูกแบ่งออกเป็ น
 วิธน
ี ี หน่
หลายส่วน แต่ละส่วนมีขนาด คงที่
และในแต่ละส่วนจะมีเพียงงานเดียว
่
ก
และการแบ่งนั้นจะเปลียนแปลงอี
ไม่ได ้
่ างานได ้พร ้อมกัน
 ดังนั้นจานวนงานทีท
จะเท่ากับจานวนส่วนย่อยของ
การแบ่งหน่ วยความจาขนาดคงที่
 การแบ่งหน่ วยความจาขนาดคงที่
แบ่งได ้เป็ น 2 แบบ
การแปลงและโหลดด ้วยค่าสัมบูรณ์
(Absolute translation and
loading)
 การแปลงและโหลดด ้วยค่าสัมพัทธ ์
(Relocatable translation and

20
การแปลงและโหลดด้วยค่าสัมบู รณ์
Absolute translation and loading
ค่าแอดเดรสสัมบูรณ์ คือค่าแอดเดรสจริง ๆ
ในหน่ วยความจา
่
 หน่ วยความจาหลักจะถูกแบ่งออกเป็ นส่วนทีมี
่ น
ขนาดคงที่ และแต่ละส่วนจะมีแอดเดรสทีเป็
่
ขอบเขตบน และล่างอยู่ ดังนั้นเมืองาน
ต ้องการใช ้หน่ วยความจาหลักในส่วนย่อยใดก็
ตาม OS จะต ้องกาหนดแอดเดรสจริงให ้กับ
่ ้งานเข ้าไปครอบครอง
งาน เพือให
่

การแปลงและโหลดด้วยค่าสัมบู รณ์
Absolute translation and loading …
ต่อ
คิวของส่วนที่ 1
OS
65000
่
งานทีเหมาะกั
บส่วนที่ 1
คิวของส่วนที่ 2
่
งานทีเหมาะกั
บส่วนที่ 2
ส่วนที่ 1 60000
คิวของส่วนที่ 3
่
งานทีเหมาะกั
บส่วนที่ 3
ส่วนที่ 3
ส่วนที่ 2 50000
0
การแปลงและโหลดด้วยค่าสัมบู รณ์
Absolute translation and loading …
ต่อ


้ อ ถ ้างานพร ้อมจะร ันแล ้ว แต่
ข้อเสียของวิธน
ี ี คื
่ ้องการ กาลังถูกใช ้
ส่วนของหน่ วยความจาหลักทีต
่ ก็ต ้องรอจนกว่างานทีใช
่ ้หน่ วยความจา
โดยงานอืน
่ ้องการทางานเสร็จสิน้ ถึงแม้วา่ ส่วนอืน
่ ๆ จะว่าง
ทีต
่
อยู่ก็ตาม ทาให ้สูญเสียหน่ วยความจาในส่วนอืนโดย
เปล่าประโยชน์
่ ขนาดเล็ก คิวของส่วนที่
ถ ้างานส่วนใหญ่เป็ นงานทีมี
่ วของ
มีขนาดเล็กจะเต็มอยู่ตลอดเวลา ในขณะทีคิ
่ ขนาดใหญ่ยงั คงว่างอยู่ ทาให ้งานทีมี
่ ขนาด
ส่วนทีมี
่ วยความจาหลักยัง
เล็กจะต ้องรอในคิว ในขณะทีหน่
การแปลงและโหลดด้วยค่าสัมพัทธ ์
Relocatable translation and loading




่
่ ดขึนในการแปลงและโหลดด
้
เพือแก
้ปัญหาทีเกิ
้วยค่า
่ ยกว่าการแปลงและโหลด
สัมบูรณ์ จึงทาให ้เกิดวิธก
ี ารทีเรี
ด ้วยค่าสัมพัทธ ์
่ ้น
งานจะถูกแปลงให ้ได ้แอดเดรสเป็ นค่าสัมพัทธ ์กับจุดเริมต
่ ้นของงานก็คอ
ื แอดเดรส 0 นั่นเอง
ของงาน จุดเริมต
่
ถ ้างานมีขนาด 100 byte เมืองานถู
กโหลดลงใน
หน่ วยความจาหลักจะไม่รอให ้แอดเดรส 0 ถึง 100 ว่าง แต่
่ ขนาดมากกว่าหรือเท่ากับขนาดของ
จะโหลดลงส่วนทีมี
งาน
ดังนั้นคิวงานจึงไม่จาเป็ นต ้องเป็ น Multiple Queues ใช้
การแปลงและโหลดด้วยค่าสัมพัทธ ์
Relocatable translation and loading
… ต่อ
วิธก
ี ารจัดคิวใช้วธ
ิ ี FCFS คืองานใดมาก่อน
์
ก็มส
ี ท
ิ ธิโหลดลงในส่
วนของหน่ วยความจา
่ อยู
้ ่
หลักทีชี
 แต่ถ ้าขนาดของงานมีขนาดใหญ่กว่าส่วนของ
่ อยู
้ ่ OS จะข ้ามงานนั้น
หน่ วยความจาหลักทีชี
่ ๆ ทีอยู
่ ่ถด
ไปทาให ้กับงานอืน
ั ไป
่ กข ้ามก็จะต ้องคอยอยู่ในคิว ซึง่
 สาหร ับงานทีถู
OS จะกาหนดว่างานจะถูกมองข ้ามได ้ไม่เกิน

การแปลงและโหลดด้วยค่าสัมพัทธ ์
Relocatable translation and loading
… ต่อ
OS
คิว
65000
ส่วนที่ 1 60000
ส่วนที่ 2 50000
งาน
ส่วนที่ 3
0
การแปลงและโหลดด้วยค่าสัมพัทธ ์
Relocatable translation and
 การป้ องกัน
OS ในระบบหลายโปรแกรม
loading
… ต่อ
ประเภทแบ่งหน่ วยความจานิ ยมใช ้รีจส
ี เตอร ์
ขอบเขตหลาย ๆ ตัว ส่วนย่อยแต่ละส่วนจะ
ใช ้รีจส
ี เตอร ์ขอบเขต 2 ตัว ในการแยกแยะ
ส่วนแต่ละส่วน เรียกว่ารีจส
ี เตอร ์ขอบเขตบน
(high boundary register) และรีจส
ี เตอร ์
ขอบเขตล่าง (Low boundary register)
 โปรแกรมของผูใ้ ช ้สามารถข ้ามเข ้าไปใน
่
ข้อเสียของการแบ่งหน่ วยความจาขนาด
คงที่

่ นวิธก
การแบ่งหน่ วยความจาขนาดคงทีเป็
ี ารทีง่่ าย
และไม่ซ ับซ ้อนต่อการสร ้าง OS อย่างไรก็ตามมี
ข้อเสียดังนี ้



้ ที
่ ก
่ าหนดให ้มีขนาดและจานวนทีคงที
่
่ อระบบเริ
่
พืนที
เมื
ม่
่
ทางานนั้น จะเป็ นตัวจากัดจานวนของงานทีสามารถเข
้า
มาใช ้ระบบได ้
้ แบบคงที
่
่ ดังนั้นงานที่
เนื่ องจากระบบมีการกาหนดพืนที
้ ของหน่
่
มีขนาดเล็กจะไม่สามารถใช ้พืนที
วยความจาได ้
อย่างเต็มประสิทธิภาพ
้ แบบคงที
่
่ าให ้เกิดส่วนทีไม่
่ ถก
การจัดแบ่งพืนที
จะท
ู ใช ้งาน
่
ซึงเราเรี
ยกว่าเกิดการแตกกระจาย (Fragmentation)
ข้อเสียของการแบ่งหน่ วยความจาขนาด
คงที่
O
ส่วSนที่
1
ว่าง่
ส่วนที 2
(งานของ
ผูใ้ ช ้)
ส่วนที่ 3
(งานของ
ผูใ้ ช ้)
การแตกกระจายภายนอก
การแตกกระจายภายใน
การแบ่งหน่ วยความจาขนาดไม่คงที
Variable partition multiprogramming
่
จากปัญหาทีพบของการท
างานของการแบ่ง
หน่ วยความจาขนาดคงที่ ผูอ้ อกแบบ OS จึง
ได ้ทาการปร ับปรุงการแบ่งหน่ วยความจาให ้ดี
ขึน้
 โดยระบบจะกาหนดให ้มีการแบ่ง
หน่ วยความจาตามความต ้องการของงาน และ
ไม่มก
ี ารจากัดขอบเขตของหน่ วยความจา
หลัก

การแบ่งหน่ วยความจาขนาดไม่คงที
Variable partition multiprogramming … ต่อ

้
ตัวอย่าง ถ ้าเรามีหน่ วยความจาหลักทังหมด
1 MB ดังรูป
OS
ว่าง
128 K
896 K
โปรเซส A
(ต ้องการ 320 K)
OS
320 K
ว่าง
320 K
576 K
การแบ่งหน่ วยความจาขนาดไม่คงที
Variable partition multiprogramming … ต่อ
OS
A
ว่าง
OS
320 K
A
320 K
576 K
B
224 K
ว่าง
352 K
โปรเซส B
(ต ้องการ 224 K)
การแบ่งหน่ วยความจาขนาดไม่คงที
Variable partition multiprogramming … ต่อ
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 multiprogramming … ต่อ
OS
OS
A
320 K
A
320 K
B
224 K
B
224 K
C
288 K
โปรเซส D
64 K (ต ้องการ 128 K)
C
288 K
64 K
ว่าง
ว่าง
การแบ่งหน่ วยความจาขนาดไม่คงที
Variable partition multiprogramming … ต่อ
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 multiprogramming … ต่อ
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 multiprogramming … ต่อ
่
จากรูปจะเห็นว่าเมือระบบท
างานไปได ้สักระยะ
้
หนึ่ ง เราจะพบช่องว่างเกิดขึนอย่
างมากมายใน
่
หน่ วยความจาหลัก ซึงจะท
าให ้การใช ้งาน
หน่ วยความจาหลักมีประสิทธิภาพลดลง
้ า การแตก
 เราเรียกช่องว่างเล็ก ๆ เหล่านี ว่
กระจายภายนอก (External
fragmentation)
่
 ดังนั้นการทีจะวางโปรเซสลงในหน่
วยความจา

การจัดยุทธวิธก
ี ารวาง
่ โปรเซสถูกส่งเข ้ามาในหน่ วยความจา
เมือมี
่
้นหน่ วยความจาหลักอาจมี
หลัก ซึงขณะนั
้
ช่องว่างเกิดขึนกระจายไปทั
ว่
 การจะจัดว่าโปรเซสใดควรจะวางไว ้ในช่องว่าง
ใด มีวธิ ก
ี ารอยู่ 3 แบบดังนี ้

่
เลือกช่องว่างทีพบก่
อน (First-Fit)
่
 เลือกช่องว่างทีเหมาะสม
(Best-Fit)
่
 เลือกช่องว่างทีใหญ่
ทสุ
ี่ ด (Worst-Fit)

การจัดยุทธวิธก
ี ารวาง … ต่อ

่
เลือกช่องว่างทีพบก่
อน (FirstFit)
วิธก
ี ารนี ้ OS จะตรวจหาช่องว่างใน
่
่
หน่ วยความจา เมือใดที
พบช่
องว่างที่
่
มีขนาดใหญ่พอทีจะวางโปรเซสใหม่
ลงไปได ้ OS จะเลือกช่องว่างนั้นทันที
ทาให ้การเลือกช่องว่างทาได ้รวดเร็ว
การจัดยุทธวิธก
ี ารวาง … ต่อ

่
เลือกช่องว่างทีเหมาะสม
(BestFit)
่
วิธก
ี ารนี ้ OS จะตรวจหาช่องว่างทีมี
้
อยู่ในหน่ วยความจาทังหมด
แล ้ว
่ อวางโปรเซสลง
่
เลือกเอาช่องว่างทีเมื
่ ด
ไปแล ้วจะเกิดช่องว่างขนาดเล็กทีสุ
40
การจัดยุทธวิธก
ี ารวาง … ต่อ

่
เลือกช่องว่างทีใหญ่
ทสุ
ี่ ด
(Worst-Fit)
้
การเลือกช่องว่างแบบนี จะ
ตรงกันข ้ามกับแบบที่ 2 OS จะ
่ อวางโปรเซสลง
่
เลือกช่องว่างทีเมื
ไปแล ้วจะเกิดช่องว่างขนาดใหญ่
่
การจัดยุทธวิธก
ี ารวาง … ต่อ
OS
16 K
ใช ้งาน
14 K
โปรเซสใหม่ขนาด 13 K
ใช ้งาน
5K
ใช ้งาน
30 K
าถาม จงใช ้ยุทธวิธท
ี ง้ั 3 แบบวางโปรเซสใหม่นี ้
การรวมโฮล (Coalescing Holes)

่ ชอ่ งว่าง 2 ช่องติดกันในหน่ วยความจา OS
เมือมี
่
้ นช่องว่าง
สามารถทีจะรวมช่
องว่างทัง้ 2 นี เป็
่
ขนาดใหญ่ชอ่ งเดียว ซึงเราเรี
ยกว่า การรวมโฮล
(Coalescing
Holes)
แสดงดั
ง
รู
ป
OS
OS
OS
่ ๆ
โปรแกรมอืน
2K
่ ๆ
โปรแกรมอืน
2K
โปรแกรม A 5 K
5K
โปรแกรม
่ ๆ A จบ โปรแกรมอืน
่ ๆ
โปรแกรมอืน
่ ๆ
โปรแกรมอืน
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)

ระบบหลายโปรแกรมแบบสลับ
หน่ วยความจา
(multiprogramming
storage
 เป็
นการสลับโปรแกรมไปสูห
่ น่ วwith
ยความจ
าสารอง
่
เมือโปรแกรมไม่
ตswapping)
้องการหน่ วยความจาหลัก

เรียกว่าการสลับออก (swapped out) และนา
่ ้องการ
โปรแกรมเข ้ามาใช ้หน่ วยความจาใหม่เมือต
ใช ้หน่ วยความจาเรียกว่าการสลับเข้า
(swapped in)
โปรแกรมจะอยู่ในหน่ วยความจาและถูกสลับออก
่ ดเหตุการณ์ 3 กรณี คือ
เมือเกิ

โปรแกรมจบ
ระบบหลายโปรแกรมแบบสลับหน่ วยความจา
(multiprogramming with storage
swapping) … ต่อ
OS
โปรแกรมของ
ผูใ้ ช ้
ว่าง
สลับเข้า
swapp
ed In
สลับออก
swapped out
D
A
B
C
โปรแกรมของผู ใ้ ช้
การทาโอเวอร ์เลย ์
เนือ
่ งจากโปรแกรมของผู ้ใชมี้ ขนาดใหญ่
กว่าหน่วยความจาหลัก จึงต ้องแก ้ปั ญหา
นี้ ถ ้าเป็ นกรณีโปรแกรมเดีย
่ วจะ
แก ้ปั ญหาด ้วยการทาโอเวอร์เลย์
 การทาโอเวอร์เลย์ (overlay) เป็ นหน ้าที่
ของผู ้เขียนโปรแกรมเอง OS ไม่ได ้
จัดการให ้
 ผู ้เขียนโปรแกรมแบ่งโปรแกรมออกเป็ น
สว่ นย่อยหลาย ๆ สว่ น แต่ละสว่ นต ้องมี

การทาโอเวอร ์เลย ์ … ต่อ
โปรแกรมหลัก
OS
ส่วนที่ 1
โปรแกรมย่อย
ส่วนที่ 2
หน่ วยความจา
โปรแกรมของผู ใ้ ช้แบ่งเป็ นส่วนย่อยต่า
หน่ วยความจาเสมือน (Virtual
Memory)



่ าวมา
การใช ้หน่ วยความจาของโปรแกรมผูใ้ ช ้ทีกล่
นั้น จะเห็นว่าขนาดของโปรแกรมต ้องมีขนาดเล็ก
่ ออยู่
กว่าขนาดของหน่ วยความจาทีเหลื
แต่ถ ้าโปรแกรมของผูใ้ ช ้มีขนาดใหญ่กว่า ไม่วา่ เรา
่ าวมาแล ้ว
จะใช ้วิธก
ี ารจัดการหน่ วยความจาทีกล่
ชนิ ดใดก็ตามไม่สามารถจะทางานได ้
ดังนั้นถ ้าโปรแกรมของผูใ้ ช ้มีขนาดใหญ่กว่า
่ อ เราแก ้ปัญหาโดยใช ้
หน่ วยความจาทีเหลื
หน่ วยความจาเสมือน (Virtual Memory)
Question & Answer
แบบฝึ กหัดบทที่ 4
ึ ษาคิดว่าทาไมจึงต ้องมีหน่วยความจาหลัก
1. นักศก
2. จงอธิบายภาพข ้างล่างนีต
้ ามความเข ้าใจ
3. การจัดการหน่วยความจาเป็ นหน ้าทีข
่ อง OS สว่ น
ใด และจัดการเรือ
่ งใดบ ้าง
แบบฝึ กหัดบทที่ 4
4 .การรวมโฮล (Coalescing Holes) มีวธิ ก
ี ารทางานอย่างไร
จงอธิบาย
้ ้อย่างไร จง
5. การแตกกระจาย (Fragmentation) เกิดขึนได
อธิบาย
6. การจะจัดว่าโปรเซสควรจะวางไว ้ในช่องว่างใดใน
หน่ วยความจามีหลักการทางานอย่างไร จงอธิบาย
7. การแปลงและโหลดด ้วยค่าสัมบูรณ์ และการแปลง
และโหลดด ้วยค่าสัมพัทธ ์ แตกต่างกันอย่างไร
้
8. การป้ องกันไม่ให ้โปรแกรมล่วงลามายั
งส่วนของ OS
ภายในหน่ วยความจา ใช ้วิธก
ี ารใด
 9. การบีบอัดหน่ วยความจา (Storage Compaction) มี
54