﻿1
00:00:06,933 --> 00:00:10,599
(อาจารย์พิเชนทร์) คราวนี้ดู

2
00:00:10,599 --> 00:00:11,047
บทที่ 4 นะคะ

3
00:00:11,047 --> 00:00:14,397
การจัดการหน่วยความจำ

4
00:00:14,397 --> 00:00:18,210
บทที่แล้วนะครับ

5
00:00:18,210 --> 00:00:19,696
เราพูดถึง

6
00:00:19,696 --> 00:00:21,242
CPU นะคะ

7
00:00:21,242 --> 00:00:22,442
การจัดการ CPU

8
00:00:22,442 --> 00:00:24,306
บทนี้

9
00:00:24,306 --> 00:00:24,477
เราก็จะพูดถึงการ

10
00:00:24,477 --> 00:00:26,147
การหน่วยความจำนะครับ

11
00:00:26,147 --> 00:00:30,126
หน่วยความจำ

12
00:00:30,126 --> 00:00:33,762
เป็นอุปกรณ์ตัวหนึ่งที่มีส่วนสำคัญ

13
00:00:33,762 --> 00:00:36,500
ในคอมพิวเตอร์ของเรานะครับ

14
00:00:36,500 --> 00:00:40,500
เราจะดูว่าเครื่องคอมพิวเตอร์เครื่องไหน

15
00:00:42,268 --> 00:00:45,191
มีขีดความสามารถมากกว่ากัน

16
00:00:45,191 --> 00:00:47,749
เราก็

17
00:00:47,749 --> 00:00:47,993
จะดูได้จากหน่วยความจำนะคะ

18
00:00:47,993 --> 00:00:51,993
แต่ทั้งนี้ทั้งนั้นนะครับ

19
00:00:52,479 --> 00:00:56,443
ไม่ได้

20
00:00:56,443 --> 00:00:59,589
ตอบได้เสมอว่า

21
00:00:59,589 --> 00:01:00,696
เครื่องที่มีหน่วยความจำมาก

22
00:01:00,696 --> 00:01:03,131
ทำงานได้ดีกว่า

23
00:01:03,131 --> 00:01:03,317
นะครับ

24
00:01:03,317 --> 00:01:07,317
ในการจัดการหน่วยความจำนั้น

25
00:01:09,940 --> 00:01:10,618
ก็เป็นขีดความสามารถ

26
00:01:10,618 --> 00:01:14,618
อันหนึ่ง

27
00:01:15,177 --> 00:01:15,475
ของระบบปฏิบัติการของเราด้วย ถ้าระบบปฏิบัติการของเรา

28
00:01:15,475 --> 00:01:17,786
จัดการหน่วยความจำไม่ดีนะคะ

29
00:01:17,786 --> 00:01:21,786
ประสิทธิภาพในการใช้งาน

30
00:01:21,998 --> 00:01:24,061
ด้อยลงนะครับ

31
00:01:24,061 --> 00:01:25,551
คราวนี้เรามาดูว่า

32
00:01:25,551 --> 00:01:27,647
มันจัดการอย่างไรนะครับ

33
00:01:27,647 --> 00:01:31,647
การจัดการหน่วยความจำมีอยู่ 3 แบบนะครับ

34
00:01:33,916 --> 00:01:35,773
มีอยู่ 3

35
00:01:35,773 --> 00:01:39,773

36
00:01:41,358 --> 00:01:41,614
Face วาง แทนที่

37
00:01:41,614 --> 00:01:43,916
ครับ มีอยู่ 3 ลักษณะ

38
00:01:43,916 --> 00:01:46,478
ซึ่งเราค่อยดูว่า

39
00:01:46,478 --> 00:01:47,084
ทำอย่างไรนะครับ

40
00:01:47,084 --> 00:01:50,192
ตอนนี้

41
00:01:50,192 --> 00:01:50,508
มาดูการจัดสรรหน่วยความจำนะคะ

42
00:01:50,508 --> 00:01:54,206
โปรแกรมทุกโปรแกรมที่ใช้งานในคอมพิวเตอร์ของเรานะครับ

43
00:01:54,206 --> 00:01:55,837
จำเป็นจะต้องการใช้

44
00:01:55,837 --> 00:01:56,350
หน่วยความจำ

45
00:01:56,350 --> 00:01:57,851
นะครับ

46
00:01:57,851 --> 00:02:01,851
จะมากจะน้อยก็แล้วแต่โปรแกรมนะครับ

47
00:02:02,024 --> 00:02:04,463
โปรแกรม

48
00:02:04,463 --> 00:02:05,818
เกม

49
00:02:05,818 --> 00:02:07,529
อาจจะใช้เยอะ

50
00:02:07,529 --> 00:02:11,381
โปรแกรมพิมพ์งานอาจจะใช้น้อยอะไรประมาณนี้ครับ

51
00:02:11,381 --> 00:02:15,381
คราวนี้เรามาดูว่าถ้าเกิด

52
00:02:15,846 --> 00:02:19,846
ในการจัดสรรหน่วยความจำนะครับ

53
00:02:22,226 --> 00:02:25,854
จะมีสามารถแบ่งออกได้เป็น 2 ประเภทนะครับ ก็คือ

54
00:02:25,854 --> 00:02:28,032
การจัดสรรแบบ

55
00:02:28,032 --> 00:02:29,579
ต่อเนื่อง

56
00:02:29,579 --> 00:02:31,955
แล้วก็แบบไม่ต่อเนื่องนะครับ

57
00:02:31,955 --> 00:02:35,882
การจัด

58
00:02:35,882 --> 00:02:36,124
สรรหน่วยความจำแบบ

59
00:02:36,124 --> 00:02:40,124
ต่อเนื่อง ก็คือหมายความว่า

60
00:02:41,014 --> 00:02:41,573
หน่วยความจำจะต้องว่างต่อกัน

61
00:02:41,573 --> 00:02:45,495
นะครับ

62
00:02:45,495 --> 00:02:47,146
พื้นที่ว่างต้องต่อเนื่องกันนะครับ

63
00:02:47,146 --> 00:02:48,205
ขาดช่วงอะไรไม่ได้นะครับ

64
00:02:48,205 --> 00:02:51,524
แล้วก็ต้องมีขนาดใหญ่พอนะครับ

65
00:02:51,524 --> 00:02:51,816
ถึงจะ

66
00:02:51,816 --> 00:02:55,602
สามารถเข้าไปทำงานได้นะครับ

67
00:02:55,602 --> 00:02:59,602
ส่วนไม่ต่อเนื่องนะครับ

68
00:03:00,987 --> 00:03:01,871
ก็คือ

69
00:03:01,871 --> 00:03:05,871
เข้าไปครอบครองด้วยความจำแล้ว

70
00:03:08,404 --> 00:03:08,782
หน่วยความจำอาจจะอยู่คนละที่อยู่คนละแบบนะครับ อยู่คนละที่

71
00:03:08,782 --> 00:03:12,782
แต่ก็ต้องมีเนื้อที่เพียงพอ

72
00:03:15,804 --> 00:03:19,530
ที่โปรแกรมจะใช้งานนะครับ

73
00:03:19,530 --> 00:03:21,747
ตอนนี้มาดูใน

74
00:03:21,747 --> 00:03:22,225
ระบบ

75
00:03:22,225 --> 00:03:25,268
โปรแกรมเดี่ยว

76
00:03:25,268 --> 00:03:26,079
โปรแกรมเดี่ยว

77
00:03:26,079 --> 00:03:28,514
Single Program นะครับ

78
00:03:28,514 --> 00:03:30,058
ก็คือ

79
00:03:30,058 --> 00:03:31,862
คอมพิวเตอร์

80
00:03:31,862 --> 00:03:35,862
มีผู้ใช้งานแค่โปรแกรมเดียว

81
00:03:36,230 --> 00:03:37,429
การจัดสรร

82
00:03:37,429 --> 00:03:38,795
หน่วยความจำ

83
00:03:38,795 --> 00:03:41,404
จะไม่ยุ่งยากนะครับ

84
00:03:41,404 --> 00:03:45,404
ซึ่งเราสามารถแบ่ง

85
00:03:45,635 --> 00:03:47,117
พื้นที่

86
00:03:47,117 --> 00:03:48,350
ของหน่วยความจำ

87
00:03:48,350 --> 00:03:48,864
เป็น 2 ส่วนนะครับ

88
00:03:48,864 --> 00:03:50,268
ก็คือส่วนแรก

89
00:03:50,268 --> 00:03:53,357
เป็นส่วนของ

90
00:03:53,357 --> 00:03:53,553
ระบบปฏิบัติการนะครับ

91
00:03:53,553 --> 00:03:55,789
และ

92
00:03:55,789 --> 00:03:58,196
เป็นส่วนที่

93
00:03:58,196 --> 00:04:00,108
จำเป็นต้อง

94
00:04:00,108 --> 00:04:01,543
มีพื้นที่ว่าง

95
00:04:01,543 --> 00:04:03,578
ยาวติดต่อกัน

96
00:04:03,578 --> 00:04:04,214
เป็นผืนใหญ่ผืนเดียวเลย

97
00:04:04,214 --> 00:04:05,358
นะครับ

98
00:04:05,358 --> 00:04:09,358
นี่ OS

99
00:04:11,921 --> 00:04:12,919

100
00:04:12,919 --> 00:04:16,089
นะครับ จะต้องมี

101
00:04:16,089 --> 00:04:18,901
เนื้อที่หน่วยความจำของมันด้วยนะครับ

102
00:04:18,901 --> 00:04:19,664
และต้องเป็นพื้นที่ยาวต่อเนื่องกัน

103
00:04:19,664 --> 00:04:20,208
นะครับ

104
00:04:20,208 --> 00:04:24,208
2

105
00:04:24,568 --> 00:04:27,473
. ส่วนของผู้ใช้

106
00:04:27,473 --> 00:04:29,761
นะครับ

107
00:04:29,761 --> 00:04:30,717
ก็คือเหลือจาก OS

108
00:04:30,717 --> 00:04:33,334
ก็คือ

109
00:04:33,334 --> 00:04:34,921
กลายเป็นส่วนของผู้ใช้นะครับ

110
00:04:34,921 --> 00:04:35,347
ในระบบโปรแกรมเดียวนะครับ

111
00:04:35,347 --> 00:04:39,347
เมื่อหน่วยความจำถูกแบ่งออกเป็น 2 ส่วนนะครับ

112
00:04:41,757 --> 00:04:45,565
2 ส่วน ตัวของ

113
00:04:45,565 --> 00:04:46,552
ระบบปฏิบัติการเองต้องมีการป้องกัน ไม่ให้ตัวมันเอง

114
00:04:46,552 --> 00:04:50,552
โดนลุกล้ำเข้ามานะครับ วิธีการป้องกัน ก็คือ

115
00:04:51,603 --> 00:04:52,781
การใช้

116
00:04:52,781 --> 00:04:53,999
Register ขอบเขต

117
00:04:53,999 --> 00:04:54,881
นะครับ

118
00:04:54,881 --> 00:04:58,881
Register ขอบเขตคืออะไร

119
00:04:59,358 --> 00:05:01,930
ก็คือส่วนที่ป้องกัน

120
00:05:01,930 --> 00:05:02,204
ระหว่าง

121
00:05:02,204 --> 00:05:05,835
ระวังอะไรครับ

122
00:05:05,835 --> 00:05:06,153
OS

123
00:05:06,153 --> 00:05:09,814
กับส่วนของผู้ใช้

124
00:05:09,814 --> 00:05:10,058
ไม่ให้เข้ามา

125
00:05:10,058 --> 00:05:12,410
ยุ่งเกี่ยวกันนะครับ

126
00:05:12,410 --> 00:05:14,951
ดังนั้น

127
00:05:14,951 --> 00:05:16,340
การเขียนโปรแกรม

128
00:05:16,340 --> 00:05:20,127
ไวรัสคอมพิวเตอร์

129
00:05:20,127 --> 00:05:22,371
ตัวหนึ่ง ก็คือเจาะตัวนี้ล่ะครับ

130
00:05:22,371 --> 00:05:22,531
เจาะ Register ขอบเขต

131
00:05:22,531 --> 00:05:24,739
เจาะเข้าไป

132
00:05:24,739 --> 00:05:28,739
นี่นะครับ

133
00:05:30,023 --> 00:05:34,023
ถ้ามีการรุกล้ำ

134
00:05:34,028 --> 00:05:34,670
Register ขอบเขต

135
00:05:34,670 --> 00:05:36,533
ก็จะแจ้งเตือนนะครับ

136
00:05:36,533 --> 00:05:40,533
เอานี้มาดูระบบหลายโปรแกรมนะครับ ระบบหลายโปรแกรม

137
00:05:45,376 --> 00:05:49,376
การทำงานของระบบหลายโปรแกรมนั้น ส่วนมาก

138
00:05:50,279 --> 00:05:51,857
นะครับ

139
00:05:51,857 --> 00:05:55,857
ส่วนมากจะเกิดขึ้นก็คือการไปทำงาน

140
00:05:57,423 --> 00:05:59,333
input output ก็คือการไป

141
00:05:59,333 --> 00:06:00,570
การที่มันไม่ได้ครอบครอง

142
00:06:00,570 --> 00:06:01,060
CPU ง่าย ๆ

143
00:06:01,060 --> 00:06:05,060
เราเรียกระบบนี้ว่า

144
00:06:07,557 --> 00:06:11,557
ระบบ Multi programming

145
00:06:11,780 --> 00:06:13,151

146
00:06:13,151 --> 00:06:17,151
ระบบ

147
00:06:17,888 --> 00:06:18,238
Programming นี้นะครับ

148
00:06:18,238 --> 00:06:19,471
ก็คือระบบ

149
00:06:19,471 --> 00:06:23,471
การทำงานที่มีโปรแกรมมากกว่าหนึ่งโปรแกรมทำงาน

150
00:06:23,998 --> 00:06:27,998
ในเวลาเดียวกัน 2 3 4 5 6 7 นะครับ

151
00:06:31,560 --> 00:06:32,080
การทำงานของระบบหลายโปรแกรมนั้น

152
00:06:32,080 --> 00:06:34,093
แบ่ง

153
00:06:34,093 --> 00:06:38,093
partition ของหน่วยความจำออกเป็นส่วน ๆ  ส่วนนะครับ

154
00:06:40,352 --> 00:06:44,352
ซึ่งการแบ่งหน่วยความจำ

155
00:06:51,034 --> 00:06:53,023
นะครับ ระบบ

156
00:06:53,023 --> 00:06:53,412
หลายโปรแกรม

157
00:06:53,412 --> 00:06:56,813
ก็ยังสามารถ

158
00:06:56,813 --> 00:06:59,195
แบ่งได้เป็น 2 ประเภทนะครับ

159
00:06:59,195 --> 00:07:01,371
ก็คือระบบ

160
00:07:01,371 --> 00:07:02,927
หลายโปรแกรม

161
00:07:02,927 --> 00:07:06,508
แบบ

162
00:07:06,508 --> 00:07:08,437
คงที่และไม่คงที่ การจำแบบหน่วยคงที่และก็ไม่คงที่

163
00:07:08,437 --> 00:07:12,306
ในระบบหลายโปรแกรม

164
00:07:12,306 --> 00:07:13,261
สละ

165
00:07:13,261 --> 00:07:16,093
หน่วยความจำ

166
00:07:16,093 --> 00:07:17,456
ครับ

167
00:07:17,456 --> 00:07:21,456
แปลงหน่วยความจำนะครับ

168
00:07:22,303 --> 00:07:24,808
แล้วก็สลับหน่วยความจำ

169
00:07:24,808 --> 00:07:27,203
คราวนี้เรามาดูประเภทที่ 1 นะครับ

170
00:07:27,203 --> 00:07:28,574
การแบ่งหน่วยความจำ

171
00:07:28,574 --> 00:07:29,102
ขนาดคงที่

172
00:07:29,102 --> 00:07:30,031
นะครับ

173
00:07:30,031 --> 00:07:34,031
เห็นไหมครับ

174
00:07:36,082 --> 00:07:39,134
โปรแกรมส่วนที่ 1 ส่วนที่ 2 ส่วนที่ 3

175
00:07:39,134 --> 00:07:41,126
มีขนาดที่เท่ากัน

176
00:07:41,126 --> 00:07:44,244
นะครับ

177
00:07:44,244 --> 00:07:48,244
ที่เท่ากัน และการแบ่งหน่วย

178
00:07:56,639 --> 00:07:58,982
ความจำขนาดคงที่

179
00:07:58,982 --> 00:07:59,837
ยังแบ่งได้เป็น 2 ประเภทนะครับ

180
00:07:59,837 --> 00:08:01,501
เป็น 2 แบบ

181
00:08:01,501 --> 00:08:01,942
ได้แก่

182
00:08:01,942 --> 00:08:05,942
การแปลงและโหลดด้วยค่าสัมบูรณ์นะครับ

183
00:08:08,293 --> 00:08:09,596
ดูรูปนี้ประกอบนะครับ

184
00:08:09,596 --> 00:08:12,038
โปรแกรมส่วนที่ 1

185
00:08:12,038 --> 00:08:15,535
เห็นไหมครับ ส่วนที่ 1

186
00:08:15,535 --> 00:08:16,086
ออส่วน

187
00:08:16,086 --> 00:08:20,086
ส่วนที่ 1 และส่วนที่ 2 เข้าส่วนที่ 2 ส่วนที่ 3 กิโลกรัมส่วนที่ 1

188
00:08:22,766 --> 00:08:25,153
ส่วนที่ 2 ส่วนที่ 3

189
00:08:25,153 --> 00:08:28,183
จะมีขนาดที่เท่ากันนะครับ

190
00:08:28,183 --> 00:08:31,883
พอมันเท่ากันปุ๊บนะครับ

191
00:08:31,883 --> 00:08:33,066
โปรแกรมส่วนที่ 1

192
00:08:33,066 --> 00:08:37,066
โปรแกรมที่ 10 ที่ 2 ส่วน 3 เท่ากับ 10

193
00:08:38,821 --> 00:08:41,160
นะครับ

194
00:08:41,160 --> 00:08:41,772
โปรแกรมส่วนที่ 1

195
00:08:41,772 --> 00:08:45,772
ถ้าแปรงเสร็จแล้วหลุดเข้าไป

196
00:08:47,047 --> 00:08:47,961
มีค่าไม่เกิน 10

197
00:08:47,961 --> 00:08:49,399
จะเข้า

198
00:08:49,399 --> 00:08:50,830
ในส่วนที่ 1

199
00:08:50,830 --> 00:08:52,513
นะครับ

200
00:08:52,513 --> 00:08:54,410
แต่ถ้าโปรแกรม

201
00:08:54,410 --> 00:08:58,255
ส่วนที่ 2 จะต้องมีค่า

202
00:08:58,255 --> 00:08:59,221
ตั้งแต่ 11

203
00:08:59,221 --> 00:08:59,454
จนถึง 20

204
00:08:59,454 --> 00:09:02,888
ถึงจะเข้าสวนที่ 2

205
00:09:02,888 --> 00:09:04,451
ครับ

206
00:09:04,451 --> 00:09:07,464
แต่ถ้าบังเอิญว่าโปรแกรมส่วนที่ 1

207
00:09:07,464 --> 00:09:10,797
โปรแกรมวีโปรแกรม A โปรแกรม B โปรแกรมC

208
00:09:10,797 --> 00:09:14,741
เมื่อแปลงแล้วโหลดแล้วค่าสัมบูรณ์แล้วมีค่าไม่เกิน 10

209
00:09:14,741 --> 00:09:18,741
จะเข้าไปอยู่ที่คิวที่ 1 อย่างเดียวนะครับ

210
00:09:19,018 --> 00:09:23,018
นี่คือข้อเสียของมันนะครับ

211
00:09:23,944 --> 00:09:24,243
เห็นไหมคะ

212
00:09:24,243 --> 00:09:28,243
มันจะว่างเลยส่วนที่ 2 ส่วนที่ 3 ส่วนที่ 4 5 6 7

213
00:09:29,509 --> 00:09:33,509
ดังนั้นก็เลยมีการ

214
00:09:36,571 --> 00:09:38,791
แก้ปัญหานะครับ

215
00:09:38,791 --> 00:09:42,216
เป็นการโหลดด้วยค่าสัมพัทธ์

216
00:09:42,216 --> 00:09:43,482
ครับ

217
00:09:43,482 --> 00:09:45,613
เพื่อแก้ปัญหาเมื่อ

218
00:09:45,613 --> 00:09:46,689
ดีนะครับ

219
00:09:46,689 --> 00:09:48,142
ก็คือ

220
00:09:48,142 --> 00:09:52,075
มีคิวเดียวเลยนะครับ

221
00:09:52,075 --> 00:09:52,401
มีคิวเดียว

222
00:09:52,401 --> 00:09:56,401
คิวเดียวเสร็จแล้ว ก็คือ

223
00:09:56,836 --> 00:09:58,165
ส่วนที่ 1 2 3 4 หมายความว่า

224
00:09:58,165 --> 00:10:00,085
โปรแกรมจะโดน

225
00:10:00,085 --> 00:10:00,297
โหลดมาตรงนี้

226
00:10:00,297 --> 00:10:01,607
ที่

227
00:10:01,607 --> 00:10:05,607
คิว โดยมีแค่คิวเดียวนะครับ

228
00:10:05,958 --> 00:10:09,548
แปลงเสร็จปุ๊บ

229
00:10:09,548 --> 00:10:09,779
มีค่าเท่ากับ 19 ส่วนที่ 1

230
00:10:09,779 --> 00:10:11,190
แปเสร็จปุ๊บ

231
00:10:11,190 --> 00:10:13,483
ได้ค่าเท่ากับ 10

232
00:10:13,483 --> 00:10:14,699
เอาบวกเข้าไปอีก

233
00:10:14,699 --> 00:10:18,699
เดือน 12

234
00:10:19,133 --> 00:10:19,540
ส่วนที่ 2

235
00:10:19,540 --> 00:10:23,413
แปลงและโหลดเสร็จได้ 15

236
00:10:23,413 --> 00:10:24,878
เราไม่ได้ส่องไม่ได้

237
00:10:24,878 --> 00:10:25,516
+ 6 + 7

238
00:10:25,516 --> 00:10:26,546
+สิบ

239
00:10:26,546 --> 00:10:27,946
เข้าไป

240
00:10:27,946 --> 00:10:31,946
เข้าในส่วนที่ 2

241
00:10:32,446 --> 00:10:34,025
3 4 5 ไปเรื่อย ๆ นะครับ

242
00:10:34,025 --> 00:10:36,920
ดังนั้น

243
00:10:36,920 --> 00:10:37,285
การป้องกันนะครับ

244
00:10:37,285 --> 00:10:38,828
ถ้าเป็นนาย

245
00:10:38,828 --> 00:10:42,013
ระบบโปรแกรมเดี่ยวใช้ Register ขอบเขต

246
00:10:42,013 --> 00:10:43,451
ในการป้องกัน

247
00:10:43,451 --> 00:10:45,964
แต่ถ้าในระบบหลายโปรแกรม

248
00:10:45,964 --> 00:10:49,964
วิธีที่นิยมใช้ ก็คือ

249
00:10:51,655 --> 00:10:52,431
คือขอบเขตบนและขอบ

250
00:10:52,431 --> 00:10:54,097
เขตล่าง

251
00:10:54,097 --> 00:10:56,772
ในการป้องกันไม่ให้

252
00:10:56,772 --> 00:10:57,955
โปรแกรมเข้ามานะครับ

253
00:10:57,955 --> 00:10:59,644
เห็นไหมครับ ขอบเขตล่าง

254
00:10:59,644 --> 00:11:02,405
ขอบเขตบน

255
00:11:02,405 --> 00:11:03,186
ขอบเขตล่างขอบเขตล่าง

256
00:11:03,186 --> 00:11:04,418
ครับ

257
00:11:04,418 --> 00:11:05,897
ส่วนตัวของ

258
00:11:05,897 --> 00:11:08,432
ระบบ

259
00:11:08,432 --> 00:11:09,150
ปฏิบัติการ

260
00:11:09,150 --> 00:11:10,255
ใช้

261
00:11:10,255 --> 00:11:11,450
ตัวของวิจิตร

262
00:11:11,450 --> 00:11:13,419
เตอร์ขอบเขตนะครับ

263
00:11:13,419 --> 00:11:15,457
ในการป้องกัน

264
00:11:15,457 --> 00:11:19,457
คราวนี้ในการแบ่งหน่วยความจำ

265
00:11:21,172 --> 00:11:21,523
แล้วว่าจะใช้วิธีการใดก็แล้วแต่นะครับ

266
00:11:21,523 --> 00:11:25,523
เรียกว่าการแตกกระจายนะครับ

267
00:11:26,253 --> 00:11:30,253
การแตกกระจายนะครับ ก็คือ

268
00:11:30,467 --> 00:11:33,460
ส่วนของหน่วยความจำที่ไม่ถูกใช้งาน

269
00:11:33,460 --> 00:11:35,902
ในระบบ

270
00:11:35,902 --> 00:11:38,433
แบ่งหน่วยความจำนะครับ

271
00:11:38,433 --> 00:11:38,919
แบ่งหน่วยความจำ

272
00:11:38,919 --> 00:11:42,133
ซึ่งเราเรียก

273
00:11:42,133 --> 00:11:46,133
การแตกกระจายนี้ออกเป็น

274
00:11:46,203 --> 00:11:48,954
2 กรณี

275
00:11:48,954 --> 00:11:50,246
การมีการแตกกระจายภายนอกและการ

276
00:11:50,246 --> 00:11:51,261
กระจายภายในนะครับ

277
00:11:51,261 --> 00:11:53,531
การแตกกระจายภายนอก

278
00:11:53,531 --> 00:11:56,032
เป็นอย่างไรครับ

279
00:11:56,032 --> 00:11:56,402
มาดูนะครับ

280
00:11:56,402 --> 00:11:58,430
ส่วนที่ 1

281
00:11:58,430 --> 00:12:01,953
การแตกกระจายภายนอก

282
00:12:01,953 --> 00:12:04,604
หมายถึง

283
00:12:04,604 --> 00:12:06,253
ส่วนของ

284
00:12:06,253 --> 00:12:10,131
หน่วย

285
00:12:10,131 --> 00:12:10,333
ความจำที่ไม่ถูกใช้งานในระบบ

286
00:12:10,333 --> 00:12:13,380
แบ่งหน่วยความจำขนาดคงที่

287
00:12:13,380 --> 00:12:16,980
ไม่ถูกใช้งานเลยเห็นไหมครับ ส่วนที่ 1

288
00:12:16,980 --> 00:12:17,801
ไม่ถูกใช้งาน

289
00:12:17,801 --> 00:12:20,205
ส่วน

290
00:12:20,205 --> 00:12:20,787
การแตกกระจายภายใน

291
00:12:20,787 --> 00:12:23,002
ดูนะครับ ภายใน

292
00:12:23,002 --> 00:12:24,888
หมายถึง

293
00:12:24,888 --> 00:12:26,923
ส่วนของจำ

294
00:12:26,923 --> 00:12:30,923
ที่ถูกใช้งาน

295
00:12:33,638 --> 00:12:33,867
ที่ถูกใช้งานแต่ใช้งานไม่หมด

296
00:12:33,867 --> 00:12:36,176
ใช้ไม่หมดนะครับ

297
00:12:36,176 --> 00:12:38,153
นาฬิกา

298
00:12:38,153 --> 00:12:41,343
หน่วยความจำขนาดคงที่

299
00:12:41,343 --> 00:12:43,815
ต่างกันนะครับ

300
00:12:43,815 --> 00:12:47,815
การแพร่กระจายภายนอกก็คือส่วนที่

301
00:12:48,382 --> 00:12:49,330
ว่างไม่ถูกใช้งานเลย

302
00:12:49,330 --> 00:12:52,234
ส่วนการแตกกระจายภายใน คือ

303
00:12:52,234 --> 00:12:54,164
ส่วน

304
00:12:54,164 --> 00:12:56,394
หน่วยความจำว่าง

305
00:12:56,394 --> 00:12:57,186
ถูกใช้แล้วใช้ไม่หมดนะครับ

306
00:12:57,186 --> 00:13:01,186
คราวนี้มันถูก

307
00:13:03,441 --> 00:13:06,315
การแบ่งหน่วยความจำ

308
00:13:06,315 --> 00:13:10,303
ขนาดคงที่ ขนาดไม่คงที่

309
00:13:10,303 --> 00:13:10,524
เมื่อกี้เป็นขนาดคงที่นะคะ

310
00:13:10,524 --> 00:13:14,524
ผู้ออก

311
00:13:14,563 --> 00:13:15,714
แบบระบบ

312
00:13:15,714 --> 00:13:16,358
ปฏิบัติการ

313
00:13:16,358 --> 00:13:16,900
ได้

314
00:13:16,900 --> 00:13:18,902
ถึง

315
00:13:18,902 --> 00:13:20,813
มีข้อจำกัด

316
00:13:20,813 --> 00:13:24,813
ก็เลย

317
00:13:25,424 --> 00:13:26,028
คิดค้นวิธีการที่

318
00:13:26,028 --> 00:13:30,028
การแบ่งหน่วยความจำที่ขนาดไม่คงที่

319
00:13:31,346 --> 00:13:33,720
เห็นไหมครับ

320
00:13:33,720 --> 00:13:34,971
ผู้ใช้ A

321
00:13:34,971 --> 00:13:36,770
ต้องการใช้

322
00:13:36,770 --> 00:13:38,900
10 ก็เข้าไปเลย 11 Kเลย

323
00:13:38,900 --> 00:13:41,134
เอาไปเลย 10 K

324
00:13:41,134 --> 00:13:45,134
นะครับ

325
00:13:50,672 --> 00:13:54,672
ผู้ใช้ D ต้องการ 30

326
00:13:56,025 --> 00:13:57,248
มาเข้าไป

327
00:13:57,248 --> 00:14:01,248
ขนาดไม่คงที่ครับ

328
00:14:01,921 --> 00:14:03,170
ขอให้มีพื้นที่ว่างเพียงพอก็สามารถจัดการ

329
00:14:03,170 --> 00:14:05,432
หน่วยความจำได้เลยนะครับ

330
00:14:05,432 --> 00:14:09,432
ระบบหลายโปรแกรมแบบ

331
00:14:14,398 --> 00:14:17,445
แบ่ง

332
00:14:17,445 --> 00:14:18,085
หน่วยความจำแบบไม่คงที่นะครับ สามารถรัน

333
00:14:18,085 --> 00:14:20,951
ได้หลายโปรแกรมนะครับ

334
00:14:20,951 --> 00:14:21,159
ดูนะครับ

335
00:14:21,159 --> 00:14:25,159
ถึงแม้ว่า

336
00:14:29,847 --> 00:14:32,151
การแบ่งหน่วยความจำ

337
00:14:32,151 --> 00:14:33,245
ขนาดไม่คงที่นะครับ

338
00:14:33,245 --> 00:14:37,245
ก็ยังมีส่วนที่ไม่ถูกใช้งานเหมือนกันนะครับ

339
00:14:37,848 --> 00:14:39,306
เหมือนเดิม

340
00:14:39,306 --> 00:14:41,218
ถ้าเป็นขนาดคงที่

341
00:14:41,218 --> 00:14:44,080
เรียกว่าการแตกกระจายนะครับ

342
00:14:44,080 --> 00:14:46,975
ส่วนถ้าเกิดใน

343
00:14:46,975 --> 00:14:48,940
ในกรณีใน

344
00:14:48,940 --> 00:14:49,265
พื้นที่ที่ไม่ถูกใช้งาน

345
00:14:49,265 --> 00:14:52,008
ใน

346
00:14:52,008 --> 00:14:52,309
การแบ่งหน่วยความจำขนาด

347
00:14:52,309 --> 00:14:56,309
ไม่คงที่ เราเรียกว่า

348
00:14:56,715 --> 00:14:57,718
ช่องโหว่นะครับ หรือ

349
00:14:57,718 --> 00:15:01,718
Hole Hole เกิดขึ้นได้อย่างไรครับ

350
00:15:03,516 --> 00:15:07,516
โปรแกรม A โปรแกรม B โปรแกรม C Program a เกิดขึ้นแล้ว

351
00:15:13,051 --> 00:15:16,695
ข้างล่างสุด

352
00:15:16,695 --> 00:15:17,931
ช่องว่างช่องโหว่

353
00:15:17,931 --> 00:15:21,931
สักระยะหนึ่ง

354
00:15:22,383 --> 00:15:24,168
โปรแกรม B จบ

355
00:15:24,168 --> 00:15:24,917
คืoหน่วยความจำให้ระบบ

356
00:15:24,917 --> 00:15:25,094
เห็นไหมครับ

357
00:15:25,094 --> 00:15:28,099
ช่องโหว่เกิดขึ้นแล้ว

358
00:15:28,099 --> 00:15:32,099
สักพักหนึ่ง

359
00:15:32,230 --> 00:15:33,374
โปรแกรม

360
00:15:33,374 --> 00:15:35,260
ดีจบ

361
00:15:35,260 --> 00:15:35,446
คือหน่วยความจำให้ระบบ

362
00:15:35,446 --> 00:15:37,235
เปิดช่องโหว่ขึ้นแล้วนะครับ

363
00:15:37,235 --> 00:15:41,235
เมื่อกี้

364
00:15:45,559 --> 00:15:47,118
เกิด Hole ขึ้น

365
00:15:47,118 --> 00:15:48,230
ก็มีวิธีการ

366
00:15:48,230 --> 00:15:50,237
เอา

367
00:15:50,237 --> 00:15:54,030
โปรแกรมใหม่

368
00:15:54,030 --> 00:15:54,466
ลงไปวางแทนนะครับ ซึ่งมีอยู่ 3 วิธีการ

369
00:15:54,466 --> 00:15:57,579
1

370
00:15:57,579 --> 00:15:59,742
. เลือกเซลล์ที่พบก่อน

371
00:15:59,742 --> 00:16:03,742
และมีขนาด

372
00:16:03,957 --> 00:16:05,809
ใหญ่พอ

373
00:16:05,809 --> 00:16:06,321
ที่จะวางโปรแกรมใหม่ลงไป

374
00:16:06,321 --> 00:16:10,321
วิธีการที่ 2

375
00:16:10,725 --> 00:16:12,698
เลือก Hole ที่เหมาะสม

376
00:16:12,698 --> 00:16:13,689
เมื่อเลือกโหมดที่เหมาะสมที่สุด

377
00:16:13,689 --> 00:16:15,809
ก็คือ

378
00:16:15,809 --> 00:16:17,109
เอาเข้าไปแล้วเหลือหน่วยความจำ

379
00:16:17,109 --> 00:16:18,768
เหลือ 6

380
00:16:18,768 --> 00:16:19,046
ใหม่น้อยที่สุด

381
00:16:19,046 --> 00:16:20,747
นะครับ

382
00:16:20,747 --> 00:16:22,777
3

383
00:16:22,777 --> 00:16:26,777
. เลือก Hole ที่ใหญ่ที่สุด

384
00:16:27,082 --> 00:16:27,997
นะครับ

385
00:16:27,997 --> 00:16:29,564
ที่ใหญ่ที่สุด

386
00:16:29,564 --> 00:16:33,059
มาดูนะครับ วิธีการในแต่ละวิธีเป็นยังไง

387
00:16:33,059 --> 00:16:34,897
ดูรูปนะครับ

388
00:16:34,897 --> 00:16:37,107
วิธีการที่ 1

389
00:16:37,107 --> 00:16:40,322
เจอก่อนพบก่อน

390
00:16:40,322 --> 00:16:44,322
แต่ต้องมีเงื่อนไขว่าจะต้องมีเงื่อนไข

391
00:16:45,664 --> 00:16:46,649
พื้นที่ของ

392
00:16:46,649 --> 00:16:48,397
Home

393
00:16:48,397 --> 00:16:50,392
ได้เพียงพอนะครับ

394
00:16:50,392 --> 00:16:54,178
1396 ได้ไหมครับ

395
00:16:54,178 --> 00:16:54,358
ได้

396
00:16:54,358 --> 00:16:58,358
มาก่อนเลยพบก่อนเลยเจอก่อน

397
00:17:00,280 --> 00:17:01,159
เอาไปวางก่อนเลยนะคะ

398
00:17:01,159 --> 00:17:01,383
2

399
00:17:01,383 --> 00:17:04,274
. เหมาะสมที่สุด

400
00:17:04,274 --> 00:17:04,840
เข้าไปวางเสร็จแล้ว

401
00:17:04,840 --> 00:17:07,110
Hole ใหม่ที่เกิดขึ้น

402
00:17:07,110 --> 00:17:10,399
มีขนาดเหลือน้อยที่สุด ถ้าเข้า 16

403
00:17:10,399 --> 00:17:11,839
เหลือ 3

404
00:17:11,839 --> 00:17:15,260

405
00:17:15,260 --> 00:17:17,660
ถ้าเข้า 14 เหลือ 1

406
00:17:17,660 --> 00:17:18,594
ถ้าเข้า 5

407
00:17:18,594 --> 00:17:19,877
เข้าไม่ได้

408
00:17:19,877 --> 00:17:20,373
ถ้าเข้า 30

409
00:17:20,373 --> 00:17:22,347
เหลือ 17

410
00:17:22,347 --> 00:17:22,512
เห็นไหมครับ

411
00:17:22,512 --> 00:17:24,795
เหมาะสมที่สุด

412
00:17:24,795 --> 00:17:27,661
เรื่อง Hole ที่เข้าไปแล้ว

413
00:17:27,661 --> 00:17:30,794
ที่ทำให้เกิด Hole ใหม่น้อยที่สุด

414
00:17:30,794 --> 00:17:34,794
ซึ่งแบบที่ 3

415
00:17:35,377 --> 00:17:36,096
วิธีการแบบที่ 3 ก็คือ

416
00:17:36,096 --> 00:17:39,104
Hole ที่ใหญ่ที่สุด

417
00:17:39,104 --> 00:17:41,515
30

418
00:17:41,515 --> 00:17:42,065
ใหญ่กว่าเพื่อน

419
00:17:42,065 --> 00:17:46,065
คราวนี้

420
00:17:49,979 --> 00:17:51,460
ในกรณีที่

421
00:17:51,460 --> 00:17:55,233
มี Hole เกิดขึ้น

422
00:17:55,233 --> 00:17:57,173
พื้นที่ติดกัน

423
00:17:57,173 --> 00:17:57,419
ติดกันนะครับ ติดกัน

424
00:17:57,419 --> 00:18:01,419
ถ้า OS

425
00:18:02,532 --> 00:18:04,137
มีความ

426
00:18:04,137 --> 00:18:07,464
สามารถนะครับ

427
00:18:07,464 --> 00:18:07,831
มันจะต้องมีความสามารถในการ

428
00:18:07,831 --> 00:18:11,312
จับรวม Hole เข้าไปด้วยกันเลย

429
00:18:11,312 --> 00:18:12,307
ลักหลับ

430
00:18:12,307 --> 00:18:16,307
นึกออกไหมครับ

431
00:18:18,247 --> 00:18:18,828
เมื่อมี Hole ติดกัน

432
00:18:18,828 --> 00:18:21,878
วางติดกัน

433
00:18:21,878 --> 00:18:22,530
จับยุบรวมกันนะคะ

434
00:18:22,530 --> 00:18:24,679
อีกวิธีการหนึ่ง

435
00:18:24,679 --> 00:18:27,827
การอัดหน่วยความจำ

436
00:18:27,827 --> 00:18:29,371
หน่วยความจำ

437
00:18:29,371 --> 00:18:30,673
ก็คือ

438
00:18:30,673 --> 00:18:32,948

439
00:18:32,948 --> 00:18:33,718
มี Hole ว่าง

440
00:18:33,718 --> 00:18:34,889
เกิดขึ้น

441
00:18:34,889 --> 00:18:38,889
ติดกันก็ได้ ไม่ติดก็ได้

442
00:18:39,596 --> 00:18:43,375
นะครับ วิธีการอัดหน่วยความจำ ก็คือ

443
00:18:43,375 --> 00:18:47,058
ระบบจะหยุดการทำงานแล้วก็เช็คดูระบบ

444
00:18:47,058 --> 00:18:50,779
และการไปเอา

445
00:18:50,779 --> 00:18:52,313
หน่วยความจำที่ว่าง ๆ

446
00:18:52,313 --> 00:18:54,738
อยู่มาจับรวมกัน

447
00:18:54,738 --> 00:18:55,448
เพื่อให้ได้หน่วยความจำที่ใหญ่ขึ้นนะครับ

448
00:18:55,448 --> 00:18:59,448
เราเรียกว่าการรวบรวมขยะ

449
00:19:00,268 --> 00:19:03,279
นะครับ

450
00:19:03,279 --> 00:19:03,926
เหมือนโปรแกรม DeflacFlash

451
00:19:03,926 --> 00:19:07,926
ปลอยากไปเรียนปฏิบัตินะครับ

452
00:19:08,508 --> 00:19:08,751
เราจะเห็นว่า

453
00:19:08,751 --> 00:19:11,242
โปรแกรม defrag ทำงานยังไง

454
00:19:11,242 --> 00:19:15,242
มาทีหลังทำไมไม่เอาแบบฝึกหัด

455
00:19:17,612 --> 00:19:21,494
เข้ามาเมื่อกี้

456
00:19:21,494 --> 00:19:22,751
มาเอาแบบฝึกหัด

457
00:19:22,751 --> 00:19:26,751
แล้วทำอะไรอยู่

458
00:19:32,341 --> 00:19:36,341
นี่ดูวิธีการรวบรวม

459
00:19:42,867 --> 00:19:44,277
นะครับ

460
00:19:44,277 --> 00:19:47,590
อัดหน่วยความจำนะครับ

461
00:19:47,590 --> 00:19:48,164
เห็นไหมครับ

462
00:19:48,164 --> 00:19:52,079
ใช้งาน 1 2 3

463
00:19:52,079 --> 00:19:56,079
Hole Hole Hole นะครับ พออัดหน่วยความจำ

464
00:20:01,830 --> 00:20:02,287
เกิดช่องว่างขึ้น

465
00:20:02,287 --> 00:20:04,212
กว้างขึ้นใหญ่ขึ้น

466
00:20:04,212 --> 00:20:08,123
นี่ คือ วิธีการอัดหน่วยความจำ

467
00:20:08,123 --> 00:20:12,123
คราวนี้มาดูระบบหลายโปรแกรม

468
00:20:15,274 --> 00:20:15,907
แบบสลับ

469
00:20:15,907 --> 00:20:17,213
โปรแกรม

470
00:20:17,213 --> 00:20:18,668
เมื่อกี้เป็นแบบ

471
00:20:18,668 --> 00:20:19,449
แบ่งหน่วยความจำนะครับ

472
00:20:19,449 --> 00:20:21,309
หน่วยความจำก็มี

473
00:20:21,309 --> 00:20:25,309
ตอนทำคงที่กับไม่คงที่นะครับ

474
00:20:25,752 --> 00:20:28,716
ก็คือ

475
00:20:28,716 --> 00:20:30,127
หลักการก็คือเมื่อโปรแกรม

476
00:20:30,127 --> 00:20:31,404
ถูก

477
00:20:31,404 --> 00:20:31,725
ใช้งาน

478
00:20:31,725 --> 00:20:35,725
เราเรียกว่าการสลับเข้านะครับ

479
00:20:36,392 --> 00:20:38,684
เข้ามา เข้ามา เข้ามา

480
00:20:38,684 --> 00:20:42,684


