--- title: ฝึก Revoice + PE (ห้องเรียนสกลฯ ห้อง 5041 ) ระบบปฏิบัติการและเทคโนโลยีฯ วันที่ 1 ก.ย. 2565 นาโน subtitle: date: วันพุธที่ 16 พฤษจิกายน 2565 เวลา 09.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) ตัวพูด CPU วันนี้เราจะพูดถึงการจัดการหน่วยความจริงนะครับ หน่วยความจำก็เป็นอุปกรณ์ตัวหนึ่งที่มีความสำคัญในคอมพิวเตอร์ของเรานะครับ เราจะดูว่าคอมพิวเตอร์เครื่องไหนมีขีดความสามารถมากกว่ากัน เราก็อาจจะดูได้จากหน่วยความจำนะครับ แต่ทั้งนี้ทั้งนั้นนะครับ ไม่ได้ตอบได้เสมอว่า เครื่องที่มีหน่วยความจำมาก ทำงานได้ดีกว่านะครับ ในการจัดการหน่วยความจำนั้น เป็นขีดความสามารถอันหนึ่งของในระบบปฏิบัติการด้วย ถ้าระบบปฏิบัติการของเราหน่อย ความจำไม่ดีนะครับ ประสิทธิภาพในการทำงานก็จะได้ลงนะครับ คราวนี้เรามาดูว่าการจัดการมันจัดการอย่างไรครับ การจัดการหน่วยความจำมีอยู่ 3 แบบนะครับ มีอยู่ 3 เฟส วางแทนที่ มี 3 ลักษณะนะครับซึ่งเราค่อยดูว่ามีลักษณะอย่างไรนะครับ คราวนี้เรามาดูการจัดสรรหน่วยความจำของเรานะครับ โปรแกรมที่เราใช้งานจำเป็นจะต้องใช้หน่วยความจำ นะครับ มากจะน้อยก็แล้วแต่โปรแกรมนะครับ โปรแกรม อาจจะใช้เยอะ โปรแกรมพิมพ์งานอาจจะใช้น้อยนะครับแต่คราวนี้เรามาดูว่า ถ้าเกิด ในการจัดสรรหน่วยความจำนะครับ จะมี การแบ่งเป็น 2 ประเภท ก็คือการจัดสรรแบบ ต่อเนื่อง แล้วก็แบบไม่ต่อเนื่องนะครับ การจัดสรรหน่วยความจำ แบบต่อเนื่องก็คือหมายความว่าหน่วยความจำจะต้องว่างต่อกัน นะครับพื้นที่ว่างต้องต่อเนื่องกันนะครับ ขาดช่วงอะไรไม่ได้นะครับ แล้วก็ต้องมีขนาดใหญ่พอนะครับ ถึงจะ สามารถเข้าไปทำงานได้นะครับ ส่วนไม่ต่อเนื่องนะครับ ก็คือเข้าไปครอบครองหน่วยความจำแล้วหน่วยความจำอาจจะอยู่คนละที่ อยู่คนละแบบนะครับอยู่คนละที่ ก็ต้องมีเนื้อที่เพียงพอนะครับ ที่โปรแกรมจะใช้งานนะครับ คราวนี้มาดูในระบบ โปรแกรมเดียวนะครับโปรแกรมเดี่ยว Single Program ก็คือคอมพิวเตอร์ มีผู้ใช้งานแค่โปรแกรมเดียว การจัดสรรความจำจะไม่ยุ่งยากนะครับ ซึ่งเราสามารถแบ่งพื้นที่ของหน่วยความจำออกเป็น 2 ส่วนนะครับ ก็คือส่วนแรก เป็นส่วนของระบบปฏิบัติการนะครับ และเป็นส่วนที่จำเป็นจะต้องมีพื้นที่ว่าง ยาวติดต่อกันเป็นผืนใหญ่ผืนเดียวเลยนะครับ นี่ OS นะครับ ต้องมีพื้นที่หน่วยความจำของมันด้วยนะครับ และต้องเป็นพื้นที่ยาวต่อเนื่องกันนะครับ 2 ส่วนของผู้ใช้นะครับ ก็คือเหลือจาก OS กลายเป็นส่วนของผู้ใช้นะครับ ในระบบโปรแกรมเดียวนะครับ หน่วยความจำถูกแบ่งออกเป็น 2 ส่วนนะครับ 2 ส่วนตัวระบบปฏิบัติการเองจำเป็นจะต้องป้องกัน ไม่ให้ตัวของมันเองโดนรุกล้ำเข้ามา วิธีการ ป้องกันก็คือการใช้ register ขอบเขตนะครับ register ขอบเขตคืออะไร ก็คือส่วนที่ป้องกันระหว่าง ระหว่างอะไรครับ OS นะครับ กับส่วนของผู้ใช้ ไม่ให้เข้ามายุ่งเกี่ยวกันนะครับ ดังนั้นการเขียนโปรแกรม ไวรัสคอมพิวเตอร์ตัวหนึ่งก็คือเจาะนะครับ register ขอบเขตเจาะเข้าไป นี่นะครับ ถ้ามีการรุกล้ำ register ขอบเขต ก็จะแจ้งเตือนนะครับ วันนี้มาดูระบบหลายโปรแกรมนะครับ ระบบหลายโปรแกรม การทำงานของระบบหลายโปรแกรมนั้นส่วนมากนะครับ ส่วนมากจะเกิดขึ้นก็คือการไปทำงาน input การที่มันไม่ได้ครอบครอง CPU ว่างๆๆไม่ได้ครอบครองหน่วยความจำนะคะ เราเรียกระบบนี้ว่าระบบมัลติโปรแกรมมิ่งนะครับ ระบบโปรแกรมวิ่งนี้นะครับ ก็คือการทำงานที่ มากกว่าหนึ่งโปรแกรมทำงานในเวลาเดียวกัน 2 3 4 5 6 7 นะครับ การทำงานระบบไหลโปรแกรมนั้นเขาจะแบ่ง partition ของหน่วยความจำนะครับ แบ่ง partition ของหน่วยความจำเป็นส่วนส่วนนะครับ ซึ่งการแบ่งหน่วยความจำนะครับ ระบบ หลายโปรแกรมแบ่งหน่วยความจำนะครับ ก็ยังสามารถแบ่งได้เป็น 2 ประเภทนะครับ ก็คือระบบ หลายโปรแกรมแบบแบ่งหน่วยความจำ แบบคงที่ แล้วก็ไม่คงที่นะครับ ในระบบหลายโปรแกรมแบบสลับหน่วยความจำ นะครับ หน่วยความจำนะครับแล้วก็สลับหน่วยความจำนะครับ คราวนี้เรามาดูประเภทที่ 1 นะครับ การแบ่งหน่วยความจำขนาดคงที่นะครับ เห็นไหมครับ โปรแกรมส่วนที่ 1 ส่วนที่ 2 ส่วนที่ 3 มีขนาดที่เท่ากันนะครับ ขนาดที่เท่ากัน และการแบ่งหน่วยความจำขนาดคงที่ ก็ยังแบ่งเป็นได้ 2 ประเภทนะครับ 2 แบบ แก่การแปลงและโหลดด้วยค่าสัมบูรณ์นะครับ ดูรูปนี้ประกอบนะครับ โปรแกรมส่วนที่ 1 เห็นไหมคะ ส่วนที่ 1 วันที่ 1 เข้าส่วนที่ 1 ส่วนที่ 2 ส่วนที่ 2 ส่วนที่ 3 เข้าส่วนที่ 3 โปรแกรมส่วนที่ 1 ที่ 2 ที่ 3 มีขนาดที่เท่ากันนะครับ มีเท่ากัน มันเท่ากัน ดูนะครับ โปรแกรมส่วนที่ 1 เล่นเรากำหนด ส่วนที่ 1 ส่วนที่ 2 ส่วนที่ 3 มีขนาดเท่ากับ 10 เท่ากับ 10 นะครับ โปรแกรมส่วนที่ 1 ถ้าแปลงเสร็จแล้วโหลดเข้าไป ถ้าไม่เกิน 10 จะเข้าไปในส่วนที่ 1 ครับ แต่ถ้าโปรแกรม จะต้องมีค่าตั้งแต่ 11 จนถึง 20 มันถึงจะเข้าส่วนที่ 2 นะครับ แต่ถ้าบังเอิญว่าโปรแกรมส่วนที่ 1 โปรแกรม a Program B โปรแกรม SIRI เมื่อแปลงแล้วหยดด้วยค่าสมบูรณ์เสร็จแล้ว มันจะเข้าคิวที่ 1 อย่างเดียว นะครับ นี่คือข้อเสียของมันนะครับ เห็นไหมครับมันจะว่างเลยถึงส่วนที่ 2 ส่วนที่ 3 ส่วนที่ 4 ส่วนที่ 5 ส่วนที่ 6 ส่วนที่ 7 นะครับ ดังนั้นก็เลยมีการ แก้ปัญหานะครับโดยการแปลงและโหลดด้วยค่าสัมพัทธ์ นะครับ เพื่อแก้ปัญหาเมื่อกี้นะครับ ก็คือ มีคิวเดียวเลยนะครับ มีคิวเดียว อยู่เดียวเสร็จแล้ว ก็คือส่วนที่ 1 2 3 4 หมายความว่าโรงแรมจะโดนโหลดมาตรงนี้ที่คิว โดยมีคิวแค่คิวเดียวนะครับ แปรงฟัน ได้ค่าเท่ากับ 10 เข้าสวนที่ 1 แรงเสร็จปุ๊บ ได้ค่าเท่ากับ 10 เอาบวกเข้าไปอีก 12 เข้าสวนที่ 2 แปลงและหลุด 75 เข้าไม่ได้ 2 ไม่ได้ + 6 + 7 + 10 เข้าไปนะครับ เข้าด้วยคนที่ 2 3 4 5 เข้าไปเรื่อยๆนะครับ ดังนั้นการป้องกันนะครับ ถ้าเป็นในระบบโปรแกรมเดี่ยว ใช้ register ขอบเขตในการป้องกัน 85 งานในระบบหลายโปรแกรมแบบแบ่งหน่วยความจำนะคะ วิธีที่นิยมใช้ก็คือ register ขอบเขตบนและขอบ ล่างในการไม่ให้โปรแกรมเข้ามา นะครับ เห็นไหมครับขอบเขตล่างขอบเขตบนขอบเขตล่างขอบเขตบนนะครับ ส่วนตัวของระบบปฏิบัติการ ใช้ตัวของ register ขอบเขตนะครับในการป้องกัน คราวนี้การแบ่งหน่วยความจำไม่ว่าจะใช้วิธีการใดก็แล้วแต่นะครับ เกิดพื้นที่ที่ไม่ถูกการใช้งานเราเรียกว่าการแตกกระจายนะครับ การแตกกระจายก็คือส่วนของหน่วยความจำที่ไม่ถูกใช้งาน ในระบบแบ่งหน่วยความจำนะครับ แบ่งหน่วยความจำ ซึ่งเราเรียก การแตกไฟล์นี้ออกเป็น 2 กรณีนะครับ ต้องมีการแตกกระจายภายนอก แล้วก็การแตกกระจายภายใน การแตกกระจายภายนอกเป็นอย่างไรครับ ดูนะครับ ส่วนที่ 1 แตกกระจายภายนอก หมายถึง ส่วนของ หน่วยความจำที่ไม่ถูกใช้งานในระบบ แบ่งหน่วยความจำขนาดคงที่ ไม่ถูกใช้งานคืออะไรครับส่วนที่ 1 ไม่ถูกใช้งาน ส่วนการแตกกระจายภายในดูนะครับภายใน หมายถึงส่วนของหน่วยความจำ ที่ถูกใช้งาน นะครับ ที่ถูกใช้งานแต่ใช้งานไม่หมดนะคะ ใช้ไม่หมดนะครับ ในการแบ่งหน่วยความจำขนาดคงที่ ต่างกันนะครับ แตกกระจายภายนอกก็คือส่วนที่ว่างไม่ถูกใช้งานเลย ส่วนการแตกกระจายภายในคือหน่วยความจำว่าง โดนใช้แล้วใช้ไม่หมด นะครับ คราวนี้มาดูการแบ่งหน่วยความจำขนาดคงที่ ขนาดไม่คงที่นะครับ เมื่อกี้เป็นขนาดคงที่นะครับ ออกแบบระบบปฏิบัติการได้ตระหนักถึงข้อเสียขนาดคงที่ไว้นะครับ มีข้อจำกัด ก็เลยคิดค้นวิธีการที่เรียกว่าการแบ่งหน่วยความจำขนาดไม่คงที่ขึ้นนะครับ หนังตัวอย่างนะครับ เห็นไหมครับ ผู้ใช้ A ต้องการใช้สิทธิ์ เข้าไปเลย 10 K นะครับ ผู้ใช้ดีต้องการ 30 เดี๋ยวเข้าไปนะครับขนาดไม่ครบ พี่นะครับ เขาให้มีพื้นที่ว่างเพียงพอก็สามารถจัดการ หน่วยความจำได้เลยนะครับ ระบบหลายโปรแกรมแบบแบ่งหน่วยความจำแบบไม่คงที่ สามารถ Run ได้หลายโปรแกรมนะครับ ดูนะครับ ถึงแม้ว่าการแบ่งหน่วยความจำขนาดไม่คงที่ นะครับ ก็ยังมีส่วนที่ไม่ถูกใช้งานเหมือนกันนะครับ เหมือนเดิม ถ้าเป็นแบบขนาดคงที่เรียกว่าการแตกกระจายนะครับ ส่วนถ้าเกิดขึ้นในกรณีที่พื้นที่ที่ไม่ถูกใช้งาน ในการแบ่งหน่วยความจำในขนาดไม่คงที่ เราเรียกว่าช่องโหว่นะครับ หรือ Home โครงเกิดขึ้นได้อย่างไรครับ Program a Program B Program C G D เห็นไหมครับ Home เกิดขึ้นแล้วข้างล่างสุด ช่องว่างช่องโหว่นะครับ หักระยะหนึ่ง โปรแกรม Beetalk คือหน่วยความจำให้ระบบ เห็นไหมครับเกิดช่องโหว่ขึ้นแล้ว Hulk 1 โปรแกรมดีเจ คือหน่วยความจำให้ระบบ เกิด Home ขึ้นแล้วนะครับ เมื่อเกิดโฮขึ้นนะครับ พ่อมีวิธีการ เอาโปรแกรมใหม่ไปวางแทนนะครับ ซึ่งมีอยู่ 3 วิธีการนะครับ 1 เลือกโฮที่พบก่อน และมีขนาดใหญ่พอที่จะวางโปรแกรมใหม่ลงไปนะครับ วิธีการที่ 2 เลือกโฮที่เหมาะสม เมื่อโลกเลือกโหดที่เหมาะสมที่สุด ก็คือเอาเข้าไปแล้ว หรือโฮมใหม่น้อยที่สุด 3 เลือกโคที่ใหญ่ที่สุดนะครับ ที่ใหญ่ที่สุด มาดูนะครับ วิธีแต่ละวิธีเป็นอย่างไรดูรูปนะครับ วิธีการที่ 1 เจอก่อน พบก่อน แต่ต้องมีเงื่อนไขว่าต้องมีพื้นที่ของ ใหญ่เพียงพอนะครับ 1396 ได้ไหมครับ ได้ มาก่อนเลยพบก่อนเลยเจอก่อนนะครับเข้าไปวางก่อนเลยนะครับ 2 เหมาะสมที่สุด เมื่อเข้าไปวางเสร็จแล้วโทรมา Google มีขนาดเหลือน้อยที่สุด 96 เหลือ 3 ถ้าเข้า 14 เหลือ 1 ถ้าเข้า 5 เอาไม่ได้ ค่าเข้า 30 เหลือ 17 Minecraft ของที่สุด เลือกโคที่เข้าไปแล้ว ทำให้เกิดโฮใหม่น้อยที่สุดนะครับ สวนแบบที่ 3 นะครับวิธีการแบบที่ 3 ก็คือเลือกโคที่ใหญ่ที่สุด เห็นไหมครับ 30 ใหญ่กว่าเพื่อนนะครับ คราวนี้ในกรณีที่ มีโฮเกิดขึ้นพื้นที่ติดกันติดกันนะครับ ติดกัน ถ้า OS มีการมีความสามารถนะครับ มันจะต้องมีความสามารถในการจัดรวม Home เข้าไปด้วยกันด้วยเลยนะครับ นึกออกไหมครับ เมื่อมีโห่อยู่ติดกัน ว่างติดกัน กับยุบรวมกันนะครับ อีกวิธีการหนึ่ง การอัดหน่วยความจำนะครับ หน่วยความจำ ก็คือถ้าเกิดมีโฮ ว่าง เกิดขึ้น ติดกันก็ได้ไม่ติดก็ได้นะครับ วิธีการอัดหน่วยความจำ ก็คือระบบจะหยุดการทำงานแล้วก็เช็คดูระบบ แล้วก็เอาหน่วยความจำที่ว่างๆอยู่มาจับรวมกันเพื่อให้ได้หน่วยความจำที่ใหญ่ขึ้นนะครับ เราเรียกว่าการรวบรวมขยะนะครับ เหมือนโปรแกรม reflex พอเราแยกไปเรียนปฏิบัตินะครับ เราจะเห็นว่าโปรแกรม defrag ทำงานอย่างไร นะครับ มาทีหลังทำไมไม่เอาแบบฝึกหัด เข้ามาเมื่อกี้ มาเอาแบบฝึกหัด แล้วทำอะไรอยู่ นี่ดูวิธีการรวบรวมนะครับ รหัสหน่วยความจำนะครับ เห็นไหมครับนี่ ใช้งาน 1 2 3 นะครับ เพราะอัดหน่วยความจำ เกิดช่องว่างขึ้น เกิดว่างขึ้นใหญ่ขึ้นนะครับ นี่คือวิธีการอัดหน่วยความจำนะครับ คราวนี้มาดูระบบหลายโปรแกรมแบบสลับความจำ เมื่อกี้เป็นแบบแบ่งหน่วยความจำนะครับ แบ่งหน่วยความจำแบ่งหน่วยความจำก็มีขนาดคงที่กับไม่คงที่ คราวนี้มาดูแบบ หน่วยความจำ ก็คือเมื่อโปรแกรม ถูกใช้งาน เราเรียกว่าสลับเข้านะครับ