ระบบหน่วยความจำเสมือน (Virtual Memory)
-
Upload
eugenia-weber -
Category
Documents
-
view
24 -
download
0
description
Transcript of ระบบหน่วยความจำเสมือน (Virtual Memory)
1
ระบบหน่�วยความจำ าเสม�อน่ (Virtual Memory)
• การจำ�ดการหน่�วยความจำ าสามารถแบ�งออกเป็�น่ 2 ป็ระเภทใหญ่� ๆ
– ระบบหน่�วยความจำ าจำร งขน่าดของโป็รแกรมจำะต้$องไม�ใหญ่�กว�าขน่าดของ
หน่�วยความจำ าท&'ม&อย(� ลบด$วยขน่าดของหน่�วยความ จำ าท&'เป็�น่ส�วน่ของ OS
– ระบบหน่�วยความจำ าเสม�อน่ขน่าดของโป็รแกรมจำะม&ขน่าดเท�าใดก*ได$
2
แน่วค ดของหน่�วยความจำ าเสม�อน่• ผู้($เข&ยน่โป็รแกรมหร�อผู้($ใช้$จำะไม�ถ(กจำ าก�ดใน่เร�'องของขน่าดของ
หน่�วยความจำ าอ&กต้�อไป็• OS จำะจำ�ดการให$ผู้($ใช้$สามารถใช้$หน่�วยความจำ าได$มากกว�า
หน่�วยความจำ าจำร งท&'ม&อย(�• โป็รแกรมท�-งโป็รแกรมโดยส�วน่ใหญ่�ไม�ได$ถ(กใช้$งาน่พร$อมก�น่
ท�-งหมด ซึ่0'งการท างาน่ของโป็รแกรมจำะเร 'มท างาน่จำากส�วน่ต้$น่ โป็รแกรม แล$วค�อย ๆ เล�'อน่ลงมาจำน่กระท�'งถ0งท$ายโป็รแกรม
• ใน่ขณะท&'โป็รแกรมก าล�งท างาน่อย(�ท&'ส�วน่ต้$น่โป็รแกรม ท&'ป็ลาย โป็รแกรมก*ย�งไม�ถ(กใช้$งาน่ เม�'อโป็รแกรมท างาน่มาถ0งส�วน่
ท$าย ๆ โป็รแกรม ส�วน่ต้$น่ ๆ โป็รแกรมก*ไม�ถ(กใช้$งาน่
3
แน่วค ดของหน่�วยความจำ าเสม�อน่• ด�งน่�-น่ใน่ช้�วงท&'โป็รแกรมท างาน่อย(�ท&'ส�วน่ต้$น่ ๆ ก*ไม�ม&ความ
จำ าเป็�น่ต้$องโหลดเอาส�วน่ท$าย ๆ โป็รแกรมลงไป็ใน่หน่�วยความจำ าให$เป็ล�องเน่�-อท&'
• เม�'อโป็รแกรมท างาน่มาจำน่ถ0งส�วน่ท&'ย�งไม�ได$โหลดเข$าไป็ใน่ หน่�วยความจำ า OS จำะจำ�ดการด0งเอาส�วน่น่�-น่มาจำากหน่�วย
ความจำ ารอง• โดยท&'อาจำจำะโหลดไป็ท�บส�วน่ต้$น่ ๆ ของโป็รแกรมท&'อย(�ใน่หน่�วย
ความจำ า หร�อโหลดลงไป็ใน่ส�วน่อ�'น่ ๆ ของหน่�วยความจำ าก*ได$• จำากหล�กการด�งกล�าวเราจำ0งสามารถร�น่โป็รแกรมท&'ม&ขน่าด
ใหญ่�กว�าหน่�วยความจำ าท&'ม&อย(�ได$
4
การแป็ลงแอดเดรส (Address Mapping)
• เน่�'องจำากขน่าดของโป็รแกรมม&ขน่าดใหญ่�กว�าขน่าดของ หน่�วยความจำ า ด�งน่�-น่จำ0งต้$องม&การอ$างอ งแอดเดรสระหว�าง
แอดเดรสของหน่�วยความจำ าจำร งก�บแอดเดรสของโป็รแกรม
• แอดเดรสจำร ง (Real Address หร�อ Physical Address) หมายถ0งแอดเดรสใน่หน่�วยความจำ าจำร งเท�าน่�-น่
• แอดเดรสเสม�อน่ (Virtural Address หร�อ Logical Address) หมายถ0งแอดเดรสท&'โป็รแกรมอ$างถ0ง
• ด�งน่�-น่จำ0งต้$องม&กลไกการแป็ลงแอดเดรสจำากแอดเดรส เสม�อน่ให$เป็�น่แอดเดรสจำร ง ณ.ต้ าแหน่�งท&'โป็รแกรมส�วน่น่�-น่
ถ(กวางลงไป็ ซึ่0'งเราเร&ยกว�าการแป็ลงแอดเดรส
5
การแป็ลงแอดเดรส (Address Mapping)
หน่�วยความจำ าเสม�อน่
ต้ าแหน่�งท&'ต้�อเน่�'องก�น่
หน่�วยความจำ าจำร ง
การแป็ลงแอดเดรส
6
การแป็ลงแอดเดรส (Address Mapping)
• เทคน่ คการแป็ลงแอดเดรสม&อย(�หลายว ธี& แต้�ว ธี&ท&'น่ ยมใช้$ก�น่ อย�างแพร�หลายค�อ dynamic address translation
(DAT) • ว ธี&การท&'จำะจำ�ดการหน่�วยความจำ าจำร งให$สามารถท างาน่
โป็รแกรมท&'ม&ขน่าดใหญ่� จำะใช้$หล�กการแบ�งโป็รแกรมออกเป็�น่ ส�วน่ย�อย ๆ หลาย ๆ ส�วน่เร&ยกว�าบล*อก (Block)
• ขน่าดของบล*อกแบ�งออกเป็�น่ 2 แบบค�อท3กบล*อกม&ขน่าด เท�าก�น่ หร�อบล*อกม&ขน่าดไม�เท�าก�น่ ด�งน่�-น่ระบบหน่�วยความจำ า
เสม�อน่จำ0งแบ�งได$เป็�น่ 2 แบบ– หน่�วยความจำ าเสม�อน่ระบบหน่$า (Paging system)– หน่�วยความจำ าเสม�อน่ระบบเซึ่กเมน่ต้4 (Segment system)
7
หน่�วยความจำ าเสม�อน่ระบบหน่$า (Paging system)
• เป็�น่การจำ�ดแบ�งโป็รแกรมออกเป็�น่บล*อกท&'ม&ขน่าด เท�า ๆ ก�น่ท3กบล*อก โดยจำะเร&ยกบล*อกแต้�ละบล*อกว�า หน่$า (Page)
• ต้�วอย�างการท างาน่ใน่ระบบหน่$า– ระบบม&หน่�วยความจำ าขน่าด 100 Kbyte = 100,000
Byte = 105 Byte– ต้$องการร�น่โป็รแกรมท&'ม&ขน่าด 1000 Kbyte =
1,000,000 Byte = 106 Byte โป็รแกรมขน่าด 1000 KByte
หน่�วยความจำ าขน่าด 100 Kbyte
8
หน่�วยความจำ าเสม�อน่ระบบหน่$า (Paging system)
• สมม3ต้ OS แบ�งโป็รแกรมออกเป็�น่หน่$าย�อย โดยท&' แต้�ละหน่$า (Page) ม&ขน่าด 1 Kbyte = 1,000
Byte = 103 Byte• ด�งน่�-น่โป็รแกรมจำะถ(กแบ�งออกเป็�น่ 1000
หน่$า (1000 Page) ด�งร(ป็แอดเดรสภายใน่หน่$าDisplacementเลขหน่$า
Page Number
แอดเดรสเร 'มต้$น่ของหน่$าแอดเดรสส3ดท$ายของหน่$า
หน่$าท&'000 หน่$าท&'001 หน่$าท&'002
หน่$าท&'998 หน่$าท&'999
000 000
000 999
001 000
001 999
002 000
002 999
998 000
998 999
999 000
999 999
แอดเดรสเสม�อน่
9
หน่�วยความจำ าเสม�อน่ระบบหน่$า (Paging system)
• จำากร(ป็เราสามารถแบ�งแอดเดรสเสม�อน่ออกเป็�น่ 2 ส�วน่
– ส�วน่แรกจำะเป็�น่ค�าท&'บ�งบอกหมายเลขหน่$า– ส�วน่ท&' 2 จำะเป็�น่ค�าท&'บ�งบอกค�าแอดเดรสภายใน่หน่$าน่�-น่ ๆ
ซึ่0'งม&ช้�'อเร&ยกว�าด&สเพลซึ่เมน่ต้4 (Displacement)
• ต้�วอย�างเช้�น่ แอดเดรสเสม�อน่ท&' 243765 ม&ความหมายว�าอย(�ใน่หน่$าท&'
243 และม&ด&สเพลสเมน่ต้4เป็�น่765หมายเลขหน่$าด สเพลซึ่เมน่ต้4
แอดเดรสเสม�อน่
10
หน่�วยความจำ าเสม�อน่ระบบหน่$า (Paging system)• ส าหร�บใน่หน่�วยความจำ าจำร ง OS จำะแบ�งออกเป็�น่หน่$าย�อย
เหม�อน่ก�น่ โดยท&'แต้�ละหน่$า (Page) ม&ขน่าดเท�าก�บหน่$าของ หน่�วยความจำ าเสม�อน่ค�อ 1 Kbyte = 1,000 Byte =
103 Byte• ด�งน่�-น่หน่�วยความจำ าจำะถ(กแบ�งออกเป็�น่ 100 หน่$า
(100 Page) ด�งร(ป็แอดเดรสภายใน่หน่$าDisplacementเลขหน่$า
Page Number
แอดเดรสเร 'มต้$น่ของหน่$าแอดเดรสส3ดท$ายของหน่$า
หน่$าท&'00 หน่$าท&'01 หน่$าท&'02
หน่$าท&'98 หน่$าท&'99
00 000
00 999
0 1 000
0 1 999
0 2 000
0 2 999
9 8 000
9 8 999
9 9 000
9 9 999
แอดเดรสเสม�อน่
11
หน่�วยความจำ าเสม�อน่ระบบหน่$า (Paging system)• โป็รแกรมของผู้($ใช้$ไม�ว�าจำะม&ขน่าดใหญ่�เท�าใด จำะต้$องถ(กเก*บอย(�ใน่
หน่�วยความจำ ารอง ซึ่0'งโดยส�วน่มากได$แก� ด สก4 เน่�'องจำากม&ความจำ3 ส(ง
• เม�'อผู้($ใช้$ส�'งร�น่โป็รแกรม OS จำะโหลดเอาโป็รแกรมจำากด สก4เข$าไป็ ใน่หน่�วยความจำ าคร�-งละ 1 หน่$า น่�'น่ค�อ 1 หน่$าใน่โป็รแกรมก*จำะ
เข$าไป็ใช้$เน่�-อท&'ใน่หน่�วยความจำ า 1 หน่$าเช้�น่ก�น่• เม�'อโป็รแกรมหน่0'งครอบครองหน่$าใดใน่หน่�วยความจำ าแล$ว
โป็รแกรมอ�'น่จำะใช้$หน่$าน่�-น่อ&กไม�ได$• โป็รแกรมจำะครอบครองหน่�วยความจำ าจำร งเป็�น่จำ าน่วน่เต้*มของหน่$า• ด�งน่�-น่ต้$องม&ว ธี&การแป็ลงแอดเดรสจำากแอดเดรสเสม�อน่เป็�น่
แอดเดรสจำร ง
12
หน่�วยความจำ าเสม�อน่ระบบหน่$า (Paging system)• โป็รแกรมของผู้($ใช้$ไม�ว�าจำะม&ขน่าดใหญ่�เท�าใด จำะต้$องถ(กเก*บอย(�ใน่
หน่�วยความจำ ารอง ซึ่0'งโดยส�วน่มากได$แก� ด สก4 เน่�'องจำากม&ความจำ3 ส(ง
• เม�'อผู้($ใช้$ส�'งร�น่โป็รแกรม OS จำะโหลดเอาโป็รแกรมจำากด สก4เข$าไป็ ใน่หน่�วยความจำ าคร�-งละ 1 หน่$า น่�'น่ค�อ 1 หน่$าใน่โป็รแกรมก*จำะ
เข$าไป็ใช้$เน่�-อท&'ใน่หน่�วยความจำ า 1 หน่$าเช้�น่ก�น่• เม�'อโป็รแกรมหน่0'งครอบครองหน่$าใดใน่หน่�วยความจำ าแล$ว
โป็รแกรมอ�'น่จำะใช้$หน่$าน่�-น่อ&กไม�ได$• โป็รแกรมจำะครอบครองหน่�วยความจำ าจำร งเป็�น่จำ าน่วน่เต้*มของหน่$า• ด�งน่�-น่ต้$องม&ว ธี&การแป็ลงแอดเดรสจำากแอดเดรสเสม�อน่เป็�น่
แอดเดรสจำร ง
13
การแป็ลงแอดเดรสใน่ระบบหน่$า• OS จำะสาร$างต้ารางไว$ส าหร�บโป็รเซึ่ส ต้ารางน่&-เร&ยก
ว�า ต้ารางหน่$า (Page table)• สมม3ต้ ว�าหน่�วยความจำ าเสม�อน่ม&ขน่าด 1000
หน่$า และหน่�วยความจำ าจำร งม&ขน่าด 100 หน่$า• ต้ารางหน่$าก*จำะม&ขน่าด 1000 ช้�อง ได$แก�ช้�อง
ท&' - 000999
– ช้�องท&' 000 ส าหร�บหน่$าท&'000– ช้�องท&' 001 ส าหร�บหน่$าท&' 001
• ใน่ต้ารางหน่$าจำะม& 3 คอล�มภ4
14
การแป็ลงแอดเดรสใน่ระบบหน่$า• คอล�มภ4ท&' 1 จำะบอกแอดเดรสของหน่$าน่�-น่ ๆ ท&'อย(�ใน่
ด สก4• คอล�มภ4ท&' 2 จำะบอกว�าหน่$าน่�-น่ ๆ อย(�ใน่หน่�วยความ
จำ าจำร งหร�อไม�– ถ$าค�าเป็�น่ 0 หมายถ0ง หน่$าน่�-น่ไม�ได$อย(�ใน่หน่�วยความจำ าจำร ง– ถ$าค�าเป็�น่ 1 หมายถ0ง หน่$าน่�-น่อย(�ใน่หน่�วยความจำ าจำร ง
• คอล�มภ4ท&' 3 จำะบอกถ0งแอดเดรสเร 'มต้$น่ของหน่$าใน่ หน่�วยความจำ าจำร ง ค�อหมายเลขหน่$าใน่หน่�วยความจำ า
จำร งต้ามด$วยด สเพรสเมน่ต้4ท&' 000
15
การแป็ลงแอดเดรสใน่ระบบหน่$าหมายเลขหน่$า
Page Table
001
002
003
998
999
แอดเดรสใน่ด สก401แอดเดรสใน่หน่�วยความจำ าจำร ง
16
การแป็ลงแอดเดรสใน่ระบบหน่$า• ถ$าต้$องการทราบว�าแอดเดรสเสม�อน่ 123983 ไป็อย(� ณ .
ต้ าแหน่�งใดใน่หน่�วยความจำ าจำร ง OS จำะน่ าเอาแอดเดรสเสม�อน่มาหาค�าหมายเลขหน่$าและด สเพลซึ่เมน่ต้4
• ใน่กรณ&น่&- หมายเลขหน่$าค�อ 123 และด สเพลซึ่เมน่ต้4ค�อ983
• OS จำะต้รวจำสอบท&'ต้ารางหน่$าใน่ช้�องท&' 123 ถ$าหน่$าน่&-อย(�ใน่หน่�วย ความจำ าจำร งแล$ว คอล�มภ4ท&' 2 ใน่ต้ารางหน่$าช้�องท&' 123 จำะม&ค�า
เป็�น่1• จำากน่�-น่ OS จำะอ�าน่ค�าใน่คอล�มภ4ท&' 3 ของต้ารางหน่$าเพ�'อหา
แอดเดรสเร 'มต้$น่ของหน่$าใน่หน่�วยความจำ าจำร ง• แล$วน่ าเอาค�าใน่คอล�มภ4ท&' 3 มารวมก�บด สเพรสเมน่ต้4 จำะได$แอดเดรส
ใน่หน่�วยความจำ าจำร งท&'ต้รงก�บแอดเดรสเสม�อน่
17
122
123
124
หน่$า หน่$า 123 ของหน่�วยความจำ าเสม�อน่ อย(�ใน่หน่$า 54 ของหน่�วยความจำ าจำร ง
123983
แอดเดรสเสม�อน่123983
หมายเลขหน่$าด สเพลซึ่เมน่ต้4
ต้ารางหน่$า
000
001
1235146789154000
+
54983
หน่�วยความจำ าจำร ง
หน่�วยความจำ าเสม�อน่
18
การแป็ลงแอดเดรสใน่ระบบหน่$า• กรณ&ท&'หน่$า 123 ไม�อย(�ใน่หน่�วยความจำ าจำร ง คอล�มภ4ท&' 2
ใน่ต้ารางหน่$าช้�องท&' 123 จำะม&ค�าเป็�น่0• OS จำะอ�าน่ค�าคอล�มภ4ท&' 1 ซึ่0'งเป็�น่แอดเดรสใน่ด สก4 จำากน่�-น่
OS ก*จำะไป็อ�าน่ข$อม(ลจำากด สก4ท&'แอดเดรสด�งกล�าวมา 1 หน่$า( 1 Kbyte )
• OS จำะไป็หาหน่$าท&'ว�างใน่หน่�วยความจำ าจำร ง แล$วน่ าข$อม(ลท&'อ�าน่มาจำากด สก4ไป็วางไว$ใน่หน่�วยความจำ าจำร งใน่หน่$าท&'หามาได$
• OS จำะท าการแก$ไขข$อม(ลใน่ต้ารางหน่$าช้�องท&' 123 โดย เป็ล&'ยน่ค�าคอล�มภ4ท&' 2 เป็�น่ 1 และใส�ค�า หน่$าท&'หามาได$ของ
หน่�วยความจำ าจำร งบวกก�บต้ าแหน่�งเร 'มต้$น่ (000) ของด สเพรส เมน่ต้4ลงใน่คอล�มภ4ท&' 3 ของต้ารางหน่$า
19
แอดเดรสเสม�อน่123983
ต้ารางหน่$า
000
001
12351467890
หน่�วยความจำ าจำร งต้ารางหน่$า
000
001
12351467891
ไป็อ�าน่ข$อม(ลใน่แอดเดรส 514689 ใน่ด สก4
โหลดลงหน่�วยความจำ าจำร ง00
01
02
03983
03000
20
การแป็ลงแอดเดรสใน่ระบบหน่$า• กรณ&ถ$าไม�ม&หน่$าว�างใน่หน่�วยความจำ าจำร ง OS ต้$องเล�อก
เอาหน่$าหน่0'งออกจำากหน่�วยความจำ าจำร ง• หน่$าใดจำะถ(กเล�อกออก OS จำะม&ว ธี&การท&'เร&ยกว�า การส�บ
เป็ล&'ยน่หน่$า (Page Replacement) • หน่$าท&'ถ(กเล�อกออก OS จำะท าการบ�น่ท0กข$อม(ลและสถาน่ะ
ป็6จำจำ3บ�น่ของหน่$าน่�-น่กล�บลงใน่ด สก4 ณ.ต้ าแหน่�ง แอดเดรสของด สก4ต้ามต้ารางหน่$า จำากน่�-น่จำ0งโหลดหน่$า
ใหม�ท�บลงไป็• แก$ไขข$อม(ลใน่ต้ารางหน่$าของท�-งของหน่$าท&'ถ(กเข&ยน่ท�บ
และหน่$าท&'โหลดเข$าไป็ใหม�
21
หน่�วยความจำ าเสม�อน่ระบบเซึ่กเมน่ต้4(Segment System)
• ม&ล�กษณะการท างาน่คล$ายก�บระบบหน่$า (Page System) ต้�างก�น่ต้รงท&'ขน่าดของบล*อกไม�จำ าเป็�น่ต้$องเท�าก�น่
• ต้ารางเซึ่กเมน่ต้4 (Segment table) จำะม&คอล�มภ4มากกว�า ต้ารางหน่$าอย(� 1 คอล�มภ4ใช้$เก*บขน่าดของเซึ่กเมน่ต้4น่�-น่ไว$
เพ�'อให$ OS ทราบว�าแต้�ละเซึ่กเมน่ต้4ม&ขน่าดเท�าใด• การอ�าน่หร�อเข&ยน่ข$อม(ลจำากหน่�วยความจำ ารองและการหา
เน่�-อท&'ใน่หน่�วยความจำ าจำร งจำะกระท าต้ามขน่าดของเซึ่กเมน่ต้4 เช้�น่ถ$าเซึ่กเมน่ต้4ม&ขน่าด 5 Kbyte การโหลดจำากด สก4ต้$อง
โหลดข$อม(ลข0-น่มา 5 Kbype ใน่ขณะเด&ยวก�น่ก*ต้$องหา เน่�-อท&'ว�างใน่หน่�วยความจำ าท&'ม&ขน่าด 5 Kbyte ด$วยเช้�น่ก�น่
22
หน่�วยความจำ าเสม�อน่ระบบเซึ่กเมน่ต้4(Segment System)
หมายเลขหน่$า
Segment Table
001
002
003
998
999
แอดเดรสใน่ด สก401แอดเดรสใน่หน่�วยความจำ าจำร งขน่าด
23
การส�บเป็ล&'ยน่หน่$า (Page Replacement)
• การส�บเป็ล&'ยน่หน่$าม&ว ธี&การ 5 ว ธี&ด�งน่&-– การส�บเป็ล&'ยน่หน่$าแบบส3�ม (Random)– การส�บเป็ล&'ยน่หน่$าแบบมาก�อน่ออกก�อน่ (First in
First out :FIFO)– การส�บเป็ล&'ยน่หน่$าแบบหน่$าท&'ถ(กใช้$น่$อยท&'ส3ดออกก�อน่
(Not frequently used :NFU)– การส�บเป็ล&'ยน่หน่$าแบบหน่$าใดท&'ไม�ถ(กใช้$น่าน่ท&'ส3ดออก
ก�อน่ (Least recently used :LRU)– การส�บเป็ล&'ยน่หน่$าแบบหน่$าใดไม�ได$ถ(กใช้$งาน่ออกก�อน่
(Not recently used :NUR)