본문 바로가기

도서관

32비트 OS와 4G 메모리


안녕하세요. 웬지 하드웨어 관련 글만 남기고 있는 마메고마입니다;;;;
오늘은 OS bit 수와 메모리에 대해서 간략하게 정리해볼까 합니다.


3줄 요약
1. 원래 32bit OS에서도 4GB 메모리를 전체를 쓸수 있다.(특히 서버용 들은 더욱 더)
2. 물리 메모리 4GB와 OS에서 관리하는 메모리 공간인 PAM은 서로 다른 것이다.
3. 4G인 PAM에 메인메모리 4GB & 각 장치 메모리를 담으려다보니, 물리 메모리 일부를 못 담는 것이다.

그래서??
1. 테스트 PC 만들 때 32/64bit OS에 대해서도 고려할 필요가 있습니다.
2. 32bit 테스트 PC를 만들 때, 4G 이상은 있어도 사용할 수 없습니다.
3. Windows 2003같은 서버용 OS의 경우 드라이버가 없는 경우가 많습니다.
   - 그래서 지원 OS에서 빠져 있는 경우가 많습니다.
   - 2003에서 뭔가 안되면 OS 특성이니 포기하는 것이 좋은 방법일 수 있습니다.
4. 고사양 PC의 경우 64bit가 효율적입니다.
   - 장치 메모리가 증가하기 때문에, 메모리 공간(PAM)-메인 메모리가 아님!!!-이 많이 필요합니다.
   


가끔 OS Q&A를 보다보면 4G 메모리가 3.*G로 표시된다는 이야기가 종종 보입니다.
이 경우 하드웨어적 문제가 아니라면 둘중 하나인 경우가 많은데요,

첫번째로는 내장 그래픽 카드의 메모리 공유입니다.
내장 그래픽 들의 경우 많은 경우가 자체 메모리를 가지고 있지 않기 때문에,
메인 메모리에서 일정량을 할당 받아서 사용하게 됩니다.
보통 이 경우에는 CMOS 셋업에서 할당 메모리 량을 조절할 수 있습니다.

두번째로는 32bit OS 사용입니다.

32bit에서는 원래 산술적으로는 4G를 지원합니다.
하지만, 실제 OS 정보를 보면 4G가 아닌 3.*G를 사용하고 있습니다.
이것 때문에 많은 질문과 답변이 있으며, 32bit에서는 4G를 사용할 수
없다는 이야기부터 시작해서 메모리 불량이라는 다양한 이야기가 있습니다.

결론부터 말하자면, 32bit OS는 4G까지 메모리를 할당할 수 있는 능력을 가지고 있으며,
그렇기 때문에 위와 같이 3.*G 대의 메모리를 사용하게 되는 것입니다.
뭔가 좀 이상하지요? 4G까지 메모리를 할당할 수 있다면서 실제로는 그렇게 되지 않으니까요...;;;

▣ 물리 메모리(설치된 메모리)
■ 장치 메모리

아래 사각형 1개는 256MB로 4개가 1GB라고 보면 됩니다. 지금 4G 메모리를 가지고 있는 겁니다.
▣▣▣▣ ▣▣▣▣ ▣▣▣▣ ▣▣▣▣
아래는 장치 메모리로 역시 1개가 256MB입니다. 여기서는 768MB 만큼 장치가 메모리를 가지고 있습니다.
(그래픽 카드를 비롯해서 I/O칩셋, 랜카드, 사운드장치 등 다양한 장치가 메모리를 가지고 있습니다)
■■ ■

자, 이제 이 메모리들을 OS는 실제 자신이 메모리 사용을 위해서 참조하는 공간인 PAM(Physical Address Map)
이라는 것을 생성합니다. OS는 이 PAM을 보고 메모리를 사용하게 되며, 이 영역을 벗어나는
메모리는 사용할 수 없습니다.(마치 6자리 계산기에 7자리 연산을 하는 것과 같은 상황입니다)

32bit에서는 이 시스템 장치들의 다양한 메모리들을 자신이 할당할 수 있는 4G까지 표현 가능한
PAM을 가지고 있습니다. 왜냐면 32bit로 부호 없이 표현할 수 있는 수는 0~4,294,967,295로,
이것이 바로 4G 공간입니다.(주소를 부여할 수 있는 갯수가 바로 이것입니다)

이제 32bit OS는 자신이 가지고 있는 4G 크기의 PAM에 메인 메모리 4GB와 장치 메모리 768MB를 할당합니다.
아래 ▩ 하나는 PAM 256M 입니다. OS에서 할당할 수 있는 4G 공간을 표시한 것입니다.

아래 그림에서는 일단 2.5G까지 물리메모리를 할당했습니다.

        1G         2G         3G         4G
▩▩▩▩ ▩▩▩▩ ▩▩▩▩ ▩▩▩▩  PAM
▣▣▣▣ ▣▣▣▣ ▣▣


자, 이제 장치 메모리들이 중간에 할당되기 시작합니다. 장치 메모리는 반드시 OS가 인식할 수 있는 영역 안에
있어야 하며, 그렇기 때문에 PAM의 중간에 메모리 영역을 할당 받습니다.


        1G         2G         3G         4G
▩▩▩▩ ▩▩▩▩ ▩▩▩▩ ▩▩▩▩  PAM
▣▣▣▣ ▣▣▣▣ ▣▣■■ ■


아래 그림처럼 장치 메모리를 할당하고 PAM에 공간이 남았으므로, 물리 메모리를 할당합니다.
할당을 하다보면, 물리 메모리가 일부 남은 상태에서 PAM의 공간을 모두 사용하게 되고,
물리 메모리 768MB는 PAM 영역 밖에 있습니다. 이 PAM 밖의 메모리는 앞에서 이야기 한 것 처럼
OS에서 엑세스 할 수 없게 됩니다.

        1G         2G         3G         4G
▩▩▩▩ ▩▩▩▩ ▩▩▩▩ ▩▩▩▩  PAM
▣▣▣▣ ▣▣▣▣ ▣▣■■ ■▣▣▣ ▣▣▣

이렇게 할당이 되면, 전체 메모리는 4G지만, 사용할 수 있는 공간은 3.25G로 표시되는 것입니다.

이것과 같은 이유로 32bit와 64bit용 드라이버가 별도로 작성됩니다.
32bit용은 반드시 PAM의 4G 안쪽에 공간을 할당 받아야 하지만,
64bit에서는 4G 밖에 할당을 받아도 OS에서 엑세스가 가능하기 때문입니다.

이와는 별도로 서버용 OS의 경우에는 32bit라도 4G 이상의 메모리를 엑세스 하는 것이 가능합니다.
서버용 OS의 이런 기능 때문에 같은 버전의 OS라도 드라이버 적용이 안되고 서버용 OS 전용으로
드라이버를 작성해야 하는 문제가 발생합니다.(메모리 관리가 다르기 때문에 발생하는 문제입니다)