LISTORY

[윈도우즈 시스템 프로그래밍] 1부 정리(3) 본문

IT/윈도우 프로그래밍

[윈도우즈 시스템 프로그래밍] 1부 정리(3)

LiStoryTeller 2018. 8. 19. 17:21


뇌를 자극하는 윈도우즈 시스템 프로그래밍 책 관련 유투브 강의 1부 정리 파트이다.


오늘은 1부의 3장을 정리하도록 하겠다.



3장. WIN32 vs WIN64


하드웨어 관점에서 시스템이 몇 비트인가 구분하는데에는 두가지 기준이 있다.


1. 한번에 송수신 가능한 데이터 크기

2. 데이터 처리 능력


한번에 송수신 가능한 데이터 크기는 I/O 버스에 의존적이다. 즉, I/O 버스가 한번에 송수신 할 수 있는 데이터 크기를 뜻한다.


데이터 처리 능력은 CPU가 한번에 읽어들일 수 있는 명령어의 크기를 뜻한다.


32비트 시스템은 한번에 CPU에서 32비트의 명령어를 처리할 수 있다는 뜻이다.


그럼 64비트 시스템은 한번에 64비트의 명령어를 처리할 수 있다는 뜻인데, 그럼 한번에 64비트의 명렁어를 사용할가?



우리가 4바이트 포인터에 익숙한 이유


일반적으로 32비트 시스템에서는 포인터가 32비트(4바이트), 64비트 시스템에서는 포인터가 64비트(8바이트)이다.


포인터가 크면 클 수록 우리가 표현 가능한 주소의 값이 커진다. 즉, 접근할 수 있는 메모리의 공간이 커진다.


이렇게 포인터의 크기가 크면 클수록 좋지만 하나의 문제점이 있다. 바로 버스의 크기이다.


아무리 포인터의 크기가 크다해도 버스의 크기가 작으면 주소를 한번에 전송할 수 없다. 두세번에 걸쳐 나눠 보내줘야 하는데 


이는 시스템에 전체적인 성능 저하를 가져온다.


즉, 포인터의 크기는 버스가 한번에 송수신 할 수 있는 크기인 것이 좋다.


그러므로 우리는 64비트 시스템을 사용해도, 32비트 시스템의 컴퓨터를 주로 사용하였기 때문에 4바이트의 포인터에 익숙한 것이다.


Comments