บทที่ 9 การจัดการหน่วยความจำ ( virtual memory...

73
1 บบบบบบบบบบบบบบ บบบบบบบ (Virtual Memory Management)

Upload: kasimir-harvey

Post on 03-Jan-2016

43 views

Category:

Documents


0 download

DESCRIPTION

บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management ). หน่วยความจำเสมือน (Virtual Memory). หลักการจัดการหน่วยความจำหลักก็เพื่อให้สามารถนำโปรเซสลงหน่วยความจำให้ได้มากที่สุด (ทำให้ระบบมัลติโปรแกรมมิ่งทำงานย่างมีประสิทธิภาพมากที่สุด) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

1

บทท�� 9การจัดการหน่�วยความจั�า(Virtual Memory Management)

Page 2: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

2

หลั�กการจั�ดการหน่วยความจั�าหลั�กก�เพื่��อให�สามารถน่�าโปรเซสลังหน่วยความจั�าให�ได�มากที่ �ส!ด (ที่�าให�ระบบม�ลัติ&โปรแกรมม&�งที่�างาน่ยางม ประส&ที่ธิ&ภาพื่มากที่ �ส!ด)

หน่วยความจั�าเสม�อน่ เป*น่ว&ธิ การหน่+�งที่ �สามารถที่�าให�โปรเซสที่�างาน่ได� ถ+งแม�วาโปรเซสน่�,น่จัะไมได�อย-ใน่หน่วยความจั�าหลั�กที่�,งหมดก�ติาม โดยระบบปฏิ&บ�ติ&การจัะที่�าหน่�าที่ �เก�บบางสวน่ของโปรแกรมที่ �ก�าลั�งที่�างาน่ไว�ใน่หน่วยความจั�าหลั�ก แลัะเก�บที่ �สวน่ที่ �เหลั�อไว�ใน่ฮาร1ดด&สก1

ข�อด หลั�กของว&ธิ น่ , ก�ค�อ โปรแกรมของผู้-�ใช้�สามารถม ขน่าดใหญ่กวาหน่วยความจั�าจัร&งก�ได� เพื่ราะว&ธิ น่ ,จัะสร�างหน่วยความจั�าที่างติรรก ให�ด-เสม�อน่วาม หน่วยความจั�าเป*น่แถวขน่าดใหญ่

หน่�วยความจั�าเสม�อน่ (Virtual Memory)หน่�วยความจั�าเสม�อน่ (Virtual Memory)

Page 3: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

3

ระบบที่ �ใช้�หน่วยความจั�าเสม�อน่สวน่ใหญ่จัะใช้�เที่คน่&คที่ �เราเร ยกวา การแบงเป*น่หน่�า หร�อ เพื่จัจั&�ง(paging)

หลั�กการที่�างาน่ เป*น่การแบงหน่วยความจั�าหลั�กออกเป*น่พื่าร1ติ&ช้� �น่ที่ �ม

ขน่าดเลั�กแลัะเที่าก�น่ เราเร ยกวา เฟรม (frames) หร�อ เพื่จัเฟรม (pag

e frame) การแบงโปรแกรมใน่ด&สก1ที่ �จัะเข�ามาใช้�งาน่เป*น่ช้&,น่เลั�ก

ๆ เช้น่ก�น่เร ยกวา หน่�า (page) โดยที่ �ที่!กหน่�าจัะม ขน่าดเที่าก�น่หมด แลัะม เง��อน่ไขวา

ขน่าดของ 1 หน่�า จัะติ�องเที่าก�บขน่าดของ 1เพื่จัเฟรม เสมอ

ใน่ 1 เฟรม จัะม การน่�าเอาแค 1 หน่�า มาใสได�เที่าน่�,น่ เช้น่ หน่วยความจั�าหลั�ก M M 1 แลัะแบงออกเป*น่ 4 เพื่จัเฟรม ด�งน่�,น่ ขน่าดของเพื่จัเฟรมค�อ MM 2 5 6 แลัะ หน่�าใน่ด&สก1เที่าก�บ

256 KB เหม�อน่ก�น่

การแบ�งเป็�น่หน่�า (Paging) การแบ�งเป็�น่หน่�า (Paging)

Page 4: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

4

Page 5: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

5

โหลัดโปรเซส A, B แลัะ C ลังหน่วยความจั�าได�อยางติอ เน่��อง จัน่กระที่��งน่�าโปรเซส B ออกไป แลั�วที่�าการโหลัดโปร

เซส D ลังหน่วยความจั�า ซ+�งสามารถที่�าได�โดยใช้�แน่วความค&ดของแอ�ดเดรสที่างติรรก (logical address)

โดยให�ระบบปฏิ&บ�ติ&การควบค!มการที่�างาน่ของโปรแกรมหร�อโปรเซสใน่ร-ปแบบของติารางหน่�า (page table)

การแบ�งเป็�น่หน่�า (Paging) การแบ�งเป็�น่หน่�า (Paging)

Page 6: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

6

การแบงเป*น่หน่�าแบบงาย ๆ น่�,น่จัะเหม�อน่ก�บการแบงพื่าร1ติ&ช้� �น่แบบม ขน่าดคงที่ � ข�อแติกติางอย-ที่ �วาการแบงเป*น่หน่�าน่�,น่จัะเป*น่การแบงพื่�,น่ที่ �ที่ �ม ขน่าดเลั�ก แลัะโปรแกรมหน่+�ง ๆ สามารถใช้�งาน่ได�มากกวา 1 พื่าร1ติ&ช้� �น่ได� แลัะพื่าร1ติ&ช้� �น่เหลัาน่ ,ก�ไมจั�าเป*น่ติ�องติอเน่��องก�น่

ว&ธิ การที่ �ที่�าให�การจั�ดการแบบแบงเป*น่หน่�าสามารถที่�าได�งายข+,น่โดย เร&�มจัากการแบงขน่าดของเฟรม แลัะขน่าดของหน่�าให�เป*น่คายกก�าลั�งของเลัขฐาน่ 2 ซ+�งว&ธิ น่ ,แอ�ดเดรสที่างติรรกจัะแสดงเป*น่เลัขที่ �หน่�า แลัะระยะจัากขอบหน่�า (offset)

การแบ�งเป็�น่หน่�า (Paging) การแบ�งเป็�น่หน่�า (Paging)

Page 7: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

7

P# +Offset = 000001+0111011110 = 0000010111011110

1 478 1502

Page 8: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

8

การก�าหน่ดขน่าดของหน่�าเป*น่คาของเลัขยกก�าลั�ง 2 ที่�าให�

โปรแกรมเมอร1ไมจั�าเป*น่ติ�องสน่ใจัแอ�ดเดรสที่างติรรกเลัย เพื่ราะวาแอ�ดเดรสที่างติรรกของโปรแกรมน่�,น่ม คาเที่าก�บแอ�ดเดรสเปร ยบเที่ ยบอย-แลั�ว (logical address=relativeaddress)

การที่�างาน่ของฮาร1ดแวร1ใน่การแปลังที่ �อย-น่� ,น่จัะที่�าได�งายข+,น่ เพื่ราะวาที่ �อย-จัะถ-กเข ยน่อย-ใน่ร-ปของ n + m บ&ติ โดยบ&ติที่างด�าน่ซ�ายม�อส!ดจั�าน่วน่ n บ&ติ เป*น่เลัขที่ �หน่�า แลัะ บ&ติที่างด�าน่ขวาม�อจั�าน่วน่ mบ&ติเป*น่ระยะจัากขอบหน่�า ใน่ติ�วอยางกอน่หน่�าน่ , n=6 แลัะ m=1 0 โดยการแปลังแอ�ดเดรส

การแบ�งเป็�น่หน่�า (Paging) การแบ�งเป็�น่หน่�า (Paging)

Page 9: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

9

การแปลังแอ�ดเดรสที่�าได�โดย แยกเลัขที่ �หน่�าโดยน่�าบ&ติที่างด�าน่ซ�ายม�อจั�าน่วน่

n บ&ติ ออกมาจัากที่ �อย-ที่างติรรก ใช้�เลัขที่ �หน่�าเป*น่ติ�วติ�,งใน่ติารางหน่�าของ

โปรแกรม เพื่��อน่�าไปใช้�ค�น่หาเลัขที่ �เฟรม k ติอไป

ที่ �อย-ที่างกายภาพื่ของเฟรมน่�,น่ค�อ k x 2m แลัะที่ �อย-ที่างกายภาพื่ของหน่วยความจั�าหลั�กที่ �เที่ ยบ ก�ค�อติ�วเลัขที่ �ได�บวกก�บระยะจัากขอบหน่�า (เราไมจั�าเป*น่ติ�องค�าน่วณแอ�ดเดรสที่างกายภาพื่อ กเพื่ราะเราสามารถรวมเลัขที่ �เฟรมก�บระยะจัากขอบหน่�าได�เลัย)

การแบ�งเป็�น่หน่�า (Paging) การแบ�งเป็�น่หน่�า (Paging)

Page 10: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

10

Page 11: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

11

Page 12: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

12

ติารางหน่�า (page table) น่�,น่เป*น่การแมพื่คาของแอ�ดเดรสที่างติรรกไปหาคาเลัขที่ �เฟรมที่ �อย-ใน่หน่วยความหลั�ก

ที่างคณ&ติศาสติร1 อาจัจัะกลัาวได�วาติารางหน่�าน่ ,เป*น่ฟ;งก1ช้� �น่ที่ �ร �บคาของแอ�ดเดรสที่างติรรกเป*น่อ&น่พื่!ติ

(input) แลัะให�คาแอ�ดเดรสที่างกายภาพื่ออกมา (output) ซ+�งส&�งที่ �ฟ;งก1ช้� �น่ด�งกลัาวที่�าก�ค�อ แที่น่

แอ�ดเดรสของเพื่จัที่ �เป*น่แอ�ดเดรสที่างติรรกด�วยแอ�ดเดรสของเฟรม แติถ+งแม�น่การอธิ&บายข�างติ�น่จัะด-เหม�อน่งายแติป;ญ่หาที่ �พื่บม อย- 2 ห�วข�อค�อ ติารางหน่�าสวน่ใหญ่จัะม ขน่าดใหญ่ การแมปคาแอ�ดเดรสด�งกลัาวจัะติ�องที่�าด�วย

ความเร�วส-ง

ตารางหน่�า (page table) ตารางหน่�า (page table)

Page 13: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

13

ติารางหน่�าสวน่ใหญ่จัะม ขน่าดใหญ่ ใน่ระบบคอมพื่&วเติอร1ป;จัจั!บ�น่จัะใช้�ที่ �อย-อยางติ��า

ประมาณ 32 บ&ติ ถ�าเราก�าหน่ดให�แติลัะหน่�าม ขน่าด 4 KB ก�จัะที่�าให�ระบบม หน่�าที่�,งหมด 1 ลั�าน่หน่�า

ใน่ระบบที่ �เป*น่แบบ 64 บ&ติ ก�จัะที่�าให�ม จั�าน่วน่หน่�ามากประมาณเก&น่กวาที่ �จัะน่�าไปใช้�หมด (1012 หน่�า )

การแมปคาแอ�ดเดรสด�งกลัาวจัะติ�องที่�าด�วยความเร�วส-ง

การแมประหวางแอ�ดเดรสที่างติรรกแลัะแอ�ดเดรสที่างกายภาพื่น่�,น่จัะติ�องที่�าที่!ก ๆ คร�,งเม��อม การอ�างถ+งแอ�ดเดรสจัร&งใน่หน่วยความจั�าหลั�ก

ใน่ 1 ค�าส��งโปรแกรมอาจัจัะแมปเป*น่จั�าน่วน่ 12

หร�อมากกวาน่�,น่ แลัะถ�าก�าหน่ดให�แติลัะค�าส��งใช้�เวลัา 4 nsec ติารางหน่�าน่�,น่จัะติ�องม ความสามารถใน่การ

ส�บค�น่ได�เร�วมากกวา 1 nsec เพื่��อป<องก�น่ป;ญ่หาคอขวด (bottleneck)

ตารางหน่�า (page table) ตารางหน่�า (page table)

Page 14: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

14

Page 15: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

15

ติารางหน่�าประกอบไปด�วยอาร1เรย1ของร จั&สเติอร1 เม��อม โปรเซสหน่+�งเร&�มที่�างาน่ ระบบปฏิ&บ�ติ&การจัะ

ที่�าการโหลัดร จั&สเติอร1ด�วยติารางหน่�าของโปรเซสน่�,น่ ๆ โดยที่�าการก�อบป=, จัากหน่วยความจั�าหลั�ก ก�จัะที่�าให�เราไมติ�องอ�างถ+งหน่วยความจั�าอ กใน่ขณะที่ �โปรเซสก�าลั�งที่�างาน่ ข�อด ของว&ธิ น่ ,ก�ค�อ เป*น่ว&ธิ ที่ �งายแลัะไมติ�อง

ที่�าการอ�างถ+งหน่วยความจั�าอ กเม��อที่�าการแมปแอ�ดเดรส

ข�อเส ยก�ค�อถ�าติารางของหน่�าม ขน่าดใหญ่ก�จัะที่�าให�ระบบม ประส&ที่ธิ&ภาพื่ใน่การที่�างาน่ติ��าลัง เพื่ราะการโหลัดติารางหน่�าที่�,งหมดน่�,น่จัะใช้�เวลัาน่าน่

ตารางหน่�า (page table) ตารางหน่�า (page table)

Page 16: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

16

ตารางลำ�าดบแรก

- 0

4M

- 4

8M

4M บน่

Page 17: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

17

โครงสร�างติารางหน่�า ตารางหน่�า (page table) ตารางหน่�า (page table)

Page frame number เป*น่ฟ>ลัด1ที่ �ม ความส�าค�ญ่มากที่ �ส!ดเพื่ราะฟ>ลัด1น่ ,ใช้�ใน่การเก�บข�อม-ลัวา หน่�าน่ ,จัะไปอย-ใน่เฟรมเลัขที่ �อะไรใน่หน่วยความจั�าหลั�ก

Present/absent ม ขน่าด 1 บ&ติ ใช้�บอกวาหน่�าน่ ,ใน่ป;จัจั!บ�น่อย- (present) หร�อ ไมอย- (absent) ใน่หน่วยความจั�าหลั�ก (1=อย- 0, =ไมอย- ) ถ�าเป*น่เป*น่ 0แลั�ว จัะที่�าให�เก&ดป;ญ่หาการผู้&ดหน่�าได� (page fault)

Page 18: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

18

ตารางหน่�า (page table) ตารางหน่�า (page table) Protection เป*น่บ&ติที่ �เก�บข�อม-ลัเก �ยวก�บการป<องก�น่

หน่�าวาหน่�าน่ ,ม การป<องก�น่ใน่การเร ยกใช้�งาน่อยางไร เช้น่ ให�อาน่ได�อยางเด ยว (Read Only), อาน่แลัะเข ยน่ได� (R

ead/Write) หร�อเอ�กซ&ค&วติ1ได� (Execute) ซ+�งการป<องก�น่น่ ,ใช้� 3 บ&ติก�พื่อ เช้น่ M ( ), ( ),

(excute) เป*น่ 00000101001, , , 1 เป*น่ติ�น่

Modified ใช้�ใน่การเก�บข�อม-ลัเก �ยวก�บการใช้�งาน่ของหน่�าน่�,น่ วาหน่�าที่ �เข�าไปอย-ใน่หน่วยความจั�าหลั�ก แลัะที่ �ถ-กใช้�งาน่แลั�ว หน่�าน่�,น่ถ-กบ�น่ที่+กหร�อปร�บเปลั �ยน่คาหร�อไม (0=ไมม การถ-กบ�น่ที่+กหร�อปร�บปร!งเปลั �ยน่คา M1 =ม การถ-กบ�น่ที่+กหร�อปร�บปร!งเปลั �ยน่แปลังคา ) บ&ติน่ ,ร- �จั�กก�น่ใน่อ กช้��อหน่+�งวา เดอร1ติ ,บ&ติ (dirty bit) เพื่ราะเป*น่บ&ติที่ �ระบบปฏิ&บ�ติ&การใช้�ใน่การติรวจัสอบสถาน่ะของหน่�า (ถ�าหน่�าไหน่เปลั �ยน่แปลังจัะเป*น่บอติสกปรกที่ �ติ�องถ-กเข ยน่กลั�บลังด&สก1

Page 19: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

19

ตารางหน่�า (page table) ตารางหน่�า (page table) Referenced หน่�าที่ �เข�าไปอย-ใน่หน่วยความจั�าหลั�กน่ ,

ถ-กเร ยกใช้�บ�างหร�อไม (0=หน่�าน่�,น่ย�งไมถ-กเร ยกใช้�งาน่ติ�,งแติถ-กโหลัดเข�าใน่หน่วยความจั�าหลั�ก 1, =หน่�าที่ �ถ-กเร ยกใช้�งาน่แลั�ว ) แลัะบ&ติน่ ,จัะเป*น่บ&ติที่ �ส�าค�ญ่ส�าหร�บกระบวน่การส�บเปลั �ยน่หน่�า (page replacement) ที่ �เราจัะเร ยน่ร- �ใน่ห�วข�อติอไป

Caching disabled เป*น่บ&ติที่ �ใช้�ก�าหน่ดวาเราไมติ�องการเก�บคาแคช้ส�าหร�บหน่�าน่�,น่ โดยที่��วไปบ&ติน่ ,จัะส�าค�ญ่ส�าหร�บหน่�าที่ �ถ-กแมปเข�าก�บร&จั&สเติอร1ของอ!ปกรณ1 เช้น่ใน่กรณ ที่ �ระบบปฏิ&บ�ติ&การจัะติ�องรออ!ปกรณ1ภายน่อกติอบสน่องค�าส��งอย-ติลัอดเวลัา

Page 20: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

20

ตารางหน่�า (page table) ตารางหน่�า (page table) เน่��องจัากขน่าดติารางหน่�าน่�,น่ข+,น่อย-ก�บจั�าน่วน่

หน่�าที่ �ม กลัาวค�อ 1 แถวของติารางจัะเที่าก�บ 1หน่�าของโปรเซส

ถ�าโปรเซสม ขน่าดใหญ่มาก ๆ ติารางหน่�าก�จัะม ขน่าดใหญ่ไปด�วยซ+�งจัะที่�าให�การที่�างาน่ใน่การแมปที่ �อย-น่� ,น่ช้�าลัง

ว&ธิ การแก�ก�ค�อ การท�าตารางหน่�าย�อน่กลำบ (inverted page table) โดยใน่ระบบ

คอมพื่&วเติอร1หน่+�ง ๆ จัะม ติารางหน่�าย�อน่กลั�บ ได�แค 1 ติาราง เที่าน่�,น่ เพื่ราะแติลัะแถวใน่ติารางหน่�าย�อน่กลั�บน่�,น่ จัะเป*น่ติ�วแที่น่ของ 1 เฟรม ใน่หน่วยความจั�าหลั�ก

Page 21: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

21

ตารางหน่�า (page table) ตารางหน่�า (page table) เช้น่ ใน่ระบบที่ �ใช้�ที่ �อย-แบบ 64 บ&ติ โดยแติลัะหน่�าม

ขน่าด 4 KB (212) แลัะม ขน่าดของหน่วยความ จั�าหลั�กเที่าก�บ 256 MB (228) ซ+�งที่�าให�ติารางน่ ,ม

ที่�,งหมด 65,536 แถว (2 28-12 = 216 = 65536) โดยใน่แติลัะแถวจัะที่�าหน่�าที่ �เก�บข�อม-ลั

ของ โปรเซส แลัะเลัขที่ �หน่�าที่ �ใช้�งาน่อย-ใน่เฟรมใน่ หน่วยความจั�าหลั�ก

Page 22: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

22

ตารางหน่�า (page table) ตารางหน่�า (page table) Process id เป*น่หมายเลัขโปรเซสที่ �อย-ใน่เฟรม

น่�,น่ Flag Bit จัะแสดงถ+งสถาน่ะของโปรเซสที่ �อย-ใน่

เฟรม ซ+�งม Referenced Bit, Modified Bit แลัะ Present/Absent Bit อยางใน่ติารางหน่�า

Page No จัะแสดงหมายเลัขหน่�าของโปรเซสน่�,น่ที่ �เข�ามาอย-ใน่เฟรมน่ ,

Counter จัะเก�บคาที่!กคร�,งที่ �โปรเซสเซอร1 หร�อ ซ พื่ ย-ที่�าการเร ยกใช้� แลัะอาจัที่�าการบ�น่ที่+กวาถ-ก

เร ยกใช้�งาน่คร�,งส!ดที่�ายเม��อไหรด�วย

Page 23: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

23

ตารางหน่�า (page table) ตารางหน่�า (page table) ติารางหน่�าแบบย�อน่กลั�บน่ ,จัะช้วยให�เราประหย�ดพื่�,น่ที่ �ได�

เม��อแอ�ดเดรสหน่วยความจั�าเสม�อน่น่�,น่ม จั�าน่วน่มากกวา แอ�ดเดรสใน่หน่วยความจั�าหลั�ก

ว&ธิ ด�งกลัาวม ข�อเส ยค�อ การแปลังแอ�ดเดรสเสม�อน่ไปหาแอ�ดเดรสจัร&งที่างกายภาพื่น่�,น่ที่�าได�ยากข+,น่

เม��อม โปรเซส n อ�างถ+ง หน่�า p ฮาร1ดแวร1จัะไมสามารถที่�าการค�น่หาแอ�ดเดรสจัร&ง โดยการใช้� p เที่ ยบเป*น่อ&น่เด�กซ1ของติารางได�อ กติอไป

ติรงก�น่ข�ามว&ธิ การค�น่หาจัะติ�องที่�าการส�บค�น่ที่!กแถวใน่ติารางหน่�าย�อน่กลั�บ ซ+�งการค�น่หาที่!กแถวใน่ติารางขน่าด

M 64 น่�,น่ที่�าให�การที่�างาน่ช้�าลังพื่อสมควร ว&ธิ แก�ป;ญ่หาที่�าได�โดยใช้�ว&ธิ TLBs (Translation

Lookaside Buffers) ถ�า TLB สามารถเก�บหน่�าที่ �ถ-กใช้�งาน่บอย ๆ การแปลัที่ �อย-ก�สามารถที่�าได�เร�วเหม�อน่ก�บที่ �เราที่�าใน่ติารางหน่�าธิรรมดา

Page 24: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

24

ตารางหน่�า (page table) ตารางหน่�า (page table) การใช้�ติารางแบบย�อน่กลั�บน่ ,จั�าเป*น่ติ�องใช้�ซอฟติ1แวร1ช้วย

ใน่การส�บค�น่ ซ+�งค�อการใช้�ติารางแฮช้ แลัะ ฟ;งก1ช้� �น่แฮช้ (hash function เป*น่ฟ;งก1ช้� �น่ที่ �ใช้�ใน่การแปลังข�อม-ลัที่ �ม

ความยาวมาก เป*น่บ&ติที่ �ม จั�าน่วน่น่�อยลังแลัะคาแฮช้ของข�อม-ลัแติลัะคาไมควรม คาเหม�อน่ก�น่ )

ใน่การแปลังที่ �อย-เสม�อน่ ด�งร-ปแลัะหน่�าที่ �อย-ใน่หน่วยความจั�าที่ �ม คาแฮช้เหม�อน่ก�น่ก�จัะม การเช้��อมติอเข�าหาก�น่ (chained)

Page 25: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

25

Page 26: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

26

บพเฟอร"ค�น่หาท��อย#� (Translation Lookaside Buffer)

บพเฟอร"ค�น่หาท��อย#� (Translation Lookaside Buffer)

โดยที่��วไป เม��อม การอ�างถ+งหน่วยความจั�าเสม�อน่ที่!ก ๆ คร�,ง จัะม การเร ยกหาหน่วยความจั�าหลั�กถ+ง 2 คร�,ง ค�อม การด+งแถวของติารางหน่�า แลัะการด+งข�อม-ลัที่ �ติ�องการออกมาจัากหน่วยความจั�าหลั�ก

การที่�างาน่ของหน่วยความจั�าเสม�อน่ใช้�เวลัาใน่การเข�าถ+งหน่วยความจั�าเป*น่ 2 เที่า

ว&ธิ การป<องก�น่ป;ญ่หาด�งกลัาวสามารถที่�าได�โดยใช้�แคช้หร�อหน่วยความจั�าพื่&เศษใน่การเก�บแถวของติารางหน่�า ที่ �เราเร ยกก�น่วา บ�พื่เฟอร1ค�น่หาที่ �อย- (TLB) โดยแคช้น่ ,จัะที่�าหน่�าที่ �เก�บแถวของติารางหน่�าที่ �พื่+�งใช้�เร ยกใช้�งาน่เสร�จั

Page 27: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

27

Page 28: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

28

บพเฟอร"ค�น่หาท��อย#� (Translation Lookaside Buffer)บพเฟอร"ค�น่หาท��อย#� (Translation Lookaside Buffer)

เม��อม การให�คาแอ�ดเดรสเสม�อน่ก�บระบบ โปรเซสเซอร1จัะที่�าการส�บค�น่ใน่ติาราง TLB กอน่ ถ�าพื่บแถวที่ �ติ�องการใน่ติารางหน่�า (TLB hit)

เราก�สามารถเก�บเลัขที่ �เฟรมแลัะแปลังเป*น่แอ�ดเดรสจัร&งได�เลัย

แติถ�าไมพื่บแถวที่ �ติ�องการ (TLB miss)โปรเซสเซอร1 หร�อซ พื่ ย-ก�จัะติ�องใช้�เลัขที่ �หน่�าไปเปร ยบเที่ ยบก�บอ&น่เด�กซ1ของติารางหน่�า เพื่��อหาแถวที่ �ติ�องการ แลัะซ พื่ ย-ก�จัะที่�าหน่�าที่ �เพื่&�ม TLBให�ม แถวของติารางหน่�าใหมน่ ,ด�วย

Page 29: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

29

บพเฟอร"ค�น่หาท��อย#� (Translation Lookaside Buffer)บพเฟอร"ค�น่หาท��อย#� (Translation Lookaside Buffer)

เน่��องจัาก TLB จัะเก�บข�อม-ลัของบางแถวจัากติารางหน่�าเที่าน่�,น่ ที่�าให�เราไมสามารถเร ยงลั�าด�บแถวของ TLB ด�วยเลัขที่ �หน่�าได� ด�งน่�,น่ คาของฟ>ลัด1ใน่แถวของ TLB จัะติ�องม เลัขที่ �หน่�าก�าก�บด�วย

การค�น่หาเลัขที่ �หน่�าใน่ TLB ของโปรเซสเซอร1น่�,น่จัะเป*น่แบบการแมพื่รวม(associative mapping) ซ+�งแติกติางจัากการแมพื่โดยติรงอยางก�น่ที่ �ที่�าใน่ติารางหน่�า

การออกแบบ TLB จัะติ�องพื่&จัารณาถ+งว&ธิ การจั�ดการก�บคาของแถวที่ �อย-ใน่ติาราง แลัะว&ธิ การแที่น่ที่ �คาของแถวใหมเข�าไปใน่ติาราง

Page 30: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

30

Page 31: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

31

การสบเป็ลำ��ยน่หน่�า (Page replacement algorithms)

การสบเป็ลำ��ยน่หน่�า (Page replacement algorithms)

การเลั�อกหน่�าใน่หน่วยความจั�าที่ �จัะถ-กแที่น่ที่ �ด�วยหน่�าใหมที่ �เข�ามา

ค�าถามที่ �น่าสน่ใจัใน่การส�บเปลั �ยน่หน่�า ม จั�าน่วน่เพื่จัเฟรมเที่าไหรที่ �สามารถให�ก�บโปรเซ

สแติลัะติ�วได� กลั!มของหน่�าถ-กพื่&จัารณาให�ส�บเปลั �ยน่หน่�าน่�,น่

ควรจัะถ-กจั�าก�ดหร�อไม เพื่��อป<องก�น่ไมให�โปรเซสที่ �ที่�าให�เก&ดการผู้&ดหน่�า (page fault)ที่�างาน่

ใน่กลั!มของหน่�าที่ �เราพื่&จัารณา เราจัะเลั�อกหน่�าใดที่ �จัะน่�าไปส�บเปลั �ยน่

Page 32: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

32

การสบเป็ลำ��ยน่หน่�า (Page replacement algorithms)

การสบเป็ลำ��ยน่หน่�า (Page replacement algorithms)

ห�วข�อที่ � 1 แลัะ 2 เก �ยวข�องก�บ การจัดการภายใน่ (Resi dent Set Management) ซ+�งเป*น่การจั�ดการที่ �เก �ยวข�องก�บน่โยบายที่ �เราสามารถก�าหน่ดเองได� เพื่��อให�ระบบปฏิ&บ�ติ&การสามารถติ�ดส&น่ใจัวา “ติ�องการน่�าหน่�าของโปรเซสเข�ามาเที่าไหรใน่หน่วยความจั�า” หร�อวา “ติ�องการให�หน่วยความจั�าหลั�กก�บโปรเซสบางติ�วเป*น่จั�าน่วน่เที่าไหร” ลัองพื่&จัารณา ถ�าขน่าดหน่�าของหน่วยความจั�าน่�อย จัะที่�าให�ม

จั�าน่วน่โปรเซสเข�ามาใช้�งาน่หน่วยความจั�ามากข+,น่ ที่�าให�ความน่าจัะเป*น่ของระบบปฏิ&บ�ติ&การสามารถค�น่พื่บโปรเซสอยางน่�อยหน่+�งโปรเซสที่ �พื่ร�อมที่ �จัะที่�างาน่มากข+,น่ แลัะที่�าให�เส ยเวลัาใน่การสลั�บหน่�าน่�อยลัง

Page 33: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

33

การสบเป็ลำ��ยน่หน่�า (Page replacement algorithms)

การสบเป็ลำ��ยน่หน่�า (Page replacement algorithms)

ถ�าจั�าน่วน่หน่�าของโปรเซสหน่+�ง ๆ ที่ �สามารถอย-ใน่หน่วยความจั�าหลั�กน่�อย (จั�าน่วน่เฟรมน่�อย )จัะที่�าให�อ�ติราการเก&ดการผู้&ดหน่�าส-งมากข+,น่ เพื่ราะวาความส�มพื่�น่ธิ1ระหวางอ�ติราการผู้&ดหน่�าแลัะจั�าน่วน่เฟรมใน่หน่วยความจั�าเป*น่แบบไฮเพื่อร1บอลัา (hyperbola) ด�งใน่ร-ป

ถ�าการก�าหน่ดขน่าดของหน่�าคงที่ �แลั�ว การให�หน่วยความจั�าเพื่&�มก�บโปรเซสใดโปรเซสหน่+�งจัะไมม ผู้ลักระที่บติออ�ติราการผู้&ดหน่�ามากน่�ก

ห�วข�อที่ � 3 เก �ยวข�องก�บว&ธิ ใช้�แลัะอ�ลักอร&ที่+�มของการส�บเปลั �ยน่หน่�าซ+�งเราจัะพื่&จัารณารายลัะเอ ยดติอไป

Page 34: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

34

ลั�กษณะการแบงหน่�าที่ �ม ความส�มพื่�น่ธิ1ก�บอ�ติราการ ผู้&ดหน่�า

Page 35: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

35

อลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�าอลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�า ว&ธิ ส�บเปลั �ยน่แบบมากอน่- ออกกอน่ (First-in

First-out Algorithm) ใช้�เวลัาที่ �หน่�าน่�,น่ถ-กน่�าเข�ามาใน่หน่วยความจั�าเป*น่

เกณฑ์1ใน่การติ�ดส&น่ใจั เม��อติ�องการเลั�อกหน่�าบางหน่�าออก ก�ให�เลั�อกจัาก

หน่�าที่ �เข�ามาน่าน่ที่ �ส!ด เราอาจัจัะไมติ�องจัดเวลัาจัร&ง ๆ ที่ �หน่�าน่�,น่เข�ามาใช้�งาน่

ก�ได� เพื่ ยงแติสร�างค&วแบบมากอน่- ออกกอน่ (FIFO queue)

Page 36: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

36

อลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�าอลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�า ว&ธิ ส�บเปลั �ยน่แบบมากอน่-ออกกอน่ - (First in

- First out Algorithm) จัากติ�วอยาง เก&ดการผู้&ดหน่�า 15 คร�,ง การผู้&ดหน่�าก�จัะเก&ดข+,น่เก�อบจัะที่�น่ที่ เม��อน่�าหน่�าที่ �ก�าลั�ง

ใช้�งาน่น่�,น่กลั�บมา แลัะหน่�าบางหน่�าใน่หน่วยความจั�าก�จัะถ-กส�บเปลั �ยน่ออกไปแที่น่

การส�บเปลั �ยน่ที่ �ไมด จัะเพื่&�มอ�ติราการผู้&ดหน่�าได� แลัะที่�าให�การที่�างาน่ของโปรเซสช้�าลัง แติจัะไมที่�าให�ระบบที่�างาน่ผู้&ดพื่ลัาด

ปกติ&ก�าหน่ดเฟรมที่ �ม ย&�งมากจัะที่�าให�เก&ดการผู้&ดหน่�าน่�อยลัง แติปรากฏิณ1น่ ,ไมจัร&งเสมอไป จัากติ�วอยางที่ �จัะกลัาวติอไป จัะเห�น่วาเม��อม จั�าน่วน่เฟรมเป*น่ 4 จัะเก&ดการผู้&ดหน่�าน่�อยกวาเม��อม จั�าน่วน่เฟรมเป*น่ 3ลั�กษณะที่ �เก&ดน่ ,เร ยกวา ป็รากฎการณ์"เบลำาด�* (Bala

dy’s anomaly)

Page 37: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

37

กราฟการผู้&ดหน่�าของว&ธิ ส�บเปลั �ยน่แบบมากอน่- ออกกอน่

Reference string : 1 2 3 4 1 2 5, , , , , , , 1 2 3 4 5, , , ,

Page 38: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

38

อลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�าอลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�า ว&ธิ ส�บเปลั �ยน่แบบให�โอกาสคร�,งที่ �สอง (Second

Chance Page Replacement Algorithm) ปร�บปร!งว&ธิ FIFO โดยการป<องก�น่การเปลั �ยน่หน่�าที่ �ถ-ก

เร ยกใช้�งาน่บอยออกไป ที่�าได�โดยการเช้�คที่ �บ&ติ Referenced (R) ของหน่�าที่ �

เข�ามาน่าน่ที่ �ส!ด ถ�าบ&ติ R ม คาเป*น่ 0 ก�แสดงวาหน่�าน่�,น่เกาแลัะไมได�

ถ-กเร ยกใช้�งาน่เลัย ระบบก�สามารถที่�าการส�บ เปลั �ยน่ได�ที่�น่ที่

ถ�าบ&ติ R ม คาเที่าก�บ 1 ก�ให�ก�าหน่ดให�บ&ติ R น่�,น่ เป*น่ 0 แลัะน่�าหน่�าน่�,น่กลั�บไปเข�าแถวใหมอ กคร�,ง

ที่�าการเปลั �ยน่แปลังเวลัาของหน่�าน่�,น่ใหมเหม�อน่ด�ง หน่�าน่�,น่พื่+�งเข�ามาใน่หน่วยความจั�า จัากน่�,น่ก�ที่�าการ

ค�น่หาหน่�าที่ �จัะถ-กส�บเปลั �ยน่ติอไป

Page 39: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

39

ว&ธิ ส�บเปลั �ยน่แบบให�โอกาสคร�,งที่ �สอง

Page 40: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

40

อลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�าอลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�า ว&ธิ การส�บเปลั �ยน่แบบวงรอบน่าฬิ&กา (Clock

Page Replacement Algorithm) ว&ธิ การให�โอกาสคร�,งที่ �สองจัะเป*น่ว&ธิ การที่ �เป*น่

เหติ!เป*น่ผู้ลัพื่อสมควร แติไมม ประส&ที่ธิ&ภาพื่ มากน่�ก

เพื่ราะการที่ �ระบบย�ายหน่�าไปมาใน่ลั&สติ1น่��น่ที่�าให� ระบบเส ยเวลัาพื่อสมควร

ว&ธิ การที่ �สามารถปร�บปร!งว&ธิ การด�งกลัาวได�ก� ค�อ ให�เราเร ยงเฟรมที่!กเฟรมเป*น่ร-ปวงกลัมให�

เหม�อน่ร-ปน่าฬิ&กา แลัะม เข�มน่าฬิ&กาช้ ,ไปที่ �หน่�าที่ �เกาที่ �ส!ด

Page 41: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

41

อลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�าอลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�า ว&ธิ การส�บเปลั �ยน่แบบวงรอบน่าฬิ&กา (Clock

Page Replacement Algorithm) เม��อม การผู้&ดหน่�าเก&ดข+,น่ หน่�าที่ �ม เข�มน่าฬิ&กาช้ ,อย-จัะถ-ก

ติรวจัสอบ ถ�าบ&ติ R ม คาเป*น่ 0 หน่�าน่�,น่ก�จัะถ-กส�บเปลั �ยน่

ออกไป แลัะหน่�าใหมก�จัะถ-กใสเข�ามาใน่ติ�าแหมง เด&ม พื่ร�อมก�น่น่�,น่ เข�มน่าฬิ&กาก�จัะที่�าการเลั��อน่ไป

ด�าน่หน่�า 1 ติ�าแหน่ง แติถ�าบ&ติ R ถ-กก�าหน่ดเป*น่ 1 ก�ให�ลับคาของบ&ติ

น่�,น่เป*น่ 0 แลัะเลั��อน่เข�มไปหน่�าถ�ดไป ว&ธิ ด�งกลัาวจัะถ-กที่�าซ�,าจัน่กวาเราจัะได�หน่�าที่ �ม บ&ติ R

เป*น่ 0 ซ+�งว&ธิ การน่ ,จัะเหม�อน่ว&ธิ การแบบให�โอกาสคร�,ง ที่ � 2 เลัย เพื่ ยงแติแติกติางก�น่ไปใน่ว&ธิ การใช้�งาน่

เที่าน่�,น่

Page 42: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

42

ว&ธิ ส�บเปลั �ยน่แบบวงรอบน่าฬิ&กา

Page 43: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

43

อลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�าอลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�า ว&ธิ ส�บเปลั �ยน่แบบที่ �ด ที่ �ส!ด (Optimal Page

Replacement Algorithm) ว&ธิ ส�บเปลั �ยน่หน่�าที่ �ด ที่ �ส!ด ที่ �จัะที่�าให�อ�ติราการ

ผู้&ดหน่�าติ��าที่ �ส!ด จัะติ�องไมเก&ดปรากฏิการณ1เบลัาด , ว&ธิ การก�ค�อ “ให�เลั�อกส�บเปลั �ยน่หน่�าที่ �จัะไมถ-ก

เร ยกใช้�งาน่ แลัะม ระยะเวลัารอการเร ยกใช้�ที่ �น่าน่ที่ �ส!ด”

Page 44: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

44

ว&ธิ น่ ,จัะที่�าให�เก&ดการผู้&ดหน่�า 9 คร�,ง ซ+�งด กวาว&ธิ แบบ FIFOมาก (ม การผู้&ดหน่�า 15 คร�,ง )

ถ�าไมค&ดการผู้&ดหน่�า 3 คร�,งแรก ซ+�งจัะติ�องเก&ดข+,น่อยางแน่น่อน่ จัะเห�น่ได�วาแบบที่ �ด ที่ �ส!ดน่ ,ด กวาแบบ FIFO ได�ถ+ง 2 เที่า

ว&ธิ แบบที่ �ด ที่ �ส!ดน่ ,ยากที่ �จัะสร�างได�จัร&ง ๆ เพื่ราะเราติ�องร- �ใน่อน่าคติวา จัะม การเร ยกหน่�าใดเม��อไหร

ว&ธิ แบบที่ �ด ที่ �ส!ดน่ , จั+งม ไว�เพื่��อใช้�ใน่การเปร ยบเที่ ยบเที่าน่�,น่

Page 45: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

45

อลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�าอลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�า การส�บเปลั �ยน่แบบที่ �ไมได�ใช้�งาน่-ออกกอน่ (NRU :

Not Recently Used) น่�าว&ธิ การส�บเปลั �ยน่แบบวงรอบน่าฬิ&กามาเพื่&�ม

ประส&ที่ธิ&ภาพื่ โดยพื่&จัารณาบ&ติส�าค�ญ่ใน่ติารางหน่�าเพื่&�มข+,น่อ ก

หน่+�งบ&ติ ซ+�งก�ค�อว&ธิ แบบที่ �ไมได�ใช้�งาน่-ออกกอน่ (NRU)

เน่��องจัากระบบปฏิ&บ�ติ&การสามารถที่�าการเก�บข�อม-ลัสถ&ติ&วาหน่�าใดที่ �ก�าลั�งถ-กใช้� หร�อ ที่ �ไมได�ใช้�งาน่ ได�จัากบ&ติใน่แถวของติารางหน่�าที่ �แสดงสถาน่ะ การที่�างาน่ของแติลัะหน่�า

บ&ติ Referenced จัะถ-กก�าหน่ดเป*น่ 1 เม��อหน่�าน่�,น่ถ-กเร ยกใช้�งาน่ แลัะบ&ติ Modified จัะถ-กก�าหน่ดเป*น่ 1 เม��อหน่�าน่�,น่ม การเปลั �ยน่แปลัง

Page 46: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

46

อลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�าอลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�า การส�บเปลั �ยน่แบบที่ �ไมได�ใช้�งาน่-ออกกอน่ (NRU :

Not Recently Used) บ&ติที่�,งสองน่�,น่เป*น่ฟ>ลัด1ที่ �อย-ใน่แถวของติาราง

หน่�า แลัะจัะถ-กเปลั �ยน่แปลังคาที่!กคร�,งเม��อม การเร ยกใช้�งาน่

ว&ธิ การส�บเปลั �ยน่หน่�าแบบน่ ,เป*น่ด�งน่ , เร&�มที่�างาน่ บ&ติที่�,งสองใน่ที่!ก ๆ หน่�าจัะถ-กก�าหน่ด

เป*น่ 0 เม��อครบวงรอบของระยะเวลัาหน่+�ง ๆ เช้น่ จัากการ

แที่รกของอ&น่เที่อร1ร�พื่ติ1 (clock interrupt) บ&ติ R ก�จัะถ-กก�าหน่ดคาเป*น่ 0 เพื่��อเป*น่ติ�วแยกหน่�าที่ �

ไมได�ถ-กเร ยกใช้�งาน่ออกจัากหน่�าอ��น่ ๆ เม��อม การผู้&ดหน่�าเก&ดข+,น่ ระบบปฏิ&บ�ติ&การจัะที่�าการ

ติรวจัสอบที่!กหน่�าแลัะแบงหน่�าเหลัาน่�,น่ออกเป*น่ 4 กลั!ม ข+,น่อย-ก�บคาของบ&ติ R แลัะ บ&ติ M

Page 47: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

47

อลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�าอลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�า การส�บเปลั �ยน่แบบที่ �ไมได�ใช้�งาน่-ออกกอน่ (NRU :

Not Recently Used) กลั!มที่ � 0 ไมถ-กเร ยกใช้�งาน่ แลัะ ไมม การ

เปลั �ยน่แปลังคา กลั!มที่ � 1: ไมถ-กเร ยกใช้�งาน่ แติ ม การ

เปลั �ยน่แปลังคา กลั!มที่ � 2: ถ-กเร ยกใช้�งาน่ แติ ไมม การ

เปลั �ยน่แปลังคา กลั!มที่ � 3: ถ-กเร ยกใช้�งาน่ แลัะ ม การเปลั �ยน่แปลัง

คา ด-เหม�อน่วา ไมม ที่างเป*น่ไปได�ที่ �จัะม หน่�าอย-ใน่กลั!มที่ � 1

แติ ม�น่ก�อาจัจัะเก&ดข+,น่ได� ใน่กรณ ที่ �หน่�าใน่กลั!มที่ � 3น่�,น่ถ-กระบบปฏิ&บ�ติ&การที่�าการก�าหน่ดบ&ติ R เป*น่ 0เม��อครบวงรอบของระยะเวลัาหน่+�ง ๆ ซ+�งระบบปฏิ&บ�ติ&การไมได�ก�าหน่ดบ&ติ M เป*น่ 0 ด�วย เพื่ราะเราติ�องการข�อม-ลัที่ �วาหน่�าน่�,น่จัะติ�องถ-กเข ยน่ที่�บกลั�บลังไปใน่ด&สก1ด�วยหร�อไม จั+งที่�าการเคลั ยร1บ&ติ R แติ ไมแติะติ�องบ&ติ M แลัะที่�าให�หน่�าน่�,น่อย-ใน่กลั!มที่ � 1

Page 48: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

48

อลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�าอลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�า การส�บเปลั �ยน่แบบที่ �ไมได�ใช้�งาน่-ออกกอน่ (NRU :

Not Recently Used) ว&ธิ น่ ,จัะส!มเอาหน่�าออกจัากกลั!มลั�าด�บติ��าส!ด (เช้น่

กลั!มที่ � 1 ม ลั�าด�บติ��ากวากลั!มที่ � 2 แลัะ 3ติามลั�าด�บ ) ที่ �ม หน่�าของโปรเซสอย-

ว&ธิ การน่ ,ย�งด-เหม�อน่วาจัะพื่ยายามที่ �จัะน่�าเอาหน่�าที่ �ถ-กเปลั �ยน่แปลังแติไมได�ถ-กเร ยกใช้�งาน่หร�ออ�างอ&งถ+งออกที่!กคร�,งที่ �ม การครบวงรอบน่าฬิ&กา (ประมาณ 20msec) มากกวาหน่�าที่ �ไมม การเปลั �ยน่แปลังแติถ-กเร ยกใช้�งาน่บอย

ข�อเดน่ของว&ธิ NRU ค�อ งายที่ �จัะที่�าความเข�าใจั ,ไมยากเก&น่ไปที่ �จัะน่�ามาใช้�งาน่จัร&ง แลัะ ม ประส&ที่ธิ&ภาพื่คอน่ข�างด

Page 49: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

49

การส�บเปลั �ยน่หน่�าแบบ NRU

Page 50: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

50

อลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�าอลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�า การส�บเปลั �ยน่แบบใช้�งาน่น่�อยที่ �ส!ด-ออกกอน่

(Least Recently Used) ว&ธิ แบบที่ �ด ที่ �ส!ด (OPT) เป*น่ไปไมได�ใน่ที่างปฏิ&บ�ติ& แบบ FIFO จัะด-เวลัาที่ �ส�บเปลั �ยน่หน่�าเข�ามาใน่หน่วย

ความจั�า แบบ OPT จัะด-เวลัาที่ �หน่�าถ-กเร ยกใช้�งาน่ ถ�าเราใช้�ข�อม-ลัใน่อด ติที่ �ผู้าน่มา ประมาณการณ1อน่าคติ

อ�น่ใกลั� เราอาจัจัะส�บเปลั �ยน่หน่�าที่ �ไมได�ถ-กเร ยกใช้�งาน่ เป*น่เวลัาน่าน่ที่ �ส!ด ซ+�งเร ยกวา แบบใช้�งาน่น่�อยที่ �ส!ด-ออกกอน่ (LRU)

ว&ธิ น่ ,จัะบ�น่ที่+กเวลัาที่ �แติลัะหน่�าถ-กอ�างอ&งคร�,งลัาส!ดไว� เม��อติ�องการเลั�อกหน่�า เพื่��อส�บเปลั �ยน่ออก ก�จัะเลั�อกหน่�าที่ �ไมได�ใช้�มาเป*น่เวลัาน่าน่ส!ด (หน่�าที่ �ม ติ�วเลัขเวลัาน่�อยที่ �ส!ด )

จัะเห�น่ได�วาว&ธิ การน่ , มองย�อน่เวลัาไปใน่อด ติ แที่น่ที่ �จัะมองไปใน่อน่าคติ

Page 51: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

51

การส�บเปลั �ยน่หน่�าแบบ LRU

Page 52: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

52

อลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�าอลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�า การส�บเปลั �ยน่แบบใช้�งาน่น่�อยที่ �ส!ด-ออกกอน่

(Least Recently Used) ถ+งแม�วา LRU น่าจัะใช้�งาน่ได�ด ใน่ที่างที่ฤษฎี แติก�ไม

งายน่�กใน่ที่างปฏิ&บ�ติ& เน่��องจัากการใช้� LRU น่�,น่ ระบบจัะติ�องสร�างลั&งค1ลั&สติ1

ของที่!ก ๆ หน่�าใน่หน่วยความจั�าที่ �ม หน่�าที่ �ใช้�งาน่น่�อยอย-ที่ �ห�วแถวแลัะหน่�าที่ �ใช้�งาน่บอยอย-ที่�ายส!ด

ความยากของว&ธิ น่ ,ก�อย-ที่ �วาลั&สติ1จัะติ�องที่�าการปร�บเปลั �ยน่ที่!กคร�,งที่ �ม การอ�างอ&งถ+ง หร�อม การเร ยกใช้�งาน่ใน่หน่วยความจั�า

การค�น่หาหน่�าใน่ลั&สติ1 , การที่�าการลับ , หร�อการย�ายหน่�าไปมาน่�,น่ ลั�วน่แติเป*น่การที่�างาน่ที่ �ติ�องใช้�เวลัาของโปรเซสเซอร1ที่�,งส&,น่

LRU จัะใช้�ฮาร1ดแวร1ที่ �ม ติ�วน่�บ หร�อ counter (C)แบบ 64 บ&ติ ที่ �จัะที่�าการเพื่&�มคาที่!กคร�,งที่ �ม การเร ยกใช้�งาน่

Page 53: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

53

อลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�าอลำกอร&ท'�มการสบเป็ลำ��ยน่หน่�า การส�บเปลั �ยน่แบบใช้�งาน่น่�อยที่ �ส!ด-ออกกอน่

(Least Recently Used) ใน่ติารางหน่�าของแติลัะหน่�าจัะม ฟ>ลัด1ขน่าดใหญ่ที่ �

สามารถใสคาของติ�วน่�บน่ ,ได� หลั�งจัากที่ �ม การอ�างอ&งหน่วยความจั�าใน่แติลัะคร�,ง คา C

ก�จัะถ-กบ�น่ที่+กลังใน่ ติารางหน่�าของหน่�าน่�,น่ ๆ เม��อม การผู้&ดหน่�า ระบบจัะติ�องที่�าการติรวจัสอบที่!กคา

ของ C ใน่ติารางหน่�า เพื่��อค�น่หาหน่�าที่ �ม คา C น่�อยที่ �ส!ด ซ+�งหน่�าน่�,น่ก�ค�อหน่�าที่ �ใช้�งาน่น่�อยที่ �ส!ดน่�,น่เอง

ถ�าระบบม n เพื่จัเฟรม ที่�าให�ฮาร1ดแวร1น่�,น่จัะติ�องด-แลัเมติที่ร&กซ1 n x n บ&ติ

คาเร&�มติ�น่เป*น่ 0 หมด เม��อใดก�ติามที่ �เพื่จัเฟรม k ถ-กอ�างอ&งถ+ง ฮาร1ดแวร1น่�,น่ก�จัะก�าหน่ดให�ที่!กบ&ติใน่แถว kเป*น่ 1 แลัะก�าหน่ดให�ที่!กบ&ติใน่คอลั�มภ1 k เป*น่ 0

เม��อม การติรวจัสอบ แถวท��ม�ค�าของบ&ตรวมกน่น่�อยท��ส-ดก�ค�อ แถวที่ �ถ-กเร ยกใช้�งาน่น่�อยที่ �ส!ด

Page 54: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

54

การส�บเปลั �ยน่หน่�าแบบ LRU0 1 2 3 2 1 0 3 2 3

หน่�าที่ �อย-ใน่เฟรมที่ � 1 ก�จัะถ-กเลั�อกออกเพื่ราะไมได�ถ-กเร ยกใช้�งาน่น่าน่ที่ �ส!ด

Page 55: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

55

ผู้ลัรวมของเฟรม 0 แลัะ เฟรมที่ � 3 ม คาเที่าก�น่Frame 0 = (0 1 0 0) = 4 (ฐาน่ส&บ)Frame 3 = (0 0 1 0) = 2 (ฐาน่ส&บ)

ก�ให�เลั�อกหน่�าใน่เฟรมที่ � 3 ออก เพื่ราะม คาน่�อยกวา เฟรมที่ � 0

Page 56: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

56

เปร ยบเที่ ยบการส�บเปลั �ยน่หน่�าแบบ OPT, LRU, FIFO แลัะ CLOCK

Page 57: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

57

การแบ�งเป็�น่เซ็/กเมน่ต"(Segmentation)

การแบ�งเป็�น่เซ็/กเมน่ต"(Segmentation)

การแบงแบบน่ ,ม ลั�กษณะการที่�างาน่คลั�ายก�บการแบงเป*น่หน่�าของโปรเซส

แติการแบงแบบเซ�กเมน่ติ1 หร�อ segmentationน่�,น่ จัะแบงโปรเซส หร�อโปรแกรมออกเป*น่สวน่ ๆ โดยแติลัะสวน่น่�,น่ไมจั�าเป*น่ติ�องม ความยาวเที่าก�น่ (แติก�อาจัจัะม การก�าหน่ดให�อย-ภายใติ�ขน่าดที่ �ใหญ่ที่ �ส!ดที่ �ระบบก�าหน่ดได�)

การแปลังแอ�ดเดรสที่างติรรกเป*น่แอ�ดเดรสจัร&งใน่หน่วยความจั�าจัะติ�องใช้�ข�อม-ลั 2 สวน่ ค�อ เลัขที่ �ของเซ�กเมน่ติ1 แลัะ ระยะเร&�มติ�น่จัากเซ�กเมน่ติ1น่�,น่ (o

ffset)

Page 58: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

58

การแบงเป*น่เซ�กเมน่ติ1

Page 59: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

59

การแบ�งเป็�น่เซ็/กเมน่ต"(Segmentation)

การแบ�งเป็�น่เซ็/กเมน่ต"(Segmentation)

เน่��องจัากการแบงเป*น่เซ�กเมน่ติ1ที่�าให�เก&ดช้&,น่สวน่ที่ �ไมเที่าก�น่ ซ+�งจัะเหม�อน่การแบงหน่วยความจั�าแบบเปลั �ยน่แปลังขน่าดได� (dynamic partitioning)

ข�อแติกติางค�อ โปรแกรมหน่+�ง ๆ อาจัจัะม หลัายสวน่ (หร�อหลัายเซ�กเมน่ติ1 ) ที่ �สามารถใช้�งาน่ใน่หลัาย ๆ พื่าร1ติ&ช้� �น่ได� แลัะพื่าร1ติ&ช้� �น่เหลัาน่ ,ก�ไมจั�าเป*น่ติ�องติ&ดก�น่ด�วย

การแบงเป*น่เซ�กเมน่ติ1น่ ,จัะช้วยลัดป;ญ่หาการส-ญ่เส ยพื่�,น่ที่ �ภายใน่ (internal fragmentation) แติจัะม การส-ญ่เส ยพื่�,น่ที่ �ภายน่อกอย- เหม�อน่การแบงพื่าร1ติ&ช้� �น่แบบเปลั �ยน่แปลังขน่าดได�น่��น่เอง

อยางไรก�ติามเน่��องจัากโปรเซสถ-กแบงออกเป*น่ช้&,น่เลั�ก ๆ การส-ญ่เส ยพื่�,น่ที่ �ภายน่อกก�ควรจัะเลั�กลังติามไปด�วย

Page 60: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

60

การแบ�งเป็�น่เซ็/กเมน่ต"(Segmentation)

การแบ�งเป็�น่เซ็/กเมน่ต"(Segmentation)

การแบงเป*น่หน่�าน่�,น่ โปรแกรมเมอร1จัะไมสามารถมองเห�น่แลัะม สวน่รวมได�

การแบงเป*น่เซ�กเมน่ติ1น่�,น่ โปรแกรมเมอร1จัะสามารถมองเห�น่แลัะม สวน่รวมใน่การจั�ดการก�บโปรแกรมแลัะข�อม-ลัของติน่ได�

โดยปกติ&โปรแกรมเมอร1 หร�อคอมไพื่ลั1เลัอร1จัะที่�าการแบงโปรแกรมแลัะข�อม-ลัออกเป*น่สวน่ ๆ เอง เช้น่ การใช้�โมด-ลัใน่การเข ยน่โปรแกรม (Module)

ผู้ลัของการแบงหน่วยความจั�าเป*น่สวน่ ๆ ที่ �ไมเที่าก�น่ จั+งที่�าให�ความส�มพื่�น่ธิ1ระหวางแอ�ดเดรสที่างติรรกก�บแอ�ดเดรสจัร&งเป*น่ความส�มพื่�น่ธิ1ที่ �คอน่ข�างซ�บซ�อน่

โดยใช้�ติารางของเซ�กเมน่ติ1 (segmentation table)เก�บรายลัะเอ ยดของแติลัะโปรเซสแลัะแอ�ดเดรสเร&�มติ�น่ของที่ �วางใน่หน่วยความจั�า

รวมที่�,งเก�บคาความยาวของเซ�กเมน่ติ1น่�,น่ ๆ ด�วย เพื่��อเป*น่การย�น่ย�น่วาระบบจัะไมใช้�แอ�ดเดรสที่ �ไมถ-กติ�อง

Page 61: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

61

การแบ�งเป็�น่เซ็/กเมน่ต"(Segmentation)

การแบ�งเป็�น่เซ็/กเมน่ต"(Segmentation)

ข�,น่ติอน่ของการแปลังแอ�ดเดรสด�งน่ , แยกติ�วเลัขบอกเซ�กเมน่ติ1ที่างด�าน่ซ�ายม�อจั�าน่วน่ n บ&ติ

ออกจัากแอ�ดเดรสที่างติรรก ใช้�ติ�วเลัขบอกเซ�กเมน่ติ1เป*น่อ&น่เด�กซ1ใน่ติารางของ

เซ�กเมน่ติ1 เพื่��อหาจั!ดเร&�มติ�น่แอ�ดเดรสจัร&งที่างกายภาพื่ของเซ�กเมน่ติ1น่�,น่ ๆ

ที่�าการเปร ยบเที่ ยบระยะหางจัากขอบเซ�กเมน่ติ1 (offset: m บ&ติที่างด�าน่ขวาม�อ ) ก�บขน่าดความยาว

ของเซ�กเมน่ติ1น่�,น่ ถ�าระยะหางน่�,น่มากกวาความยาวของเซ�กเมน่ติ1 ก�จัะได�ที่ �อย-ที่ �ไมถ-กติ�อง

ถ�าระยะหางน่�,น่น่�อยกวาความยาวของเซ�กเมน่ติ1 ก�สามารถหาที่ �อย-ของเซ�กเมน่ติ1น่�,น่ได�จัาก ผู้ลัรวมของจั!ดเร&�มติ�น่ของเซ�กเมน่ติ1 ก�บ ระยะหางจัากขอบของเซ�กเมน่ติ1

Page 62: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

62

การแปลังแอ�ดเดรสที่างติรรกเป*น่แอ�ดเดรสจัร&งของ Segmentation

0010000000100000

001011110000 =

0010001100010000

Page 63: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

63

การน่�าการแบ�งเป็�น่เซ็/กเมน่ต"มาใช้�ใน่หน่�วยความจั�าเสม�อน่การน่�าการแบ�งเป็�น่เซ็/กเมน่ต"มาใช้�ใน่หน่�วยความจั�าเสม�อน่ การแบงเป*น่เซ�กเมน่ติ1 น่�,น่ จัะอน่!ญ่าติให�โปรแกรมเมอร1

สามารถมองเห�น่วาหน่วยความจั�าน่�,น่ประกอบข+,น่จัากช้&,น่สวน่เลั�ก ๆ แลัะช้&,น่สวน่ของหน่วยความจั�าเหลัาน่ ,อาจัจัะม ขน่าดไมเที่าก�น่ แลัะไมคงที่ � การอ�างอ&งถ+งแอ�ดเดรสใน่หน่วยความจั�าจัะติ�องใช้�เลัขที่ �ของเซ�กเมน่ติ1 แลัะระยะเร&�มติ�น่จัากเซ�กเมน่ติ1น่�,น่ ม ข�อด หลัาย ๆ ข�อ ด�งน่ ,

การจั�ดการก�บการเพื่&�มโครงสร�างของข�อม-ลัใน่โปรแกรมสามารถที่�าได�งาย ถ�าโปรแกรมเมอร1ไมสามารถที่ราบอน่าคติวาโครงสร�างของข�อม-ลัจัะม ขน่าดเป*น่เที่าไหร แลัะไมสามารถแบงพื่�,น่ที่ �แบบที่ �เปลั �ยน่แปลังขน่าดได� ติ�องประมาณขน่าดของข�อม-ลักอน่ แติการแบงแบบน่ ,โครงสร�างข�อม-ลัจัะถ-กก�าหน่ดให�อย-ใน่สวน่ของติน่ แลัะระบบจัะที่�าการขยาย หร�อยอขน่าดสวน่น่�,น่ได�เม��อติ�องการ ถ�าเซ�กเมน่ติ1น่�,น่ติ�องการขยายใน่หน่วยความจั�าหลั�ก แติไมม พื่�,น่ที่ �เพื่ ยงพื่อ ระบบอาจัจัะที่�าการย�ายสวน่น่�,น่ไปย�งพื่�,น่ที่ �ใน่หน่วยความจั�าที่ �ม ขน่าดใหญ่ข+,น่

Page 64: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

64

การน่�าการแบ�งเป็�น่เซ็/กเมน่ต"มาใช้�ใน่หน่�วยความจั�าเสม�อน่การน่�าการแบ�งเป็�น่เซ็/กเมน่ต"มาใช้�ใน่หน่�วยความจั�าเสม�อน่

ว&ธิ การน่ ,สามารถที่�าให�เราเปลั �ยน่แปลัง หร�อคอมไพื่ลั1โปรแกรมแยกออกเป*น่สวน่ ๆ ได� โดยไมจั�าเป*น่ที่ �จัะติ�องให�โปรแกรมยอย ๆ เหลัาน่�,น่ถ-กโหลัดข+,น่มาใหม หร�อเช้��อมโยงก�น่

การแบงเป*น่เซ�กเมน่ติ1น่ ,อน่!ญ่าติให�ม การแช้ร1ข�อม-ลัระหวางโปรเซสหลัาย ๆ โปรเซส เช้น่ โปรแกรมเมอร1สามารถน่�าโปรแกรมย-ที่&ลั&ติ , หร�อข�อม-ลัที่ �เป*น่ประโยช้น่1 ใสลังใน่สวน่ของเซ�กเมน่ติ1หน่+�ง ๆ ที่ �สามารถถ-กอ�างอ&งโดยโปรเซสอ��น่ ๆ ได�

การแบงแบบน่ ,อน่!ญ่าติให�ม การป<องก�น่ข�อม-ลัด�วยติ�วเองได� เพื่ราะสวน่ของเซ�กเมน่ติ1หน่+�ง ๆ น่�,น่จัะถ-กสร�างข+,น่มาเพื่��อใสโปรแกรม หร�อข�อม-ลัที่ �ได�ร�บการน่&ยามมาอยางด แลั�ว ซ+�งโปรแกรมเมอร1ที่ �เป*น่ผู้-�ด-แลัระบบสามารถก�าหน่ดส&ที่ธิ&ใน่การเข�าถ+งข�อม-ลัใน่สวน่น่�,น่ได�

Page 65: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

65

การน่�าการแบ�งเป็�น่เซ็/กเมน่ต"มาใช้�ใน่หน่�วยความจั�าเสม�อน่การน่�าการแบ�งเป็�น่เซ็/กเมน่ต"มาใช้�ใน่หน่�วยความจั�าเสม�อน่ ระบบที่ �ม การแบงเป*น่เซ�กเมน่ติ1น่�,น่ โปรเซสแติลัะติ�ว

จัะม ติารางของเซ�กเมน่ติ1 (segmentation table) เป*น่ของติ�วเอง

เม��อที่!กสวน่ของเซ�กเมน่ติ1ถ-กโหลัดเข�าไปใน่หน่วยความจั�าหลั�ก ติารางเซ�กเมน่ติ1ของโปรเซสก�จัะถ-กสร�างข+,น่มา แลัะถ-กโหลัดไว�ใน่หน่วยความจั�าหลั�ก

แติลัะแถวของติารางประกอบด�วยแอ�ดเดรสเร&�มติ�น่ของเซ�กเมน่ติ1น่�,น่ใน่หน่วยความจั�าหลั�ก แลัะความยาวของเซ�กเมน่ติ1น่�,น่

เซ�กเมน่ติ1บางสวน่ของโปรเซสอย-ใน่หน่วยความจั�าหลั�กหร�อไมก�ได�

จั+งติ�องม 1 บ&ติ (P) เป*น่ฟ>ลัด1ของติารางที่ �จัะบอกวาเซ�กเมน่ติ1ด�งกลัาวอย-ใน่หน่วยความจั�าหลั�กหร�อไม

Page 66: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

66

การน่�าการแบ�งเป็�น่เซ็/กเมน่ต"มาใช้�ใน่หน่�วยความจั�าเสม�อน่การน่�าการแบ�งเป็�น่เซ็/กเมน่ต"มาใช้�ใน่หน่�วยความจั�าเสม�อน่ ถ�าบ&ติน่�,น่แสดงวาเซ�กเมน่ติ1น่�,น่อย-ใน่หน่วยความ

จั�าหลั�กแลั�ว แถวด�งกลัาวก�จัะติ�องม แอ�ดเดรสเร&�มติ�น่แลัะความยาวของเซ�กเมน่ติ1น่�,น่

บ&ติที่ �ใช้�ใน่การเช้�คการเปลั �ยน่แปลัง (Modified bit) จัะที่�าหน่�าที่ �เหม�อน่ก�บบ&ติ Modified ใน่ว&ธิ การ

แบงเป*น่หน่�า (paging) ถ�าเซ�กเมน่ติ1ใดม การเปลั �ยน่แปลัง ติ�,งแติเม��อ

เซ�กเมน่ติ1น่�,น่ถ-กโหลัดเข�าไปอย-ใน่หน่วยความจั�า ก�ให�ที่�าการเข ยน่เซ�กเมน่ติ1น่�,น่กลั�บลังส-ด&สก1เม��อม การส�บเปลั �ยน่เซ�กเมน่ติ1ที่ �อย-ใน่เฟรม

ระบบสามารถเพื่&�มเติ&มบ&ติควบค!มอ��น่ ๆ ได�อ ก เช้น่ บ&ติที่ �ใช้�ส�าหร�บการป<องก�น่การเข�าถ+งข�อม-ลัใน่เซ�กเมน่ติ1ที่ �ติ�องการ

Page 67: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

67

การน่�าการแบ�งเป็�น่เซ็/กเมน่ต"มาใช้�ใน่หน่�วยความจั�าเสม�อน่การน่�าการแบ�งเป็�น่เซ็/กเมน่ต"มาใช้�ใน่หน่�วยความจั�าเสม�อน่ ว&ธิ การพื่�,น่ฐาน่ที่ �ใช้�ส�าหร�บอาน่ค�าจัากหน่วยความจั�า

จัะเก �ยวข�องก�บการแปลังแอ�ดเดรสเสม�อน่ หร�อแอ�ดเดรสที่างติรรก ที่ �ประกอบด�วย ติ�วเลัขบอกเซ�กเมน่ติ1 ระยะหางจัากขอบเซ�กเมน่ติ1

จัากคาที่�,งสองที่�าให�สามารถหาคาแอ�ดเดรสจัร&งที่างกายภาพื่ โดยใช้� ติารางเซ�กเมน่ติ1ช้วย

เน่��องจัากติารางเซ�กเมน่ติ1ม ขน่าดไมคงที่ � แลัะข+,น่อย-ก�บขน่าดของโปรเซส ด�งน่�,น่ เราจั+งไมสามารถน่�าติารางน่ ,ไปเก�บไว�ใน่ร จั&สเติอร1ได� (จั+งติ�องเก�บไว�ใน่หน่วยความจั�าหลั�ก )

Page 68: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

68

แอ�ดเดรสที่างติรรก แลัะติาราง Segmentation

Page 69: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

69

การรวมว&ธี�การแบ�งเป็�น่หน่�ากบการแบ�งเป็�น่เซ็/กเมน่ต"เข�าด�วยกน่การรวมว&ธี�การแบ�งเป็�น่หน่�ากบการแบ�งเป็�น่เซ็/กเมน่ต"เข�าด�วยกน่ ที่�,งว&ธิ การแบงเป*น่หน่�า (paging) แลัะว&ธิ การแบง

เป*น่เซ�กเมน่ติ1 (segmentation) จัะม ข�อด ของแติลัะว&ธิ ที่ �แติกติางก�น่

ข�อด ของการแบงเป*น่หน่�า ค�อ การปกป>ดไมให�โปรแกรมเมอร1มองเห�น่การที่�างาน่ของ

ม�น่ การป<องก�น่การส-ญ่เส ยพื่�,น่ที่ �ภายน่อก (external

fragmentation) จัะที่�าให�ระบบใช้�หน่วยความจั�าหลั�กอยางม ประส&ที่ธิ&ภาพื่ เน่��องจัากหน่�าของโปรเซสที่ �ถ-กสลั�บเข�าแลัะออกจัาก

หน่วยความจั�าน่�,น่ ม ขน่าดคงที่ � แลัะเที่าก�น่ จั+งม ความเป*น่ไปได�ที่ �เราจัะพื่�ฒน่าอ�ลักอร&ที่+�มที่ �ซ�บซ�อน่เพื่��อน่�าไปใช้�ใน่การจั�ดการก�บหน่วยความจั�า ด�งที่ �เคยกลัาวมาแลั�วใน่ห�วข�อเก �ยวก�บการส�บเปลั �ยน่หน่�าใน่แบบติาง ๆ

Page 70: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

70

การรวมว&ธี�การแบ�งเป็�น่หน่�ากบการแบ�งเป็�น่เซ็/กเมน่ต"เข�าด�วยกน่การรวมว&ธี�การแบ�งเป็�น่หน่�ากบการแบ�งเป็�น่เซ็/กเมน่ต"เข�าด�วยกน่ ข�อด ของการแบงเป*น่เซ�กเมน่ติ1 ค�อ

โปรแกรมเมอร1สามารถมองเห�น่การที่�างาน่ ความสามารถใน่การจั�ดการก�บโครงสร�างข�อม-ลัที่ �ม

ขน่าดไมคงที่ � การที่�าโปรแกรมเป*น่โมด-ลั การสน่�บสน่!น่การแบงป;น่แลัะการป<องก�น่เซ�กเมน่ติ1

ใน่ระบบที่ �ม การที่�างาน่รวมก�น่ระหวางการแบงเป*น่หน่�า แลัะการแบงเป*น่เซ�กเมน่ติ1

พื่�,น่ที่ �ใช้�งาน่ของผู้-�ใช้�จัะถ-กแบงออกเป*น่เซ�กเมน่ติ1จั�าน่วน่หน่+�ง ติามที่ �โปรแกรมเมอร1ก�าหน่ด

ใน่แติลัะเซ�กเมน่ติ1ก�จัะถ-กแบงออกเป*น่หน่�า ๆ ที่ �ม ขน่าดคงที่ � แลัะม ความยาวเที่าก�บเฟรมใน่หน่วยความจั�า

ถ�าเซ�กเมน่ติ1ใดม ความยาวน่�อยกวาขน่าดของหน่�า เซ�กเมน่ติ1น่�,น่ก�ม แค 1 หน่�า

Page 71: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

71

การรวมว&ธี�การแบ�งเป็�น่หน่�ากบการแบ�งเป็�น่เซ็/กเมน่ต"เข�าด�วยกน่การรวมว&ธี�การแบ�งเป็�น่หน่�ากบการแบ�งเป็�น่เซ็/กเมน่ต"เข�าด�วยกน่ ใน่ระบบที่ �ม การที่�างาน่รวมก�น่ระหวางการแบงเป*น่หน่�า แลัะ

การแบงเป*น่เซ�กเมน่ติ1 จัากม!มมองของโปรแกรมเมอร1น่�,น่ แอ�ดเดรสที่าง

ติรรกจัะประกอบไปด�วยเลัขที่ �ของเซ�กเมน่ติ1 แลัะระยะหางจัากขอบของเซ�กเมน่ติ1

ถ�ามองจัากม!มของระบบ ระยะหางจัากขอบของเซ�กเมน่ติ1ก�จัะประกอบไปด�วยเลัขที่ �หน่�า แลัะระยะหางจัากขอบหน่�าภายใน่เซ�กเมน่ติ1 น่�,น่น่��น่เอง

Page 72: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

72

การแปลังแอ�ดเดรสของระบบ Segmetation/Paging

Page 73: บทที่ 9 การจัดการหน่วยความจำ ( Virtual Memory Management )

73

ติารางที่ �เก&ดจัากการรวมSegmentation/Paging