4GB보다 큰 .exe를 실행할 수 있습니까?


10

7-Zip에> 4GB SFX 아카이브 (자동 압축 풀림 아카이브)를 경고없이 만들었습니다. 받는 사람이 추출하려고하면 다음과 같은 오류 리본이 나타납니다.

여기에 이미지 설명을 입력하십시오

.exe4GB보다 크기 때문 입니다. 7-Zip을 설치 한 후 아카이브를 추출 할 수 있었지만 Windows가 왜 그런 실행 파일을 실행할 수 없는지 궁금합니다. 그리고 재정의를 통해 가능합니까?


2
일반적으로 32 비트 시스템으로는 불가능합니다
Ramhound

1
Ramhound가 말한 것을 확장하기 위해 7-Zip 자동 추출기는 32 비트 시스템의 경우 최대 액세스 크기가 4GB 인 RAM에 자체 저장 될 수 있습니다. 또한 아카이브가 메모리에 완전히 저장 될 필요가 없기 때문에 7-Zip을 추출 할 수 있었던 이유를 설명합니다 (아카이브가 견고한 지 또는 다른 압축 설정이 있는지에 따라 다름).
Doktoro Reichard

예, 처음에는 이것이 문제라고 생각했지만 16GB RAM으로 Win64를 사용하고 있습니다. 8GB에서도 사용하고 있습니다.
Louis Waweru

답변:


10

Windows는이 스레드에 따라 4GB보다 큰 실행 파일을 지원하지 않습니다.

http://sourceforge.net/p/sevenzip/discussion/45798/thread/337fc13e/

해설자 "Igor Pavlov"는 7-Zip의 제작자이자 관리자입니다. 그 의견은 다소 미묘하지만 , 같은 조언을 반복하는 다른 포럼이 소스 포지 포럼에 있습니다. 64 비트 OS에서 실행 파일을 실행하면 Windows 실행 파일의 크기 제한, 즉 Windows PE 형식 자체 의 제한이 될 수 있으므로 차이가 있다고 생각하지 않습니다 .

64 비트 프로그램 작성에 대한기사 는 다음을 제안합니다.

Win64 파일의 실행 파일 "이미지"(메모리에로드 된 코드 / 데이터)의 크기는 2GB로 제한됩니다. AMD64 / EM64T 프로세서는 대부분의 명령어에 상대적인 주소 지정을 사용하고 상대 주소는 dword로 유지되기 때문입니다. dword는 ± 2GB의 상대 값만 보유 할 수 있습니다.

아마도 Igor는 ± 2GB를 사용하여 4GB를 달성하는 방법을 생각해 냈습니다.


1
서명 된 소드의 범위는 2,147,483,647입니다. 부호없는 dword의 범위는 4,294,967,295이며이 숫자는 Windows와 그 외부의 32 비트 시스템에서 가장 많은 제한의 원인입니다.
Hashim

@Hashim은 절대적으로 정확합니다. 한도는 4GiB - 1B = 2^32 - 1 bytes = 4,294,967,295 bytes입니다. WinRAR을 사용하여 .EXE 파일 형식으로 자동 압축 풀림 보관 파일을 만들어 Windows 10 64 비트에서이를 확인할 수있었습니다. 크기의 실행 파일 4GiB은 시작되지 않지만 제대로 4GiB - 1B작동합니다.
Robin Hartmann

0

PE32에 대한 * .exe, * .dll 등과 같은 Windows 실행 파일 및 64 비트 버전 PE32 + (32 비트 및 64에 적용)에 4GB보다 큰 자체 추출 실행 파일을 갖는 것은 극단적 인 측면입니다. 비트 버전).

둘째, 실행 파일은 실행 전에 RAM에 완전히로드되며 Windows에 의해 제한받지 않더라도 (그러나 당신은) 하드웨어에 의해 쉽게 제한 될 수 있습니다.이 경우 실제 RAM의 양입니다.


내가 아는 것처럼 Windows가 exe 파일의 특정 섹션 만로드하고 리소스가있는 전체 파일을로드하지 않도록하는 방법이 있습니다. 나는 많은 대형 DOS 프로그램이 16 비트 x86의 한계 때문에 너무이 트릭을 사용할 생각이 너무 작
phuclv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.