คำถามติดแท็ก virtual-memory

8
การใช้งานหน่วยความจำเสมือนจาก Java ภายใต้ Linux ใช้หน่วยความจำมากเกินไป
ฉันมีปัญหากับแอปพลิเคชัน Java ที่ทำงานภายใต้ Linux เมื่อฉันเปิดแอปพลิเคชันโดยใช้ขนาดฮีพสูงสุดเริ่มต้น (64 MB) ฉันเห็นการใช้แอพพลิเคชั่นท็อปที่จัดสรรหน่วยความจำเสมือน 240 MB ให้กับแอปพลิเคชัน สิ่งนี้สร้างปัญหาบางอย่างกับซอฟต์แวร์อื่น ๆ บนคอมพิวเตอร์ซึ่งค่อนข้าง จำกัด ทรัพยากร หน่วยความจำเสมือนที่สำรองไว้จะไม่ถูกใช้เท่าที่ฉันเข้าใจเพราะเมื่อเราไปถึงขีด จำกัด ฮีปและการOutOfMemoryErrorโยน ฉันรันแอปพลิเคชันเดียวกันภายใต้ windows และฉันเห็นว่าขนาดหน่วยความจำเสมือนและขนาดฮีปมีความคล้ายคลึงกัน มีอยู่หรือไม่ว่าฉันสามารถกำหนดค่าหน่วยความจำเสมือนที่ใช้สำหรับกระบวนการ Java ภายใต้ Linux ได้หรือไม่ แก้ไข 1 : ปัญหาไม่ใช่ฮีป ปัญหาคือถ้าฉันตั้งค่า Heap เป็น 128 MB ตัวอย่างเช่น Linux ยังคงจัดสรรหน่วยความจำเสมือน 210 MB ซึ่งไม่จำเป็นเลยทีเดียว ** แก้ไข 2 : การใช้ulimit -vช่วยให้ จำกัด จำนวนหน่วยความจำเสมือน …

4
เหตุใดหน่วยความจำนี้จึงไม่กินหน่วยความจำจริงๆ
ฉันต้องการสร้างโปรแกรมที่จะจำลองสถานการณ์ out-of-memory (OOM) บนเซิร์ฟเวอร์ Unix ฉันสร้างหน่วยความจำที่กินง่ายสุด ๆ นี้: #include <stdio.h> #include <stdlib.h> unsigned long long memory_to_eat = 1024 * 50000; size_t eaten_memory = 0; void *memory = NULL; int eat_kilobyte() { memory = realloc(memory, (eaten_memory * 1024) + 1024); if (memory == NULL) { // realloc failed here - we …

4
ความแตกต่างระหว่างหน่วยความจำเสมือนและหน่วยความจำกายภาพคืออะไร?
ฉันมักสับสนกับแนวคิดของการจำลองเสมือนในระบบปฏิบัติการ พิจารณา RAM เป็นหน่วยความจำกายภาพทำไมเราต้องใช้หน่วยความจำเสมือนในการดำเนินการกระบวนการ? หน่วยความจำเสมือนนี้อยู่ที่ไหนเมื่อกระบวนการ (โปรแกรม) จากฮาร์ดไดรฟ์ภายนอกถูกนำไปยังหน่วยความจำหลัก (หน่วยความจำกายภาพ) เพื่อดำเนินการ ใครดูแลหน่วยความจำเสมือนและขนาดของหน่วยความจำเสมือนคืออะไร? สมมติว่าขนาดของ RAM คือ 4GB (เช่นช่องว่างที่อยู่ 2 ^ 32-1) ขนาดของหน่วยความจำเสมือนคืออะไร?

10
เหตุใดระบบ x86-64 จึงมีพื้นที่แอดเดรสเสมือน 48 บิตเท่านั้น
ในหนังสือฉันอ่านสิ่งต่อไปนี้: โปรเซสเซอร์ 32 บิตมีแอดเดรสที่เป็นไปได้ 2 ^ 32 ในขณะที่โปรเซสเซอร์ 64 บิตปัจจุบันมีพื้นที่แอดเดรส 48 บิต ความคาดหวังของฉันคือถ้าเป็นโปรเซสเซอร์ 64 บิตพื้นที่แอดเดรสควรเป็น 2 ^ 64 ผมเลยสงสัยว่าเหตุผลของข้อ จำกัด นี้คืออะไร?

2
การเพจ x86 ทำงานอย่างไร
คำถามนี้มีขึ้นเพื่อเติมเต็มสุญญากาศของข้อมูลฟรีที่ดีเกี่ยวกับเรื่องนี้ ฉันเชื่อว่าคำตอบที่ดีจะเข้ากันได้กับคำตอบ SO ขนาดใหญ่หนึ่งคำหรืออย่างน้อยก็ในสองสามคำตอบ เป้าหมายหลักคือการให้ข้อมูลที่เพียงพอแก่ผู้เริ่มต้นที่สมบูรณ์เพื่อให้พวกเขาสามารถใช้คู่มือได้ด้วยตนเองและสามารถเข้าใจแนวคิดพื้นฐานของระบบปฏิบัติการที่เกี่ยวข้องกับการเพจ แนวทางที่แนะนำ: คำตอบควรเป็นมิตรกับผู้เริ่มต้น: ตัวอย่างที่เป็นรูปธรรม แต่อาจทำให้เข้าใจง่ายมีความสำคัญมาก ยินดีต้อนรับการประยุกต์ใช้แนวคิดที่แสดง การอ้างแหล่งข้อมูลที่มีประโยชน์เป็นสิ่งที่ดี ยินดีต้อนรับการพูดนอกเรื่องเล็กน้อยเกี่ยวกับวิธีการที่ระบบปฏิบัติการใช้คุณสมบัติการเพจ ยินดีต้อนรับคำอธิบาย PAE และ PSE ยินดีต้อนรับการพูดนอกเรื่องขนาดเล็กเป็น x86_64 คำถามที่เกี่ยวข้องและเหตุใดฉันจึงคิดว่าไม่ใช่สิ่งที่ถูกหลอก: ตารางหน้า x86 ทำงานอย่างไร : ชื่อเกือบจะเหมือนกับคำถามนี้ แต่เนื้อหาจะถามคำถามเฉพาะที่เกี่ยวข้องกับ cr3 และ TLB คำถามนั้นเป็นส่วนย่อยของคำถามนี้ x86 virtualization ทำงานอย่างไร : body ขอเฉพาะแหล่งที่มา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.