หน่วยความจำเสมือนในระบบปฏิบัติการ: คืออะไร เพจความต้องการ ข้อดี
⚡ สรุปอย่างชาญฉลาด
หน่วยความจำเสมือน (Virtual Memory) เป็นกลไกการจัดเก็บข้อมูลที่สร้างภาพลวงตาให้ผู้ใช้เห็นว่ามีหน่วยความจำหลักขนาดใหญ่ โดยการใช้ส่วนหนึ่งของหน่วยเก็บข้อมูลรองเป็น RAM ทำให้กระบวนการที่มีขนาดใหญ่กว่าหน่วยความจำจริงสามารถทำงานได้ และมีการใช้งานร่วมกับการแบ่งหน้าหน่วยความจำตามความต้องการ (Demand Paging)

หน่วยความจำเสมือนคืออะไร?
หน่วยความจำเสมือน หน่วยความจำเสมือน (Virtual Memory) เป็นกลไกการจัดเก็บข้อมูลที่สร้างภาพลวงตาให้ผู้ใช้ราวกับว่ามีหน่วยความจำหลักขนาดใหญ่มาก โดยการใช้หน่วยความจำรองส่วนหนึ่งเป็นหน่วยความจำหลัก ในหน่วยความจำเสมือน ผู้ใช้สามารถจัดเก็บกระบวนการที่มีขนาดใหญ่กว่าหน่วยความจำหลักที่มีอยู่ได้
ดังนั้น แทนที่จะโหลดกระบวนการที่ยาวนานในหน่วยความจำหลัก ระบบปฏิบัติการจะโหลดส่วนต่างๆ ของกระบวนการมากกว่าหนึ่งกระบวนการในหน่วยความจำหลัก หน่วยความจำเสมือนส่วนใหญ่ถูกนำมาใช้กับเพจความต้องการและการแบ่งส่วนความต้องการ
ทำไมต้องมีหน่วยความจำเสมือน?
ต่อไปนี้คือเหตุผลในการใช้หน่วยความจำเสมือน:
- เมื่อใดก็ตามที่คอมพิวเตอร์ของคุณมีพื้นที่ไม่เพียงพอในหน่วยความจำหลัก มันจะเขียนข้อมูลที่จำเป็นต้องจดจำลงในฮาร์ดดิสก์ในไฟล์สวอป ซึ่งทำหน้าที่เป็นหน่วยความจำเสมือน
- หากคอมพิวเตอร์ทำงาน Windows หากต้องการหน่วยความจำ/RAM มากกว่าที่ติดตั้งอยู่ในระบบ ระบบจะใช้พื้นที่ส่วนเล็ก ๆ ของฮาร์ดไดรฟ์เพื่อจุดประสงค์นี้
หน่วยความจำเสมือนทำงานอย่างไร?
ในโลกยุคใหม่ หน่วยความจำเสมือน (Virtual Memory) กลายเป็นเรื่องธรรมดาไปแล้ว โดยจะใช้เมื่อต้องการโหลดข้อมูลหลายหน้าเข้าไปในหน่วยความจำหลักเพื่อทำการประมวลผล แต่หน่วยความจำหลักไม่เพียงพอสำหรับข้อมูลจำนวนมากเหล่านั้น
ดังนั้น ในกรณีนั้น แทนที่จะป้องกันไม่ให้หน้าข้อมูลเข้าสู่หน่วยความจำหลัก ระบบปฏิบัติการจะค้นหาพื้นที่ RAM ที่ใช้งานน้อยที่สุดในช่วงที่ผ่านมา หรือพื้นที่ที่ไม่ถูกอ้างอิง และย้ายพื้นที่นั้นไปยังหน่วยความจำรอง เพื่อสร้างพื้นที่ว่างสำหรับหน้าข้อมูลใหม่ในหน่วยความจำหลัก
ให้เราเข้าใจ การจัดการหน่วยความจำเสมือน ด้วยความช่วยเหลือของตัวอย่างหนึ่ง
ตัวอย่างเช่น
สมมติว่าระบบปฏิบัติการต้องการหน่วยความจำ 300 เมกะไบต์ เพื่อจัดเก็บโปรแกรมที่กำลังทำงานอยู่ทั้งหมด แต่ปัจจุบันมีหน่วยความจำทางกายภาพที่ใช้งานได้บน RAM เพียง 50 เมกะไบต์เท่านั้น
- จากนั้นระบบปฏิบัติการจะสร้างหน่วยความจำเสมือนขนาด 250 เมกะไบต์ และใช้โปรแกรมที่เรียกว่าตัวจัดการหน่วยความจำเสมือน (VMM) เพื่อจัดการหน่วยความจำขนาด 250 เมกะไบต์นั้น
- ดังนั้น ในกรณีนี้ VMM จะสร้างไฟล์บนฮาร์ดดิสก์ขนาด 250 MB เพื่อจัดเก็บหน่วยความจำเพิ่มเติมที่จำเป็น
- ขณะนี้ระบบปฏิบัติการจะดำเนินการเข้าถึงหน่วยความจำเสมือนว่ามีหน่วยความจำจริง 300 MB ที่จัดเก็บอยู่ใน RAM แม้ว่าจะมีพื้นที่ว่างเพียง 50 MB ก็ตาม
- หน้าที่ของ VMM คือการจัดการหน่วยความจำขนาด 300 MB แม้ว่าจะมีพื้นที่หน่วยความจำจริงเพียง 50 MB ก็ตาม
เพจความต้องการคืออะไร?
กลไกการเพจความต้องการนั้นคล้ายคลึงกับ a มาก ระบบเพจ ด้วยการแลกเปลี่ยนpingโดยที่กระบวนการต่างๆ จะถูกจัดเก็บไว้ในหน่วยความจำรอง และหน้าต่างๆ จะถูกโหลดเฉพาะเมื่อมีการร้องขอเท่านั้น ไม่ใช่โหลดล่วงหน้า
ดังนั้น เมื่อมีการสลับบริบทเกิดขึ้น ระบบปฏิบัติการจะไม่คัดลอกหน้าใดๆ ของโปรแกรมเก่าจากดิสก์ หรือหน้าใดๆ ของโปรแกรมใหม่ไปยังหน่วยความจำหลัก แต่จะเริ่มดำเนินการโปรแกรมใหม่หลังจากโหลดหน้าแรกและดึงหน้าต่างๆ ของโปรแกรมที่ถูกอ้างอิงมาใช้แทน
ในระหว่างการทำงานของโปรแกรม หากโปรแกรมอ้างอิงถึงหน้าหน่วยความจำที่อาจไม่พร้อมใช้งานในหน่วยความจำหลักเนื่องจากถูกสลับออกไปแล้ว โปรเซสเซอร์จะถือว่าเป็นการอ้างอิงหน่วยความจำที่ไม่ถูกต้อง เนื่องจากข้อผิดพลาดในการเข้าถึงหน้าหน่วยความจำ (page fault) จะส่งการควบคุมกลับจากโปรแกรมไปยังระบบปฏิบัติการ ซึ่งจะเรียกร้องให้จัดเก็บหน้าหน่วยความจำนั้นกลับเข้าไปในหน่วยความจำอีกครั้ง
ประเภทของวิธีการเปลี่ยนหน้า
ต่อไปนี้คือวิธีการเปลี่ยนหน้าเว็บที่สำคัญบางวิธี:
- FIFO
- อัลกอริธึมที่เหมาะสมที่สุด
- การเปลี่ยนหน้า LRU
การเปลี่ยนหน้า FIFO
FIFO (เข้าก่อน-ออกก่อน) เป็นวิธีการใช้งานที่เรียบง่าย ในวิธีนี้ หน่วยความจำจะเลือกเพจสำหรับการแทนที่ที่อยู่ในที่อยู่เสมือนของหน่วยความจำเป็นเวลานานที่สุด
คุณสมบัติ
- เมื่อใดก็ตามที่มีการโหลดหน้าเว็บใหม่ หน้าเว็บที่อยู่ในหน่วยความจำนานที่สุดจะถูกลบออก ดังนั้นจึงง่ายที่จะตัดสินใจว่าจะลบหน้าเว็บใด เนื่องจากหมายเลขประจำตัวของหน้าเว็บนั้นจะอยู่ด้านหน้าสุดของสแต็ก FIFO เสมอ
- หน้าหน่วยความจำหลักที่เก่าที่สุดควรถูกเลือกเพื่อทำการแทนที่ก่อนเป็นอันดับแรก
อัลกอริธึมที่เหมาะสมที่สุด
วิธีการเปลี่ยนหน้าที่เหมาะสมที่สุดจะเลือกหน้านั้นสำหรับการแทนที่ซึ่งเวลาในการอ้างอิงถัดไปนานที่สุด
คุณสมบัติ
- อัลกอริทึม Optimal ส่งผลให้เกิดข้อผิดพลาดในการเข้าถึงหน่วยความจำน้อยที่สุด อย่างไรก็ตาม อัลกอริทึมนี้ยากต่อการนำไปใช้งาน
- อัลกอริทึมการแทนที่เพจที่เหมาะสมที่สุดจะมีอัตราการเกิดข้อผิดพลาดของเพจต่ำที่สุดในบรรดาอัลกอริทึมทั้งหมด อัลกอริทึมนี้มีอยู่จริงและควรเรียกว่า MIN หรือ OPT
- แทนที่หน้าเว็บที่ไม่น่าจะถูกใช้งานในระยะเวลานาน โดยจะใช้เฉพาะเวลาที่จำเป็นต้องใช้หน้าเว็บนั้นเท่านั้น
การเปลี่ยนหน้า LRU
ชื่อเต็มของ LRU คือ Least Recently Used page (เพจที่ใช้งานน้อยที่สุด) วิธีนี้ช่วยให้ระบบปฏิบัติการค้นหาการใช้งานเพจในช่วงเวลาสั้นๆ อัลกอริทึมนี้ควรนำไปใช้โดยการเชื่อมโยงตัวนับกับแต่ละเพจ
มันทำงานอย่างไร?
- หน้าหน่วยความจำหลักที่ไม่ได้ใช้งานเป็นเวลานานที่สุด จะถูกเลือกเพื่อนำมาแทนที่
- ใช้งานง่าย เก็บรายการ แทนที่หน้าด้วยการย้อนเวลากลับไป
คุณสมบัติ
- วิธีการแทนที่แบบ LRU มีจำนวนสูงสุด ตัวนับนี้เรียกอีกอย่างว่ารีจิสเตอร์อายุ ซึ่งระบุอายุและจำนวนครั้งที่ควรอ้างอิงถึงเพจที่เกี่ยวข้อง
- หน้าหน่วยความจำหลักที่ไม่ได้ใช้งานเป็นเวลานานที่สุด ควรถูกเลือกเพื่อนำมาแทนที่
- นอกจากนี้ยังเก็บรายการและแทนที่หน้าต่างๆ ด้วยการย้อนเวลากลับไป
อัตราความผิดพลาด
อัตราความผิดพลาด คือ ความถี่ที่ระบบหรือส่วนประกอบที่ออกแบบไว้เกิดความผิดพลาด โดยแสดงเป็นจำนวนความผิดพลาดต่อหน่วยเวลา และใช้สัญลักษณ์เป็นอักษรกรีก λ (แลมบ์ดา)
ข้อดีของหน่วยความจำเสมือน
ต่อไปนี้คือข้อดี/ประโยชน์ของการใช้หน่วยความจำเสมือน:
- หน่วยความจำเสมือนช่วยเพิ่มความเร็วเมื่อต้องใช้เพียงส่วนใดส่วนหนึ่งของโปรแกรมในการทำงานของโปรแกรม
- มีประโยชน์มากในการปรับใช้สภาพแวดล้อมแบบหลายโปรแกรม
- ช่วยให้คุณสามารถเรียกใช้แอปพลิเคชันได้มากขึ้นในคราวเดียว
- ช่วยให้คุณสามารถใส่โปรแกรมขนาดใหญ่จำนวนมากลงในโปรแกรมขนาดเล็กได้
- ข้อมูลหรือรหัสทั่วไปอาจถูกแชร์ระหว่างหน่วยความจำ
- กระบวนการหนึ่งอาจมีขนาดใหญ่กว่าหน่วยความจำทางกายภาพทั้งหมดเสียอีก
- ควรดึงข้อมูล/โค้ดจากดิสก์เมื่อใดก็ตามที่จำเป็น
- รหัสสามารถวางได้ทุกที่ในหน่วยความจำกายภาพโดยไม่ต้องย้ายตำแหน่ง
- ควรรักษากระบวนการเพิ่มเติมไว้ในหน่วยความจำหลัก ซึ่งจะเพิ่มการใช้งาน CPU อย่างมีประสิทธิภาพ
- แต่ละหน้าจะถูกจัดเก็บไว้ในดิสก์จนกว่าจะถึงเวลาใช้งาน หลังจากนั้นก็จะถูกลบออกไป
- ช่วยให้สามารถเรียกใช้แอปพลิเคชันได้มากขึ้นในเวลาเดียวกัน
- ไม่มีข้อจำกัดเฉพาะเกี่ยวกับระดับของการเขียนโปรแกรมหลายโปรแกรม
- ควรเขียนโปรแกรมขนาดใหญ่ เนื่องจากพื้นที่แอดเดรสเสมือนที่มีให้ใช้งานนั้นมีมากกว่าเมื่อเทียบกับหน่วยความจำทางกายภาพ
ข้อเสียของหน่วยความจำเสมือน
ต่อไปนี้คือข้อเสียของการใช้หน่วยความจำเสมือน:
- แอพพลิเคชั่นอาจทำงานช้าลงหากระบบใช้หน่วยความจำเสมือน
- การสลับไปมาระหว่างแอปพลิเคชันต่างๆ อาจใช้เวลานานขึ้น
- มันให้พื้นที่ฮาร์ดไดรฟ์สำหรับการใช้งานของคุณน้อยลง
- มันลดความเสถียรของระบบ
- มันช่วยให้แอปพลิเคชันขนาดใหญ่สามารถทำงานบนระบบที่ไม่มีหน่วยความจำ RAM เพียงพอสำหรับการทำงานของแอปพลิเคชันเหล่านั้นได้
- มันไม่ได้ให้ประสิทธิภาพเทียบเท่ากับ RAM
- มันส่งผลเสียต่อประสิทธิภาพโดยรวมของระบบ
- มันใช้พื้นที่จัดเก็บข้อมูล ซึ่งอาจนำไปใช้สำหรับการจัดเก็บข้อมูลระยะยาวได้

