เหตุใด Windows รุ่น 64 บิตจึงใหญ่กว่ารุ่น 32 บิต


56

ความแตกต่างในขนาดสำหรับภาพ Windows 8 Consumer Preview ISOระหว่าง 64 บิตและ 32 รุ่นเป็น800 Mb หรือความแตกต่างของ24%

ฉันไม่เคยเห็นความแตกต่างที่มีขนาดใหญ่มาก

ทำไมถึงมีความแตกต่างเช่นนี้?

คำตอบ:


77

มีสาเหตุหลายประการสำหรับความคลาดเคลื่อนของขนาด:

  1. Windows 64 บิตมีเลเยอร์การแปล (Windows 32 บิตบน Windows 64 บิตหรือ " WoW64 ") ที่อนุญาตให้เรียกใช้ซอฟต์แวร์แบบ 32 บิต
  2. Windows 64 บิตยังมีโปรแกรมต่าง ๆ (Internet Explorer) และไลบรารี่ (ในโฟลเดอร์ WinSxS) รุ่น 32 บิต ดังที่ระบุไว้ในความคิดเห็นนี่คือเหตุผลที่สำคัญที่สุดสำหรับความแตกต่างของขนาด
  3. ที่อยู่หน่วยความจำ 64- บิตนั้นยาวเป็นสองเท่าของที่อยู่หน่วยความจำ 32- บิตดังนั้นพอยน์เตอร์ 64- บิตจึงมีความยาวเป็นสองเท่า โปรแกรม 64 บิตที่ใช้งานพอยน์เตอร์ขนาดใหญ่จะเห็นได้ชัดว่าใหญ่กว่าโปรแกรม 32 บิต

เหตุผลแรกและครั้งสุดท้ายไม่ได้มีส่วนร่วมเกือบเท่าซอฟต์แวร์ 32 บิตที่มาพร้อมกับ Windows 64 บิต - แต่เพื่อความครบถ้วนสมบูรณ์ที่พวกเขาควรจะได้รับการพิจารณา


4
สาเหตุหลักมาจากจุดที่ 1: sxsโฟลเดอร์ภายใน. iso เป็น 177m สำหรับ 32 บิต, 315m สำหรับ 64 บิต windowsโฟลเดอร์ภายในinstall.wimภายใน ISO คือ 7.9g สำหรับ 32bit, 11.9g สำหรับ 64bit และภายในโฟลเดอร์นั้นเรามีอีกWinSxSอันคือ 3.9g สำหรับ 32 บิตและ 6.9 กรัมสำหรับ 64 บิต สิ่งที่อยู่เคียงข้างกันเป็นก้อนข้อมูลที่ใหญ่ที่สุดที่นี่และมันมีไว้สำหรับทั้งแอพ 32 บิตและ 64 บิตใน Windows เวอร์ชั่น 64 บิต การมีไบนารีที่ใหญ่ขึ้นและแอพพลิเคชั่นสองเวอร์ชันบางรุ่นแทบไม่มีผลกระทบกับขนาดของไอโซ
akira

26
ฉันไม่เห็นว่าจุด 3 จะส่งผลกระทบต่อขนาดภาพอย่างไร ค่าตัวชี้จำนวนน้อยมากถูกฮาร์ดโค้ดลงในซอร์สโค้ด เฉพาะที่จะใช้พื้นที่ในไบนารีซอฟต์แวร์ (มากกว่าภาพ RAM เมื่อซอฟต์แวร์ทำงาน)
Konrad Rudolph

10
สำหรับ (1) Wow64 .DLL ทั้งหมดใช้เวลาน้อยกว่า 1MB ในการติดตั้ง Win7 Pro ของฉัน สำหรับ (3) @KonradRudolph ถูกต้อง ไม่มีเหตุผลที่แท้จริงสำหรับการขยายตัวของรหัสที่แท้จริงจากการเปลี่ยนจาก 32 เป็น 64 บิต - มีการเปลี่ยนแปลง opcodes เล็กน้อยแม้ว่าส่วนใหญ่จะยังคงมีความกว้าง 32- บิตเท่านั้น (x86 เป็นสถาปัตยกรรมคำสั่งที่มีความยาวผันแปร) ความแตกต่างส่วนใหญ่เกิดขึ้นจาก (2)
ฝ่าฝืน

3
@akira sxsโฟลเดอร์เกี่ยวข้องกับ (2) ไม่ใช่ (1) แอสเซมบลีแบบเคียงข้างกันไม่ได้เป็นส่วนหนึ่งของ WoW64 แม้ว่า DLLs 32- บิตจะดำเนินการภายใต้ WoW64 อย่างไรก็ตามโฟลเดอร์ WinSxS มีไว้เพื่อให้บริการไบนารี 32- บิตและ 64- บิตสำหรับโปรแกรมที่ต้องการ DLL ที่เกี่ยวข้อง - โดยพื้นฐานแล้วมีทั้ง DLL รุ่น 32 บิตและ 64 บิต
Breakthrough

3
@CrisStringfellow: ไม่มีใครสงสัยเลย แต่ผลกระทบต่อขนาดโดยรวมของภาพ iso นั้นเกือบจะเป็นศูนย์ อันสำคัญของการเพิ่มขนาดนั้นเกิดจากการส่งข้อมูล 64 บิตและ 32 บิต (บางแอพพลิเคชั่น, dll จำนวนมาก [ส่วนใหญ่พบภายในWinSxSโฟลเดอร์ใน. iso])
akira

11

ในรุ่น 64 บิต Microsoft ปรับใช้ซอฟต์แวร์เพิ่มเติม ตัวอย่างเช่นมี Internet Explorer สองรุ่น (64 และ 32 บิต) อีกตัวอย่างหนึ่งคือระบบรันไทม์ทั้งหมดสำหรับWin32-การใช้งาน
นอกจากนี้รหัสไบนารีจะยิ่งใหญ่ขึ้น อาจเป็นผลรวมของสิ่งเหล่านี้สร้างความแตกต่างใหญ่


2

โดยทั่วไปแล้วรุ่น 64 บิตนั้นใหญ่กว่ารุ่น 32 บิตด้วยเหตุผลสองสามประการ

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

ข้อสองหากคอมไพล์ซอฟต์แวร์ทำงานภายใต้สภาพแวดล้อมรันไทม์เช่น. NET คุณจะไม่เห็นความแตกต่างของขนาดเนื่องจากคอมไพเลอร์สร้างรหัส (ระดับกลาง) เดียวกัน

ในที่สุด Windows รุ่น 64 บิตจะมีรุ่น 64 บิตที่สมบูรณ์พร้อมกับรุ่น 32 บิตบางส่วน จำเป็นต้องมีเนื่องจากซอฟต์แวร์บางตัวเป็น 32 บิตและจำเป็นต้องเรียกใช้โดยไม่มีการดัดแปลงใน Windows 64 บิต

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