기타 공부 기록/뇌를자극하는윈도우즈시스템프로그래밍
5강 WIN32 vs WIN64
babystep
2022. 4. 10. 00:05
728x90
- 5강 WIN32 vs WIN64
- 64비트와 32비트의 구분 방법
- 구분의 두가지 기준
- 한번에 송수신 가능한 데이터 크기
- 데이터 처리 능력
- cpu가 한번에 읽어들일수 있는 명령어의 크기
- 명령어 A를 CPU에 입출력버스에 이동시킬때 만약 64비트라면 64비트 시스템이라고한다.
- 데이터 이동은 입출력버스로 64로 이동을 시켰는데 cpu에서 데이터 연산은 32비트로 한다면 완벽한 64라고 할 수가 없다.
- 즉 64비트시스템이라고 하기위해서는 보통은 둘다 동일하게 64비트로 처리 되어야한다.
- 프로그래머 입장에서의 64비트 컴퓨터
- 32비트 -> 64비트 ( 우리가 프로그램에서 활용할수있는 최대메모리가 증가한것,
- 프로그램으로 표현할 수 있는 범위의 증가
- 표현할 수 있는 메모리의 전체크기
- 32비트 시스템에서는 포인터가 32비트다. 64비트 시스템에서는 포인터도 64비트이다.
- 일반적으로 포인터는 크기가 클수록좋다.
- 하지만 버스인터페이스에서 한번에 최대 이동가능한만큼 보내는게좋다.
- 개발자 입장에서는 보통 성능이 좋아졌을거라고 추상적으로만 생각한다 왜냐하면 코드가 크게 변경이 없기때문에 그러나 프로그램적으로 성능상 큰차이가난다.
- 위에 메모리는 최대램이 총 1GB임에도 하나의 주소를 표현하는데 4비트만을 사용한다면 2의 4승인 16개밖에 쓸수없다. 즉 1GB에서 사용가능한 메모리는 16바이트밖에 되지 않는다. 메인메모리는(RAM) 랜덤 엑세스 메모리는 모든 메모리에 한번에 접근(접근시간이동일) 가능해야함으로.
- 위의 그림은 예시이고 즉 32비트에서 -> 64비트로 온것은 2의 32승에서 2의 64승만큼 최대 사용가능한 메모리가 제한된다.
- 활용 가능 메모리의 확장
- 위의 예제에서 제한은 첫번째 코드가 50바이트의 상황에서 실행된다고 가정했을때는 문제가 된다. 코드가 작동할 수없다. 그러므로 두번째예제처럼 한 문자마다 읽어오면서 널문자를 만날때까지 do,while문으로 반복해서 제한적으로 프로그래밍을 해야한다.
- 즉 32비트에서 64비트로 넘어간것은 프로그래머에게 제한이 더 느슨해진것이라 할 수있다.
- 즉 결론 메모리의 크기는 크면클수록 좋다. 그러나 BUS인터페이스의 처리 최대값과 동일해야한다.
728x90