หากระบบปฏิบัติการของฉันคือ 64 บิตแอปพลิเคชัน 32 บิตของฉันสามารถใช้หน่วยความจำ 64 บิต (> 3.5GB) ได้หรือไม่
หากระบบปฏิบัติการของฉันคือ 64 บิตแอปพลิเคชัน 32 บิตของฉันสามารถใช้หน่วยความจำ 64 บิต (> 3.5GB) ได้หรือไม่
คำตอบ:
หากแอปทราบ AWE แล้วพวกเขาสามารถใช้พื้นที่ที่อยู่เกิน 4Gb ได้ แต่จะมีประสิทธิภาพน้อยกว่าแอป 64 บิต เป็นไปได้สำหรับกระบวนการ 32- บิตภายใต้ตัวแปร Windows 32 บิตเพื่อเข้าถึงพื้นที่ที่อยู่ 32- บิตมากกว่าถ้าอนุญาต PAE ถูกเปิดใช้งานและกระบวนการสามารถใช้งานได้
บุคคลกระบวนการแบบ 32 บิต(นั่นคือไม่ AWE ตระหนัก)มักจะ จำกัด 3Gb (แรก Gb พื้นที่ที่อยู่เสมือนถูกสงวนไว้สำหรับการดำเนินการที่เกี่ยวข้องกับเคอร์เนล) แต่ถ้าคุณใช้กระบวนการหลาย ๆ แล้วพวกเขาก็จะสามารถที่จะใช้มากขึ้นใน ทั้งหมด (แต่ละอันสามารถใช้งานได้มากถึง 3Gb, การอนุญาตหน่วยความจำทั้งหมด)เนื่องจากพื้นที่ที่อยู่เสมือนไม่ได้ถูกแชร์
ขีด จำกัด ต่อกระบวนการมีประโยชน์มากขึ้นในสภาพแวดล้อมที่คล้าย Unix ที่บริการมักจะใช้กระบวนการแทนการใช้เธรด(หลายเธรดในกระบวนการหนึ่งใช้ทรัพยากรกระบวนการร่วมกันดังนั้นจึงแบ่งปันพื้นที่ที่อยู่เสมือน 3Gb เดียว)ตามปกติ ภายใต้ Windows (เริ่มกระบวนการใหม่ใน Windows เป็นค่อนข้างแพงดังนั้นหัวข้อที่ต้องการภายใต้สภาพแวดล้อมระบบปฏิบัติการยูนิกซ์ส่วนใหญ่เริ่มต้นกระบวนการใหม่ที่มีทรัพยากรไม่มากนานกว่าการเริ่มต้นหัวข้อใหม่) มันไม่ได้มีประโยชน์สำหรับเครื่องที่ใช้งาน SQL Server เพียงอย่างเดียวเพราะมันจะเป็นเพียงกระบวนการเดียวดังนั้นจะถึงขีด จำกัด 3Gb (บางรุ่นสามารถกำหนดค่าให้ AWE ทราบได้ แต่ไม่ใช่ทั้งหมดและ คุณลักษณะที่มีกำหนดจะถูกลบออกในรุ่นใหญ่ถัดไป)
เช่นเดียวกับกระบวนการ 32 บิตที่สามารถใช้งานได้มากกว่า 3Gb โดยรวมระบบปฏิบัติการจะสามารถใช้หน่วยความจำที่ไม่ได้ใช้สำหรับการแคชดิสก์ดังนั้นจึงอาจไม่ไปเสียเพราะสมมติว่ากระบวนการไม่เปิดไฟล์ในลักษณะนี้ เพื่อบอกให้ OS ไม่ต้องทำสิ่งนี้
หากแอปพลิเคชันใช้AWE แสดงว่าใช่ (แม้ว่าจะไม่ได้ จำกัด อยู่ที่ระบบปฏิบัติการ 64 บิต) หากไม่มีกระบวนการนี้จะยังคง จำกัด พื้นที่ที่อยู่ 4GB
Sorta ขึ้นอยู่กับสิ่งที่คุณหมายถึง
สมมติว่า Windows ...
หากระบบปฏิบัติการเป็นแบบ 64 บิตกระบวนการแบบ 32 บิตโดยค่าเริ่มต้นจะได้รับพื้นที่ที่อยู่เสมือนของผู้ใช้ 2 GB หากส่วนหัว PE ของไฟล์. exe ถูกทำเครื่องหมายด้วยการตั้งค่าสถานะ IMAGE_FILE_LARGE_ADDRESS_AWARE กระบวนการจะได้รับพื้นที่ที่อยู่เสมือน 4 กิกะไบต์ที่ผู้ใช้กำหนดแอดเดรสได้ ไม่ว่าในกรณีใดพื้นที่ที่อยู่เสมือนของเคอร์เนลจะเหมือนกับกระบวนการ 64 บิตเนื่องจากมีการใช้ร่วมกันในทุกกระบวนการ นอกจากนี้ยังทราบว่ากระบวนการ 64- บิตที่ไม่ได้ตั้งค่าสถานะ IMAGE_FILE_LARGE_ADDRESS_AWARE ยังมีการเข้าถึงพื้นที่ที่อยู่เสมือนของผู้ใช้ 2 GB เท่านั้น
สิ่งที่คุณได้ยินเกี่ยวกับการตั้งค่าสถานะการบูตพิเศษสวิตช์ 3 GB / 3GB หรือ / userva ทั้งหมดเกี่ยวกับระบบปฏิบัติการ 32 บิตและไม่ได้ใช้กับ Windows 64 บิต
นี้จะหายไปทั่วในระทมทุกข์รายละเอียดเกี่ยวกับไมโครซอฟท์ขีด จำกัด หน่วยความจำสำหรับ Windows ข่าวหน้า
คำตอบของ @David Spillett ก็สัมผัสกับอีกจุดหนึ่ง: กระบวนการหลายกระบวนการซึ่ง จำกัด อยู่ที่ 2 GB ของพื้นที่ผู้ใช้ทั้งหมดยังคงสามารถใช้ RAM จำนวนมากหากมีเช่นเดียวกับแคชไฟล์
กระบวนการ 32 บิตบนระบบปฏิบัติการ 32 บิตมีพื้นที่แอดเดรส 4GB ซึ่ง 2GB ถูกสงวนไว้โดยระบบปฏิบัติการและ 2GB พร้อมใช้งานสำหรับกระบวนการ
มีสวิตช์ที่สามารถระบุกับระบบปฏิบัติการ (/ 3GB) ที่เปลี่ยนจำนวนเงินที่สงวนไว้สำหรับระบบปฏิบัติการเป็น 1GB เท่านั้นและช่วยให้กระบวนการมี 3GB, BUT เท่านั้นหากกระบวนการประกาศว่าตนเองเป็นที่อยู่ขนาดใหญ่ที่ทราบในธง ของการปฏิบัติการ
บนระบบปฏิบัติการ 64 บิตกระบวนการ 32 บิตจะได้รับ 4GB หากเป็นที่อยู่ขนาดใหญ่ที่ทราบหรือไม่เช่นนั้นจะเป็น 2GB
ทั้งหมดนี้มีไว้สำหรับกระบวนการที่ไม่ทราบว่า AWE ถ้ากระบวนการนั้นสามารถใช้ AWE ได้อย่างที่คนอื่น ๆ พูดกันมันสามารถใช้พื้นที่ที่อยู่ขนาดใหญ่ แต่มีประสิทธิภาพน้อยกว่ากระบวนการแบบ 64 บิต
PAE อนุญาตให้ระบบปฏิบัติการ 32 บิตใช้ RAM มากกว่า 4GB ได้ แต่ก็มีปัญหาเรื่องความเข้ากันได้และถูกปิดการใช้งานใน XP โดยหนึ่งในเซอร์วิสแพ็คดังนั้นจึงมีเฉพาะในเวอร์ชัน OS ของเซิร์ฟเวอร์เท่านั้น