시스템 프로그래밍 3장 - 64비트 기반 프로그래밍

김주현·2021년 9월 27일
0

시스템 프로그래밍

목록 보기
3/21

64비트와 32비트

" 한 번에 송수신할 수 있는 데이터 크기와 한 번에 처리할 수 있는 데이터 크기를 기준으로 32비트 컴퓨터와 64비트 컴퓨터를 구분 짓는다. "

프로그래머 입장에서의 64비트 컴퓨터

32비트환경에서는 주소값이 32비트로 표현되는것이 64비트 환경에서는 64비트로 표현하는것이 최선의 선택이다.

32비트 시스템에서는 32비트 포인터를 사용 64비트에서는 64비트포인터를 사용
32비트 시스템에서 64비트 주소를 사용할경우 한번주소를 보낼때 버스를 두번이용해야함 -> 사용하는 시스템에 맞게 주소의 크기를 잡아주는게 일반적

결국 프로그램에 사용할수있는 최대메모리의 크기가 2의 32승에서 2의 64으로 크게 증가

32비트 -> 64비트

  1. 프로그램으로 표현할 수 있는 범위의 증가
  2. 표현할 수 있는 메모리의 전체 크기
  • 프로그램 구현 관점에서의 WIN32 vs WIN64

LLP64 vs LP64

윈도우즈에서 LLP64라는 데이터 표현 모델을 따르는데, 이 모델은 int와 long은 그대로 4바이트로 표현하고 포인터만 8바이트로 표현하는 방식이다 이는 32비트 시스템과의 호환성을 중시한다.

64비트와 32비트 공존의 문제점

-데이터 손실의 문제
포인터의 크기가 4바이트에서 8바이트로 증가하였기 때문에
64 비트 시스템에서는 포인터를 int,long등 4 바이트 정수형 데이터로 형 변환해서는 안된다.

Polymorphic 자료형

32비트 시스템에서는 32비트로, 64비트 시스템에서는 64비트로 선언되는 자료형

ex ) UINT_PTR (포인터 연산을 위해 사용하는 자료형이지 포인터는 아님)

  • 오류의 확인

GetLastError() 함수는 가장최근의 에러코드를 반환한다 시스템함수가 호출될때마다 초기화되기 때문에 에러발생 직후에 호출해 확인해야한다.

핵심요약

  1. 64비트 시스템에서는 한 번에 64비트 데이터를 전송 및 처리할 수 있으며, 32비트 시스템에서는 한 번에 32비트 데이터를 전송 및 처리할수있다.

  2. 64비트 시스템은 한번에 처리할 수있는 데이터가 64비트 이므로 주소값을 표현하는 데도 64비트를 활요한다 이는 프로그래머가 표현할 수있는 값의 범위를 넓혔다는 데 의의가 있다.

0개의 댓글