32비트 응용 프로그램
프로세서 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
4비트 | 8비트 | 12비트 | 16비트 | 18비트 | 24비트 | 31비트 | 32비트 | 36비트 | 48비트 | 60비트 | 64비트 | 128비트 |
응용 프로그램 | ||||||||||||
16비트 | 32비트 | 64비트 | ||||||||||
데이터 크기 | ||||||||||||
니블 옥텟 바이트 워드 더블 워드 쿼드 워드 |
컴퓨터 구조론에서, 32비트 인티저, 주소 공간, 또는 다른 데이터 단위는 최대 32비트 (4 옥텟) 크기인 것을 말한다. 또한 32비트 CPU와 ALU 구조는 32비트 크기의 레지스터, 어드레스 버스 또는 데이터 버스를 기반으로 하는 것을 말한다. 32비트는 또한 32비트 프로세서가 표준인 컴퓨터 세대를 일컫는 용어이기도 하다. 32비트 응용 프로그램(32-bit application)은 32비트 평면 주소 공간(flat address space)에서 실행되는 소프트웨어이다.
32비트 응용 프로그램이라는 용어는 DOS와 마이크로소프트 윈도우가 처음부터 인텔 8088과 인텔 80286용으로 작성되었기 때문이다. [출처 필요] 두 프로세서는 세그먼트화된 주소공간을 가진16비트 마이크로프로세서다. 따라서 코드와 데이터가 64 킬로바이트 이상인 프로그램은 꽤 자주 세그먼트를 교체해야 했다. 이러한 동작은 다른 프로세서 동작에 비해 상당히 시간을 많이 소모하기 때문에, 응용 프로그램의 성능이 떨어지게 된다. 더욱이, C와 C++ 언어의 "C 메모리 모델" 환경인 경우, 세그먼트를 이용하는 프로그래밍은 평면 주소 공간에서 보다 더욱 복잡해진다.
IBM 호환 시스템의 경우, 16비트 소프트웨어에서 32비트 소프트웨어로의 이동은 '386이 소개되면서 가능해 졌다. 이 프로세서와 후속 프로세서들은 16비트 세그먼트와 32비트 세그먼트 주소공간을 지원했다(정확하게는 16비트 또는 32비트 어드레스 오프셋을 가진 세그먼트). 모든 32비트 세그먼트의 베이스 어드레스가 0으로 설정되고, 세그먼트 레지스터를 명시적으로 사용하지 않으면, 세그멘테이션은 16비트 주소 공간처럼 계산된다. 그럼에도 불구하고 호환성의 문제 때문에, 많은 소프트웨어가 16비트 모델용으로 작성되었다.
마이크로소프트 윈도우나 OS/2와 같은 운영 체제는 32비트 프로그램뿐만 아니라 16비트 프로그램도 실행할 수 있게 한다. 16비트 프로그램을 지원하는 것은 하위 호환성을 위한 것이고, 32비트 프로그램을 지원하는 것은 새로운 소프트웨어 개발을 위한 것이다.
참고 자료
![](http://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Heckert_GNU_white.svg/20px-Heckert_GNU_white.svg.png)