หน่วยความจำเสมือน / ตัวช่วยเพจช่วยให้เคอร์เนลหน่วยความจำ "เสมือนจริง" เพื่อกระบวนการ userspace เคอร์เนลสามารถนำหน้าจากหน่วยความจำกายภาพและจัดเรียงหน้าเพจเพื่อให้ปรากฏต่อเนื่องกับกระบวนการ userspace
สามารถตั้งค่าขีด จำกัด บนหน่วยความจำของกระบวนการ userspace ได้และหากกระบวนการดำเนินการเกินกว่าจะเกิด "page fault" เกิดขึ้นซึ่งทำให้เกิดข้อยกเว้นของ CPU ซึ่งกระดอนกลับไปที่เคอร์เนล สิ่งนี้ป้องกันไม่ให้โปรแกรม userspace ทำกับหน่วยความจำที่จัดสรรให้เคอร์เนลหรือโปรแกรมอื่น ๆ โดยไม่ได้รับอนุญาตจากเคอร์เนล
โดยทั่วไปโปรแกรม userspace จะขอให้เคอร์เนลขยายขีด จำกัด นี้ผ่านอินเทอร์เฟซที่กำหนดไว้อย่างดี (เรียกใช้โดยฟังก์ชัน C malloc()
และfree()
ตัวอย่าง) เคอร์เนลมีหน้าที่รับผิดชอบในการติดตามจำนวนและหน่วยความจำที่โปรแกรมถูกจัดสรร
กลไก "page fault" นี้ยังสามารถให้เคอร์เนลสลับหน้ากระบวนการที่พยายามเข้าถึงด้วยดิสก์หนึ่งตัวหากเคอร์เนลสามารถ overprovision หน่วยความจำ (และทั้ง Windows และ Linux สนับสนุนสิ่งนี้) ดังนั้นจึงเรียกว่าการสลับ หากการเข้าถึงหน่วยความจำไม่ถูกต้องแน่นอน (เช่นกระบวนการกำลังพยายามเข้าถึงหน่วยความจำก็ไม่ได้ถามก่อน) โดยทั่วไปแล้วกระบวนการจะถูกฆ่าด้วย SIGSEGV
ดังนั้น "การสลับ" เป็นคุณสมบัติเพิ่มเติม (ใน Linux คุณสามารถปิดการใช้งานได้จริงหากคุณต้องการ) ซึ่งขึ้นอยู่กับหน่วยความจำเสมือน / เพจจิ้ง แต่ไม่จำเป็นต้องใช้เพียงเพราะ CPU มีหน่วยความจำเสมือน / เพจจิ้ง แนวคิดไม่เหมือนกัน แต่การสลับเปลี่ยนขึ้นอยู่กับการเพจ / หน่วยความจำเสมือนที่มีอยู่
นอกจากนี้หลังจากอ่านคำถามของคุณอย่างละเอียดยิ่งขึ้นบางครั้งการ "เพจจิ้ง" ก็ใช้เป็น synomym สำหรับ "การสลับ" - แต่ฉันไม่เคยได้ยินคำว่า "การสลับ" หมายความว่าหน่วยความจำของกระบวนการทั้งหมดถูกสลับกับ "เพจจิ้ง" มันถูกสับเปลี่ยน
แต่ทำไมลินุกซ์จึงจำเป็นต้องมีพาร์ติชั่นการแลกเปลี่ยน หากหน่วยความจำกายภาพเต็มกระบวนการบางกระบวนการจะถูก outsourced กับฮาร์ดไดรฟ์และกระบวนการใหม่จะถูกแมปจากหน่วยความจำเสมือนกับหน่วยความจำกายภาพ
"หน่วยความจำเสมือน" เป็นหน่วยความจำกายภาพเพียงแค่ "สร้างใหม่" ฮาร์ดแวร์ MMU ไม่สามารถแมปโดยตรงกับอุปกรณ์เก็บข้อมูลใด ๆ MMU สามารถโยนข้อผิดพลาดที่บอกเคอร์เนลว่ากระบวนการพยายามเข้าถึงหน่วยความจำที่ไม่ควรมี - และเคอร์เนลสามารถใช้กลไกนี้เพื่อดูว่ากระบวนการต้องการบางสิ่งบางอย่างกลับมาจากดิสก์ที่คิดว่าอยู่ในหน่วยความจำแล้วทำ " แลกเปลี่ยน" จุดที่เป็นระบบปฏิบัติการที่ตัดสินใจบันทึกหน้าลงดิสก์เพื่อให้สามารถใช้หน้าเหล่านั้นสำหรับกระบวนการอื่น ๆ ไม่ใช่ฮาร์ดแวร์