Please enable JavaScript.
Coggle requires JavaScript to display documents.
บทที่ 8 หน่วยความจำเสมือน - Coggle Diagram
บทที่ 8 หน่วยความจำเสมือน
แนวคิดหน่วยความจำเสมือน
หน่วยความจำเสมือนเป็นวิธีหนึ่งที่สามารถทำให้โพรเซสทำงานได้ ถึงแม้ว่าโพรเซสนั้นจะไม่ได้อยู่ ในหน่วยความจำหลักทั้งหมด โดยระบบปฏิบัติการจะท าหน้าที่เก็บบางส่วนของโปรแกรมที่กำลังทำงานไว้ ในหน่วยความจ าหลัก และเก็บส่วนที่เหลือไว้ในฮาร์ดดิสก์ตัวอย่างเช่น
ข้อดีของวิธีนี้ คือ โปรแกรมของผู้ใช้สามารถมีขนาดใหญ่กว่าหน่วยความจำจริงได้เพราะวิธีนี้จะ ทำการแยกส่วนของหน่วยความจำเชิงตรรกะ (Logical memory) ของผู้ใช้ออกจากหน่วยความจำเชิง กายภาพ (Physical memory)
การจัดสรรหน้าตามคำร้องขอ
ข้อดี
ลดการใช้ (Less I/O needed)
ลดการใช้หน่วยความจำ (Less memory needed)
โต้ตอบได้รวดเร็วกว่า (Faster response)
รองรับผู้ใช้ได้มากกว่า (More users)
หลักการขั้นพื้นฐาน (Basic Concepts)
สามารถอธิบายขั้นตอนในการจัดการการผิดหน้า (Page fault)
ตรวจดูตารางข้อมูลจ าเพาะของโพรเซส (PCB) ว่าหน้าที่ต้องการอ้างอิงถูกต้องหรือไม่
ถ้าเป็นการอ้างอิงผิดพลาดก็ให้ยกเลิกโพรเซส ถ้าถูกต้องแต่หน้าที่ต้องการนี้ไม่ได้อยู่ใน
หน่วยความจำหลักให้ดำเนินการขั้นต่อไป
หาเนื้อที่ว่างในหน่วยความจำจริง (Frame) 1 หน้า เช่น เลือกจากรายชื่อหน้าว่าง
จัดคำร้องขอไปยังจานบันทึก เพื่อให้อ่านหน้าที่ต้องการมาไว้ในเนื้อที่ว่างที่เลือกไว้
เมื่อจานบันทึกนำหน้าเข้ามาเสร็จแล้ว ระบบก็จะแก้ไขบิตสถานะในตารางเลขหน้าเป็นใช้ได้
จัดให้โพรเซสทำงานต่อจากจุดที่เกิด “การผิดหน้า” โพรเซสจึงสามารถทำงานต่อไปได้ เสมือนว่าหน้าที่ต้องการอยู่ในหน่วยความจ าหลักตลอดเวลา
ประสิทธิภาพของระบบจัดสรรหน้าตามคำร้องขอ (Performance of Demand Paging)
เมื่อเกิดการผิดหน้ามีขั้นตอนในการดำเนินการดังต่อไปนี้
รายงานข้อผิดพลาดไปยังระบบปฏิบัติการ
ใช้เก็บค่าต่าง ๆ ของรีจีสเตอร์ และสถานะของโพรเซส
ตรวจดูว่าสัญญาณขัดจังหวะนั้นเป็นการผิดหน้า
ตรวจดูว่าหน้าที่ต้องการถูกต้อง อยู่ในขอบเขตที่มีสิทธิใช้ และหาค่าตำแหน่งของหน้านี้จาก
การบันทึก
ทำการร้องขอไปยังจานบันทึกให้อ่านหน้านั้นเข้ามายังพื้นที่ว่าง (Free frame)
เข้าไปรอในแถวอุปกรณ์จนกระทั่งถึงคราวของเขา
อุปกรณ์และจานบันทึกจะหมุนและกวาดไปยังต าแหน่งที่ต้องการ
มีการโอนถ่ายข้อมูลจากอุปกรณ์ไปยังพื้นที่ว่าง
ขณะที่รอคอย ตัวจัดตารางการท างานอาจจัดให้โพรเซสอื่นทำงานไปก่อน
สัญญาณขัดจังหวะอินเตอร์รัพจากจานบันทึกว่าอ่านเสร็จแล้ว
จัดเก็บค่าของรีจีสเตอร์และสถานะของโพรเซสอื่นที่กำลังทำงานอยู่
ตรวจดูสัญญาณจากจานบันทึก
แก้ไขค่าในตารางเลขหน้าและตารางอื่น ๆ ที่เกี่ยวข้อง เพื่อแสดงว่าหน้าที่ที่ต้องการอยู่ใน
หน่วยความจ าหลักแล้ว
เข้าไปรอคอยอยู่ในแถวพร้อม เพื่อรอเข้าใช้หน่วยประมวลผล
เมื่อถึงคราวบรรจุค่าต่าง ๆ ที่เก็บไว้ลงในรีจิสเตอร์และตารางเลขหน้าของโพรเซสแล้ว เริ่มท า
คำสั่งเดิมที่หยุดไว้
เทคนิคการบันทึกข้อมูลด้วยการคัดลอกข้อมูล
โพรเซสลูกที่เกิดจากฟังก์ชั่น exec() (เรียกผ่าน System call) ทันที หลังการสร้าง การคัดลอกต าแหน่งพื้นที่ว่างของโพรเซสแม่ อาจจะไม่จ าเป็นหรืออาจใช้วิธีการอื่นที่รู้จักใน เทคนิค Copy-on-Write ซึ่งท างานโดยจัดสรรโพรเซสแม่และโพรเซสลูกในขั้นต้นเพจที่เหมือนกันให้ใช้ ร่วมกัน (Share page) การ Share page เป็นการท า Copy-on-Write หมายความว่า ถ้าโพรเซสหนึ่ง เขียน Share Page การคัดลอก Share page เป็นการสร้าง Copy-on-Write
การเชื่อมโยงแฟ้มข้อมูลกับหน่วยความจำ
การเชื่อมโยงแฟ้มข้อมูลกับหน่วยความจำ ยินยอมให้แฟ้มข้อมูลทั้งอินพุตและเอาท์พุตถูกใช้งาน เหมือนรูทีนการเข้าถึงหน่วยความจ าได้โดยการเชื่อมโยงดิกส์บล็อก (Mapping a disk block) ไปเป็นเพจ ในหน่วยความจ า
อัลกอริทึ่มการสับเปลี่ยนหน้า
มีจ านวนเฟรมเท่าไหร่ที่สามารถให้กับโพรเซสแต่ละตัวได้
กลุ่มของหน้าที่ถูกพิจารณาให้สับเปลี่ยนหน้านั้นควรจะถูกจ ากัดหรือไม่ เพื่อป้องกันไม่ให้โพ
รเซสที่ท าให้เกิดการผิดหน้าทำงาน
ในกลุ่มของหน้าที่เราพิจารณา เราจะเลือกหน้าใดที่จะน าไปสับเปลี่ยน
ถ้าเราให้หน่วยความจ าแก่โพรเซสใด ๆ น้อยเท่าไหร่ ก็จะท าให้มีจ านวนโพรเซสเข้ามาใช้งาน หน่วยความจ ามากขึ้นเท่านั้น ซึ่งจะท าให้ความน่าจะเป็นในการที่จะค้นพบโพรเซสอย่างน้อยหนึ่งโพรเซสที่ พร้อมจะท างานมากขึ้น ท าให้เราเสียเวลาในการสลับหน้าน้อยลง
ถ้ามีจำนวนหน้าของโพรเซสหนึ่ง ๆ ที่สามารถอยู่ในหน่วยความจำหลักน้อย (จำนวนเฟรม
น้อย) ก็จะทำให้เกิดอัตราการเกิดการผิดหน้าสูงมากขึ้น
นอกเหนือจากการกำหนดขนาดของหน้าคงที่แล้ว การให้หน่วยความจำเพิ่มกับโพรเซสใดโพ
รเซสหนึ่งจะไม่มีผลกระทบต่ออัตราการผิดหน้ามากนัก
วิธีสับเปลี่ยนแบบมาก่อน-ออกก่อน (FIFO: First-In-First-Out Algorithms)
เป็นวิธีที่ง่ายที่สุด โดยจะใช้เวลาที่หน้านั้น ๆ ถูกน าเข้ามาในหน่วยความจำหลักเป็นเกณฑ์ในการ
ตัดสินใจ เมื่อต้องการเลือกหน้าบางหน้าออก ก็ให้เลือกหน้าที่เข้ามานานที่สุด
วิธีสับเปลี่ยนแบบให้โอกาสครั้งที่สอง (Second Chance Page Replacement Algorithms)
วิธีนี้คิดขึ้นมาเพื่อแก้ปัญหาที่เกิดจากแบบมาก่อน-ออกก่อน โดยการป้องกันการเปลี่ยนหน้าที่ถูก เรียกใช้งานบ่อยออกไป ซึ่งสามารถท าได้โดยการเช็คที่บิต Referenced (R) ของหน้าที่เข้ามานานที่สุด ถ้า บิต R มีค่าเป็น 0 ก็แสดงว่าหน้านั้นเก่าและไม่ได้ถูกเรียกใช้งานเลย ระบบก็สามารถท าการสับเปลี่ยนได้ ทันที
วิธีสับเปลี่ยนแบบวงรอบนาฬิกา (Clock Page Replacement Algorithms)
วิธีสับเปลี่ยนแบบที่ดีที่สุด (Optimal Page Replacement Algorithms : OPT หรือ MIN)
วิธีสับเปลี่ยนแบบที่ไม่ได้ใช้งานออกก่อน (Not Recently Used : NRU)
การสับเปลี่ยนแบบใช้งานน้อยที่สุด-ออกก่อน (Least Recently Used : LRU)
เปรียบเทียบวิธีการสับเปลี่ยนหน้าแบบต่าง ๆ