--- title: ฝึก Revoice + PE (ห้องเรียนสกลฯ ห้อง 5041 ) ระบบปฏิบัติการและเทคโนโลยีฯ วันที่ 1 ก.ย. 2565 ฟารุต subtitle: date: วันพุธที่ 16 พฤษจิกายน 2565 เวลา 09.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) บทที่แล้วนะครับ เราพูดถึงที่อยู่นะคะ การจัดการ CPUแล้วก็จะพูดถึงการจัดการหน่วยความจำนะคะ ความจำก็เป็นอุปกรณ์ตัวหนึ่งที่มีส่วนสำคัญในคอมพิวเตอร์ของเรานะครับ เราจะดูว่าเครื่องคอมพิวเตอร์เครื่องไหนมีขีดความสามารถมากกว่ากันเราจะดูได้จากหน่วยความจำนะคะ แต่ทั้งนี้ทั้งนั้นนะครับ ไม่ได้ตอบได้เสมอว่าเครื่องที่มีหน่วยความจำมาก ทำงานได้ดีกว่านะครับ ในการจัดการหน่วยความจำนั้นก็เป็นขีดความสามารถอันหนึ่ง ของระบบปฏิบัติการของเราด้วยนะครับ ถ้าระบบปฏิบัติการของเราจัดการหน่วยความจำไม่ดีนะครับ ประสิทธิภาพในการใช้งานก็จะด้อยลงนะครับ คราวนี้เรามาดูว่ามาตรการอย่างไรนะครับ การจัดการหน่วยความจำมีอยู่ 3 แบบนะครับ มีอยู่ 3 เฟซวางแทนที่ มี 3 ลักษณะเราก็ดูว่าทำอย่างไรนะครับ พอดีมาดูการจัดสรรหน่วยความจำนะครับ โปรแกรมโปรแกรมที่ใช้งานในคอมพิวเตอร์จำเป็นจะต้องใช้หน่วยความจำนะครับ จะมากจะน้อยก็แล้วแต่หน่วยความจำโปรแกรมเกมอาจจะใช้เยอะ โปรแกรมพิมพ์งานอาจจะใช้น้อยอะไรประมาณนี้นะครับ คราวนี้เรามาดูว่าถ้าเกิดในการจัดสรรหน่วยความจำนะครับ สามารถแบ่งออกเป็น 3 ประเภทคือการจัดสรรแบบต่อเนื่อง แล้วก็แบบไม่ต่อเนื่องนะครับ การจัดสรรหน่วยความจำแบบต่อเนื่องก็คือหมายความว่าหน่วยความจำจะต้องว่างต่อเนื่องกันนะครับ อยู่ที่ว่าจะต้องต่อเนื่องกันนะครับ ขาดช่วยอะไรไม่ได้นะครับ แล้วก็ต้องมีพื้นที่ใหญ่พอถึงจะสามารถเข้ามาทำงานได้นะครับ ส่วนไม่ต่อเนื่องนะครับ ก็คือเข้าไปครอบครองหน่วยความจำแล้วนะความจำอาจจะอยู่คนละที่อยู่คนละแบบครับ อยู่คนละที่นะครับแต่จะต้องมีเนื้อที่เพียงพอที่โปรแกรมที่ใช้งานนะคะ คราวนี้มาดูในระบบโปรแกรมเดียวครับ โปรแกรมเดี่ยว Single Program นะครับ ก็คือคอมพิวเตอร์มีผู้ใช้งานเพียงโปรแกรมเดียวการจัดสรรหน่วยความจำจะไม่ยุ่งยากนะครับ ซึ่งเราสามารถแบ่งพื้นที่ของหน่วยความจำได้เป็น 2 ส่วนนะครับ ก็คือส่วนแรกเป็นของระบบปฏิบัติการนะครับ และเป็นส่วนที่จำเป็นจะต้องมีพื้นที่ว่างยาวติดต่อกันเป็นผืนใหญ่ผืนเดียวเลยนะครับ นี่ OS นะครับ ต้องมีพื้นที่หน่วยความจำของมันด้วยนะครับ แล้วต้องเป็นพื้นที่ยาวต่อเนื่องกัน 2 ส่วนหน่วยความจำของผู้ใช้ก็คือเรากลายเป็นส่วนของผู้ใช้ในระบบโปรแกรมเดี่ยวมันบอกความจำออกเป็น 2 ส่วนนะครับ 2 ส่วนดูของระบบปฏิบัติการเองเป็นหน่วยป้องกันเพื่อไม่ให้ตัวของมันเองถูกรุกล้ำเข้ามา วิธีการป้องกันก็คือการใช้ register ขอบเขตนะครับ register ขอบเขตคืออะไร ก็คือส่วนที่ป้องกันระหว่างระหว่างอะไรครับ OS ส่วนของผู้ใช้ ไม่ให้เข้ามายุ่งเกี่ยวกันนะครับ ดังนั้นการเขียนโปรแกรมไวรัสคอมพิวเตอร์ตัวหนึ่งก็คือเจาะตรงนี้นะครับ เจาะขอบเขตเจาะเข้าไปดีนะครับ ถ้ามีการรุกล้ำ register ขอบเขตก็จะมีการแจ้งเตือนนะครับ วันนี้มาดูระบบหลายโปรแกรมระบบหลายโปรแกรมการทำงานของระบบหลายโปรแกรมนั้นส่วนมากนะครับ ส่วนมากจะเกิดขึ้นก็คือการทำงานอินพุตเอาต์พุตคือการไปมันไม่ได้ครอบครอง CPU ว่าง ๆ ๆ เราเรียกระบบมัลติโปรแกรมมิ่งนะครับ ระบบ programming นี้นะครับ ก็คือการทำงานที่มีโปรแกรมมากกว่าหนึ่งโปรแกรมทำงานในเวลาเดียวกัน 2 3 4 5 6 7 นะครับ การทำงานของระบบหลายโปรแกรมมันจะแบ่งเป็น partition ของหน่วยความจำ แบ่ง partition ของหน่วยความจำออฟเป็นส่วนส่วนซึ่งการแบ่งหน่วยความจำนะครับ ระบบหลายโปรแกรมแบบหน่วยความจำนะครับ ยังสามารถแบ่งได้เป็น 2 ประเภทนะครับ ก็คือหลายโปรแกรมแบบแบ่งหน่วยความจำ แบบคงที่ แล้วก็ไม่คงที่นะครับ ระบบและโปรแกรมแบบระบบสลับหน่วยความจำนะครับ แบ่งหน่วยความจำนะครับ แล้วก็สลับหน่วยความจำวันนี้เรามาดูประเภทที่ 1 กันนะครับ การแบ่งหน่วยความจำขนาดคงที่นะครับ เห็นไหมครับ โปรแกรมส่วนที่ 1 ที่ ส่วนที่ 2 ส่วนที่ 3 มีขนาดที่เท่ากันครับ ที่เท่ากันและการแปลงหน่วยความจำแบบคงที่แบ่งออกเป็น 2 ประเภท 2 แบบ ได้แก่ การแปลงและโหลดด้วยค่าสมบูรณ์นะครับ รูปนี้ประกอบนะครับ โปรแกรมส่วนที่ 1 เห็นไหมครับส่วน ที่ 1 ส่วนที่ 1 ที่ 2 ข้อที่ 223 9 ซอย 13จำสดที่ 1ที่ 2ที่ 3 เห็นว่ามีขนาดที่เท่ากันครับ ที่เท่ากันขอบคุณนะครับ ดูนะครับ โปรแกรมส่วนที่ 1 เช่นรอดูโปรแกรมวันที่ 1 ที่ 2 ที่ 3 มีขนาดเท่ากับ 10 โปรแกรมส่งที่ 1 เสร็จแล้วโหลดเข้าไปมีค่าไม่เกิน 10 จะเข้าไปในส่วนที่ 1 นะครับ ถ้าโปรแกรมวันที่ 2 ต้องมีค่าตั้งแต่ 11 จะถึง 20 จะเข้าส่วนที่ 2 นะครับ โปรแกรมส่วนที่ 1 Program a Program B Program C มาแปลงด้วยค่าสมบูรณ์เสร็จแล้วเข้าไปที่คิวที่ 1 อย่างเดียวนะครับ นี่คือข้อเสียของมันนะครับ ใช่ไหมครับ มันจะว่างเลยส่วนที่ 1 ที่ 2 ที่ 3 ที่ 4 ที่ 5 ที่ 6 ที่ 7 ดังนั้นก็เลยวิธีการมีปัญหานะครับ เป็นการแปลงได้โหลดของค่าสัมพัทธ์นะครับ เพื่อแก้ปัญหาเมื่อกี้นะครับ ก็คือมีคิวเดียวเลยนะครับ มีคิวเดียวคิวเดียวแล้วก็คือบทที่ 1 2 3 4 หมายความว่าวิธีการโหลดตรงนี้พี่คิวโดยมีคิวแค่คิวเดียวครับ แปลงเสร็จปุ๊บมีค่าเท่ากับ 10 เข้ามาในส่วนที่ 1 มีค่าเท่ากับ 10 เอาบอกเขาไปสิ1 2 Call ส่วนที่ 2การโหลดเสร็จ 15ข้อ 2 ไม่ได้66+ 7 + 10 เข้าไปซื้อให้คอนโดที่ 2 ที่ 3 ที่ 4 ที่ 5 เข้าไปเรื่อย ๆ นะครับ ดังนั้นการป้องกันนะครับ ถ้าเป็นระบบในโปรแกรมเดียวจะเป็นใน register ขอบเขตในการป้องกันถ้าเป็นระบบหลักโปรแกรมแจ้งเตือนความจำ 26 ใช้ก็คือแบ่งregister แล้วก็ขอบเขตล่างการป้องกันไม่ให้โปรแกรมเข้ามานะครับ ขอบเขตล่างขอบเขตบนขอบเขตล่างขอบเขตบนนะครับ ส่วนตัวของระบบปฏิบัติการก็คือใช้ตัวของ register ขอบเขตในการป้องกันคราวนี้การแบ่งหน่วยความจำไม่ว่าจะเป็นวิธีการใดก็แล้วแต่ต้องเผื่อพื้นที่ในการเหลือใช้งานเรียกว่าการแตกกระจาย การแตกกระจายก็คือส่วนของหน่วยความจำ ที่ไม่ถูกใช้งานในระบบแบ่งหน่วยความจำนะครับ เราเรียกการแตกกระจายนี้ออกเป็น 2 กรณีนะครับ คือการแตกกระจายภายนอกและก็การแตกกระจายภายในนะครับ การแพร่กระจายภายนอกเป็นอย่างไรครับ ดูนะครับ ส่วนที่ 1การแตกกระจายภายนอกหมายถึงส่วนของหน่วยความจำที่ไม่ถูกใช้งานในระบบ แบ่งหน่วยความจำแบบขนาดคงที่ไม่ถูกใช้งานเลยนะครับ ไม่ถูกใช้งานส่วนการแตกกระจายภายในหมายถึงส่วนของหน่วยความจำที่ถูกใช้งานนะครับ ที่ใช้งานแต่ใช้งานไม่หมดนะครับ ใช้ไม่หมดนะครับ ในการแบ่งหน่วยความจำแบบคงที่ต่างกันนะครับ การแตกกระจายภายนอกก็คือส่วนที่ว่างไม่ถูกใช้งานเลยการแตกกระจายภายในคือหน่วยความจำว่างโดนใช้ไปแล้วใช้ไม่หมดคราวนี้มาดูการแบ่งหน่วยความจำขนาดคงที่ขนาดไม่คงที่นะครับ เมื่อกี้ไปขนาดคงที่นะครับ ผู้ออกแบบระบบปฏิบัติการได้ตระหนักถึงข้อเสียของการแบ่งการจัดพื้นที่ไว้ มีข้อจำกัดก็เลยคิดค้นวิธีการที่เรียกว่าการแบ่งหน่วยความจำแบบไม่คงที่ขึ้นบ้านตัวอย่างนะครับ เห็นไหมครับ ผู้ใช้เอต้องการใช้สิทธิ์ก็เข้าไปเลย 10 Kนะครับ ผู้ชายดีต้องการไป 30 ใช้ไปขนาดไม่คงที่นะคะ ขอให้มีพื้นที่ว่างเพียงพอก็สามารถจัดการหน่วยความจำได้เลยนะครับ ระบบโปรแกรมแบบแบ่งหน่วยความจำแบบไม่คงที่นะครับ สามารถ Run ได้หลายโปรแกรมนะครับ ดู... ถึงแม้ว่าการแบ่งหน่วยความจำแบบไม่คงที่นะครับ ก็ยังมีส่วนที่ไม่ถูกใช้งานเหมือนกันนะครับ เหมือนเดิม ถ้าเป็นแบบค่าคงที่นึกว่าการแตกกระจายนะครับ ส่วนถ้าเกิดในพื้นที่ที่ไม่ถูกใช้งานในการแบ่งหน่วยความจำขนาดไม่คงที่เราเรียกว่าช่องโหว่นะครับ หรือ Hold เกิดขึ้นได้อย่างไรโปรแกรม a Program B โปรแกรม C Program D เห็นไหมครับ Hold เกิดขึ้นแล้วข้างล่างสุดช่องว่างช่องโหว่ครับ สักระยะหนึ่งโปรแกรม B จบคือหน่วยความจำให้ระบบเห็นไหมครับ ช่องโหว่เกิดขึ้นแล้ว พักหนึ่งโปรแกรมดีจบคืนความจำให้ระบบเกิด ขึ้นแล้วเมื่อเกิด Hole ขึ้นนะครับ ก็มีวิธีการเอาโปรแกรมใหม่ลงไปวางแทนนะครับ ซึ่งมีอยู่ 3 วิธีการนะครับ 1เลือก Hole ที่พบก่อนไม่มีขนาดใหญ่พอที่จะวางโปรแกรมใหม่ลงไปนะครับ วิธีการที่ 2 เลือก Hole ที่เหมาะสมที่เหมาะสมที่สุดเอาเข้าไปแล้วเหลือหน่วยความจำใหม่น้อยที่สุดครับ 3 เลือก Hที่ใหญ่ที่สุดครับ ที่ใหญ่ที่สุดดูนะครับ วิธีแต่ละวิธีไปอย่างไรมาดูมาดูรูปบริการที่ 1 เช็กรอบพบก่อนต้องมีเงื่อนไขว่าต้องมีพื้นที่ของ Hole ใหญ่เพียงพอนะครับ 13 เข้า 16 ได้ไหมครับ ไม่ได้คราวก่อนเจอก่อนเลยเอาไปวางก่อนเลย 2 เหมาะสมที่สุดเมื่อเข้าไปวางแล้ว Hole ใหม่ที่เกิดขึ้นมีขนาดที่เหลือน้อยที่สุดจาก 16 เหลือ 3 ถ้าเข้า 14 เข้า 5 เข้าไม่ได้ค่าเข้า 30 17 ใช่ไหมครับ เลือก Hole เข้าไปแล้วทำให้เกิด Hole น้อยที่สุดวันที่ 3 นะครับ วิธีการวก็คือเรือหที่ใหญ่ที่สุดนะครับ 30 กว่าเพื่อนคราวนี้ในกรณีที่มีโฮเกิดขึ้นพื้นที่ติดกันกันนะครับ ติดกัน ถ้า os มีความสามารถนะครับ มันจะมีความสามารถในการจับรวม Hole เข้าไปด้วยกันนะครับ เดี๋ยวออกไปครับ อยู่ติดกันติดกันกับโครงการนะครับ วิธีการ 1 วิธีการอัดหน่วยความจำการอก็คือถ้ามี Homeว่างขึ้นกันก็ได้ไม่ติดกันก็ได้นะครับ วิธีการอัพหน่วยความจำคือกลับหน่วยความจำแล้วก็เช็คดูระบบ อัตราความจำที่ว่าง ๆ มาจัดรวมกันรวมกันให้ใหญ่ขึ้นนะครับ เราเรียกว่าการรวบรวมขยะนะครับ โปรแกรม defrag เดี๋ยวทำไมแยกไปเรียนปฏิบัติครับ เราจะเห็นว่าโปรแกรม defrag ทำงานทำงานอย่างไร มาทีหลังทำไมไม่เอาแบบฝึกหัดเพิ่งเข้ามาเมื่อกี้มาเอาแบบฝึกหัด แล้วทำอะไรอยู่ นี่ดูคลิปวิธีการรวบรวมหน่อยครับ อัดหน่วยความจำใช่ไหมครับ ใช้งาน 1 2 3 Hole Hole Hole นะครับ พออัดในความจำเกิดช่องว่างขึ้นเกิดว่างขึ้นใหญ่ขึ้นครับ วิธีการอัดหน่วยความจำนะครับ คราวนี่มาดูแล้วโปรแกรมสลับความจำที่เป็นแบบแบ่งหน่วยความจำนะครับ ความจำเมื่อกี้ก็มีแบบขนาดของที่ระลึกคงที่ตอนนี้มาดูระบบแบบสลับหน่วยความจำหลักการก็คือลบโปรแกรมถูกใช้งานก็นึกว่าสลับเข้านะครับ เอามา เอามา