x86와 x64의 차이점 by 브리즈비

출처 : http://inclaude.blogspot.com/2010/11/x86-vs-x64.html

중간에 공부하다보면 항상 x86, x64관련된 말들이 심심치 않게 나온다.
하지만 그동안은 무슨이야기인지는 정확히 잘 몰랐었다.
그러던 도중에 우연히 위 블로그를 통해 알게 되었다.


[요약]
x86, x64는 원래 하드웨어에서 나온 말이다. x86용 OS, x64용 OS 등과 같이 쓰이듯이 하드웨어에 맞는 소프트웨어 등 기타를 구성하기 위해서 쓰였다고 생각하면 된다.

좀더 쉽게 생각하면, 286, 386, 486 등과 같은 고전 컴퓨터에서 사용하던 하드웨어 방식이 x86이다. x에 2,3,4 등이 들어간다고 생각하면 된다. 따라서 고전 컴퓨터가 쓰일 당시에는 32bit의 주소방식으로도 얼마든지 프로그램 구성이 가능했고, CPU와 메모리 사이에서 발생하는 통신시에 주소를 32bit만으로도 얼마든지 가능했다.(x86시에는 32bit 주소체계를 이용하였음)

문제는 메모리가 커지다보니, 32bit 주소 체계만으로는 4기가 이상(2^32=4GB)의 메모리에 접근이 불가능해졌다.

그래서, 대용량의 메모리를 사용하려다보니 64bit 주소 체계가 필요하게 되었고, 그에 따라서 응용 프로그램에서 파생되는 기타등등의 문제들이 발생하게 되었다.

기본적으론 x86에서 구동되는 프로그램은 x64에서 구동될 가능성도 있고, 구동되지 않을 가능성도 있다. 메모리연산 구조의 차이에 따라서, 구동된다면, 감사고, 아니면 오류다. OS 단에서 x86의 프로그램을 x64로 변환을 시도해주기는 하지만, 그다지 안정적이지도 않고, 수시로 다운이 나버리는 사태가 발생한다.

어찌됐건, x86과 x64사이에서의 호환문제는 사실 해결하기 힘들다. 새로 코딩한다던가, 재빌드를 한다던가 등의 작업을 해줘야함.

어쨋건, x86는 32bit 운영체제에서 구동되는 하드웨어 혹은 그 환경을 말하고, x64는 64bit 운영체제에서 구동되는 하드웨어 혹은 그 환경을 말한다. 별차이는 없지만... 시스템 프로그래밍할 때는 이 두가지 차이 때문에 큰 어려움을 겪을 때가 많다. 

덧글

  • regen 2012/02/01 11:51 # 답글

    본문과 제목에서 x86 을 자꾸 x84로 혼동해서 쓰시는듯.
  • 브리즈비 2012/02/01 12:01 #

    아 그랬네요. 다시한번 자세히 보니 86이 아니라 84로 되있네요. 수정했습니다.^^
  • 2012/02/01 12:55 # 삭제 답글

    2^32 는 4G 입니다.
  • 브리즈비 2012/02/01 15:16 #

    네 맞는말씀이네요. 수정했습니다.
댓글 입력 영역