สิ่งที่ฉันเข้าใจเกี่ยวกับระบบปฏิบัติการ 32 บิตคือที่อยู่จะแสดงเป็น 32 บิตดังนั้นส่วนใหญ่ระบบปฏิบัติการสามารถใช้พื้นที่หน่วยความจำ 2 ^ 32 = 4GB
มากที่สุดว่ากระบวนการสามารถอยู่เป็น 4GB คุณยังอาจทำให้เกิดความสับสนหน่วยความจำที่มีพื้นที่ที่อยู่ กระบวนการสามารถมีหน่วยความจำมากกว่าพื้นที่ที่อยู่ เป็นสิ่งที่ถูกกฎหมายและเป็นเรื่องธรรมดาในการประมวลผลวิดีโอและแอพพลิเคชั่นที่ใช้หน่วยความจำมาก กระบวนการสามารถจัดสรรหน่วยความจำได้หลายสิบ GB และสลับไปมาระหว่างที่อยู่ที่ต้องการ เพียง 2 GB เท่านั้นที่สามารถเข้าไปในพื้นที่ที่อยู่ของผู้ใช้ในแต่ละครั้ง
หากคุณมีโรงจอดรถสี่คันที่บ้านของคุณคุณยังสามารถเป็นเจ้าของรถยนต์ห้าสิบคันได้ คุณไม่สามารถเก็บทุกอย่างไว้ในโรงรถของคุณ คุณต้องมีที่เก็บข้อมูลสำรองไว้ที่อื่นเพื่อจัดเก็บอย่างน้อย 46 แห่ง รถคันไหนที่คุณเก็บไว้ในโรงรถของคุณและรถคันไหนที่คุณเก็บไว้ในลานจอดรถตามถนนขึ้นอยู่กับคุณ
สิ่งนี้หมายความว่าระบบปฏิบัติการ 32 บิตใด ๆ ไม่ว่าจะเป็น Windows หรือ unix หากเครื่องมีไฟล์ RAM + หน้าบนฮาร์ดดิสก์มากกว่า 4GB เช่น 8GB RAM และไฟล์หน้า 20GB จะไม่มี "หน่วยความจำหมด" หรือไม่?
แน่นอนมันไม่ได้หมายความว่า กระบวนการเดียวอาจใช้หน่วยความจำมากกว่านั้น! ปริมาณหน่วยความจำที่กระบวนการใช้อีกครั้งนั้นแทบไม่เกี่ยวข้องกับปริมาณพื้นที่ที่อยู่เสมือนที่กระบวนการใช้ เช่นเดียวกับจำนวนรถยนต์ที่คุณเก็บไว้ในโรงรถของคุณนั้นไม่เกี่ยวข้องกับจำนวนรถยนต์ที่คุณเป็นเจ้าของ
นอกจากนี้ทั้งสองกระบวนการสามารถแบ่งปันหน้าหน่วยความจำไม่ส่วนตัว หากยี่สิบกระบวนการทั้งหมดโหลด DLL เดียวกันกระบวนการทั้งหมดแชร์เพจหน่วยความจำสำหรับรหัสนั้น พวกเขาไม่ได้มีส่วนร่วมในพื้นที่ที่อยู่หน่วยความจำเสมือนพวกเขาร่วมหน่วยความจำ
ประเด็นของฉันในกรณีที่มันไม่ชัดเจนก็คือคุณควรหยุดคิดถึงความทรงจำและพื้นที่ที่อยู่เหมือนกันเพราะมันไม่เหมือนกันเลย
หากเครื่อง OS 32 บิตนี้มีไฟล์ 2GB RAM และ 2GB เพจการเพิ่มขนาดไฟล์หน้าจะไม่ช่วยให้ประสิทธิภาพดีขึ้น มันเป็นเรื่องจริงเหรอ?
คุณมีรถยนต์ห้าสิบคันและโรงจอดรถสี่คันและที่จอดรถ 100 คันตามถนน คุณเพิ่มขนาดของลานจอดรถเป็น 200 จุด รถคันใดของคุณเร็วขึ้นเพราะคุณมีที่จอดรถเพิ่ม 150 คันแทนที่จะเป็นที่จอดรถเพิ่ม 50 คันหรือไม่?