{{위키데이터 속성 추적}}
'''실행 파일 압축'''은 말 그대로 [[실행 파일]]을 [[데이터 압축|압축]]하는 것을 말한다. 수많은 실행 파일 압축 프로그램이 존재하며, 이러한 프로그램들은 [[MS-DOS]] 시절부터 존재해왔다. 줄여서 '''실행 압축'''이라고도 부른다.

== 장단점 ==
[[소프트웨어]] 개발자들이 실행 파일 압축을 사용하는 까닭은 많은데, 주로 소프트웨어의 [[기억 장치]]의 용량을 줄이는 것이 목적이다. 실행 압축 프로그램의 목적은 실행 코드를 압축하는 것이며 [[gzip]], [[ZIP (파일 포맷)|zip]], [[Bzip2]]와 같은 표준 [[데이터 압축]] 기능보다 더 나은 [[압축률]]을 보이고 있다.{{출처|날짜=2007-12-18}} [[CD-ROM]], [[DVD-ROM]], [[플로피 디스크]]와 같은 용량이 제한된 매체에 쓰이며, [[인터넷]]의 경우 다운로드 시간을 줄이기 위해서 사용되기도 한다.

[[PE 포맷]]으로 되어 있는 실행 파일을 압축할 때의 한 가지 장점으로는 [[컴퓨터 보안|보안]]을 들 수 있다. 어떠한 프로그램 안의 데이터를 분석하는 프로그램을 사용하여 프로그래머가 짠 내용을 분석하지 못하게 막을 수 있다. [[한글화 패치|한글 패치]]를 만들 때에도 이러한 프로그램이 이용되기도 한다.

압축된 실행 파일은 파일 시스템의 공간을 덜 차지하기 때문에 파일 시스템으로부터 데이터가 메모리에 전송되는 시간이 덜 걸린다. 한편, 실행 직후 데이터의 압축을 푸는 시간이 좀 걸릴 수 있다. 다만, 다양한 저장 매체의 속도는 평균적인 프로세서 속도를 따라잡지 못했기 때문에 저장 장치는 자주 병목 현상을 겪는다. 그러므로 압축된 실행 파일은 대부분의 시스템에서 더 빨리 실행될 것이다. 일부 [[대한민국]] 웹에서는 압축된 실행 파일을 실행할 때 비록 시스템 메모리를 더 잡아먹지만 속도가 빨라진 것을 바로 느낄 수 있다는 의견이 있던 반면, 그렇지 못하는 경우도 많다는 의견도 있었다.{{출처|날짜=2007-12-18}} 현대의 데스크톱 컴퓨터에서 실행 파일이 비정상적으로 크지 않다면 눈치채기 쉽지 않기 때문에 실행 속도를 빠르게 하는 것이 실행 파일을 압축하는 주된 이유라고 볼 수는 없다.

실행 파일마다 압축 프로그램의 특성을 타는 경우가 있다. 이를테면, [[UPX]]로 압축한 실행 파일은 정상 동작하는 반면, [[ASPack]]로 압축한 실행 파일은 정상 동작하지 않는 경우가 있고 그 반대의 경우도 있다. 또 이러한 실행 파일 압축 프로그램은 [[라이브러리]] 파일도 압축할 수 있으며 이러한 라이브러리 파일도 특성을 탈 수 있다. 따라서 실행 압축을 하기 앞서 [[백업]]을 하는 것이 권장되며, 압축을 한 뒤에 적절한 테스트가 요구된다.

디스크의 실행 파일 이미지를 읽는 운영 체제에서([[가상 메모리]]를 참조하라), 압축된 실행 파일은 이러한 작업의 효율성을 떨어트릴 수 있다. 압축 해제 작업은 메모리 블록을 할당하여 압축되지 않은 데이터를 유지한다. 사용 여부에 관계 없이, 함께 실행되고 있는 다른 응용 프로그램의 메모리 리소스를 차지하려 하면서, 실행 파일이 로드되는 한 계속 할당된다. 운영 체제가 스왑 파일을 사용한다면(보통 메모리 부족을 겪지 않기 위해 사용한다), 압축되지 않은 데이터는 단순히 사용하지 않는 데이터 블록을 버린 뒤 실행 파일 이미지로부터 다시 로드하지 않고 메모리의 남은 공간을 넓힌다. 보통 눈에 잘 띄지 않지만, 실행 파일이 동시에 한 번 이상 실행될 때 문제가 될 수 있다.(운영 체제는 이미 로드된 데이터 블록을 다시 사용할 수 없고, 데이터는 새로운 메모리 블록으로 압축이 풀어져야 하며, 사용하지 않는 경우 독립적으로 스웨핑 처리가 되어야 한다.)

또다른 단점으로는 [[정적 라이브러리]] 압축 해제 프로그램만 보이는 것처럼, 일부 유틸리티는 [[런타임 라이브러리]] 독립을 더 이상 확인하지 않는다는 것이다.

또한, [[바이러스 검사 프로그램]]은 압축된 모든 실행 파일을 [[바이러스]]로 판단하는 경우가 있는데 압축 해제 부분이 바이러스에 대한 일부 문자열을 공유하기 때문이다. 요즘 나오는 대부분의 바이러스 검사 프로그램은 몇 가지 실행 압축 계층을 분석하여 내부에 있는 실제의 실행 파일을 검사할 수 있다.

실행 압축은 컴퓨터가 [[플로피 디스크]], 용량이 적은 [[하드 드라이브]]가 쓰였을 시절에 많이 쓰였다. 컴퓨터가 같은 크기의 공간에 더 많은 소프트웨어를 담을 수 있게 해 주었고 압축 파일의 해제 과정이 필요 없다는 것이 장점이었다. 그러나 실행 압축은 컴퓨터의 기억 공간이 커짐에 따라 잘 쓰이지 않게 되었다.

실행 압축은 [[데모씬]]과 같이 엄청나게 용량이 적은 [[데모 (컴퓨터 프로그래밍)|데모]] 프로그램을 설계하는 데 이용되기도 한다. 크리클럭([http://www.crinkler.net/])가 그 예로, 용량이 4096 바이트밖에 되지 않는다.

== 실행 압축 프로그램의 종류 ==
* [[UPX]] - [[자유 소프트웨어]] : 이 프로그램은 [[도스]], [[마이크로소프트 윈도우|윈도우]]용 실행 파일을 압축할 수 있다.
* [http://www.pelock.com .netshrink]
* [[ASPack]]
* [[CExe]]
* [[exe32pack]]
* [[eXPressor]]
* [[Fast Small Good|FSG]]
* [[MEW]] – 개발 중단
* [[NeoLite]]
* [[NsPack]] – [[닷넷 프레임워크|.NET]]
* [[PECompact]]
* [[PEPack]]
* [http://www.pelock.com PELock]
* [[PKLite32]]
* [[PEtite]]
* [[RLPack]]
* [[Shrinker32]]
* Upack – [[프리웨어]]
* [[WWPack]]
* [[PESpin]]
* [[BeRoEXEPacker]]
* [https://web.archive.org/web/20071228201809/http://madebits.com/netz/ .NETZ] – [[닷넷 프레임워크|.NET]]

[[도스]]용 실행 파일만 압축할 수 있는 프로그램:
* apack
* diet
* lzexe – 마이크로컴퓨터에서 공식적으로 널리 쓰인 첫 실행 파일 압축 프로그램.
* pklite
* [[UPX]]
* wwpack

[[ELF 파일 형식|ELF]] 파일을 압축할 수 있는 프로그램:
* [[gzexe]]
* [[UPX]]

== 같이 보기 ==
* [[데이터 압축]]
* [[디스크 압축]]
* [[실행 파일]]
* [[UPX]]
* [[자체 압축 풀림]] (SFX)

[[분류:압축 소프트웨어]]
[[분류:프로그래밍 도구]]