ฉันจะพยายามเริ่มต้นอย่างช้าๆจากนั้นรวบรวมทั้งหมดให้คุณ มันเป็นเช่นนี้:
หน่วยความจำเสมือนที่ใช้กันทั่วไปหมายถึง "การเพจ" ตามชื่อที่แนะนำเพจนั้นเหมือนกับสมุดบันทึกของมนุษย์
เมื่อคุณหาผลรวมง่าย ๆ หรือเรียนรู้ข้อมูลอย่างง่ายคุณทำได้ทั้งหมดในหัวของคุณ: คุณเพียงแค่โหลดข้อมูลทั้งหมดประมวลผลและรับคำตอบ เหมือนคอมพิวเตอร์กำลังโหลดไฟล์จากฮาร์ดไดรฟ์ - มันโหลดโปรแกรมหรือรูปภาพหรือข้อมูลอื่น ๆ ที่จำเป็นในการทำงานใน "หน่วยความจำจริง" (หรือ "หน่วยความจำกายภาพ") และทำงานกับมันด้วย "สมอง" ( โปรเซสเซอร์ของมัน)
อย่างไรก็ตามเมื่อคุณเรียนรู้ข้อมูลที่ซับซ้อนหรือทำงานกับผลรวมที่ซับซ้อนคุณอาจไม่สามารถพอดีกับสิ่งที่อยู่ในหัวของคุณในครั้งเดียว คุณสับสนเริ่มช้าลงไม่เก็บมันไว้ในนั้นในทันทีและต้องลืมสิ่งที่ต้องจำอย่างอื่น
ทางออกของมนุษย์คือการใช้แผ่นจดบันทึก เราจดบันทึกหน้าต่างๆทุกสิ่งที่เราจำไม่ได้ในครั้งเดียว แต่ให้อ้างอิงในขณะทำผลรวม เราอาจไม่สามารถจำรายชื่อยอดขายจำนวนมากในแต่ละเดือน แต่เราสามารถดูหน้าต่างๆรับข้อมูลได้ครั้งละเล็กน้อยและประมวลผลแต่ละบิต มันเหมือนกับคอมพิวเตอร์ "เพจจิ้ง" หน่วยความจำของมัน - การเขียนหน้าเต็มของข้อมูลและวางลงใน "หน่วยความจำเสมือน" สำหรับการอ้างอิงในภายหลังและตระหนักว่ามันต้องการหน้าและโหลดหน้านั้นจากหน่วยความจำเสมือนลงในหน่วยความจำจริง บน linux และ unix สถานที่ที่จัดเก็บหน้าเหล่านี้เรียกว่า "pagefile" อย่างแท้จริงและหน้าของข้อมูลในหน่วยความจำจะเรียกว่า "pages" อย่างแท้จริง ระบบที่ต่างกันมีชื่อแตกต่างกันสำหรับสิ่งเหล่านี้ แต่แนวคิดทั่วไปนั้นเหมือนกันมาก
ดังนั้นการเพจจึงง่ายมาก หน้าข้อมูลทั้งหมดไม่พอดีกับหน่วยความจำดังนั้นบางหน้าจึงใส่ดิสก์และโหลดอีกครั้งในภายหลัง
ตอนนี้ที่ที่มันมีความซับซ้อนมากขึ้นคือระบบที่ทันสมัยมีการแมปหน่วยความจำและการป้องกันหน่วยความจำซึ่งมักจะถูกจัดการโดยระบบฮาร์ดแวร์เดียวกันในคอมพิวเตอร์: หน่วยจัดการหน่วยความจำหรือ MMU
ในคอมพิวเตอร์แบบมัลติทาสก์ (ทันสมัย) ซึ่งสามารถเรียกใช้หลายโปรแกรมพร้อมกันและมีการป้องกันหน่วยความจำแต่ละโปรแกรมมักจะแยกจากโปรแกรมอื่นที่รันบนระบบเดียวกัน ด้วยวิธีนี้โปรแกรมหนึ่งไม่สามารถเปลี่ยนโปรแกรมอื่นได้อย่างง่ายดายโดยการเข้าถึงหน่วยความจำของโปรแกรม MMU จะแยกพื้นที่ที่อยู่ของโปรแกรมหนึ่งออกจากโปรแกรมอื่น กล่าวคือโปรแกรมของผู้ใช้ไม่เห็นโปรแกรมของผู้ใช้รายอื่นหรือแม้แต่โปรแกรมอื่น ๆ พวกเขาไม่เห็น "หน่วยความจำจริง" - พวกเขาเห็น "หน่วยความจำเสมือน" ของตัวเอง
ทีนี้แนวคิดการแยกหน่วยความจำและแนวคิดไฟล์เพจนั้นมีสองสิ่งที่แตกต่างกันในแนวคิดซึ่งอาจเป็นสาเหตุที่ทำให้คุณสับสน อย่างไรก็ตามคีย์คือทั้งคู่ทำงานโดยใช้ MMU - หน่วยจัดการหน่วยความจำซึ่งแยกหน่วยความจำออกเป็นหน้า ๆ และแมปเพจกับพื้นที่ที่อยู่เสมือน
ดังนั้นเมื่อโปรแกรมขอหน่วยความจำที่ "ที่อยู่หน่วยความจำ" บางอย่างสิ่งที่เกิดขึ้นจริงคือหน้าหน่วยความจำของโปรแกรมนั้นและที่อยู่ที่สอดคล้องกัน (ที่อยู่ของโปรแกรม "พื้นที่ที่อยู่") ของโปรแกรมและหน้าเว็บที่สอดคล้องกับ พบบล็อกหน่วยความจำนั้น เพจนั้นสามารถโหลดได้ที่ไหนสักแห่งในหน่วยความจำจริงซึ่งในกรณีนี้โปรแกรมจะได้รับการเข้าถึงหรือสามารถเอาเพจออกไปยังดิสก์ได้ ถ้าเพจถูกเพจเอาต์ทริกเกอร์ "page fault" - เข้าถึงดิสก์และเพจถูกโหลดเข้าสู่หน่วยความจำ ดังนั้นโปรแกรมจะทำงานแม้ในขณะที่หน่วยความจำไม่เพียงพอ แต่มันจะทำงานช้าถ้ามันต้องใช้ดิสก์สำหรับสิ่งที่ปกติจะเป็นการเข้าถึงหน่วยความจำที่รวดเร็วมาก
ตอนนี้หากมีพื้นที่ไม่เพียงพอในการโหลดหน้านั้นลงในหน่วยความจำแสดงว่าคุณมีปัญหา ในกรณีนั้นหน้าอื่น ๆ ที่อยู่ในหน่วยความจำจะต้อง "สลับ" ไปยังดิสก์ดังนั้นหน้าแรกของโปรแกรมสามารถโหลดได้ หรืออาจเป็นหน้าจากโปรแกรมเดียวกัน คุณจะเห็นสิ่งนี้ในบางครั้งในโปรแกรมกราฟิกเช่นในระบบที่มีการโหลดสูงเมื่อส่วนหนึ่งของรูปภาพถูกโหลดช้าและวาดได้อย่างรวดเร็วส่วนต่อไปจะถูกโหลดอย่างช้าๆและวาดอย่างรวดเร็วและเมื่อคุณกลับไปทำงานกับระบบแรก ส่วนมันช้าอีกครั้ง นั่นเป็นเพราะพวกเขากำลังโหลดเพื่อทำงานต่อจากนั้นสลับออกอีกครั้งเพื่อให้สามารถทำงานอย่างอื่นได้ เห็นได้ชัดว่านี่เป็นวิธีการทำงานที่ช้ามากและสิ่งที่คุณต้องการคือหน่วยความจำ REAL ที่มากกว่า