본문 바로가기
컴퓨터 기초/운영체제 이론

4.Win32비트 Vs Win64비트

by 인생여희 2021. 1. 18.

Win32비트 Vs Win64비트

 

하드웨어 관점에서 Win32비트  Win64비트 구분 방법

 

-한번에 송수신 가능한 데이터 크기(BUS에 의존적이다.)

 

-데이터 처리 능력

(CPU가 한번에 읽어 들일 수 있는 명령어 크기. 

만약 16비트 데이터가 레지스터에 두개 있으면 32비트 일경우 한번에 패치 한다.)

 

 

-cpu는 64비트로 처리하는데 bus가 32비트로 데이터를 이동한다면?

완벽한 64비트라고 할 수 없다. 

cpu , bus 둘다 일치해야 한다.

 

 

 

프로그래머 관점에서 32비트 Vs 64비트

 

 

 

 

32비트 시스템에서는 포인터는 32비트(4바이트) 이다.

64비트 시스템에서는 포인터는 64비트(8바이트) 이다.

 

 

bus가 64비트 시스템에서 포인터를 32비트를 설정해서 프로그램을 만들었다면

bus는 주소를 어드레싱하기 위해서 프로그램에서 2번 읽는다. (성능이 저하된다.)

그래서 32비트 시스템에서 포인터는 32비트가 이상적이고,

64비트 시스템에서 포인터는 64비트가 이상적이다.

 

 

32비트에서 메모리에 한번에 엑세스(표현) 할 수 있는 크기는 4G

64비트에서 메모리에 한번에 엑세스(표현) 할 수 있는 크기는 8G

 

 

32비트 -> 64비트 의미

프로그램에서 활용할 수 있는 최대 메모리가 증가.(활용가능한 메모리 증가)

 

현재 시스템에 메모리가 50바이트가 있다고 가정하면.

 

아래 좌측 str [100] 은 100바이트라 읽지 못한다.

 

우측 로직은 char를 한줄씩 읽기 때문에, 가능하다.

 

 

 

 

64비트 기반 프로그래밍

 

 

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

 

데이터 손실의 문제

arr은 포인터이고 8바이트다.

arr을 (int)로 형변환을 했다. (8바이트 => 4바이트로 형변환)

데이터 손실이 발생 할 수 있다.

 

그래서 64비트 시스템에서는 포인터가 지니고 있는 주소값을 4바이트 정수형으로 형 변환 하면 안된다. 

 

 

 

 

변수 두개를 선언하고, 두 변수의 거리를 계산하는 예제

 

UINT는 4바이트다.

 

32비트에서 계산할 수 있지만 64비트에서는 계산을 못할 수 있다.

 

 

 

 

오류가 발생했을 때 메모리의 전역 공간에 에러 데이터를 전달해준다.

그 공간에 접근하기 위해서, Error 처리 관련 함수를 사용한다.

 

 

 

참고 

뇌를 자극하는 윈도우즈 시스템 프로그래밍 정리 - 한빛출판네트워크 

 

 

 

 

 

'컴퓨터 기초 > 운영체제 이론' 카테고리의 다른 글

6.Load * Store 명령어 디자인  (0) 2021.01.18
5.컴퓨터 구조  (0) 2021.01.18
3.아스키 코드 & 유니코드  (0) 2021.01.18
2.프로그램 실행과정  (0) 2021.01.18
1.시스템이란?  (0) 2021.01.17