﻿1
00:00:23,020 --> 00:00:23,781
การจัดการ CPU

2
00:00:23,781 --> 00:00:27,780
งวดนี้เราก็จะพูดถึงการจัดการหน่วยความจำนะครับ

3
00:00:27,780 --> 00:00:29,682
หน่วยความจำ

4
00:00:29,682 --> 00:00:33,547
ก็เป็นอุปกรณ์ตัวหนึ่ง

5
00:00:33,547 --> 00:00:33,916
ที่มีส่วนสำคัญ

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

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

8
00:00:42,246 --> 00:00:45,257
ขีดความสามารถมากกว่ากัน

9
00:00:45,257 --> 00:00:48,283
เราก็อาจจะดู

10
00:00:48,283 --> 00:00:49,455
จากหน่วยความจำนะครับ

11
00:00:49,455 --> 00:00:52,626

12
00:00:52,626 --> 00:00:56,626

13
00:00:58,100 --> 00:01:01,346

14
00:01:01,346 --> 00:01:04,164

15
00:01:04,164 --> 00:01:08,164

16
00:01:12,693 --> 00:01:15,057
ถ้าระบบปฏิบัติการของเรา

17
00:01:15,057 --> 00:01:18,713
จัดการหน่อยหน่วยความจำไม่ดี

18
00:01:18,713 --> 00:01:22,608
ประสิทธิภาพในการใช้งาน

19
00:01:22,608 --> 00:01:22,902
ก็จะน้อยลงนะครับ

20
00:01:22,902 --> 00:01:26,902
ที่นี้เรามาดูว่ามันจะกันอย่างไรนะครับ

21
00:01:27,571 --> 00:01:31,571
การจัดการหน่วยความจำ

22
00:01:34,324 --> 00:01:34,760
มีอยู่ 3 แบบนะครับ

23
00:01:34,760 --> 00:01:36,683
มีอยู่ 3

24
00:01:36,683 --> 00:01:40,683
เฟซวางแผนที่

25
00:01:43,460 --> 00:01:43,983
มี 3 ลักษณะนะครับ คือ

26
00:01:43,983 --> 00:01:47,348
ซึ่งเราค่อยดูว่าทำอย่างไรนะครับ

27
00:01:47,348 --> 00:01:50,391
คราวนี้มาดูการจัดสรรหน่วยความจำนะครับ

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

29
00:01:56,299 --> 00:01:57,264
จำเป็นจะต้องใช้หน่วยความจำ

30
00:01:57,264 --> 00:01:59,422
นะครับ

31
00:01:59,422 --> 00:02:02,626
ทำมากจะน้อยก็แล้วแต่โปรแกรม

32
00:02:02,626 --> 00:02:06,626
โปรแกรมเกม

33
00:02:07,897 --> 00:02:08,258
อาจจะใช้เยอะ

34
00:02:08,258 --> 00:02:11,656
โปรแกรมพิมพ์งานอาจจะใช้น้อย

35
00:02:11,656 --> 00:02:13,089
ประมาณนี้นะครับ

36
00:02:13,089 --> 00:02:16,844
คราวนี้เรามาดูว่า

37
00:02:16,844 --> 00:02:20,844
ถ้าเกิดในการจัดสรรหน่วยความจำนะครับ

38
00:02:25,200 --> 00:02:25,895
สามารถแบ่งออกเป็น 2 ประเภทนะครับ

39
00:02:25,895 --> 00:02:29,275
ก็คือการจัดสรร

40
00:02:29,275 --> 00:02:33,275
แบบต่อเนื่อง

41
00:02:42,334 --> 00:02:40,919

42
00:02:31,790 --> 00:02:32,860
แล้วก็แบบไม่ต่อเนื่องนะครับ

43
00:02:32,860 --> 00:02:36,860
การจัดสรรหน่วยความจำ

44
00:02:39,211 --> 00:02:41,530
แบบต่อเนื่อง ก็คือหมายความว่า

45
00:02:41,530 --> 00:02:42,200
หน่วยความจำจะต้องว่างต่อกัน

46
00:02:42,200 --> 00:02:46,200
ครับ

47
00:02:54,229 --> 00:02:52,279

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

49
00:02:47,695 --> 00:02:47,915
ขาดช่วงอะไรไม่ได้นะครับ

50
00:02:47,915 --> 00:02:50,910
แล้วก็ต้องมีขนาดใหญ่พอนะครับ

51
00:02:50,910 --> 00:02:54,910
ถึงจะสามารถเข้าไปทำงานได้นะครับ

52
00:02:56,061 --> 00:03:00,061
ส่วนไม่ต่อเนื่องนะครับ

53
00:03:00,453 --> 00:03:02,851
ก็คือ

54
00:03:02,851 --> 00:03:06,851
เข้าไปครอบครองหน่วยความจำแล้ว หน่วยความจำอาจจะอยู่คนละที่ อยู่คนละแบบนะครับ อยู่คนละที่

55
00:03:24,254 --> 00:03:21,934

56
00:03:10,775 --> 00:03:14,177
แต่ก็ต้องมีเนื้อที่เพียงพอนะครับ

57
00:03:14,177 --> 00:03:17,236
ที่โปรแกรมจะใช้งานนะครับ

58
00:03:17,236 --> 00:03:21,236
คราวนี้

59
00:03:22,306 --> 00:03:26,306
มาดูในระบบโปรแกรมเดียว

60
00:03:33,369 --> 00:03:32,623

61
00:03:26,039 --> 00:03:30,039
โปรแกรมเดียว

62
00:03:36,623 --> 00:03:35,099

63
00:03:26,723 --> 00:03:30,723
Single Program

64
00:03:39,099 --> 00:03:36,712

65
00:03:29,241 --> 00:03:32,665
ก็คือคอมพิวเตอร์

66
00:03:32,665 --> 00:03:36,665
มีผู้ใช้งานแค่โปรแกรมเดียว การจัดสรรหน่วยความจำ

67
00:03:38,734 --> 00:03:42,734
จะไม่ยุ่งยากนะครับ

68
00:03:47,769 --> 00:03:50,024

69
00:03:41,023 --> 00:03:45,023
ซึ่งเราสามารถแบ่งพื้นที่

70
00:03:46,093 --> 00:03:50,093
ของหน่วยความจำออกเป็น 2 ส่วนนะครับ

71
00:03:57,286 --> 00:03:56,454

72
00:03:50,537 --> 00:03:53,887
ก็คือตอนแรก

73
00:03:53,887 --> 00:03:54,218
ส่วนของระบบปฏิบัติการนะครับ

74
00:03:54,218 --> 00:03:58,218
และเป็นส่วนที่จำเป็นจะ

75
00:04:00,904 --> 00:04:02,320
ต้องมีพื้นที่ว่าง

76
00:04:02,320 --> 00:04:06,320
ยาวติดต่อกัน

77
00:04:13,482 --> 00:04:12,405

78
00:04:04,223 --> 00:04:04,447
เป็นผืนใหญ่ผืนเดียวเลย

79
00:04:04,447 --> 00:04:08,447
นะครับ

80
00:04:17,846 --> 00:04:21,002
นี่

81
00:04:06,405 --> 00:04:10,405
OS

82
00:04:12,562 --> 00:04:13,445
นะครับ

83
00:04:13,445 --> 00:04:17,445
ต้องมีพื้นที่หน่วยความจำของมันด้วยนะครับ

84
00:04:19,313 --> 00:04:20,372
และต้องเป็นพื้นที่ยาวต่อเนื่องกันนะครับ

85
00:04:20,372 --> 00:04:24,372
2

86
00:04:25,084 --> 00:04:27,086
ส่วนของผู้ใช้

87
00:04:27,086 --> 00:04:30,670
ก็คือเหลือจาก OS

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

89
00:04:35,058 --> 00:04:35,268
ในระบบโปรแกรมเดียวนะครับ

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

91
00:04:41,524 --> 00:04:45,524
ระบบปฏิบัติการเองก็จำเป็นต้องป้องกัน

92
00:04:46,620 --> 00:04:48,251
ไม่ให้ตัวมันเองนี่

93
00:04:48,251 --> 00:04:48,547
โดนลเข้ามา

94
00:04:48,547 --> 00:04:52,179
วิธีการป้องกัน

95
00:04:52,179 --> 00:04:53,118
ก็คือการใช้ Regis

96
00:04:53,118 --> 00:04:54,024
ขอบเขต

97
00:04:54,024 --> 00:04:54,366
นะครับ

98
00:04:54,366 --> 00:04:58,366
register ขอบเขตคืออะไร

99
00:04:59,460 --> 00:05:00,003
ก็คือ

100
00:05:00,003 --> 00:05:03,099
ส่วนที่ป้องกัน

101
00:05:03,099 --> 00:05:03,396
ระหว่าง

102
00:05:03,396 --> 00:05:07,275
ระหว่างอะไรครับ

103
00:05:07,275 --> 00:05:08,839
OS นะครับ

104
00:05:08,839 --> 00:05:09,318
กับส่วนของผู้ใช้

105
00:05:09,318 --> 00:05:12,895
ไม่ให้เข้ามายุ่งเกี่ยวกันนะครับ

106
00:05:12,895 --> 00:05:16,895
ดังนั้นการเขียนโปรแกรม

107
00:05:18,426 --> 00:05:20,029
ไวรัสคอมพิวเตอร์

108
00:05:20,029 --> 00:05:21,688
ส่วนหนึ่งก็คือเจาะ

109
00:05:21,688 --> 00:05:22,794
register ขอบเขต

110
00:05:22,794 --> 00:05:24,325
เจาะเข้าไป

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

112
00:05:29,541 --> 00:05:33,541
ถ้ามีการรุกล้ำ

113
00:05:34,558 --> 00:05:35,237
register ขอบเขต

114
00:05:35,237 --> 00:05:37,451
มันจะมีการแจ้งเตือนนะครับ

115
00:05:37,451 --> 00:05:41,451
คราวนี้มาดูระบบหลายโปรแกรมนะครับ

116
00:05:44,874 --> 00:05:45,329
ระบบหลายโปรแกรม

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

118
00:05:51,482 --> 00:05:52,074
นะครับ

119
00:05:52,074 --> 00:05:54,788
ส่วนมากจะเกิดขึ้นก็คือ

120
00:05:54,788 --> 00:05:57,754
การไปทำงาน input output

121
00:05:57,754 --> 00:05:58,027
ก็คือ

122
00:05:58,027 --> 00:06:02,027
อันที่มันไม่ได้ครอบครอง CPU ว่าง่าย ๆ

123
00:06:02,518 --> 00:06:04,213
ได้ครอบครองหน่วยความจำนะครับ

124
00:06:04,213 --> 00:06:08,213
เราเรียกระบบนี้ว่า

125
00:06:08,833 --> 00:06:12,350
ระบบ Multi programming

126
00:06:12,350 --> 00:06:16,350
ระบบ programming นี้นะครับ

127
00:06:18,080 --> 00:06:21,133
ก็คือการทำงานที่

128
00:06:21,133 --> 00:06:25,133
มีโปรแกรมมากกว่าหนึ่งโปรแกรม ทำงานในเวลาเดียวกัน

129
00:06:25,961 --> 00:06:29,480
2 3 4 5 6

130
00:06:29,480 --> 00:06:29,630
7 นะครับ

131
00:06:29,630 --> 00:06:33,630
การทำงานของระบบหลายโปรแกรมนั้น

132
00:06:35,363 --> 00:06:35,578
แบ่ง partition ของหน่วยความจำนะครับ

133
00:06:35,578 --> 00:06:39,578
แบ่ง partition ของหน่วยความจำออกเป็นส่วนส่วนนะครับ

134
00:06:42,689 --> 00:06:46,689
การแบ่งหน่วยความจำนะครับ

135
00:06:50,566 --> 00:06:53,348
เรา

136
00:06:53,348 --> 00:06:54,933
โปรแกรม

137
00:06:54,933 --> 00:06:55,075
แบ่งกับความจำนะครับ

138
00:06:55,075 --> 00:06:59,075
ก็ยังสามารถ

139
00:06:59,197 --> 00:07:02,705
แบ่งได้เป็น 2 ประเภทนะครับ

140
00:07:02,705 --> 00:07:05,340
ก็คือระบบหลายโปรแกรมแบบแบ่งหน่วยความจำ

141
00:07:05,340 --> 00:07:07,326
แบบคงที่

142
00:07:07,326 --> 00:07:07,563
แล้วก็ไม่คงที่นะครับ

143
00:07:07,563 --> 00:07:11,563
ในระบบหลายโปรแกรมแบบสลับหน่วยความจำ

144
00:07:14,722 --> 00:07:16,226
นะครับ

145
00:07:16,226 --> 00:07:20,226
แบ่งหน่วยความจำนะครับ

146
00:07:22,629 --> 00:07:25,718
แล้วก็สลับหน่วยความจำ

147
00:07:25,718 --> 00:07:27,776
คราวนี้เรามาดูประเภทที่ 1 นะครับ

148
00:07:27,776 --> 00:07:29,172
การแบ่งหน่วยความจำ

149
00:07:29,172 --> 00:07:32,047
ขนาดคงที่นะครับ

150
00:07:32,047 --> 00:07:36,047
เห็นไหมครับ

151
00:07:36,075 --> 00:07:40,075
โปรแกรมส่วนที่ 1 ส่วนที่ 2 ส่วนที่ 3

152
00:07:50,994 --> 00:07:49,672

153
00:07:41,095 --> 00:07:41,529
มีขนาดที่เท่ากันนะครับ

154
00:07:41,529 --> 00:07:45,529
ที่เท่ากัน

155
00:07:58,155 --> 00:08:03,387

156
00:07:43,374 --> 00:07:47,374
และการแบ่งหน่วยความจำขนาดคงที่ก็ยังสามารถแบ่งออกเป็น 2 ประเภทนะครับ

157
00:08:10,736 --> 00:08:08,992

158
00:07:59,253 --> 00:08:03,253
2 แบบ

159
00:08:12,992 --> 00:08:10,410

160
00:08:00,271 --> 00:08:02,314
ได้แก่

161
00:08:02,314 --> 00:08:06,314
การแปลงและโหลดด้วยค่าสัมบูรณ์นะครับ

162
00:08:08,184 --> 00:08:09,424
ดูรูปนี้ประกอบนะครับ

163
00:08:09,424 --> 00:08:11,807
โปรแกรมส่วนที่ 1

164
00:08:11,807 --> 00:08:15,807
เห็นไหมครับ ส่วนที่ 1

165
00:08:16,269 --> 00:08:20,269
ส่วนที่ 1 ส่วนที่ 2 เข้าส่วนที่ 2

166
00:08:20,760 --> 00:08:21,648
โปรแกรมส่วนที่ 1

167
00:08:21,648 --> 00:08:22,551
ที่ 2

168
00:08:22,551 --> 00:08:25,616
ที่ 3

169
00:08:25,616 --> 00:08:25,895
จะเห็นว่ามีขนาดที่เท่ากันนะครับ

170
00:08:25,895 --> 00:08:27,219
ที่เท่ากัน

171
00:08:27,219 --> 00:08:31,219
พอมันเข้ากันปุ๊บนะครับ

172
00:08:31,820 --> 00:08:32,278
ดูนะครับ

173
00:08:32,278 --> 00:08:34,571
โปรแกรมที่ 1

174
00:08:34,571 --> 00:08:38,571
เรากำหนดว่าส่วนที่ 1 ส่วนที่ 2 ส่วนที่ 3 มีขนาดเท่ากับ

175
00:08:39,067 --> 00:08:40,601
เท่ากับ 7 นะครับ

176
00:08:40,601 --> 00:08:44,587
โปรแกรมสดที่ 1

177
00:08:44,587 --> 00:08:44,843
ถ้าแปรงเสร็จแล้วโหลดเข้าไป

178
00:08:44,843 --> 00:08:48,843
มีค่าไม่เกิน 10 จะเข้าไปส่วนที่ 1

179
00:08:51,549 --> 00:08:53,088
นะครับ

180
00:08:53,088 --> 00:08:56,045
แต่ถ้าโปรแกรม

181
00:08:56,045 --> 00:08:56,391
ส่วนที่ 2

182
00:08:56,391 --> 00:08:59,306
จะต้องมีค่าตั้งแต่

183
00:08:59,306 --> 00:09:02,284
จนถึง 20

184
00:09:02,284 --> 00:09:02,900
มันถึงจะเข้าส่วนที่ 2

185
00:09:02,900 --> 00:09:04,246
นะครับ

186
00:09:04,246 --> 00:09:07,755
แต่ถ้าบังเอิญว่าโปรแกรม

187
00:09:07,755 --> 00:09:07,933
ส่วนที่ 1

188
00:09:07,933 --> 00:09:11,933
โปรแกรม A โปรแกรม B โปรแกรม C

189
00:09:14,063 --> 00:09:18,063
แล้วโหลดเสร็จแล้ว

190
00:09:18,151 --> 00:09:20,199
มันจะเข้าคิวที่ 1 อย่างเดียวนะครับ

191
00:09:20,199 --> 00:09:22,541
นี่คือข้อเสียของมันนะครับ

192
00:09:22,541 --> 00:09:25,976
เห็นไหม

193
00:09:25,976 --> 00:09:29,025
มันจะว่างเลย

194
00:09:29,025 --> 00:09:29,738
ส่วนที่ 2 ส่วนที่ 3 ส่วนที่ 4

195
00:09:29,738 --> 00:09:29,961
ส่วนที่ 5

196
00:09:29,961 --> 00:09:31,859
นะครับ

197
00:09:31,859 --> 00:09:35,859
ดังนั้น

198
00:09:36,897 --> 00:09:38,639
ก็เลยมีการ

199
00:09:38,639 --> 00:09:39,888
แก้ปัญหานะครับ โดย

200
00:09:39,888 --> 00:09:42,306

201
00:09:42,306 --> 00:09:42,747
แปลงและโหลดด้วยค่าสัมพัทธ์นะครับ

202
00:09:42,747 --> 00:09:46,124
เงินแก้ปัญหาเมื่อกี้นะครับ

203
00:09:46,124 --> 00:09:50,124
ก็คือ

204
00:09:52,278 --> 00:09:52,632
มีคิวเดียวเลยนะครับ มีคิวเดียว

205
00:09:52,632 --> 00:09:54,702
คิวเดียวเสร็จแล้ว

206
00:09:54,702 --> 00:09:58,702
ก็คือส่วนที่ 1 2 3 4

207
00:10:01,695 --> 00:10:04,628
หมายความว่าโปรแกรมจะโดนโหลดมาตรงนี้ที่คิว

208
00:10:04,628 --> 00:10:06,218
โดยมีคิวแค่คิวเดียวนะครับ

209
00:10:06,218 --> 00:10:10,218
แปลงเสร็จปุ๊บ

210
00:10:10,715 --> 00:10:12,685
ค่าเท่ากับ 15 ส่วนที่ 1 แปลง

211
00:10:12,685 --> 00:10:13,056
เสร็จปุ๊บได้ค่าเท่ากับ 10

212
00:10:13,056 --> 00:10:15,453
เอาบวกเข้าไปอีก

213
00:10:15,453 --> 00:10:19,453
เป็น 12

214
00:10:19,581 --> 00:10:21,140
เข้าสวนที่ 2

215
00:10:21,140 --> 00:10:22,271
แปลงแล้วโหลด

216
00:10:22,271 --> 00:10:23,693
เสร็จได้ 15

217
00:10:23,693 --> 00:10:23,848
เข้า 2 ไม่ได้

218
00:10:23,848 --> 00:10:27,328
+ 6

219
00:10:27,328 --> 00:10:27,837
+ 7 + 10 เข้าไปนะครับ

220
00:10:27,837 --> 00:10:30,522
เพื่อให้ส่วนที่ 2

221
00:10:30,522 --> 00:10:33,734
ที่ 3 ที่ 4 ที่ 5 ไปเรื่อย ๆ นะครับ

222
00:10:33,734 --> 00:10:36,329
ดังนั้น

223
00:10:36,329 --> 00:10:38,002
การป้องกันนะครับ

224
00:10:38,002 --> 00:10:42,002
ถ้าเป็นในระบบโปรแกรมเดียว

225
00:10:43,745 --> 00:10:45,979
ใช้ register ขอบเขตในการป้องกัน

226
00:10:45,979 --> 00:10:47,799
แท่นในระบบหลายโปรแกรม

227
00:10:47,799 --> 00:10:48,048
ประเภทแบ่งหน่วยความจำนะครับ

228
00:10:48,048 --> 00:10:51,538
ใช้ register ขอบเขตบน

229
00:10:51,538 --> 00:10:53,211
และขอบเขตล่าง

230
00:10:53,211 --> 00:10:54,467
ในการป้องกัน

231
00:10:54,467 --> 00:10:57,581
ให้โปรแกรมเข้ามานะครับ

232
00:10:57,581 --> 00:11:00,907
เห็นไหมครับ

233
00:11:00,907 --> 00:11:04,427
ขอบเขตล่าง

234
00:11:04,427 --> 00:11:05,556
ขอบเขตบน ขอบเขตล่าง ขอบเขตบนนะครับ

235
00:11:05,556 --> 00:11:08,477
ส่วนตัวของระบบปฏิบัติการ

236
00:11:08,477 --> 00:11:12,300
ใช้ตัวของ register ขอบเขต

237
00:11:12,300 --> 00:11:12,915
ในการป้องกันนะครับ

238
00:11:12,915 --> 00:11:16,915
คราวนี้

239
00:11:18,966 --> 00:11:21,354
ในการแปลงหน่วยความจำ

240
00:11:21,354 --> 00:11:21,696
ไม่ว่าจะใช้วิธีการใดก็แล้วแต่

241
00:11:21,696 --> 00:11:25,696
เกิดวันที่ที่ไม่ถูกใช้งาน

242
00:11:26,466 --> 00:11:26,742
เราเรียกว่าการแตกกระจายนะครับ

243
00:11:26,742 --> 00:11:30,742
แตกกระจาย

244
00:11:30,829 --> 00:11:34,829
ก็คือ

245
00:11:34,924 --> 00:11:35,865
หน่วยความจำที่ไม่ถูกใช้งาน

246
00:11:35,865 --> 00:11:37,485
ในระบบ

247
00:11:37,485 --> 00:11:37,787
แตกหน่วยความจำนะครับ

248
00:11:37,787 --> 00:11:39,170
แบ่งหน่วยความจำ

249
00:11:39,170 --> 00:11:41,695
ซึ่งเราเรียก

250
00:11:41,695 --> 00:11:45,695
กระจาย

251
00:11:45,977 --> 00:11:46,387
เป็น 2 กรณีนะครับ

252
00:11:46,387 --> 00:11:50,387
ก็มี

253
00:11:50,637 --> 00:11:50,914
การแตกกระจายภายนอก การแตกกระจายภายในนะครับ

254
00:11:50,914 --> 00:11:54,480
การแตกภายนอกเป็นอย่างไรครับ

255
00:11:54,480 --> 00:11:56,049
ดูนะครับ

256
00:11:56,049 --> 00:12:00,049
ส่วนที่ 1

257
00:12:01,708 --> 00:12:01,897
การแตกกระจายภายนอก

258
00:12:01,897 --> 00:12:05,600
หมายถึง

259
00:12:05,600 --> 00:12:09,600
ส่วนของหน่วยความจำที่ไม่ถูกใช้งาน

260
00:12:10,457 --> 00:12:13,221
ในระบบ

261
00:12:13,221 --> 00:12:16,062
แจ้งหน่วยความจำขนาดคงที่

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

263
00:12:16,673 --> 00:12:20,415
ไม่ถูกใช้งานเลย

264
00:12:20,415 --> 00:12:21,870
ส่วนการแตกกระจายภายใน

265
00:12:21,870 --> 00:12:22,825
ดูนะครับ

266
00:12:22,825 --> 00:12:24,615
ภายใน

267
00:12:24,615 --> 00:12:27,201
หมายถึง

268
00:12:27,201 --> 00:12:27,618
ส่วนของหน่วยความจำ

269
00:12:27,618 --> 00:12:30,403
ที่ถูกใช้งาน

270
00:12:30,403 --> 00:12:34,403
ผู้ใช้งานแต่ใช้งานไม่หมด

271
00:12:35,694 --> 00:12:35,990
นะครับ

272
00:12:35,990 --> 00:12:37,396
ใช้ไม่หมดนะ

273
00:12:37,396 --> 00:12:40,950
ในการแบ่งหน่วยความจำ

274
00:12:40,950 --> 00:12:43,700
ขนาดคงที่

275
00:12:43,700 --> 00:12:46,366
ต่างกันนะครับ

276
00:12:46,366 --> 00:12:46,692
การแตกกระจายภายนอก

277
00:12:46,692 --> 00:12:50,692
ก็คือส่วนที่ว่างไม่ถูกใช้งานเลย

278
00:12:53,344 --> 00:12:56,307
ส่วนการแตกกระจายภายในก็คือหน่วยความจำว่าง

279
00:12:56,307 --> 00:12:59,466
โดนใช้แล้วใช้ไม่หมดนะครับ

280
00:12:59,466 --> 00:13:03,466
คราวนี้มาดู

281
00:13:03,930 --> 00:13:07,930
การแปลงหน่วยความจำ

282
00:13:08,439 --> 00:13:10,388
ขนาดคงที่... ขนาดไม่คงที่นะครับ

283
00:13:10,388 --> 00:13:10,599
เมื่อกี้นี้เป็นขนาดคงที่นะครับ

284
00:13:10,599 --> 00:13:14,599
ออกแบบระบบปฏิบัติการ

285
00:13:16,893 --> 00:13:17,273
ได้ตระหนักถึง

286
00:13:17,273 --> 00:13:21,273
การแบ่งหน่วยความจำขนาดคงที่อยู่ไว้ มีข้อจำกัด

287
00:13:21,747 --> 00:13:25,747
ก็เลยคิดค้นวิธีการที่เรียกว่า

288
00:13:27,232 --> 00:13:30,320
การแบ่ง

289
00:13:30,320 --> 00:13:30,719
ความจำขนาดไม่คงที่ขึ้นดังตัวอย่างนะครับ

290
00:13:30,719 --> 00:13:34,021

291
00:13:34,021 --> 00:13:35,435
ผู้ใช้ A

292
00:13:35,435 --> 00:13:36,734
ต้องการใช้สิทธิ์

293
00:13:36,734 --> 00:13:40,734
เคยไป

294
00:13:41,164 --> 00:13:45,164
นะครับ

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

296
00:13:55,974 --> 00:13:57,324
ก็เข้าไป

297
00:13:57,324 --> 00:13:57,581
ขนาดไม่คงที่ครับ

298
00:13:57,581 --> 00:14:01,581
บอกให้มีพื้นที่ว่างเพียงพอ

299
00:14:02,007 --> 00:14:05,008
ก็สามารถจัดการ

300
00:14:05,008 --> 00:14:06,590
หน่วยความจำได้เลยนะครับ

301
00:14:06,590 --> 00:14:10,590
ระบบหลายโปรแกรมแบบแบ่งหน่วยความจำ

302
00:14:15,766 --> 00:14:17,821
แบบไม่คงที่นะครับ

303
00:14:17,821 --> 00:14:21,157
สามารถ Run

304
00:14:21,157 --> 00:14:23,696
ได้หลายโปรแกรมนะครับ ดูนะครับ

305
00:14:23,696 --> 00:14:27,696
ถึงแม้ว่าการแปลงหน่วยความจำ

306
00:14:31,013 --> 00:14:31,855
ขนาดไม่คงที่

307
00:14:31,855 --> 00:14:32,924
นะครับ

308
00:14:32,924 --> 00:14:36,924
ก็ยังมีส่วนที่ไม่ถูกใช้งานเหมือนกันนะครับ เหมือนเดิม

309
00:14:41,214 --> 00:14:43,516
ถ้าเป็นแบบขนาดคงที่

310
00:14:43,516 --> 00:14:46,716
เรียกว่าการแตกกระจายนะครับ

311
00:14:46,716 --> 00:14:47,191
ส่วนถ้าเกิดขึ้นในกรณีที่

312
00:14:47,191 --> 00:14:51,191
พื้นที่ที่ไม่ถูกใช้งาน

313
00:14:52,161 --> 00:14:53,943
การแบ่งหน่วยความจำ

314
00:14:53,943 --> 00:14:56,075
ขนาดไม่คงที่

315
00:14:56,075 --> 00:14:57,102
เราเรียกว่าช่องโหว่นะครับ

316
00:14:57,102 --> 00:15:00,551
หรือ Hol

317
00:15:00,551 --> 00:15:01,862
เกิดขึ้นได้อย่างไรครับ

318
00:15:01,862 --> 00:15:05,862
โปรแกรม Ai โปรแกรม

319
00:15:13,181 --> 00:15:14,196
โปรแกรม C Program ดีไหมครับ เกิดขึ้นแล้ว

320
00:15:14,196 --> 00:15:17,212
ข้างล่างสุด

321
00:15:17,212 --> 00:15:17,992
ช่องว่างช่องโหว่

322
00:15:17,992 --> 00:15:18,361
ครับ

323
00:15:18,361 --> 00:15:22,361
สักระยะหนึ่ง

324
00:15:22,569 --> 00:15:26,569
โปรแกรม

325
00:15:27,095 --> 00:15:27,836
คือหน่วยความจำให้ระบบเห็นไหมครับ ช่องโหว่เกิดขึ้นแล้ว

326
00:15:27,836 --> 00:15:31,607
สักพักหนึ่ง

327
00:15:31,607 --> 00:15:34,582
จบ

328
00:15:34,582 --> 00:15:34,742
เพิ่มหน่วยความจำให้ระบบ

329
00:15:34,742 --> 00:15:36,922
เกิด Hole ขึ้นแล้วนะครับ

330
00:15:36,922 --> 00:15:40,922
เมื่อเกิด Hole ขึ้นนะครับ

331
00:15:47,904 --> 00:15:51,868
ก็มีวิธีการ

332
00:15:51,868 --> 00:15:53,983
เอาโปรแกรมใหม่ลงไปวางแทนนะครับ

333
00:15:53,983 --> 00:15:54,216
มีอยู่ 3 วิธีการนะครับ

334
00:15:54,216 --> 00:15:58,216
เลือก Hole ที่พบก่อน

335
00:16:00,120 --> 00:16:04,120
และมีขนาดใหญ่พอที่จะวางโปรแกรมใหม่ลงไปนะครับ

336
00:16:05,814 --> 00:16:09,814
วิธีการที่ 2

337
00:16:10,923 --> 00:16:13,443
เลือก Hole ที่เหมาะสม

338
00:16:13,443 --> 00:16:16,291
เลือกหัวข้อที่เหมาะสมที่สุด

339
00:16:16,291 --> 00:16:16,500
คือเอาเข้าไปแล้วหรือหน่วยความจำ

340
00:16:16,500 --> 00:16:18,116
เลือ

341
00:16:18,116 --> 00:16:21,246
ใหม่น้อยที่สุดนะครับ

342
00:16:21,246 --> 00:16:23,125
3

343
00:16:23,125 --> 00:16:27,125
Hole ที่ใหญ่ที่สุดนะครับ

344
00:16:27,468 --> 00:16:28,547
ที่ใหญ่ที่สุด

345
00:16:28,547 --> 00:16:32,547
ดูนะครับ

346
00:16:33,925 --> 00:16:34,915
วิธีแต่ละวิธีเป็นอย่างไรดูรูปนะครับ

347
00:16:34,915 --> 00:16:37,868
วิธีการที่ 1

348
00:16:37,868 --> 00:16:41,868
เจอก่อนพบก่อน

349
00:16:42,925 --> 00:16:44,218
แต่ต้องมีเงื่อนไขว่า

350
00:16:44,218 --> 00:16:45,533
จะต้องมีพื้นที่

351
00:16:45,533 --> 00:16:48,536
ของ Hole

352
00:16:48,536 --> 00:16:52,536
ใหญ่เพียงพอนะครับ

353
00:16:54,014 --> 00:16:54,218
13 เข้า 16 ได้ไหมครับ

354
00:16:54,218 --> 00:16:55,325
ได้

355
00:16:55,325 --> 00:16:59,101
มาก่อนเลยพบก่อนเลยเจอเกาะนักหนา

356
00:16:59,101 --> 00:17:02,134
เข้าไปวางก่อนเลยนะครับ

357
00:17:02,134 --> 00:17:06,134
เหมาะสมที่สุดเมื่อเข้าไปวางเสร็จแล้ว

358
00:17:07,015 --> 00:17:09,508
โทรใหม่ที่เกิดขึ้น

359
00:17:09,508 --> 00:17:10,628
มีขนาดเหลือน้อยที่สุด

360
00:17:10,628 --> 00:17:11,744
เข้า 10:00 น

361
00:17:11,744 --> 00:17:12,016
เหลือ 3

362
00:17:12,016 --> 00:17:15,602
จะเข้า 14

363
00:17:15,602 --> 00:17:16,364
เหลือ 1

364
00:17:16,364 --> 00:17:19,320
เข้าไม่ได้

365
00:17:19,320 --> 00:17:20,676
ค่าเข้า 30

366
00:17:20,676 --> 00:17:22,911
เหลือ 17

367
00:17:22,911 --> 00:17:25,355

368
00:17:25,355 --> 00:17:26,749
เหมาะสมที่สุด ก็คือ

369
00:17:26,749 --> 00:17:30,315
เมื่อเข้าไปแล้ว

370
00:17:30,315 --> 00:17:30,571
ทำให้เกิด Hole ใหม่น้อยที่สุด

371
00:17:30,571 --> 00:17:34,571
แบบที่ 3

372
00:17:34,946 --> 00:17:37,464
พิกัดที่ 3

373
00:17:37,464 --> 00:17:37,807
เลือก Hที่ใหญ่ที่สุด

374
00:17:37,807 --> 00:17:41,807
ใช่ไหมครับ

375
00:17:42,631 --> 00:17:42,969
30 ใหญ่กว่าเพื่อนนะครับ

376
00:17:42,969 --> 00:17:46,969
คราวนี้

377
00:17:51,401 --> 00:17:51,728
ในกรณีที่

378
00:17:51,728 --> 00:17:55,728
มี Hole เกิดขึ้น

379
00:17:55,950 --> 00:17:58,047
พื้นที่ติดกัน

380
00:17:58,047 --> 00:17:59,085
ติดกันนะครับ ติดกันถ้า O

381
00:17:59,085 --> 00:18:02,344

382
00:18:02,344 --> 00:18:05,175
มีความสามารถนะครับ

383
00:18:05,175 --> 00:18:09,175
มันจะต้องมีความสามารถ

384
00:18:10,774 --> 00:18:10,991
ในการจัดรวม Hole เข้าไปด้วยกันเลย

385
00:18:10,991 --> 00:18:12,991
ครับ

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

387
00:18:18,846 --> 00:18:19,097
เมื่อมี Hole อยู่ติดกัน

388
00:18:19,097 --> 00:18:20,780
ว่างติดกัน

389
00:18:20,780 --> 00:18:22,703
จับยุบรวมกันนะครับ

390
00:18:22,703 --> 00:18:25,068
วิธีการ

391
00:18:25,068 --> 00:18:29,049
การอัดหน่วยความจำนะครับ อัดหน่วยความจำ

392
00:18:29,049 --> 00:18:31,769
ก็คือถ้าเกิดมี Hole

393
00:18:31,769 --> 00:18:35,589
ว่างเกิดขึ้น

394
00:18:35,589 --> 00:18:39,589
ติดกันก็ได้ ไม่ติดก็ได้นะครับ

395
00:18:40,166 --> 00:18:44,166
วิธีการอัดหน่วยความจำ ก็คือระบบจะหยุดการทำงาน

396
00:18:46,964 --> 00:18:47,576
และเช็คดูระบบ

397
00:18:47,576 --> 00:18:51,576
แล้วก็การไปเอาเดี๋ยวความจำที่ว่าง ๆ นี่

398
00:18:52,585 --> 00:18:55,026
มาจับรวมกัน

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

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

401
00:19:01,608 --> 00:19:02,102
นะครับ

402
00:19:02,102 --> 00:19:04,123
โปรแกรม defrag

403
00:19:04,123 --> 00:19:08,123
พอเราอยากไปเรียนปฏิบัตินะครับ

404
00:19:09,174 --> 00:19:11,303
เราจะเห็นว่า

405
00:19:11,303 --> 00:19:13,648
โปรแกรม reflex ทำงาน

406
00:19:13,648 --> 00:19:14,269
ทำงานอย่างไรนะครับ

407
00:19:14,269 --> 00:19:18,269
มาทีหลังทำไมไม่เอาแบบฝึกหัด

408
00:19:18,617 --> 00:19:20,882
เข้ามาเมื่อกี้น่ะ

409
00:19:20,882 --> 00:19:24,882
มาเอาแบบฝึกหัด

410
00:19:25,633 --> 00:19:29,633
แล้วทำอะไรอยู่

411
00:19:44,707 --> 00:19:48,084

412
00:19:27,333 --> 00:19:31,333
นี่ดูวิธีการ

413
00:19:42,169 --> 00:19:44,610
รวบรวม

414
00:19:44,610 --> 00:19:46,249
หน่วยความจำนะครับ

415
00:19:46,249 --> 00:19:48,633

416
00:19:48,633 --> 00:19:52,633
เห็นไหมครับ ใช้งาน 1 2 3

417
00:19:52,810 --> 00:19:55,671
Hole

418
00:19:55,671 --> 00:19:59,671
เพราะอัดหน่วยความจำ

419
00:20:00,594 --> 00:20:02,404
เปิดช่องว่างขึ้น

420
00:20:02,404 --> 00:20:06,404
ใหญ่ขึ้น

421
00:20:06,900 --> 00:20:08,836
นี่คือวิธีการอัดหน่วยความจำ

422
00:20:08,836 --> 00:20:12,836
คราวนี้มาดูระบบหลายโปรแกรมแบบสลับความจำ

423
00:20:17,609 --> 00:20:19,207
เมื่อกี้เป็นแบบ

424
00:20:19,207 --> 00:20:20,169
แบ่งหน่วยความจำนะครับ

425
00:20:20,169 --> 00:20:20,612
แบ่งหน่วยความจำ

426
00:20:20,612 --> 00:20:24,612
มีขนาดคงที่แล้วคงที่

427
00:20:26,706 --> 00:20:26,915
มาดูระบบหลายโปรแกรมแบบสลับหน่วยความจำ ก็คือ

428
00:20:26,915 --> 00:20:28,858
หลักการก็คือ

429
00:20:28,858 --> 00:20:32,394
ถูกใช้งาน

430
00:20:32,394 --> 00:20:36,394
เราเรียกว่าสลับเข้านะครับ

431
00:20:36,859 --> 00:20:38,635
เข้ามา เข้ามา

432
00:20:38,635 --> 00:20:42,635


