////
Search
😀

6월 23일(목)

32비트 vs 64비트

34bit CPU와 64bit CPU의 차이는 프로세서가 한 번에 처리할 수 있는 데이터의 양이 각각 32bit, 64bit라는 뜻이다. 이때 프로세서가 한 번에 처리할 수 있는 데이터의 양을 word라고 하는데, 64bit CPU의 경우 1 word의 크기는 8byte(=64bit)이다.
32bit CPU에서는 2^32만큼 논리적 주소를 할당할 수 있고, 64bit CPU에서는 2^64 만큼의 논리적 주소를 할당할 수 있다.
32bit
2^32 byte = 4GB
따라서 32bit CPU에서 최대로 할당 가능한 주소는 4GB를 넘지 못한다. 따라서 최대 4GB의 메모리만 사용할 수 있다는 뜻이다.

메모리의 구조

프로그램이 운영체제로부터 할당받은 메모리 공간은 크게 위와 같이 크게 코드영역, 데이터 영역, 힙 영역, 스택영역 4가지로 나뉜다.
코드영역
코드 영역은 실행할 프로그램의 코드가 저장되는 영역이다.
텍스트 영역이라고 부르기도 한다.
CPU는 코드 영역에 저장된 명령을 하나씩 가져가서 처리하게 된다.
프로그램이 시작하고 종료될 때 까지 메모리에 계속 남아있는다.
데이터 영역
데이터 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역이다.
프로그램의 시작과 함께 할당되며 프로그램이 종료되면 소멸한다.
힙 영역
힙 영역은 프로그래머가 직접 공간을 할당, 해제하는 메모리 공간이다.
힙 영역은 선입선출(FIFO, First-In First-Out)의 방식으로, 가장 먼저 들어온 데이터가 가장 먼저 인출 된다.
이는 힙 영역이 메모리의 낮은 주소에서 높은 주소의 방향으로 할당되기 때문이다.
위의 그림으로 설명하면, 위(낮은 주소)부터 차곡차곡 아래(높은 주소) 방향으로 데이터가 쌓인다고 생각하면 된다.
스택 영역
스택 영역은 프로그램이 자동으로 사용하는 임시 메모리 영역이다.
함수 호출 시 생성되는 지역 변수와 매개 변수가 저장되는 영역이고, 함수 호출이 완료되면 사라진다.
스택 영역은 후입 선출(LIFO, Last-In First-Out) 의 방식으로, 가장 나중에 들어온 데이터가 가장 먼저 인출 된다.
이는 스택 영역이 메모리의 높은 주소에서 낮은 주소의 방향으로 할당 되기 때문이다.
위의 그림으로 설명하면, 가장 아래(높은 주소)부터 차곡차곡 위(낮은 주소)의 방향으로 데이터가 쌓인다고 생각하면 된다.