﻿1
00:00:20,258 --> 00:00:22,324
ตัวพูด

2
00:00:22,324 --> 00:00:26,324
CPU

3
00:00:27,126 --> 00:00:27,983
วันนี้เราจะพูดถึงการจัดการหน่วยความจำนะครับ

4
00:00:27,983 --> 00:00:31,983
หน่วยความจำก็เป็นอุปกรณ์ตัวหนึ่งที่มีความสำคัญในคอมพิวเตอร์ของเรานะครับ

5
00:00:36,695 --> 00:00:40,695
เราจะดูว่าคอมพิวเตอร์เครื่องไหนมีขีดความสามารถมากกว่ากัน

6
00:00:48,103 --> 00:00:49,940
เราก็อาจจะดูได้จากหน่วยความจำนะครับ

7
00:00:49,940 --> 00:00:53,513
แต่ทั้งนี้ทั้งนั้นนะครับ

8
00:00:53,513 --> 00:00:57,513
ไม่ได้ตอบได้เสมอว่า

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

10
00:01:00,867 --> 00:01:03,839
ทำงานได้ดีกว่านะครับ

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

12
00:01:13,074 --> 00:01:15,868
ก็เป็นขีดความสามารถอันหนึ่งของในระบบปฏิบัติการด้วย

13
00:01:15,868 --> 00:01:17,700
ถ้าระบบปฏิบัติการของเราหน่อย

14
00:01:17,700 --> 00:01:18,410
ความจำไม่ดีนะครับ

15
00:01:18,410 --> 00:01:22,410
ประสิทธิภาพในการทำงานก็จะด้อยลงนะครับ

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

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

18
00:01:35,472 --> 00:01:39,472
มีอยู่ 3

19
00:01:43,360 --> 00:01:40,488

20
00:01:37,450 --> 00:01:41,401
เฟส

21
00:01:41,401 --> 00:01:43,519
วางแทนที่

22
00:01:43,519 --> 00:01:47,519
มี 3 ลักษณะนะครับ ซึ่งเราค่อยดูว่ามีลักษณะอย่างไรนะครับ

23
00:01:49,015 --> 00:01:53,015
คราวนี้เรามาดูการจัดสรรหน่วยความจำของเรานะครับ

24
00:01:56,175 --> 00:01:57,247
โปรแกรมที่เราใช้งานจำเป็นจะต้องใช้หน่วยความจำ

25
00:01:57,247 --> 00:01:57,896
นะครับ

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

27
00:02:03,557 --> 00:02:05,785
โปรแกรม

28
00:02:05,785 --> 00:02:08,614
เกมอาจจะใช้เยอะ

29
00:02:08,614 --> 00:02:12,614
โปรแกรมพิมพ์งานอาจจะใช้น้อยนะครับ แต่คราวนี้เรามาดูว่า

30
00:02:14,007 --> 00:02:14,360
ถ้าเกิด

31
00:02:14,360 --> 00:02:18,360
ในการจัดสรรหน่วยความจำนะครับ

32
00:02:23,823 --> 00:02:25,737
จะมี

33
00:02:25,737 --> 00:02:25,945
สามารถการแบ่งเป็น 2 ประเภท

34
00:02:25,945 --> 00:02:28,012
ก็คือการจัดสรรแบบ

35
00:02:28,012 --> 00:02:31,971
ต่อเนื่อง

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

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

38
00:02:36,595 --> 00:02:40,595
แบบต่อเนื่องก็คือหมายความว่าหน่วยความจำจะต้องว่างต่อกัน

39
00:02:41,723 --> 00:02:45,723
นะครับ พื้นที่ว่างต้องต่อเนื่องกันนะครับ

40
00:02:45,879 --> 00:02:48,166
ขาดช่วงอะไรไม่ได้นะครับ

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

42
00:02:51,219 --> 00:02:54,947
ถึงจะ

43
00:02:54,947 --> 00:02:57,462
สามารถเข้าไปทำงานได้นะครับ

44
00:02:57,462 --> 00:03:01,360
ส่วนไม่ต่อเนื่องนะครับ

45
00:03:01,360 --> 00:03:05,360
ก็คือเข้าไปครอบครองหน่วยความจำแล้วหน่วยความจำอาจจะอยู่คนละที่

46
00:03:07,505 --> 00:03:11,505
อยู่คนละแบบนะครับ อยู่คนละที่

47
00:03:11,914 --> 00:03:15,914
แต่ก็ต้องมีเนื้อที่เพียงพอนะครับ

48
00:03:16,814 --> 00:03:16,979
ที่โปรแกรมจะใช้งานนะครับ

49
00:03:16,979 --> 00:03:20,979
คราวนี้มาดูในระบบ

50
00:03:25,762 --> 00:03:26,577
โปรแกรมเดียวนะครับ โปรแกรมเดี่ยว

51
00:03:26,577 --> 00:03:30,108
Single Program

52
00:03:30,108 --> 00:03:34,108
ก็คือคอมพิวเตอร์

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

54
00:03:38,810 --> 00:03:39,604
การจัดสรรความจำจะไม่ยุ่งยากนะครับ

55
00:03:39,604 --> 00:03:43,604
ซึ่งเราสามารถแบ่งพื้นที่ของหน่วยความจำออกเป็น 2 ส่วนนะครับ

56
00:03:49,645 --> 00:03:51,257
ก็คือส่วนแรก

57
00:03:51,257 --> 00:03:54,572
เป็นส่วนของระบบปฏิบัติการนะครับ

58
00:03:54,572 --> 00:03:58,572
และเป็นส่วนที่จำเป็นจะต้องมีพื้นที่ว่าง

59
00:04:00,415 --> 00:04:04,415
ยาวติดต่อกันเป็นผืนใหญ่ผืนเดียวเลยนะครับ

60
00:04:05,674 --> 00:04:09,674
นี่ OS นะครับ

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

62
00:04:17,191 --> 00:04:21,191
และต้องเป็นพื้นที่ยาวต่อเนื่องกันนะครับ

63
00:04:21,288 --> 00:04:25,102
2

64
00:04:25,102 --> 00:04:27,938
ส่วนของผู้ใช้นะครับ

65
00:04:27,938 --> 00:04:30,436
ก็คือเหลือจาก OS

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

67
00:04:35,839 --> 00:04:37,438
ในระบบโปรแกรมเดียวนะครับ

68
00:04:37,438 --> 00:04:41,438
หน่วยความจำถูกแบ่งออกเป็น 2 ส่วนนะครับ 2 ส่วนตัวระบบปฏิบัติการเองจำเป็นจะต้องป้องกัน

69
00:04:49,171 --> 00:04:50,698
ไม่ให้ตัวของมันเองโดนรุกล้ำเข้ามา

70
00:04:50,698 --> 00:04:51,099
วิธีการ

71
00:04:51,099 --> 00:04:54,986
ป้องกันก็คือการใช้ register ขอบเขตนะครับ

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

73
00:05:03,461 --> 00:05:05,884
ก็คือส่วนที่ป้องกันระหว่าง

74
00:05:05,884 --> 00:05:06,337
ระหว่างอะไรครับ

75
00:05:06,337 --> 00:05:09,686
OS นะครับ

76
00:05:09,686 --> 00:05:12,167
กับส่วนของผู้ใช้

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

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

79
00:05:16,393 --> 00:05:20,393
ไวรัสคอมพิวเตอร์ตัวหนึ่งก็คือเจาะนะครับ

80
00:05:20,552 --> 00:05:23,652
เจาะ register ขอบเขตเจาะเข้าไป

81
00:05:23,652 --> 00:05:27,652
นี่นะครับ

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

83
00:05:34,395 --> 00:05:35,086
register ขอบเขต

84
00:05:35,086 --> 00:05:37,583
ก็จะแจ้งเตือนนะครับ

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

86
00:05:44,891 --> 00:05:45,607
ระบบหลายโปรแกรม

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

88
00:05:56,375 --> 00:05:57,072
ส่วนมากจะเกิดขึ้นก็คือการไปทำงาน input o

89
00:05:57,072 --> 00:06:01,072
utput การที่มันไม่ได้ครอบครอง CPU ว่าง ๆ ๆ ไม่ได้ครอบครองหน่วยความจำนะครับ

90
00:06:03,062 --> 00:06:07,062
เราเรียกระบบนี้ว่าระบบมัลติโปรแกรมมิ่งนะครับ

91
00:06:11,859 --> 00:06:15,859
ระบบโปรแกรมวิ่งนี้นะครับ

92
00:06:20,593 --> 00:06:21,371
ก็คือการทำงานที่

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

94
00:06:27,259 --> 00:06:27,418
2 3 4 5 6 7 นะครับ

95
00:06:27,418 --> 00:06:31,418
การทำงานของระบบหลายโปรแกรมนั้นเขาจะแบ่ง partition

96
00:06:34,537 --> 00:06:37,069
ของหน่วยความจำนะครับ

97
00:06:37,069 --> 00:06:41,031
แบ่ง portition

98
00:06:41,031 --> 00:06:41,331
ของหน่วยความจำเป็นส่วนส่วนนะครับ

99
00:06:41,331 --> 00:06:45,331
ซึ่งการแบ่งหน่วยความจำนะครับ

100
00:06:51,551 --> 00:06:55,085
ระบบ

101
00:06:55,085 --> 00:06:55,358
หลายโปรแกรมแบ่งหน่วยความจำนะครับ

102
00:06:55,358 --> 00:06:59,358
ก็ยังสามารถแบ่งได้เป็น 2 ประเภทนะครับ

103
00:06:59,796 --> 00:07:03,463
ก็คือระบบ

104
00:07:03,463 --> 00:07:05,162
หลายโปรแกรมแบบแบ่งหน่วยความจำ

105
00:07:05,162 --> 00:07:07,158
แบบคงที่

106
00:07:07,158 --> 00:07:08,416
แล้วก็ไม่คงที่นะครับ

107
00:07:08,416 --> 00:07:12,416
ในระบบหลายโปรแกรมแบบสลับหน่วยความจำ

108
00:07:15,283 --> 00:07:15,739
นะครับ

109
00:07:15,739 --> 00:07:19,739
แบ่งหน่วยความจำนะครับ แล้วก็สลับหน่วยความจำนะครับ

110
00:07:27,096 --> 00:07:27,650
คราวนี้เรามาดูประเภทที่ 1 นะครับ

111
00:07:27,650 --> 00:07:31,013
การแบ่งหน่วยความจำขนาดคงที่นะครับ

112
00:07:31,013 --> 00:07:35,013
เห็นไหมครับ

113
00:07:36,821 --> 00:07:40,821
โปรแกรมส่วนที่ 1 ส่วนที่ 2 ส่วนที่ 3 มีขนาดที่เท่ากันนะครับ

114
00:07:43,227 --> 00:07:43,970
ขนาดที่เท่ากัน

115
00:07:43,970 --> 00:07:47,970
และการแบ่งหน่วยความจำขนาดคงที่

116
00:07:59,323 --> 00:08:00,269
ก็ยังแบ่งเป็นได้ 2 ประเภทนะครับ

117
00:08:00,269 --> 00:08:01,214
2 แบบ

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

119
00:08:06,351 --> 00:08:09,006
ดูรูปนี้ประกอบนะครับ

120
00:08:09,006 --> 00:08:12,789
โปรแกรมส่วนที่ 1

121
00:08:12,789 --> 00:08:15,387
เห็นไหมคะ

122
00:08:15,387 --> 00:08:19,387
ส่วนที่ 1

123
00:08:23,037 --> 00:08:19,766

124
00:08:15,846 --> 00:08:19,846
ส่วนที่ 1 เข้าส่วนที่ 1 ส่วนที่ 2 ส่วนที่ 2 ส่วนที่ 3 เข้าส่วนที่ 3

125
00:08:24,119 --> 00:08:26,107
โปรแกรมส่วนที่ 1 ที่ 2 ที่ 3

126
00:08:26,107 --> 00:08:26,480
มีขนาดที่เท่ากันนะครับ

127
00:08:26,480 --> 00:08:28,970
มีเท่ากัน

128
00:08:28,970 --> 00:08:31,461
มันเท่ากัน

129
00:08:31,461 --> 00:08:31,971
ดูนะครับ

130
00:08:31,971 --> 00:08:33,681
โปรแกรมส่วนที่ 1

131
00:08:33,681 --> 00:08:37,681
เช่นเรากำหนด

132
00:08:39,041 --> 00:08:39,193
ส่วนที่ 1 ส่วนที่ 2 ส่วนที่ 3 มีขนาดเท่ากับ 10

133
00:08:39,193 --> 00:08:41,141
เท่ากับ 10 นะครับ

134
00:08:41,141 --> 00:08:45,141
โปรแกรมส่วนที่ 1 ถ้าแปลงเสร็จแล้วโหลดเข้าไป

135
00:08:45,218 --> 00:08:49,218
มีค่าไม่เกิน 10 จะเข้าไปในส่วนที่ 1

136
00:08:50,929 --> 00:08:52,484
ครับ

137
00:08:52,484 --> 00:08:55,827
แต่ถ้าโปรแกรม

138
00:08:55,827 --> 00:08:59,529
จะต้องมีค่าตั้งแต่ 11

139
00:08:59,529 --> 00:09:02,341
จนถึง 20

140
00:09:02,341 --> 00:09:03,192
มันถึงจะเข้าส่วนที่  2

141
00:09:03,192 --> 00:09:03,751
นะครับ

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

143
00:09:11,066 --> 00:09:15,066
โปรแกรม a Program B โปรแกรม

144
00:09:15,159 --> 00:09:17,133
โปรแดรม C เมื่อแปลงแล้วหยดด้วยค่าสมบูรณ์เสร็จแล้ว

145
00:09:17,133 --> 00:09:18,038
มันจะเข้าคิวที่ 1 อย่างเดียว

146
00:09:18,038 --> 00:09:19,515
นะครับ

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

148
00:09:23,340 --> 00:09:27,340
เห็นไหมครับ มันจะว่างเลยถึงส่วนที่ 2 ส่วนที่ 3 ส่วนที่ 4

149
00:09:31,452 --> 00:09:32,189
ส่วนที่ 5 ส่วนที่ 6 ส่วนที่ 7

150
00:09:32,189 --> 00:09:32,818
นะครับ

151
00:09:32,818 --> 00:09:36,818
ดังนั้นก็เลยมีการ

152
00:09:42,203 --> 00:09:43,013
แก้ปัญหานะครับ โดยการแปลงและโหลดด้วยค่าสัมพัทธ์

153
00:09:43,013 --> 00:09:45,994
นะครับ

154
00:09:45,994 --> 00:09:46,525
เพื่อแก้ปัญหาเมื่อกี้นะครับ

155
00:09:46,525 --> 00:09:47,770
ก็คือ

156
00:09:47,770 --> 00:09:51,750
มีคิวเดียวเลยนะครับ

157
00:09:51,750 --> 00:09:52,453
มีคิวเดียว

158
00:09:52,453 --> 00:09:56,453
อยู่เดียวเสร็จแล้ว

159
00:09:57,448 --> 00:10:01,448
ก็คือส่วนที่ 1 2 3 4

160
00:10:03,039 --> 00:10:01,232

161
00:10:02,303 --> 00:10:04,776
หมายความว่าโปแกรมจะโดนโหลดมาตรงนี้ที่คิว

162
00:10:04,776 --> 00:10:05,245
โดยมีคิวแค่คิวเดียวนะครับ

163
00:10:05,245 --> 00:10:07,100
แปรงฟัน

164
00:10:07,100 --> 00:10:10,904
ได้ค่าเท่ากับ 10

165
00:10:10,904 --> 00:10:12,448
เข้าสวนที่ 1

166
00:10:12,448 --> 00:10:14,286
แรงเสร็จปุ๊บ

167
00:10:14,286 --> 00:10:16,589
ได้ค่าเท่ากับ 10

168
00:10:16,589 --> 00:10:18,142
เอาบวกเข้าไปอีก

169
00:10:18,142 --> 00:10:19,990
12

170
00:10:19,990 --> 00:10:22,653
เข้าสวนที่ 2

171
00:10:22,653 --> 00:10:24,139
แปลงและหลุด 7 5

172
00:10:24,139 --> 00:10:25,634
เข้าไม่ได้

173
00:10:25,634 --> 00:10:28,776
2 ไม่ได้

174
00:10:28,776 --> 00:10:29,388
+ 6 + 7 + 10 เข้าไปนะครับ

175
00:10:29,388 --> 00:10:33,388
เข้าด้วยคนที่ 2 3 4 5 เข้าไปเรื่อย ๆ นะครับ

176
00:10:34,906 --> 00:10:38,294
ดังนั้นการป้องกันนะครับ

177
00:10:38,294 --> 00:10:40,857
ถ้าเป็นในระบบโปรแกรมเดี่ยว

178
00:10:40,857 --> 00:10:44,857
ใช้ register ขอบเขตในการป้องกัน

179
00:10:48,177 --> 00:10:52,177
แต่ถ้างานในระบบหลายโปรแกรมแบบแบ่งหน่วยความจำนะค

180
00:10:52,446 --> 00:10:56,188
รับ วิธีที่นิยมใช้ก็คือ register ขอบเขตบนและขอบ

181
00:10:56,188 --> 00:10:56,841
ล่างในการไม่ให้โปรแกรมเข้ามา

182
00:10:56,841 --> 00:10:57,674
นะครับ

183
00:10:57,674 --> 00:11:01,674
เห็นไหมครับ ขอบเขตล่างขอบเขตบนขอบเขตล่างขอบเขตบนนะครับ

184
00:11:04,626 --> 00:11:08,626
ส่วนตัวของระบบปฏิบัติการ

185
00:11:12,960 --> 00:11:13,192
ใช้ตัวของ register ขอบเขตนะครับ ในการป้องกัน

186
00:11:13,192 --> 00:11:17,192
คราวนี้การแบ่งหน่วยความจำไม่ว่าจะใช้วิธีการใดก็แล้วแต่นะครับ

187
00:11:27,874 --> 00:11:28,109
เกิดพื้นที่ที่ไม่ถูกการใช้งานเราเรียกว่าการแตกกระจายนะครับ

188
00:11:28,109 --> 00:11:32,109
การแตกกระจายก็คือส่วนของหน่วยความจำที่ไม่ถูกใช้งาน

189
00:11:34,525 --> 00:11:38,525
ในระบบแบ่งหน่วยความจำนะครับ

190
00:11:39,749 --> 00:11:40,189
แบ่งหน่วยความจำ

191
00:11:40,189 --> 00:11:44,189
ซึ่งเราเรียก

192
00:11:46,144 --> 00:11:46,322
การแตกกระจายนี้ออกเป็น 2 กรณีนะครับ

193
00:11:46,322 --> 00:11:50,322
ต้องมีการแตกกระจายภายนอก

194
00:11:51,939 --> 00:11:55,093
แล้วก็การแตกกระจายภาย

195
00:11:55,093 --> 00:11:56,409
นอกการแตกกระจายภายนอกเป็นอย่างไรครับ

196
00:11:56,409 --> 00:11:56,588
ดูนะครับ

197
00:11:56,588 --> 00:11:59,282
ส่วนที่ 1

198
00:11:59,282 --> 00:12:02,271
การแตกกระจายภายนอก

199
00:12:02,271 --> 00:12:05,946
หมายถึง

200
00:12:05,946 --> 00:12:06,788
ส่วนของ

201
00:12:06,788 --> 00:12:10,788
หน่วยความจำที่ไม่ถูกใช้งานในระบบ

202
00:12:11,709 --> 00:12:15,709
ในระบบแบ่งหน่วยความจำขนาดคงที่

203
00:12:17,679 --> 00:12:19,339
ไม่ถูกใช้งานคืออะไร ครับ ส่วนที่ 1

204
00:12:19,339 --> 00:12:23,339
ไม่ถูกใช้งาน

205
00:12:23,641 --> 00:12:24,151
ส่วนการแตกกระจายภายในดูนะครับ ภายใน

206
00:12:24,151 --> 00:12:27,469
หมายถึงส่วนของหน่วยความจำ

207
00:12:27,469 --> 00:12:30,069
ที่ถูกใช้งาน

208
00:12:30,069 --> 00:12:34,069
นะครับ

209
00:12:34,849 --> 00:12:36,637
ที่ถูกใช้งานแต่ใช้งานไม่หมดนะครับ

210
00:12:36,637 --> 00:12:37,447
ใช้ไม่หมดนะครับ

211
00:12:37,447 --> 00:12:41,447
ในการแบ่งหน่วยความจำขนาดคงที่

212
00:12:42,043 --> 00:12:44,027
ต่างกันนะครับ

213
00:12:44,027 --> 00:12:48,027
การแตกกระจายภายนอกก็คือส่วนที่ว่างไม่ถูกใช้งานเลย

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

215
00:12:56,172 --> 00:12:56,806
โดนใช้แล้วใช้ไม่หมด

216
00:12:56,806 --> 00:12:57,292
นะครับ

217
00:12:57,292 --> 00:13:01,292
คราวนี้มาดูการแบ่งหน่วยความจำขนาดคงที่

218
00:13:08,102 --> 00:13:08,454
ขนาดไม่คงที่นะครับ

219
00:13:08,454 --> 00:13:11,754
เมื่อกี้เป็นขนาดคงที่นะครับ

220
00:13:11,754 --> 00:13:15,754
ผู้ออกแบบระบบปฏิบัติการได้ตระหนักถึงข้อเสียขนาดคงที่ไว้นะครับ

221
00:13:21,215 --> 00:13:21,913
มีข้อจำกัด

222
00:13:21,913 --> 00:13:25,913
ก็เลยคิดค้นวิธีการที่เรียกว่าการแบ่งหน่วยความจำขนาดไม่คงที่ขึ้นนะครับ

223
00:13:31,084 --> 00:13:31,373
หนังตัวอย่างนะครับ

224
00:13:31,373 --> 00:13:34,125
เห็นไหมครับ

225
00:13:34,125 --> 00:13:35,517
ผู้ใช้ A

226
00:13:35,517 --> 00:13:36,331
ต้องการใช้สิทธิ์

227
00:13:36,331 --> 00:13:40,331
เข้าไปเลย 10 K

228
00:13:45,079 --> 00:13:49,079

229
00:13:46,283 --> 00:13:43,764

230
00:13:40,685 --> 00:13:44,685
นะครับ

231
00:13:52,654 --> 00:13:56,654
ผู้ใช้ D ต้องการ 30

232
00:13:57,581 --> 00:13:58,253
ก็เข้าไปนะครับ ขนาดไม่ครบ

233
00:13:58,253 --> 00:13:58,625
พี่นะครับ

234
00:13:58,625 --> 00:14:02,625
เขาให้มีพื้นที่ว่างเพียงพอก็สามารถจัดการ

235
00:14:04,652 --> 00:14:05,232
หน่วยความจำได้เลยนะครับ

236
00:14:05,232 --> 00:14:09,232
ระบบหลายโปรแกรมแบบแบ่งหน่วยความจำแบบไม่คงที่

237
00:14:16,426 --> 00:14:20,426
นะครับ สามารถ Run

238
00:14:20,486 --> 00:14:21,568
ได้หลายโปรแกรมนะครับ

239
00:14:21,568 --> 00:14:22,139
ดูนะครับ

240
00:14:22,139 --> 00:14:26,139
ถึงแม้ว่าการแบ่งหน่วยความจำขนาดไม่คงที่

241
00:14:32,580 --> 00:14:33,109
นะครับ

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

243
00:14:38,849 --> 00:14:39,493
เหมือนเดิม

244
00:14:39,493 --> 00:14:43,493
ถ้าเป็นแบบขนาดคงที่เรียกว่าการแตกกระจายนะครับ

245
00:14:45,086 --> 00:14:49,086
ส่วนถ้าเกิดขึ้นในกรณีที่พื้นที่ที่ไม่ถูกใช้งาน

246
00:14:54,319 --> 00:14:56,519
ในการแบ่งหน่วยความจำในขนาดไม่คงที่

247
00:14:56,519 --> 00:14:56,687
เราเรียกว่าช่องโหว่นะครับ

248
00:14:56,687 --> 00:15:00,687
หรือ

249
00:15:01,173 --> 00:15:04,737
Hollครงเกิดขึ้นได้อย่างไรครับ

250
00:15:04,737 --> 00:15:08,737
Program a Program B Program C G D เห็นไหมครับ

251
00:15:15,084 --> 00:15:15,533
Home เกิดขึ้นแล้วข้างล่างสุด

252
00:15:15,533 --> 00:15:19,533
ช่องว่างช่องโหว่นะครับ

253
00:15:19,927 --> 00:15:22,944
หักระยะหนึ่ง

254
00:15:22,944 --> 00:15:25,130
โปรแกรม Beetalk

255
00:15:25,130 --> 00:15:25,429
คือหน่วยความจำให้ระบบ

256
00:15:25,429 --> 00:15:28,292
เห็นไหมครับ เกิดช่องโหว่ขึ้นแล้ว

257
00:15:28,292 --> 00:15:32,292
Hulk 1

258
00:15:32,714 --> 00:15:34,859
โปรแกรมดีเจ

259
00:15:34,859 --> 00:15:36,872
คือหน่วยความจำให้ระบบ

260
00:15:36,872 --> 00:15:37,544
เกิด Hollขึ้นแล้วนะครับ

261
00:15:37,544 --> 00:15:41,544
เมื่อเกิดโฮขึ้นนะครับ

262
00:15:47,737 --> 00:15:49,247
พอมีวิธีการ

263
00:15:49,247 --> 00:15:53,247
เอาโปรแกรมใหม่ไปวางแทนนะครับ

264
00:15:54,782 --> 00:15:55,242
ซึ่งมีอยู่ 3 วิธีการนะครับ

265
00:15:55,242 --> 00:15:56,559
1

266
00:15:56,559 --> 00:16:00,559
เลือกที่พบก่อน

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

268
00:16:07,158 --> 00:16:09,343
วิธีการที่ 2

269
00:16:09,343 --> 00:16:12,117
เลือก ที่เหมาะสม

270
00:16:12,117 --> 00:16:16,117
เมื่อโลกเลือกโหดที่เหมาะสมที่สุด

271
00:16:16,241 --> 00:16:19,026
ก็คือเอาเข้าไปแล้ว

272
00:16:19,026 --> 00:16:19,585
หรือโฮใหม่น้อยที่สุด

273
00:16:19,585 --> 00:16:23,585
3

274
00:16:23,824 --> 00:16:27,824
เลือกโฮที่ใหญ่ที่สุดนะครับ

275
00:16:28,726 --> 00:16:31,098
ที่ใหญ่ที่สุด

276
00:16:31,098 --> 00:16:35,025
มาดูนะครับ

277
00:16:35,025 --> 00:16:37,638
วิธีแต่ละวิธีเป็นอย่างไรดูรูปนะครับ

278
00:16:37,638 --> 00:16:37,815
วิธีการที่ 1

279
00:16:37,815 --> 00:16:41,161
เจอก่อน

280
00:16:41,161 --> 00:16:41,389
พบก่อน

281
00:16:41,389 --> 00:16:45,389
แต่ต้องมีเงื่อนไขว่าต้องมีพื้นที่ของ

282
00:16:46,434 --> 00:16:50,434
โฮใหญ่เพียงพอนะครับ

283
00:16:51,402 --> 00:16:55,306
13 เข้า 16 ได้ไหมครับ

284
00:16:55,306 --> 00:16:56,712
ได้

285
00:16:56,712 --> 00:17:00,712
มาก่อนเลยพบก่อนเลยเจอก่อนนะครับ เข้าไปวางก่อนเลยนะครับ

286
00:17:03,711 --> 00:17:04,286
2 เหมาะสมที่สุด

287
00:17:04,286 --> 00:17:08,286
เมื่อเข้าไปวางเสร็จแล้วโฮใหม่ที่เกิดขึ้นมา

288
00:17:09,865 --> 00:17:11,072
มีขนาดเหลือน้อยที่สุด

289
00:17:11,072 --> 00:17:11,308
96

290
00:17:11,308 --> 00:17:13,645
เหลือ 3

291
00:17:13,645 --> 00:17:16,133
ถ้าเข้า 14

292
00:17:16,133 --> 00:17:18,208
เ หลือ 1

293
00:17:18,208 --> 00:17:19,844
ถ้าเข้า 5

294
00:17:19,844 --> 00:17:21,205
เ อาไม่ได้

295
00:17:21,205 --> 00:17:22,539
ค่าเข้า 30

296
00:17:22,539 --> 00:17:23,961
เหลือ 17

297
00:17:23,961 --> 00:17:24,238
Minecraft

298
00:17:24,238 --> 00:17:28,057
ของที่สุด

299
00:17:28,057 --> 00:17:30,925
เลือกโคที่เข้าไปแล้ว

300
00:17:30,925 --> 00:17:31,715
ทำให้เกิดโฮใหญ่น้อยที่สุดนะครับ

301
00:17:31,715 --> 00:17:35,715
สวนแบบที่ 3 นะครับ วิธีการแบบที่ 3 ก็คือเลือกโคที่ใหญ่ที่สุด

302
00:17:38,457 --> 00:17:42,457
เห็นไหมครับ 30 ใหญ่กว่าเพื่อนนะครับ

303
00:17:44,438 --> 00:17:48,438
คราวนี้ในกรณีที่

304
00:17:52,956 --> 00:17:56,956
มีโฮ เกิดขึ้นพื้นที่ติดกันติดกันนะครับ

305
00:17:58,542 --> 00:17:59,020
ติดกัน

306
00:17:59,020 --> 00:18:03,020
ถ้า OS

307
00:18:05,157 --> 00:18:05,669
มีความมีความสามารถนะครับ

308
00:18:05,669 --> 00:18:09,669
มันจะต้องมีความสามารถในการจัดรวม โฮเข้าไปด้วยกันด้วยเลยนะครับ

309
00:18:13,310 --> 00:18:17,310
นึกออกไหมครับ

310
00:18:19,398 --> 00:18:20,953
เมื่อมีโฮอยู่ติดกัน

311
00:18:20,953 --> 00:18:22,967
ว่างติดกัน

312
00:18:22,967 --> 00:18:25,258
กับยุบรวมกันนะครับ

313
00:18:25,258 --> 00:18:27,439
อีกวิธีการหนึ่ง

314
00:18:27,439 --> 00:18:27,764
การอัดหน่วยความจำนะครับ

315
00:18:27,764 --> 00:18:31,764
อัดหน่วยความจำ

316
00:18:32,057 --> 00:18:32,759
ก็คือถ้าเกิดมีโฮ

317
00:18:32,759 --> 00:18:34,144
ว่าง

318
00:18:34,144 --> 00:18:36,301
เกิดขึ้น

319
00:18:36,301 --> 00:18:40,301
ติดกันก็ได้ไม่ติดก็ได้นะครับ

320
00:18:43,704 --> 00:18:47,704
วิธีการอัดหน่วยความจำ

321
00:18:48,026 --> 00:18:49,005
ก็คือระบบจะหยุดการทำงานแล้วก็เช็คดูระบบ

322
00:18:49,005 --> 00:18:53,005
แล้วก็เอาหน่วยความจำที่ว่าง ๆ อยู่มาจับรวมกันเพื่อให้ได้หน่วยความจำที่ใหญ่ขึ้นนะครับ

323
00:18:57,100 --> 00:19:01,100
เราเรียกว่าการรวบรวมขยะนะครับ

324
00:19:02,598 --> 00:19:05,917
เหมือนโปรแกรม reflex

325
00:19:05,917 --> 00:19:09,917
เดี๋ยวพอเราแยกไปเรียนปฏิบัตินะครับ

326
00:19:11,198 --> 00:19:12,730
เราจะเห็นว่าโปรแกรม

327
00:19:12,730 --> 00:19:13,368
Reflex ทำงานอย่างไร

328
00:19:13,368 --> 00:19:14,011
นะครับ

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

330
00:19:20,928 --> 00:19:21,194
เข้ามาเมื่อกี้

331
00:19:21,194 --> 00:19:24,098
มาเอาแบบฝึกหัด

332
00:19:24,098 --> 00:19:28,098
แล้วทำอะไรอยู่

333
00:19:37,191 --> 00:19:39,291

334
00:19:26,483 --> 00:19:30,483
นี่ดูวิธีการรวบรวมนะครับ

335
00:19:43,095 --> 00:19:45,262
รหัสหน่วยความจำนะครับ

336
00:19:45,262 --> 00:19:49,262
เห็นไหมครับ นี่

337
00:19:54,492 --> 00:19:51,398

338
00:19:49,378 --> 00:19:53,378
ใช้งาน 1 2 3

339
00:19:58,327 --> 00:19:54,968

340
00:19:53,913 --> 00:19:56,706
นะครับ

341
00:19:56,706 --> 00:20:00,468
โฮ โฮ โฮ โฮ เพราะอัดหน่วยความจำ

342
00:20:00,468 --> 00:20:04,468
เกิดช่องว่างขึ้น

343
00:20:04,721 --> 00:20:08,086
เกิดว่างขึ้นใหญ่ขึ้นนะครับ

344
00:20:08,086 --> 00:20:09,727
นี่คือวิธีการอัดหน่วยความจำนะครับ

345
00:20:09,727 --> 00:20:13,727
คราวนี้มาดูระบบหลายโปรแกรมแบบสลับความจำ

346
00:20:16,634 --> 00:20:20,634
เมื่อกี้เป็นแบบแบ่งหน่วยความจำนะครับ

347
00:20:24,758 --> 00:20:26,239
แบ่งหน่วยความจำแบ่งหน่วยความจำก็มีขนาดคงที่กับไม่คงที่

348
00:20:26,239 --> 00:20:27,614
คราวนี้มาดูแบบ

349
00:20:27,614 --> 00:20:30,121
หน่วยความจำ

350
00:20:30,121 --> 00:20:31,779
ก็คือเมื่อโปรแกรม

351
00:20:31,779 --> 00:20:35,044
ถูกใช้งาน

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

353
00:20:35,463 --> 00:20:39,463


