Virtual Memory มีประโยชน์อย่างไรบ้าง?


3

ดังนั้นฉันจึงอ่านข้อมูลเกี่ยวกับหน่วยความจำเสมือนและดูเหมือนว่าจะตรงไปตรงมาและใช้งานได้จริง อย่างไรก็ตามฉันสำลักกับแนวคิดหลักหนึ่ง

หากหน่วยความจำเสมือนถูกเก็บไว้ในหน่วยความจำหลักทำไมถึงต้องใช้มันตั้งแต่แรก? ทำไมไม่ใช้หน่วยความจำหลัก?

ฉันแน่ใจว่าฉันพลาดอะไรบางอย่างที่นี่เพียงแค่ยังไม่เข้าใจอะไรเลย


1
> หากหน่วยความจำเสมือนถูกเก็บไว้ในหน่วยความจำหลัก …ฉันคิดว่านั่นเป็นส่วนที่คุณจะต้องอ่านใหม่อีกครั้ง
slhck

คิดว่ามันเป็นหน่วยความจำเสมือนพื้นที่ที่อยู่และหน่วยความจำทางกายภาพช่องว่างอยู่ แต่ละกระบวนการคิดว่ามันมี 4GB ของ "ที่อยู่เสมือนเพราะโปรเซสเซอร์แยกกระบวนการจากกัน
surfasb

คำตอบ:


6

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

คอมพิวเตอร์ทุกวันนี้มี RAM มากกว่าที่พวกเขาต้องการดังนั้นการแลกเปลี่ยนจึงถูกย่อให้เล็กสุด (ซึ่งอาจส่งผลเสียต่อประสิทธิภาพการทำงาน) แต่มันก็ดีถ้ามีตัวเลือกการสลับเมื่อจำเป็น


3

หน่วยความจำเสมือนช่วยให้คุณสามารถรันแอพพลิเคชั่น 10 x 1 GB พร้อมกันในคอมพิวเตอร์ 2 GB

ความต้องการของเพจ

แทนที่จะโหลดโปรแกรมลงในหน่วยความจำและให้หน่วยความจำสำหรับข้อมูล VM จัดสรรพื้นที่บนดิสก์ (ไฟล์เพจหรือเทียบเท่า) สำหรับหน่วยความจำที่โปรแกรมต้องการ แต่ใช้ "demand paging" เพื่อโหลดลงในหน่วยความจำจริงเท่านั้น ของโปรแกรมและข้อมูลที่ต้องการได้ทุกจุด ชิ้นส่วนที่ใช้น้อย (เช่นรูทีนย่อยที่ไม่ค่อยได้ใช้) อาจไม่ถูกโหลดลงในหน่วยความจำจริง เมื่อจำเป็นต้องใช้หน่วยความจำจริงสำหรับโปรแกรมอื่นส่วนที่ไม่ได้ใช้หน่วยความจำจริงจะถูกใช้หากไม่มีหน้าทำความสะอาดที่เก่าแก่ที่สุดอาจถูกทิ้งหากไม่มีหน้าทำความสะอาดหลงเหลืออยู่หน่วย "หน่วยความจำสกปรก" ของหน่วยความจำบางส่วน หน้าเหมือนกับไฟล์ต้นฉบับที่โหลดมาจากไฟล์ไบนารีของโปรแกรมเราไม่จำเป็นต้องบันทึกสำเนาเพิ่มเติม) VM ติดตามทุกสิ่งนี้

แลกเปลี่ยน

ในอดีตที่ผ่านมาวิธีการจัดการหน่วยความจำที่แยกจากกันและมีความสิ้นหวังมากขึ้นที่เรียกว่าการสลับเป็นบางครั้งก็จำเป็น ทุกวันนี้มีการใช้คำศัพท์เกือบจะเหมือนกันหมด


สำหรับคำจำกัดความของ "run"
grawity

@RedGrittyBrick คุณหมายถึงอะไรโดยหน้าเว็บที่สะอาดและสกปรก ?
Geek

@Geek: หน้าสะอาดเป็นหน้าที่ไม่ได้มีการเปลี่ยนแปลงนับตั้งแต่ได้รับการจัดสรรหรือโหลดจากดิสก์ ดังนั้นจึงไม่จำเป็นต้องบันทึกเนื้อหาไว้ในดิสก์ก่อนใช้งานสำหรับกระบวนการอื่น หน้าสกปรกคือหน้าที่ถูกเขียนโดยกระบวนการดังนั้นเนื้อหาของพวกเขาจะต้องถูกบันทึกไว้ก่อนที่จะนำหน่วยความจำนั้นกลับมาใช้อีกกระบวนการหนึ่งเพื่อให้สามารถเรียกคืนหน้านั้นได้เมื่อกระบวนการเดิมเริ่มดำเนินการต่อ
RedGrittyBrick

@RedGrittyBrick ขอบคุณสำหรับคำชี้แจง
Geek

1

ประโยชน์คือ:

  1. ในขณะที่รวบรวมรหัส / ภารกิจที่คอมไพเลอร์ / ลิงเกอร์มีการตัดสินใจ / กำหนดที่อยู่ของรหัส / ข้อความ (คำแนะนำ), ข้อมูล (ตัวแปรทั่วโลก), สแต็ค

ระบบที่มี MMU (หน่วยจัดการหน่วยความจำ) (เช่นรองรับหน่วยความจำเสมือน)

คอมไพเลอร์ / ลิงเกอร์สามารถใช้ที่อยู่ใดก็ได้ตามที่ต้องการ ในขณะที่รหัสกำลังดำเนินการ MMU จะแปลที่อยู่เสมือนเป็นที่อยู่จริง

ระบบที่ไม่มี MMU:คอมไพเลอร์และตัวเชื่อมโยงจะต้องกำหนดที่อยู่ขึ้นอยู่กับหน่วยความจำระบบ เพราะไม่ควรใช้พื้นที่หน่วยความจำของงานอื่น

ข้อได้เปรียบ:คอมไพเลอร์ / ลิงเกอร์ไม่จำเป็นต้องกังวลเกี่ยวกับแผนที่หน่วยความจำของระบบ

  1. การเขียนโปรแกรมของงานจะง่ายขึ้นเนื่องจากพื้นที่หน่วยความจำที่จัดสรรให้กับงานนั้นสูงมากเมื่อเทียบกับความพร้อมใช้งานของหน่วยความจำระบบ (ซึ่งทำได้โดยการเก็บข้อมูล / รหัสที่จำเป็นในหน่วยความจำหลัก
  2. ฟังก์ชั่นบริการระบบไม่จำเป็นต้องทำซ้ำ ที่อยู่เสมือนของบริการระบบทั้งหมดของงานทั้งหมดอาจถูกแมปไปยังที่อยู่ทางกายภาพเดียวกันซึ่งมีบริการระบบ
  3. กล่าวง่ายๆว่าการจัดสรรหน่วยความจำไม่จำเป็นต้องได้รับการพิจารณาในขณะที่เข้ารหัสงานที่จะได้รับการจัดการในขณะที่ดำเนินงานโดย 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 เป็นตัวแทนของที่อยู่ทางกายภาพ / หน่วยความจำ การเป็นตัวแทนนี้ช่วยให้การใช้งานมัลติทาสกิ้งง่ายขึ้นการจัดการหน่วยความจำการพัฒนางานโดยไม่มีรายละเอียดหน่วยความจำระบบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.