มีข้อเสียคือการมีหน่วยความจำแอปพลิเคชันประกอบด้วยหลายชิ้นที่อยู่ห่างจากกันแล้วในทางทฤษฎีสิ่งที่สามารถทำได้ถ้าหน่วยความจำแอปพลิเคชันทั้งหมดได้รับการจัดสรรเป็นก้อนใหญ่?
คุณจะต้อง:
ดูว่าหน่วยความจำเสมือนและฟิสิคัลคืออะไรและวิธีการแม็พ
ดูว่าการแคชเสร็จสิ้นในเลเยอร์เสมือนหรือฟิสิคัลบนสถาปัตยกรรมของคุณ
ดูว่าระบบปฏิบัติการของคุณทำงานอย่างไร
หน่วยความจำกายภาพที่แยกส่วนสำคัญหรือไม่ เฉพาะในกรณีที่ผลลัพธ์เป็นแผนที่เสมือนจริงที่ซับซ้อนมากขึ้น (mmu ฯลฯ ) บล็อกเสมือนจริงที่ต่อเนื่องกันซึ่งมีอยู่จริงไม่ใช่วัตถุต่อเนื่องกันอาจส่งผลให้เกิดแผนที่การค้นหาที่ซับซ้อนมากขึ้น ลีนุกซ์มีขนาดหน้าต่าง ๆ ที่มันสามารถใช้ได้, มันจะพยายามใช้มันให้ใหญ่ที่สุดเท่าที่จะทำได้ (เพื่อให้ตรงกับ malloc ที่สุด) ในระบบของฉัน Debian jessie ที่มีเคอร์เนล 4.6.0-0 amd64 ฉันมีขนาดหน้า 4k (ใช้งาน 154964), 2M (ใช้งาน 3753) และ 1G (ใช้งาน 1)
หน่วยความจำเสมือนที่กระจัดกระจายมีความสำคัญหรือไม่ ฉันไม่สามารถเห็นได้ว่ามันทำเช่นนั้นหากกระบวนการร้องขอบล็อกหลายบล็อกที่มี malocs หลายรายการจากนั้นจะเห็นว่าเป็นบล็อกแยกแม้ว่าจะอยู่ติดกัน หนึ่ง maloc จะต้องต่อเนื่องในเสมือน ระบบรักษาความปลอดภัยอาจ แต่บล็อกป้องกันระหว่างแต่ละบล็อก maloced จึงป้องกันพวกเขาอยู่ติดกัน
บน Linux จำนวนมากจะถูกใช้ร่วมกันระหว่างกระบวนการ: หากไฟล์ปฏิบัติการเดียวกันพวกเขาจะแบ่งปันบล็อกที่อ่านได้อย่างเดียวทั้งหมดของไฟล์ปฏิบัติการ (ข้อความ data-ro ฯลฯ ) พวกเขาจะแชร์ข้อมูลเริ่มต้น (ข้อมูล) จนกระทั่งหนึ่งในนั้นเปลี่ยนหน้าจากนั้นหน้านี้จะถูกคัดลอก เช่นเดียวกันกับไลบรารีที่เชื่อมโยงแบบไดนามิกทั้งหมดดังนั้นพวกเขาจะแบ่งปันสิ่งเหล่านี้มากมาย นอกจากนี้ไฟล์บนดิสก์ยังเป็น swap สำหรับหน่วยความจำนี้ด้วยดังนั้นมันจะไม่รบกวนการอ่านข้อมูลจนกว่ามันจะต้องการ (โปรแกรมจะเริ่มทำงานโดยไม่มีการอ่านใด ๆ เลยซึ่งจะส่งผลให้พลาด ram และหน้า กำลังอ่านอยู่จากนั้นโปรแกรมจะทำงานจนกว่าจะมีการพลาดอื่น ๆ เป็นต้น) หากมีการขาดหน่วยความจำหน้าสามารถลดลงมันสามารถอ่านได้อีกครั้งหลัง (ไม่จำเป็นต้องสลับออก) สิ่งนี้อาจทำให้เกิดการอ่านดิสก์จำนวนมากเมื่อหน่วยความจำเหลือน้อยทำให้การเริ่มต้นทำงานช้าลง
(บางสถาปัตยกรรมแคชหน่วยความจำกายภาพ: นี่เป็นสิ่งที่ชัดเจนที่สุดหน่วยความจำเสมือนแคชอื่น ๆ : สิ่งนี้อาจส่งผลให้หน่วยความจำกายภาพเดียวกันถูกแคชสองครั้งนี่สิ้นเปลือง แต่ง่ายกว่าและเร็วกว่าบางสถาปัตยกรรมทำได้ทั้งแคชเสมือนที่ระดับ 1 ในกรณีที่จำเป็นต้องรวดเร็วแคชทางกายภาพในระดับอื่นที่จำเป็นต้องมีหน่วยความจำที่มีประสิทธิภาพ)