Memory Management ในยุคก่อน บทที่ 2 Memory Management ในยุคก่อน
ความเดิมตอนที่แล้ว องค์ประกอบของ OS User Interface Memory Management Process Management Devices Management Files Management Security Management Network Management
เช็คชื่อ คนที่เข้าหลังจากนี้ จะเสียคะแนนไปส่วนหนึ่ง นักศึกษาส่งรายชื่อคนในกลุ่ม 6 กลุ่ม (ถ้าต้องการเปลี่ยนแปลงรายชื่อภายหลัง สามารถทำได้ แต่ต้องแจ้งอาจารย์ด้วย เพราะมีคะแนนตลอด)
บทบาทหน้าที่ของ Memory Management Memory ในที่นี้หมายถึงเฉพาะ primary memory เท่านั้น Memory มีขนาดจำกัด มีผู้ต้องการใช้งาน memory จำนวนมาก รวมถึง OS เองด้วย ประเด็นที่ต้องพิจารณา จะจัดพิ้นที่ส่วนไหนให้ผู้ขอใช้ จะต้องไม่จัดพื้นที่ซ้ำซ้อน ถ้าผู้ใช้ขอคืน memory ต้องทำอย่างไร ถ้าผู้ใช้ไม่จำเป็นต้องใช้ แต่ไม่ได้ส่งคืน (ผู้ใช้ตายแล้ว) จะทำอย่างไร ถ้า memory หมด ทำอย่างไร ถ้า memory มี แต่ไม่เพียงพอเท่าที่ขอ ทำอย่างไร ทำอย่างไรถึงจะให้บริการได้เร็ว
ทำความเข้าใจกับโครงสร้าง memory (แบบ logical) Memory เป็น random access storage มี address บอกตำแหน่งและอ้างอิงตำแหน่ง ข้อมูลเก็บอยู่ในรูป binary มีแต่ 0 กับ 1 มี 0 หมด ไม่ได้หมายความว่า memory ตรงนั้นว่าง มี 1 อยู่ ไม่ได้หมายความว่า memory ตรงนั้นไม่ว่าง
ใครขอใช้ memory OS ใช้เอง โปรแกรมที่โหลดลงมาใหม่ ส่วนของโปรแกรมที่อาจโหลดลงมาเพิ่ม พื้นที่ซึ่งโปรแกรมขอเพิ่มเติมเช่นคำสั่ง malloc ในภาษา C (ถ้าไม่มีข้อมูล OS ไม่สามารถแยกได้ว่าสิ่งที่อยู่ใน memory นั้นเป็นตัวโปรแกรม หรือว่าเป็นส่วนของข้อมูล เพราะมีแต่ 0 และ 1 เหมือนกัน)
Single-user Contiguous Scheme รันได้ครั้งละโปรแกรม (monoprogramming) ต้องอยู่ใน memory ทั้งโปรแกรม ต้องอยู่ในพื้นที่ติดกันทั้งโปรแกรม ข้อสังเกตุ ใน memory มีเพียง OS กับอีก 1 โปรแกรม OS ต้องเก็บข้อมูลตำแหน่ง memory ที่จะลงโปรแกรมและขนาดที่ลงได้ ไม่สามารถรันโปรแกรมที่ใหญ่กว่า memory ที่เหลือ ถ้าโปรแกรมมีขนาดเล็ก ถึงจะเหลือพื้นที่ก็รันโปรแกรมอื่นไม่ได้ พื้นที่เหลือโดยเปล่าประโยชน์เรียกว่า fragmentation
Three simple ways of organizing memory with an operating system and one user process. Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639
ประเด็นที่ต้องพิจารณาเพิ่มเติม โปรแกรมทุกโปรแกรมจะมีตำแหน่งของคำสั่ง และการอ้างอิงถึงตำแหน่งของคำสั่ง ซึ่งปกติจะเริ่มนับตำแหน่ง 0 จากต้นโปรแกรม ขณะเดียวกัน memory ก็มีตำแหน่งซึ่งเริ่มนับตำแหน่ง 0 จากต้น memory ถ้าโปรแกรมถูกโหลดลงที่ต้น memory ตำแหน่ง 0 ของโปรแกรมจะตรงกับตำแหน่ง 0 ของ memory การรันโปรแกรมจะไม่มีปัญหา ถ้าโปรแกรมถูกโหลดในตำแหน่งอื่น จำเป็นต้องมีวิธีการอ้างอิงหรือแปลง ตำแหน่งจาก relative address ไปเป็น physical address กรณี Single user นั้นง่าย เพียงแค่บวก memory address ตำแหน่งแรกของโปรแกรม เข้าไปยัง relative address ก็ได้แล้ว
Fixed Partitions เรียกอีกอย่างว่า Static Partitions รันได้หลายโปรแกรม (multiprogramming) OS แบ่ง memory ออกเป็นหลายส่วนเรียกว่า partition จำนวน partition และขนาด partition เปลี่ยนแปลงไม่ได้ โปรแกรมต้องโหลดลง partition ใด partition หนึ่ง เท่านั้น ต้องโหลดทั้งโปรแกรม แต่ละ partition โหลดได้โปรแกรมเดียว
ประเด็นปัญหา ถ้าต้องการโหลดโปรแกรม จะโหลดลง partition ใด First-fit โหลดลง partition แรกที่ว่าง Best-fit โหลดลง partition ที่ทำให้เกิด internal fragmentation น้อยที่สุด Worst-fit ตรงข้ามกับ best-fit กรณี best-fit หรือ worst-fit ถ้าตำแหน่งที่ต้องการไม่ว่าง รอคิว (มีคิวสำหรับทุก partition) เลือกลง partition อื่นที่ว่างตามนโยบาย (มีคิวเดียวสำหรับทุก partition)
ประเด็นปัญหา(ต่อ) การหา physical address OS ต้องมีข้อมูลตำแหน่งของแต่ละ partition (ขนาดและสถานะจำเป็นสำหรับเรื่องอื่น) OS ต้องมีข้อมูลว่าโปรแกรมไหนอยู่ partition ใด การคำนวณ ให้นักศึกษากลุ่ม ... ตอบคำถาม (นึกถึง single user คิดยังไง) การกำหนดขนาดของ partition เพื่อให้รันโปรแกรมได้มากที่สุด และเกิด fragmentation น้อยสี่สุด ให้นักศึกษากลุ่ม ... เสนอความเห็น ถ้ามีโปรแกรมที่ขนาดใหญ่กว่า partition ที่ว่าง ให้นักศึกษากลุ่ม ... ตอบคำถาม ถ้ามีโปรแกรมขนาดใหญ่กว่า partition ที่มีทั้งหมด ให้นักศึกษากลุ่ม .. ตอบคำถาม
Dynamic Partitions เหมือน Fixed Partitions นอกจาก กรณี partition ว่าง อยู่ก่อนหน้า partition ที่เพิ่งจบ กรณี partition ว่างอยู่หลัง partition ที่เพิ่งจบ กรณีมี partition ว่างทั้งก่อนหน้าและหลัง partition ที่เพิ่งจบ กรณีมี fragmentation ใน partition ก่อนหน้า ถ้าใช้ไปนานๆอาจมี fragmentation กระจัดกระจาย อาจทำ compaction เพื่อรวม fragmentation ที่กระจัดกระจาย เป็นพื้นที่ว่างติดกันขนาดใหญ่พอจะรันโปรแกรมเพิ่มเติมได้ การทำ compaction มี overhead สูง
Compaction (ให้น.ศ.เปรียบเทียบแต่ละแบบ)
ประเด็นปัญหา ข้อมูลที่ OS ต้องเก็บมีอะไรบ้าง (กลุ่ม ... ตอบ) Data structure เป็นอย่างไร (กลุ่ม ... ตอบ) ถ้าต้องการโหลดโปรแกรมจะลง partition ไหน (กลุ่ม ... ตอบ) การหา physical address (กลุ่ม ... ตอบ) ถ้าโปรแกรมที่โหลดมีขนาดใหญ่กว่า partition ที่ว่าง (กลุ่ม ... ตอบ) คำถามอื่น ๆ
ปิดท้ายด้วย Quiz อย่าลืมฝึกเขียนโปรแกรม ส่งก่อน midterm ใช้โปรแกรมประเภท secured shell หาไม่เจอให้ load จาก itnet.rsu.ac.th/surachai/program Putty.exe เป็น 1 ในโปรแกรม ssh User password บอกไปแล้ว