การจัดการหน่วยความจำหลัก

Download Report

Transcript การจัดการหน่วยความจำหลัก

การจัดการหน่ วยความจาหลัก
(Memory Management)
เนือ
้ หา
Background
 Memory management
 การแบ่งส่วน
่
 การสับเปลียนการท
างาน
้ ร่
่ วมกัน
 การจัดสรรพืนที
้ หน้
่ าเพจ
 การจัดพืนที
 การแบ่งตอน

่
เนื่องจากโปรแกรมต้องมีพนที
ื ้ ใน
่ บข้อมู ลในระหว่าง
หน่ วยความจาเพือเก็
ทางาน
 แถวคอยข้อมู ลเข้า (Input queue) ของ
้
่ ่บนดิสก ์ ซึงรอคอยที
่
่
โปรเซสทังหมดที
อยู
จะ
เข้าไปทางานในหน่ วยความจาหลัก
 CPU สามารถเข้าถึงหน่ วยความจาและ
register ได้โดยตรง

Memory Management
Subdividing memory to accommodate
multiple processes
 Memory needs to be allocated to ensure
a reasonable supply of ready processes to
consume available processor time

Memory Management Requirements

Relocation
◦ Programmer does not know where the
program will be placed in memory when it is
executed
◦ While the program is executing, it may be
swapped to disk and returned to main
memory at a different location (relocated)
◦ Memory references must be translated in the
code to actual physical memory address
Addressing Requirements for a Process
Memory Management Requirements

Protection
◦ Processes should not be able to reference memory
locations in another process without permission
◦ Impossible to check absolute addresses at compile
time
◦ Must be checked at run time
◦ Memory protection requirement must be satisfied by
the processor (hardware) rather than the operating
system (software)
 Operating system cannot anticipate all of the memory
references a program will make
Memory Management Requirements

Sharing
◦ Allow several processes to access the same
portion of memory
◦ Better to allow each process access to the
same copy of the program rather than have
their own separate copy
Memory Management Requirements

Logical Organization
◦ Programs are written in modules
◦ Modules can be written and compiled
independently
◦ Different degrees of protection given to
modules (read-only, execute-only)
◦ Share modules among processes
Memory Management Requirements

Physical Organization
◦ Memory available for a program plus its data
may be insufficient
 Overlaying allows various modules to be assigned
the same region of memory
◦ Programmer does not know how much space
will be available
Hardware Address Protection

Compile time ขณะเกิดการคอมไพล ์

Load time ขณะเกิดการโหลด

Execution time ขณะเกิดการเอ็กซ ์ซีควิ ท ์
้ ของหน่
่
้ั
◦ หากการจัดสรรพืนที
วยความจาทราบตงแต่
แรกก็
จะสามารถสร ้างโค้ดได้
้ ในการเริ
่
่ นการทางาน
◦ ต้องคอมไพล ์โค้ด หากพืนที
มต้
่
เปลียนแปลง
่
้ หน่
่ วยความจาขึน
้
◦ จะต้องสร ้างโค้ดทีสามารถจั
ดสรรพืนที
้ หน่
่ วยความจา
ใหม่ หากไม่ทราบถึงการจัดสรรพืนที
ในขณะคอมไพล ์
่
◦ การแมพความสัมพันธ ์หรือเชือมโยงต้
องล่าช้า จนกว่าจะ
ตาแหน่ งทีว่่ างทางตรรกะกับตาแหน่ งทีว่่ างทาง
กายภาพ
(Logical vs. Physical
address
space)
้ แอดเดรสเชิ
่
 แนวคิดของพืนที
งตรรกะ
เป็ นการนา
้ แอดเดรสเชิ
่
้ มา
่
พืนที
งกายภาพหลายพืนที
่
รวมกันไว้ทส่
ี่ วนกลางเพือการบริ
หารจัดการ
หน่ วยความจา
◦ Logical address – แอดเดรสเชิงตรรกะ ( แอดเดรส
้
เสมือน ) ถูกสร ้างขึนโดยหน่
วยประมวลผลกลาง และ
ถูกอ้างถึงโดยแอดเดรสเสมือน
◦ Physical address – แอดเดรสเชิงกายภาพ เห็นได้
เฉพาะหน่ วยย่อยของหน่ วยความจา

แอดเดรสเชิงตรรกะและเชิงกายภาพ คือสิง่
เดียวกันของการแมพ แอดเดรสในขณะคอมไพล ์
และขณะโหลด
ตาแหน่ งทีว่่ างทางตรรกะกับตาแหน่ งทีว่่ างทาง
กายภาพ
(Logical vs. Physical address ้ space)
่
กลุ่มของตาแหน่ งทางตรรกะทังหมดทีถู กสรา้ ง
่ า งทาง
โดยโปรแกรมจะถู ก เรีย กว่า ต าแหน่ งทีว่
ตรรกะ (logical address space)
่ างทางกายภาพทีเกี
่ ยวข้
่
 กลุ่มของตาแหน่ งทีว่
อง
กบ
ั ต าแหน่ งทางตรรกะเหล่ า นั้ นถู กเรีย กว่ า
ตาแหน่ งทีว่่ างทางกายภาพ (physical address
space)

่ าการแมพระหว่าง
อุปกรณ์ฮาร ์ดแวร ์ ทีท
แอดเดรสเสมือนกับแอดเดรสทางกายภาพ
่ บอยู ่ในรีจส
่
้ ่
 ค่าทีเก็
ี เตอร ์เพือการจั
ดสรรพืนที
่
ใหม่ จะถู กเพิมเข้
าสู แ
่ อดเดรสทุกๆ แอดเดรสที่
้ โดยโปรเซสของผู ใ้ ช้ในขณะที่
ถู กสร ้างขึน
้ กส่งเข้าสู ่หน่ วยความจา
โปรเซสนันถู

◦ Base register เรียกเป็ น Relocation register

การทางานของโปรแกรมของผู ใ้ ช้จะใช้
แอดเดรสเชิงตรรกะ จะไม่ทราบถึงแอดเดรสทาง
กายภาพจริงๆ
้ อเมือเกิ
่ ดการอ้างอิงไปที่
◦ การแมพแอดเดรสจะเกิดขึนต่
หน่ วยความจาหลัก
จากรู ป รีจส
ี เตอร ์ฐาน (base register) กลายเป็ น รีจส
ี เตอร ์
สาหร ับการย้ายตาแหน่ ง (relocation register)
้ั อ งน าค่ า
 การอ้า งอิง ต าแหน่ งในหน่ วยความจ าทุ ก คร งต้
อ้า งอิง มาบวกกับ ค่ า รีจ ีส เตอร ์ฐานเสีย ก่ อ น เพื่อให้ไ ด้ค่ า
ตาแหน่ งจริง

◦ เช่น ค่ารีจส
ี เตอร ์ฐานเท่ ากับ 14000
ผู ใ้ ช้ตอ
้ งการอ่านค่ าจาก
ตาแหน่ ง 346 ก็จะไปอ่านจากตาแหน่ งจริงที่ 14000 + 346 =
14346 เป็ นต้น

้ การกาหนด
จะสังเกตเห็นว่า ในระบบนี มี
ตาแหน่ ง 2 แบบ คือ
◦ ตาแหน่ งทางตรรกะ คือ ค่า 0 ถึง max
◦ ตาแหน่ งจริง (ทางกายภาพ) คือ ค่าจาก R ถึง
่ น
R+max โดย R เป็ นค่าตาแหน่ งเริมต้
โปรแกรมของผู ใ้ ช้จะใช้ตาแหน่ งทาง
้
ตรรกะเท่านัน
่
 แนวคิดเรืองการใช้
ตาแหน่ งทางตรรกะใน
้ นหัวใจ
การอ้างอิงแทนตาแหน่ งจริงนี เป็
ของการจัดการหน่ วยความจาหลัก

วิธ น
ี ี ้จะไม่ น าโปรแกรมย่ อยลงสู ่หน่ วยความจ า
พร อ
้ มกับโปรแกรมหลัก แต่ จ ะน าลงเมื่อมีก าร
้
เรีย กใช้เ ท่ า นั้น โปรแกรมย่ อ ยทังหมดจะอยู
่ใน
่ ายตาแหน่ งได้
จานบันทึกในรู ปแบบทีย้
่
 เมือโปรแกรมหลั
กต้องการเรียกโปรแกรมย่อยใด
ก็ จ ะ ต ร ว จ ดู ว่ า โ ป ร แ ก ร ม ย่ อ ย นั้ น อ ยู ่ ใ น
หน่ วยความจาแล้วหรือยัง
◦ ถ้ า ยั ง ก็ จ ะ น า โ ป ร แ ก ร ม ย่ อ ย นั้ น ล ง สู ่
หน่ วยความจาหลัก
่ เหมาะสม
่
 ย้ายตาแหน่ งไปไว้ในทีที
้
่
 ย้ายการควบคุมไปไว้ทโปรแกรมย่
ี่
อยนันเพื
อ
ทางานต่อไป

ข ณ ะ เ ชื่ อ ม ต่ อโ ป ร แ ก ร ม ย่ อ ย จ ะ มี ก า ร ส ร า
้ ง
่ ยกระบบ (Stub) ซึงมี
่ ขนาดเล็กมาก
ชุดคาสังเรี
่
่ องการขณะทางาน
เพือใช้
เรียกโปรแกรมย่อยทีต้
่ ย กระบบนี ้ จะท างานโดยการเปลี่ยน
 ชุ ด ค าสังเรี
โปรแกรมตัวเองเป็ นตาแหน่ งของโปรแกรมย่อ ย
้
ในระบบและเรียกโปรแกรมย่อยนัน
 เ มื่ อ มี ก า รใ ช้ ชุ ด ค า สั่ ง เ รี ย ก ร ะ บ บ นี ้ อี ก ค ร ้ง
ั
โปรแกรมย่ อ ยของระบบก็ จ ะถู กเรีย กท างาน
่ ยก
โดยตรง (โดยไม่เสียเวลาทางานในชุดคาสังเรี
้ กต่อไป)
ระบบนี อี
 วิ ธ ี นี้ ยั ง ป ร ะ ห ยั ด เ นื ้ อ ที่ ม า ก อี ก ด้ ว ย เ พ ร า ะ
โปรแกรมของผู ใ้ ช้ต่ า งใช้โ ปรแกรมย่ อ ยของ
้ ้อน)
ระบบอ ันเดียวกัน (ไม่เกิดการซาซ

้
เนื่ องจากต้อ งมีก ารน าโปรแกรมทังหมดของ
่
กระบวนการหนึ่ งลงในหน่ วยความจาก่อนจะเริม
ทางาน
 ขนาดของกระบวนการจะถู ก จ ากัด ด้ว ยขนาด
ของหน่ วยความจ าหลัก เราจึง ต้อ งมีก ารแบ่ ง
ส่วน (Overlays) กระบวนการออกเป็ นส่วน ๆ
่
เพือให้
สามารถทางานในหน่ วยความจาหลักได้
้ าโดย
 การแบ่งส่วนนี ท
่ องการใช้
◦ แบ่งส่วนของโปรแกรมและข้อมู ลทีต้
ใ น ช่ ว ง เ ว ล า แ ร กใ ห้ เ ข้ า ท า ง า นใ น
หน่ วยความจาหลัก
◦ น าโปรแกรมช่ ว งต่ อไปลงทับโปรแกรมเดิม

ตวั อย่างเช่น ตัวแปรภาษา assembly แบบแปล 2 รอบ
◦ รอบแรกจะมีการสร ้างตารางสัญลักษณ์
่
่ เราอาจทา
◦ รอบทีสองจะมี
ส่วนการแปลภาษาเครือง
การแบ่งส่วน
้
ตัวแปลภาษานี ออกเป็
น 2 ส่วน
่ ่ง
 ส่วนของการแปลรอบทีหนึ
่
 ส่วนของการแปลรอบทีสอง
 สมมติให้โปรแกรมตว
ั แปลภาษามีขนาด ดงั นี ้
1. ส่วนการแปลรอบที่ 1(Pass 1)
70 KB
2. ส่วนการแปลรอบที่ 2 (Pass 2)
80 KB
3. ตารางสัญลักษณ์ (Symbol table)
20 KB
4. โปรแกรมย่อยร่วม (Common routines) 30 KB

ถ้ า เ ร า ต้ อ ง ก า ร น า โ ป ร แ ก ร ม ทั้ ง ห ม ด ล ง สู ่
หน่ วยความจ าหลัก เราต้อ งมีห น่ วยความจ า
หลักขนาดอย่างน้อย 200 K
่
 แต่ถา
้ เรามีเพียง 150 K (ทีเหลื
อจากส่วนของ
ระบบปฏิบต
ั ก
ิ าร) ก็จะทางานไม่ได้ เราจึงต้องใช้
วิธแ
ี บ่งส่วน (overlays)
◦ กาหนดส่วนแรก (A)
ประกอบด้วย ตาราง
สัญ ลัก ษณ์ โปรแกรมย่ อ ยร่ว ม และส่ ว นการ
แปลรอบที่ 1
่
◦ ส่วนทีสอง
(B) ประกอบด้วย ตารางสัญลักษณ์
โปรแกรมย่อยร่วมและส่วนการแปลรอบที่ 2

่ าลังทางานต้องอยู ่ใน
กระบวนการทีก
หน่ วยความจาหลักเสมอ แต่อาจถูกย้ายไปอยู ่ใน
่ั
หน่ วยเก็บโปรแกรมชวคราว
(Backing Store)
่ างานต่อ
ได้ แล้วนากลับมาใหม่เพือท
่
 ในระบบการทางานแบบหลายโปรแกรมทีใช้
การจัดตารางการทางานแบบวนรอบ(roundrobin)
่ วนแบ่งเวลา (Time Quantum) สินสุ
้ ด
◦ เมือส่
ตัวจัดการหน่ วยความจาจะย้ายกระบวนการ
ปั จจุบน
ั ออกไปและเอากระบวนการใหม่เข้ามา
ทางานแทน

ขณะเดียวกัน ตัวจัดตารางการทางานของหน่ วย
ประมวลผลกลาง ก็จะจัดเวลาให้กระบวนการใหม่ได้
่
ทางานบ้าง จะเห็นว่ามีการสับเปลียนก
น
ั ระหว่าง
◦ กระบวนการเก่าและกระบวนการใหม่
◦ จากหน่ วยความจาหลักสู ห
่ น่ วยเก็บโปรแกรม
่ั
ชวคราว
่
่
 การสับเปลียนงาน
อาจเกิดในระบบทีใช้
ความสาคัญเป็ นเกณฑ ์ ในการจัดตารางการ
ทางาน (Priority based)
่ งานทีมี
่ ความสาคัญสู งเข้ามาในระบบ ตัว
◦ เมือมี
่
่
จัดการหน่ วยความจาอาจสับเปลียนให้
งานทีมี
่
่ั
ความสาคัญตาออกไปพั
กชวคราว


่
ในการสับเปลียนงาน
ต้องแน่ ใจว่ากระบวนการ
่
ไม่ได้มอ
ี ะไรติดค้างอยู ่ โดยเฉพาะอย่างยิงการ
รอคอยอุปกรณ์ร ับส่งข้อมู ล
◦ ถ้ากระบวนการหนึ่ งต้องรออุปกรณ์ร ับส่ง
่
้
ข้อมู ล อาจต้องการสับเปลียนกระบวนการนี
่ั
ออกไป คอยในหน่ วยเก็บโปรแกรมชวคราว
◦ ขณะเดียวกันอุปกรณ์ร ับส่งข้อมู ลอาจต้องใช้
่ กข้อมู ลในเนื อที
้ ของกระบวนการผู
่
่
ทีพั
ใ้ ช้เพือ
ร ับส่งข้อมู ลให้แก่ผูใ้ ช้
่
◦ ถ้ากระบวนการเดิมถู กสับเปลียนออกไปและมี
่ ปกรณ์ร ับส่ง
กระบวนการใหม่เข้ามาแทนทีอุ
ข้อมู ลอาจส่งข้อมู ลไปผิดกระบวนการได้

้
ปั ญหานี อาจแก้
ไขได้ 2 วิธค
ี อ
ื
่
่
◦ ห้ามสับเปลียนงานที
รอคอยการร
ับส่งข้อมู ล
้ องใช้ทพั
◦ การร ับส่งข้อมู ลนันต้
ี่ กข้อมู ลภายใน
้ และระบบจะ
่
้ ของระบบปฏิ
บต
ั ก
ิ ารเท่านัน
เนื อที
่
ส่งต่อให้กระบวนการเมือกระบวนการก
าลัง
้
ทางานอยู ่ในหน่ วยความจาหลักเท่านัน

โดยปกติหน่ วยความจาหลักจะถูกแบ่งออกเป็ น
สองส่วนหลัก
้ ส
่ าหร ับระบบปฏิบต
◦ พืนที
ั ก
ิ าร โดยปกติจะอยู ่ใน
้ ด้
่ านล่างของหน่ วยความจาหรือ
ส่วนพืนที
่ น โดยการจัดการของเวกเตอร ์
แอดเดรสเริมต้
การขัดจังหวะ
้ โปรเซสของผู
่
้ ่
◦ พืนที
ใ้ ช้ อยู ่ในส่วนพืนที
ด้านบนของหน่ วยความจา หรือแอดเดรส
หลังจากระบบปฏิบต
ั ก
ิ าร
Relocation register ใช้ในการป้ องกันโปรเซส
่ และจากการเปลียนแปลง
่
ของผู ใ้ ช้จากแหล่งอืน
โค้ดและข้อมู ลของระบบปฏิบต
ั ก
ิ าร
 Base register จะมีคา
่ ของแอดเดรสทาง
่ กทีสุ
่ ด
กายภาพทีเล็
 Limit register จะมีคา
่ ของช่วงของแอดเดรส
ทางตรรกะ

◦ แอดเดรสทางตรรกะแต่ละค่าจะต้องมีคา
่ น้อยกว่า
ขนาดของ
รีจส
ี เตอร ์
Fixed Partitioning

Equal-size partitions
◦ Any process whose size is less than or equal
to the partition size can be loaded into an
available partition
◦ If all partitions are full, the operating system
can swap a process out of a partition
◦ A program may not fit in a partition. The
programmer must design the program with
overlays
Fixed Partitioning

Main memory use is inefficient. Any
program, no matter how small, occupies
an entire partition. This is called internal
fragmentation.
Placement Algorithm with Partitions

Equal-size partitions
◦ Because all partitions are of equal size, it does
not matter which partition is used

Unequal-size partitions
◦ Can assign each process to the smallest
partition within which it will fit
◦ Queue for each partition
◦ Processes are assigned in such a way as to
minimize wasted memory within a partition
Memory Assignment for Fixed Partitioning
้ ว่่ างหมายถึงพืนที
้ ว่่ างขนาดต่างๆของ
พืนที
่ ้อมใช้งานต่อเนื่ องก ันใน
หน่ วยความจาทีพร
หน่ วยความจา
่ โปรเซสเกิดขึน
้ โปรเซสจะได้ร ับจัดสรรพืนที
้ ใน
่
 เมือมี
หน่ วยความจา
้ ว่่ างทีมี
่ ขนาดใหญ่พอสาหร ับโปรเซสนัน
้
จากพืนที
 ระบบปฏิบต
ั ก
ิ ารบริหารจัดการสารสนเทศต่างๆ
ดังต่อไปนี ้
้ เพื
่ อการจั
่
 การแบ่งส่วนพืนที
ดสรร
้ ว่่ าง
 การกาหนดส่วนพืนที

่ บข้อมู ลว่า
ในระบบปฏิบต
ั ก
ิ ารจะมีตารางทีเก็
้ ในหน่
่
พืนที
วยความจาหลักส่วนใดถูก
ครอบครองและส่วนใดยังว่างอยู ่
่ นพืนที
้ ในหน่
่
้
 เริมต้
วยความจาจะว่างทังหมด

่ กระบวนการเข้ามาในระบบ ระบบจะจัดการ
◦ เมือมี
้ ที
่ ใหญ่
่
้ และ
หาพืนที
พอสาหร ับกระบวนการนัน
้ ให้
่ กระบวนการเพียงเท่าทีต้
่ องการ
จัดแบ่งพืนที
้ ที
่ เหลื
่
◦ ส่วนพืนที
ออยู ่กจ
็ ะเก็บไว้ใช้ในการจัดสรร
้ั อไป
ครงต่
Dynamic Partitioning
Partitions are of variable length and
number
 Process is allocated exactly as much
memory as required
 Eventually get holes in the memory. This is
called external fragmentation
 Must use compaction to shift processes
so they are contiguous and all free
memory is in one block

The Effect of Dynamic Partitioning
Dynamic Partitioning Placement
Algorithm
Operating system must decide which free
block to allocate to a process
 Best-fit algorithm

◦ Chooses the block that is closest in size to
the request
◦ Worst performer overall
◦ Since smallest block is found for process, the
smallest amount of fragmentation is left
◦ Memory compaction must be done more
often
Dynamic Partitioning Placement
Algorithm

First-fit algorithm
◦ Scans memory form the beginning and
chooses the first available block that is large
enough
◦ Fastest
◦ May have many process loaded in the front
end of memory that must be searched over
when trying to find a free block
Dynamic Partitioning Placement
Algorithm

Next-fit
◦ Scans memory from the location of the last
placement
◦ More often allocate a block of memory at the
end of memory where the largest block is
found
◦ The largest block of memory is broken up
into smaller blocks
◦ Compaction is required to obtain a large
block at the end of memory
ตัวอย่าง
 ระบบมีหน่ วยความจาหลักขนาด
2560 K
่ ่
◦ มีโปรแกรมของระบบใช้พนที
ื ้ อยู
K
่
◦ ส่วนว่างทีเหลื
อสาหร ับผู ใ้ ช้
K
400
2160
สมมติให ้ในแถวคอยข ้อมูลเข ้า (input queue) มี
กระบวนการดังรูป

ระบบใช้วธ
ิ จ
ี ด
ั ตารางการทางานระยะยาวแบบมา
ก่อน-ได้กอ
่ น
้ ให้
่ แก่ กระบวนการ P1 ,
◦ สามารถจัดสรรพืนที
P2 และ P3 ได้ทน
ั ที
◦ ดังภาพของหน่ วยความจาในรู ป (a) จะเห็นว่า
่ เพียงพอกกับ
มีพนที
ื ้ ว่่ างขนาด 260 K ซึงไม่
่
ขนาดของกระบวนการ P4 ทีรออยู
่ใน
แถวคอยขาเข้า

ระบบใช้วธ
ิ จ
ี ด
ั ตารางการทางานแบบวนรอบ(roundrobin) โดยส่วนแบ่งเวลามีคา
่ เท่ากับ 1 หน่ วยเวลา
◦ ณ เวลาที่ 14 หน่ วยเวลา กระบวนการ P2 จะ
้ ที
่ ่ P2 ครอบครองอยู ่จะว่างลง ดัง
ทางานเสร็จ พืนที
รู ป (b)
◦ กระบวนการ P4 จึงสามารถเข้ามาทางานได้ ดังรู ป
(c)
่
◦ เมือกระบวนการ
P1 ทางานเสร็จ ณ เวลาหน่ วยที่
28 ดังรู ป (d)
่ ว่่ างลง
กระบวนการ P5 ก็สามารถเข้ามาใช้พนที
ื ้ ที
ต่อไปได้ ดังรู ป (e)


่
ปั ญหาอีกข้อหนึ่ ง จะเห็นได้วา
◦ ถ้าเรามีพนที
ื ้ ว่่ างขนาด 18,464 ไบต ์ และ
กระบวนการใหม่ตอ
้ งการ 18,462 ไบต ์ แล้วเรา
้ ่
จัดสรรให้พอดี 18,462 ไบต ์ ก็จะเหลือพืนที
้ ว่่ าง 2 ไบต ์นี ้
ว่าง 2 ไบต ์ การเก็บข้อมู ลพืนที
้ ่ 2 ไบต ์มาก ดังนัน
้
◦ เสียค่าใช้จา
่ ยสู งกว่าเนื อที
่
้ ว่่ างทีเหลื
้
อเล็กน้อยนี ให้
เรามักจัดสรรพืนที
้ ที
่ ร่ ้องขอไปเลย
เป็ นส่วนหนึ่ งของพืนที
้ ส่
่ วนนี ้ ก็จะสู ญเปล่าไปเช่นกัน เรา
พืนที
้ ทีย
เรียกว่า การสูญเปล่าของพืน
่ อ
่ ย
ภายใน (Internal Fragmentation)
่
วิธก
ี ารหนึ่ งทีสามารถใช้
ในการแก้ปัญหา การ
้ ย่
่ อยภายนอก (External
สู ญเสียพืนที
Fragmentation) ได้คอ
ื การบีบอ ัด
(Compaction)
่
้ ่
 การบีบอ ัด คือการสับเปลียน
(โยกย้าย) พืนที
้ ผื
่ นเดียว
ว่างในระบบให้มาอยู ่รวมกน
ั เป็ นพืนที
ต่อเนื่ องก ัน

้ ว่่ างเล็ก ๆ 3 ผืน คือ 100K 300K
จะเห็นว่าพืนที
้ ผื
่ น
และ 260K ได้ถูกย้ายมารวมให้เป็ นพืนที
่ ขนาด 660K
เดียวทีมี
 การบีบอ ัดหน่ วยความจาของระบบไม่อาจทาได้
กับทุกระบบ
่ การเคลือนย้
่
 สังเกตจากรู ปข้างบน ทีมี
าย
กระบวนการ P4 และ P3 กระบวนการทัง้ 2 ต้อง
่
้ ใหม่
่
สามารถทางานต่อได้ เมือเข้
ามาอยู ่ในพืนที
้
โดยตาแหน่ งอ้างอิงภายในทังหมดจะต้
องถู ก
ปร ับปรุง

่ เราจะต้
่
่
สิงที
องพิจารณาต่อมาคือ ค่าใช้จ่ายทีจะ
้
เกิดขึน
้
 ขันตอนวิ
ธใี นการบีบอ ด
ั หน่ วยความจ าหลัก ที่
ง่ ายที่สุ ด คือ จัด การเคลื่อนย้า ยกระบวนการ
้
ทังหมดในระบบให้
ไปอยู ่สุดขอบใดขอบหนึ่ ง (ไป
้
ทางเดียวกน
ั ทังหมด)
ของหน่ วยความจาหลัก
่
้ ่ว่ า งขนาดใหญ่ (เกิด
ซึงจะเป็
นผลให้เ กิด พืนที
้ ว่่ างย่อย ๆ รวมก ัน)
จากพืนที
 วิ ธ ี ก า ร บี บ อ ั ด ห น่ ว ย ค ว า ม จ า ดั ง ก ล่ า ว นี ้ มี
ค่าใช้จา
่ ยสู ง

พบว่ า ถ้า เราท าการบีบ อ ด
ั หน่ วยความจ า ตาม
้
ขันตอนวิ
ธอ
ี ย่างง่ ายดังกล่าวข้างต้น
่
้
◦ เราต้องเคลือนย้
ายทังกระบวนการ
P3 และ P4
่ ขนาดโดยรวมเท่ากบ
ซึงมี
ั 600K (200K +
400K)
่
 แต่ใ นสถานการณ์นี้ เราอาจจะเคลือนย้
า ยเพีย ง
กระบวนการ P4 ไปไว้บนกระบวนการ P3
้ ขนาด
่
◦ เป็ นการย้ายพืนที
400K
่
 หรืออาจจะเคลือนย้
ายกระบวนการ P3 มาไว้ใต้
กระบวนการ P4
้ ขนาดเพี
่
◦ เป็ นการย้ายพืนที
ยง 200K

หน่ วยความจาทางกายภาพจะถูกแบ่งเป็ น
ส่วน ๆ แต่ละส่วนมีขนาดเท่า ๆ กัน เรียกว่า
หน้า(Frame) หรือ หน้าจริง
 หน่ วยความจาทางตรรกะของโปรแกรม ก็จะ
ถูกแบ่งเป็ นส่วน ๆ เช่นกัน โดยมีขนาดเท่ากับ
ส่วนของหน่ วยความจาจริง เรียกว่า หน้า
(Page)
่ องการให้กระบวนการหนึ่งทางาน ก็
 เมือต้
้
่ ก
เพียงแต่นากระบวนการนันจากที
พั
่ั
ลงใน frame ของ
โปรแกรมชวคราวบรรจุ
หน่ วยความจา โดยแยกเป็ นหน้าไม่ตอ
้ ง
่ กโปรแกรมชวคราวก็
่ั
ต่อเนื่องกัน ทีพั
จะถูก

่
ตาแหน่ งทางตรรกะทีกระบวนการใช้
จะถู กแบ่งเป็ น
2 ส่วน
◦ หมายเลขหน้า (Page number): p
้
งตารางเลขหน้า (Page table)
 ใช้เป็ นตัวชีไปยั
◦ ระยะจากขอบหน้า (Page-offset): d
่ น (Base
 ตารางเลขหน้ า จะมีค่ า ต าแหน่ งจุ ด เริมต้
Address) : f ของหน้าจริงในหน่ วยความจาหลัก
่ น หน้ า จริง นี ้ รวมก บ
 ค่ า จุ ด เริมต้
ั ค่ า ระยะจากขอบ
หน้า (f + d) จะเป็ นตาแหน่ งจริงในหน่ วยความจา
หลัก

Paging Hardware

่
เพือความเข้
าใจ เราสมมติตวั อย่างง่ าย ๆ โดย
กาหนดให้ขนาดของหน้าเท่าก ับ 4 ไบต ์





หน่ วยความจาจริงมีขนาด 32 ไบต ์ (รวม 8 หน้า)
สมมติใ ห้ห น่ วยความจ าทางตรรกะ (ในมุ ม มอง
ของกระบวนการผู ใ้ ช้) มี 4 หน้า (16 ไบต ์)
ตาแหน่ งทางตรรกะ 0 จะแสดงค่าหมายเลขหน้า
(Page number) 0 และระยะจากขอบ (Page
offset) 0
จากหมายเลขหน้า 0
เทียบในตารางเลขหน้า
(Page table) จะเห็นว่าตรงกบ
ั หน้าจริง (Frame)
หมายเลข 5
ดังนั้นตาแหน่ งทางตรรกะ 0 แปลงเป็ นตาแหน่ ง
จริงทางกายภาพ = (5 x 4) + 0 = 20
ในระบบการแบ่งเป็ นหน้านี ้ จะไม่มก
ี ารสู ญเปล่า
พื ้ น ที่ ย่ อ ย ภ า ย น อ ก เ พ ร า ะ เ นื ้ อ ที่ ใ น
่ งว่างอยู ่ (แม้จะไม่ต่อเนื่ องกน
หน่ วยความจาทียั
ั )
่ องการได้เสมอ
สามารถจะจัดให้กระบวนการทีต้
้ ย่
่ อยภายในได้ เพราะ
 แต่อาจมีการสู ญเปล่าพืนที
่ งจัดให้ทล
การจัดสรรเนื ้อทีจริ
ี ะหน้ าเป็ นจานวน
เต็ ม ถ้า กระบวนการต้อ งการใช้เ นื ้ อที่ไม่ เ ป็ น
จานวนเต็มหน้า หน้าสุดท้ายย่อมเหลือเศษ

่ กระบวนการใหม่เข้ามาในระบบ ตัวจัดตาราง
เมือมี
่
ระยะยาวจะดู ท ี่ขนาดของกระบวนการ (ซึงบอก
เป็ นจ านวนหน้ า )
แล้ว ดู เนื ้ อที่ว่ า งใน
หน่ วยความจาหลักว่ามีจานวนหน้าว่างพอเพี ยง
หรือไม่
 ถ้ากระบวนการมีขนาด n หน้า (Page) ตัวจัด
่ างให้ได้ n หน้า
ตารางระยะยาวก็ตอ
้ งจัดเนื ้อทีว่
(Frame) เช่นกัน
่
◦ ถ้ามีเนื ้อทีพอ
ก็จะนาส่วนของกระบวนการหน้า
่ างทีแรก
่
แรกลงในเนื ้อทีว่
และใส่หมายเลขหน้า
จริง ลงในตารางเลขหน้าของกระบวนการนี ้
้ นาหน้าทีสองลง
่
◦ จากนันก็
และใส่หมายเลขหน้า

Free Frames
Before allocation
After allocation
วิธพ
ี นฐาน
ื้
(Basic Method)
 การแบ่งเป็ นตอน (Segmentation) เป็ นการจัดการ
หน่ วยความจาหลักตามมุมมองของผู ใ้ ช้
 หน่ วยความจาทางตรรกะจะถู กแบ่งเป็ นตอน ๆ แต่ละ
ตอนจะมีชอและขนาด
ื่
ตาแหน่ งอ้างอิง ก็จะมีชอตอน
ื่
ก ับระยะห่างจากขอบ (offset)
่
 ชือตอนมั
กใช้ตวั เลขแทนเรียกว่า เลขตอน (segmentnumber)
 โดยปกติตว
ั แปลภาษา assembly หรือตัวแปลภาษา
้ั งอืน
่ ๆ จะแบ่งโปรแกรมเป็ นตอน ๆ โดยอ ัตโนมัต ิ
ชนสู
ตัวแปลภาษาปาสคาล อาจแบ่งตอนเป็ น
 ตอนที่ 1 เก็บตัวแปรร่วม (Global variables)
้ ส
่ าหร ับการเรียกโปรแกรมย่อย
 ตอนที่ 2 เนื อที
่
เพือใช้
เก็บค่าตัวแปรต่าง ๆ
และตาแหน่ งในการเรียกกลับ
่
 ตอนที่ 3 เก็บคาสังของโปรแกรมย่
อยต่าง ๆ
 ตอนที่ 4 เก็บตัวแปรภายใน (Local variables)
สาหร ับโปรแกรมย่อย
ฮาร ์ดแวร ์ (Hardware)
 แม้ ว่ า ผู ้ ใ ช้ส าม า รถอ้า งอิ ง ส่ ว นต่ า ง ๆ ข อ ง
โปรแกรมโดยใช้ต าแหน่ งแบบ 2
มิต ิ แต่
หน่ วยความจ าจริง ยัง คงเป็ นแบบมิต ิเ ดีย ว คือ
เป็ นแถวของคาเรียงต่อกันไป
 ต้อ งมีว ิธ ก
ี ารจับ คู ่ ต าแหน่ งทางตรรกะแบบสอง
มิต ิ ให้เป็ นตาแหน่ งจริง มิตเิ ดียว โดยใช้ต าราง
เลขตอน (segment table)
ต าแหน่ งทางตรรกะที่ กระบวนการใช้จ ะถู ก
แบ่งเป็ น 2 ส่วน
◦ หมายเลขตอน (segment number: s)
้
 เป็ นตัวชีไปยั
งข้อมู ลในตารางเลขตอน
◦ ระยะจากขอบ (offset: d)
้
 มีคา
่ ตังแต่
0 ถึงขอบเขตของตอน
 ข้อมู ลในตารางเลขตอน
◦ ฐาน (base)
◦ ขอบเขต (limit)
 ระยะจากขอบรวมกับฐาน (d+base)
จะเป็ น
ตาแหน่ งจริงในหน่ วยความจาหลัก


ตัวอย่างมี 5 ตอน แต่ละตอนเก็บอยู ่ใน
หน่ วยความจาทางกายภาพ





ตารางเลขตอนจะมีค่ า ฐานและขอบเขตของแต่ ล ะ
ตอน เช่น
่ นที่ 4300 และ
ตอนที่ 2 มีค่าฐานหรือตาแหน่ งเริมต้
ค่าขอบเขต 400 ไบต ์
้
ดังนันการอ้
างอิงไบต ์ที่ 53 ของตอนที่ 2 จะเป็ นค่า
ตาแหน่ งจริง
◦ 4300 + 53 = 4353
ตาแหน่ งทางตรรกะของตอนที่ 3 ไบต ์ที่ 852 เท่ากบ
ั
ตาแหน่ งจริง
◦ 3200 + 852 = 4052
การอ้างอิงตาแหน่ งไบต ์ที่ 1222 ของตอนที่ 0 จะทา
ข้อดีหลักของการแบ่งเป็ นตอน
 สามารถผนวกการป้ องกน
ั ไปกับแต่ละตอนได้ เพราะ
่ ลก
แต่ ล ะตอนคือ ส่ ว นต่ า ง ๆ ของโปรแกรมทีมี
ั ษณะ
ต่าง ๆ กัน ข้อมู ลในตอนเดียวกันมักจะมีการใช้งาน
เหมื อ น ๆ กัน เช่ น ตอนของโปรแกรม ตอนของ
่
ข้อ มู ล เป็ นต้น ในระบบทัวไป
เราอาจก าหนดตอน
่
ของโปรแกรมหรือ ค าสังให้
เ ป็ นแบบอ่ า นได้เ ท่ า นั้ น
้ (execute-only)
(read-only) หรือใช้งานเท่านัน
 ใช้บต
ิ ป้ องกันควบคู ก
่ บ
ั แต่ละตอนในตารางเลขตอน
่ องก ันการใช้ผด
เพือป้
ิ ประเภท (เช่น เขียนลงในตอน
่ อา
้ หรือใช้ทางานได้เท่านัน)
้
ทีใช้
่ นได้เท่านัน
 ใส่ขอ
้ มู ลประเภท array ไว้ในตอนเฉพาะ ฮาร ์ดแวร ์
ของระบบก็จะสามารถช่วยตรวจดูได้วา
่ มีการอ้างอิง
้

ข้อดีอก
ี ข้อหนึ่ งก็คอ
ื สามารถใช้ขอ
้ มู ลหรือ
โปรแกรมร่วมกันได้สะดวก กระบวนการแต่
ละตัว จะมีต ารางเลขตอนของตนเอง (เก็ บ
อยู ่ในตารางข้อมู ลเฉพาะของกระบวนการ)
กระบวนการหลายตัวอาจใช้ตอนร่วมกันได้
้
้
โดยให้ต วั ชีเลขตอนชี
ไปยั
ง ที่เดีย วกันใน
หน่ วยความจาจริง
ดั ง นั้ น ข้ อ มู ล ทุ ก ช นิ ด ที่ ก า ห น ด เ ป็ น ต อ น
สามารถใช้รว
่ มกันได้โดยไม่จากัดจานวนตอน
่
ทีจะใช้
รว่ มกัน
 กระบวนการหลายตัว จึง สามารถใช้โ ปรแกรม
ร่ว มกันได้อ ย่ า งสะดวก เช่น การใช้โ ปรแกรม
text editor ในระบบปั นส่วน (time-sharing)
่ ผูใ้ ช้หลายคนกาลังใช้โปรแกรมนี อยู
้ ่
ซึงมี
่
 โปรแกรมนี ้อาจประกอบด้ว ยหลาย ๆ ตอนซึง
สามารถใช้ร ่ ว มกันได้ โดยผู ใ้ ช้แ ต่ ล ะคนใช้
text editor ร่วมกัน แต่มต
ี อนสาหร ับเก็บ
ข้อมู ลภายในแยกกัน
่ วยความจ าจริง
 ท าให้ค วามต้อ งการเนื ้ อทีหน่

การแบ่ ง เป็ นตอนมัก ท าให้เ กิด การสู ญ
้ ย่
่ อยภายนอก ซึงเกิ
่ ดจากพืนที
้ ่
เปล่าพืนที
้ มี
่
ว่างอยู ่กระจัดกระจายกัน และแต่ละพืนที
ขนาดเล็กไป สาหร ับกระบวนการหนึ่ง ๆ
่ างพอหรือ
 กระบวนการอาจรอจนมีพนที
ื ้ ว่
่
ระบบอาจบีบอด
ั หน่ วยความจาเพือให้
เกิด
้ ว่่ างต่อเนื่องขนาดใหญ่พอเพียง
พืนที
