หน่วยความจำเสมือนในระบบปฏิบัติการ: คืออะไร เพจความต้องการ ข้อดี

⚡ สรุปอย่างชาญฉลาด

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

  • 🧠 ความหมาย: หน่วยความจำเสมือนจะมองส่วนหนึ่งของหน่วยเก็บข้อมูลสำรองเป็นหน่วยความจำหลักเพื่อใช้ในการเรียกใช้กระบวนการขนาดใหญ่
  • 🎯 เหตุผลที่จำเป็น: มันช่วยเพิ่มหน่วยความจำเมื่อ RAM ทางกายภาพไม่เพียงพอ โดยใช้ไฟล์สวอปบนดิสก์
  • 📥 ระบบเรียกเพจแบบตามความต้องการ: หน้าเว็บจะถูกโหลดจากดิสก์เข้าสู่ RAM ก็ต่อเมื่อมีการอ้างอิงถึงหน้าเว็บนั้นจริง ๆ เท่านั้น
  • 🔁 การเปลี่ยนหน้า: FIFO, Optimal และ LRU เป็นตัวกำหนดว่าจะลบเพจใดเมื่อเกิดข้อผิดพลาดในการเข้าถึงเพจ (page fault)
  • ✅ ความได้เปรียบ: รองรับการทำงานแบบมัลติโปรแกรมมิ่งและอนุญาตให้โปรแกรมมีขนาดเกินขีดจำกัดของหน่วยความจำทางกายภาพ
  • ⚠️ ข้อเสียเปรียบ: มันทำงานช้ากว่า RAM และอาจลดประสิทธิภาพโดยรวมของระบบได้

หน่วยความจำเสมือนในระบบปฏิบัติการ

หน่วยความจำเสมือนคืออะไร?

หน่วยความจำเสมือน หน่วยความจำเสมือน (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
  • มันส่งผลเสียต่อประสิทธิภาพโดยรวมของระบบ
  • มันใช้พื้นที่จัดเก็บข้อมูล ซึ่งอาจนำไปใช้สำหรับการจัดเก็บข้อมูลระยะยาวได้

คำถามที่พบบ่อย

ข้อผิดพลาดในการเข้าถึงหน้าหน่วยความจำ (Page Fault) เกิดขึ้นเมื่อโปรแกรมอ้างอิงถึงหน้าหน่วยความจำที่ไม่ได้อยู่ในหน่วยความจำหลักในขณะนั้น ระบบปฏิบัติการจะหยุดการทำงานของโปรแกรมชั่วคราว ดึงหน้าหน่วยความจำที่ต้องการจากดิสก์มายัง RAM อัปเดตตารางหน้าหน่วยความจำ แล้วจึงดำเนินการต่อ

อาการ Thrashing เกิดขึ้นเมื่อระบบใช้เวลาในการสลับข้อมูลมากกว่าปกติping มีการใช้งานหน่วยความจำระหว่าง RAM และดิสก์มากกว่ากระบวนการที่กำลังทำงานอยู่ สาเหตุเกิดจากการทำงานแบบมัลติโปรแกรมมิ่งในระดับสูงเกินไป และทำให้ประสิทธิภาพการทำงานลดลงอย่างมาก การลดจำนวนกระบวนการที่กำลังทำงานอยู่หรือการเพิ่ม RAM จะช่วยแก้ไขปัญหานี้ได้

RAM คือฮาร์ดแวร์ทางกายภาพที่ทำงานเร็ว ซึ่งใช้เก็บข้อมูลที่ใช้งานอยู่ หน่วยความจำเสมือนเป็นเทคนิคที่ขยาย RAM โดยใช้พื้นที่ดิสก์เสมือนเป็นหน่วยความจำ หน่วยความจำเสมือนมีขนาดใหญ่กว่ามาก แต่ทำงานช้ากว่า RAM จริงมาก

ปัญญาประดิษฐ์ (AI) สามารถเรียนรู้รูปแบบการเข้าถึงหน่วยความจำของโปรแกรมและคาดการณ์ว่าหน้าหน่วยความจำใดจะถูกใช้งานในเร็วๆ นี้ ซึ่งช่วยให้ระบบปฏิบัติการเก็บหน้าหน่วยความจำที่มีประโยชน์ไว้ใน RAM และลบหน้าหน่วยความจำที่ไม่จำเป็นออกไป ทำให้เข้าใกล้กับอัลกอริทึมที่เหมาะสมที่สุดและลดข้อผิดพลาดในการเข้าถึงหน้าหน่วยความจำ (page faults)

ใช่แล้ว ด้วยการวิเคราะห์ลำดับการเข้าถึงในอดีต โมเดล AI สามารถดึงข้อมูลหน้าเว็บล่วงหน้าก่อนที่จะมีการร้องขอ และปรับความถี่ในการสลับหน้าเว็บได้ ซึ่งจะช่วยลดข้อผิดพลาดในการเข้าถึงหน้าเว็บและการทำงานที่ซ้ำซ้อน แต่ต้องควบคุมข้อผิดพลาดในการคาดการณ์และค่าใช้จ่ายส่วนเกินให้อยู่ในระดับต่ำด้วย

สรุปโพสต์นี้ด้วย: