제가 학부생때 많이 햇갈리던 개념이 있는데요, 64bit 운영체제, 32bit 운영체제, 64bit CPU, 32bit CPU 과 같은 개념들이었습니다.
제가 알고 있는 개념들로 어느정도 나름 알기쉽게 정리를 해 보도록 하겠습니다.
컴퓨터의 워드 사이즈 (Word size)
갑자기 무슨 이야기냐 하면, 워드사이즈 라는 개념을 알아야지 64비트, 32비트 머신(CPU)나 운영체제(OS)에 대한 개념을 이해하기 쉽습니다.
워드라고 하면, 직역하면 단어이죠.
아래 위키백과에 따르면 컴퓨팅에서 워드라는 단어는 컴퓨터의 데이터 기본 처리 단위라고 되어있는데, 이 말 그대로 받아들이시면 됩니다.
https://ko.wikipedia.org/wiki/%EC%9B%8C%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)
32비트, 64비트 하는 것은 워드 사이즈를 말하는 것입니다. 32비트 머신(CPU)라면 그 머신의 기본 데이터 처리 단위는 32비트가 되고, 64비트 머신이면 그 머신의 기본 데이터 처리 단위는 64비트가 되는 것입니다.
비트는 정보 처리의 단위니깐, 당연히 64비트 머신은 32비트 머신보다 한번에 처리할 수 있는 데이터의 크기가 2배가 되겠지요?
가능한 CPU와 운영체제 조합
32비트 64비트가 CPU에도 있고 운영체제에도 있습니다. 이분법적으로 나누어 생각해보면, 컴퓨터 시스템은 하드웨어와 소프트웨어가 있죠.
CPU는 하드웨어가 될 것이고, 운영체제는 소프트웨어가 됩니다.
그리고 CPU에 32비트, 64비트가 있고 운영체제에도 32비트, 64비트가 있는데 각자 HW / SW이므로 총 4가지 조합이 있을 수 있겠지요? 다음과 같이말입니다.
CPU | 운영체제 | 가능여부 | 동작 |
32bit | 32bit | O | 32bit |
64bit | X | 불가능 | |
64bit | 32bit | O | 32bit (하위호환) |
64bit | O | 64bit |
위와같이 생각하시면 됩니다.
32bit CPU에는 64bit 운영체제를 설치할 수 없습니다. 대신 32bit 운영체제를 설치할 수 있고, 32bit 모드로 동작하겠지요.
64bit CPU에는 32bit / 64bit 운영체제를 둘 다 설치할 수 있는데, 다만 32bit 운영체제를 설치하면 32bit 모드로 동작하게 됩니다. 64평짜리 집을 사 놓고, 32평만 사용하는 그런 느낌이지요.
다만 가능은 하다(호환된다) 라고 보시면 됩니다.
이렇게 나중에 나온 더 신식인 녀석(64비트 CPU)가 이전에 나온 구식인 녀석(32비트 CPU)을 사용할 수 있게 해주는 것을 하위 호환성(backward compatibility)라고 합니다.
32비트 시스템과 64비트 시스템의 차이
이제 32비트 시스템과 64비트 시스템의 차이에 대하여 이야기해보도록 하겠습니다.
메모리 주소 공간 크기의 차이(Memory addressing space size)
일단 기본처리 단위가 다르다보니, 프로세서의 레지스터의 크기부터 차이가 납니다. 32비트 프로세서의 범용 레지스터의 크기는 32비트 즉 4바이트이고, 64비트 프로세서의 범용 레지스터의 크기는 64비트, 즉 8바이트입니다.
이렇다 보니, 프로그램 카운터(Program Counter)의 크기로 각각 4바이트 8바이트가 되는데요.
메모리의 주소 모드(address mode)는 기본적으로 바이트당 주소를 하나 할당하는 방식(byte oriented addressing)이므로, 32비트 머신은 최대 32bit의 메모리 어드레싱이 가능하게 됩니다.
//(2^32//)byte의 메모리 주소 공간을 갖는다고 보면 되는데, 이는 4GB에 해당하게 됩니다. 따라서 32비트 머신은 최대 4GB의 메모리밖에 사용할 수 없는 셈이죠.
지금 이 글을 쓰는 시점에도 Windows 10의 커널 메모리 사용량이 꽤 크기 때문에, 쾌적한 컴퓨터 사용 환경을 위해서 가정용 개인 컴퓨터(PC)에도 보통 8GB이상의 메모리를 사용하곤 합니다. 이러한 점을 고려했을때, 32bit 프로세서와 운영체제의 조합은 조금 열악한 환경이 될 수 있겠지요.
그렇다면 64비트 머신은 //(2^64//)인 16엑사바이트의 메모리 주소를 갖겠군요! 라고 생각하실 수 있겠지만, 실제로는 하위 48bit만 사용합니다. 256TB에 해당하는 어드레싱 모드 범위인데요, 왜 그런가 하면 16엑사바이트만큼 큰 양의 메모리 어드레싱이 필요하지 않기 때문이지요.
나중에 필요한 메모리 사이즈와, 실제로 그러한 거대한 크기의 메모리를 만들 수 있다면, 언젠가는 64비트 주소 공간을 다 활용할 수도 있겠지만, 적어도 지금은 아닙니다.
실행가능한 어플리케이션 종류
아까 CPU와 운영체제 예를 들어서 운용 가능한 조합과 동작되는 모드에 대하여 표를 보여드렸는데요. 이는 또 어플리케이션(응용프로그램)에도 적용이 되는 부분입니다.
컴퓨터 시스템 | 어플리케이션 | 구동 가능 여부 | 구동 모드 |
32bit | 32bit | O | 32bit |
64bit | X | 구동 불가 | |
64bit | 32bit | O | 32bit (하위 호환) |
64bit | O | 64bit |
아까와 비슷한 형태의 표 이죠? 32bit 컴퓨터 시스템에서는 64bit 어플리케이션을 구동할 수 없습니다.
하지만 64비트 시스템에서는 32비트 및 64비트 어플리케이션 구동이 가능하지요. 32비트 앱을 실행할 수 있도록 하위 호환성이 유지되고 있는 것이지요.
다만 32비트 앱을 구동하기 위해서는 32비트 앱에 맞는 라이브러리를 별도로 설치해야 하는 경우는 있을 수 있긴 합니다.
본인이 만약 64비트 윈도우를 사용중이라면, 윈도우즈 탐색기를 켜서, 기본 드라이브(일반적으로 C드라이브)로 이동을 하면 다음과 같은 디렉토리가 있는 경우가 많습니다.
Program Files가 2개가 있는데 하나는 (x86)이라는 게 있지요? 이 (x86)이라고 되어있는 디렉토리에는 32bit 응용프로그램들이 설치가 되어있습니다. 괄호가 없는 Program Files에는 64비트 응용프로그램들이 있지요.
x86이라는 프로세서 아키텍쳐는 32비트 머신입니다.
반면 x64나 x86-64는 64비트 머신입니다.
따라서 앱 등을 설치할 때 본인의 컴퓨터 시스템이 32비트 모드라면 x86을 다운받아야하고, 아니라면 x64/x86-64나 x86이나 아무것이나 받아도 둘다 설치는 가능하고, 가급적이면 64비트용을 받는것이 유리하겠지요.
성능 부분
32비트 프로세서가 64비트 프로세서로 넘어가면서 이것저것 바뀐 것들이 있습니다. 성능적인 부분이나 보안적인 부분이나 기타 등등 다양한 부분이 조금씩 바뀌었는데요.
32비트 머신을 사용한다면 이러한 새로운 Feature들을 사용할 수 없는 경우가 대다수입니다. 눈에 띄개 성능이 다르진 않더라도 64비트 머신을 사용한다면, 적어도 32비트 머신을 사용할 때 보다 손해보는 경우는 없다고 볼 수 있겠지요.
'팁 & 기타' 카테고리의 다른 글
[CF-Predictor] 코드포스 레이팅 변화 예측 사이트 (0) | 2019.11.02 |
---|---|
[알고리즘] 웹에서 그래프 그리는 사이트(툴) (0) | 2019.10.31 |
Ubuntu 18.04에서 iptime A2000UA Wireless-LAN 드라이버 잡기(삽질기) (0) | 2019.06.27 |
쉘 코드와 쉘 스크립트의 차이(Shellcode vs Shellscript) (0) | 2019.06.25 |
프린터 스풀러 아키텍쳐(Print Spooler Architecture) (0) | 2019.01.07 |