ประโยชน์คือ:
- ในขณะที่รวบรวมรหัส / ภารกิจที่คอมไพเลอร์ / ลิงเกอร์มีการตัดสินใจ / กำหนดที่อยู่ของรหัส / ข้อความ (คำแนะนำ), ข้อมูล (ตัวแปรทั่วโลก), สแต็ค
ระบบที่มี MMU (หน่วยจัดการหน่วยความจำ) (เช่นรองรับหน่วยความจำเสมือน)
คอมไพเลอร์ / ลิงเกอร์สามารถใช้ที่อยู่ใดก็ได้ตามที่ต้องการ ในขณะที่รหัสกำลังดำเนินการ MMU จะแปลที่อยู่เสมือนเป็นที่อยู่จริง
ระบบที่ไม่มี MMU:คอมไพเลอร์และตัวเชื่อมโยงจะต้องกำหนดที่อยู่ขึ้นอยู่กับหน่วยความจำระบบ เพราะไม่ควรใช้พื้นที่หน่วยความจำของงานอื่น
ข้อได้เปรียบ:คอมไพเลอร์ / ลิงเกอร์ไม่จำเป็นต้องกังวลเกี่ยวกับแผนที่หน่วยความจำของระบบ
- การเขียนโปรแกรมของงานจะง่ายขึ้นเนื่องจากพื้นที่หน่วยความจำที่จัดสรรให้กับงานนั้นสูงมากเมื่อเทียบกับความพร้อมใช้งานของหน่วยความจำระบบ (ซึ่งทำได้โดยการเก็บข้อมูล / รหัสที่จำเป็นในหน่วยความจำหลัก
- ฟังก์ชั่นบริการระบบไม่จำเป็นต้องทำซ้ำ ที่อยู่เสมือนของบริการระบบทั้งหมดของงานทั้งหมดอาจถูกแมปไปยังที่อยู่ทางกายภาพเดียวกันซึ่งมีบริการระบบ
- กล่าวง่ายๆว่าการจัดสรรหน่วยความจำไม่จำเป็นต้องได้รับการพิจารณาในขณะที่เข้ารหัสงานที่จะได้รับการจัดการในขณะที่ดำเนินงานโดย MMU
Coming to your Question:
If virtual memory is stored in main memory, then why even use it in the first place?Why not just use main memory?
หน่วยความจำ / ที่อยู่ Vitural เป็นตัวแทนของที่อยู่ทางกายภาพ / หน่วยความจำ การเป็นตัวแทนนี้ช่วยให้การใช้งานมัลติทาสกิ้งง่ายขึ้นการจัดการหน่วยความจำการพัฒนางานโดยไม่มีรายละเอียดหน่วยความจำระบบ