반응형

저장장치의 용량표시에는 꼼수가 있다는 걸 아는 사람은 다 아는 유명한 이야기입니다.

1테라 하드를 샀는데 왜 1테라가 안되는가에 대한 이야기입니다.



1. SI 보조 단위


국제적으로 표준으로 정한 단위계를 SI단위계라고 하는데,

여기에는 큰값 또는 작은값을 편리하게 나타내기 위한 보조 단위가 존재합니다.

여기서 작은 단위는 관심이 없으므로 큰 단위만 적어보면 다음과 같습니다.


기호

 읽기

 의미

 k

 kilo(킬로)

1000의 1승

 M

 mega(메가)

1000의 2승

 G

 giga(기가)

1000의 3승

 T

 tera(테라)

1000의 4승

<표1: 일반적인 SI 보조 단위>


아마 이정도가 우리가 제일 익숙한 기호일 겁니다.

이거보다 큰 접두어로 페타(1000의 5승)이나 엑사(1000의 6승)등도 있지만 흔히 접하는 단위는 아니죠.

예를 들어 kg은 g(그램)에 보조 단위 k(킬로)가 붙은 것으로 g의 천배임을 나타냅니다. 그래서 1kg=1000g인 거죠.

보통 폭발의 위력을 말할때 사용하는 Mt(메가톤)이라는 단위는 t(톤)에 M(메가)가 붙어서 1Mt=1000000t(백만톤)을 나타냅니다.


2. 컴퓨터 용어에서의 보조 단위


위 표에서 알 수 있듯이 원래 보조 단위는 천배씩 커집니다.

그런데 잘 알려진 대로, 컴퓨터의 기본적인 셈법은 우리가 흔히 쓰는 십진법이 아닌 이진법입니다.

이진법에서 1000이라는 숫자는 2의 거듭 제곱이 아니기 때문에 이 보조 단위를 그대로 적용하면 계산이 굉장히 번잡해질 수 있습니다.

그래서 전통적으로 컴퓨터쪽에서는 메모리나 파일 크기등을 나타낼때 보조 단위의 의미를 1000 단위가 아닌,

가장 비슷한 2의 거듭 제곱수 1024(2의 10승)단위로 표기해왔습니다.

이 암묵적 룰을 이용하여 컴퓨터용 보조 단위표를 만들어보면 다음과 같이 됩니다.


기호(컴퓨터)

읽기(컴퓨터)

의미(컴퓨터)

 k

 kilo(킬로)

1024의 1승

 M

 mega(메가)

1024의 2승

 G

 giga(기가)

1024의 3승

 T

 tera(테라)

1024의 4승

<표2: 컴퓨터 업계에서 쓰는 보조 단위의 의미>


이를 이용해서 32MB(메가바이트)짜리 램의 용량을 바이트(B)로 나타내보면,

32MB = 32*(1024*1024)B = 33554432B 가 됩니다.

참고로 첨언하자면 컴퓨터쪽에서 쓰는 단위로 소문자 b는 bit(비트)를, 대문자 B는 byte(바이트)를 나타내는게 일반적이며,

이들 사이에는 전통적으로 1B=8b의 관계가 있기 때문에 대소문자를 구분해서 단위를 표기하는게 굉장히 중요합니다.


3. 하드 제조사의 꼼수


지금까지 보조 단위의 의미가 일반적인 경우(1000의 거듭제곱)와

컴퓨터 용어에서 쓰이는 경우(1024의 거듭제곱)에 따라서 달라짐을 설명했습니다.

그런데 컴퓨터쪽에서 이 전통적인 룰(보조단위를 1024의 거듭제곱으로 사용)을 깬 곳이 있으니 바로 저장장치 분야입니다.

예를 들어 우리가 1GB짜리 하드디스크를 구입해서 컴퓨터에 연결하면 1GB로 인식되길 기대하지만

실제로는 1GB에 못미치는 용량이 표시됩니다.

이렇게 표시하면 1024단위로 끊어지는 걸 1000단위로 끊을 수가 있으니까

더 작은 크기로 더 큰 용량인거처럼 표시하는게 가능합니다.

잘 모르는 분들은 사기당했다고 생각하거나, 컴퓨터에 문제가 있다고 생각하곤 합니다.


이와 같은 일이 벌어지는 이유는, 컴퓨터에서는 컴퓨터용 보조 단위를 사용하여 용량을 계산하는데

하드 제조사는 일반적인 의미의 보조 단위로 용량을 표기했기 때문입니다.

즉, 컴퓨터에서 1GB로 인식하려면 1024*1024*1024바이트=1073741824바이트의 용량이 필요한데,

하드 제조사에서 사용한 GB의 의미는 1000*1000*1000바이트=1000000000바이트인 것입니다.

따라서 컴퓨터에서의 1GB와 비교하면 73741824바이트나 부족하며, 이걸 컴퓨터용 MB로 나타내보면 (1024*1024로 나누면 됩니다)

73741824B=약 70.3MB 정도가 되어 1GB보다 70메가 정도 작은 용량으로 인식하게 됩니다.


처음에 하드가 나왔을 때는 메가바이트 단위였으므로 이 차이는 미미했지만

용량이 점차 커지면서 기가바이트, 테라바이트까지 올라오니 이 차이가 누적되어 무시 못할 수준으로 커집니다.

예를 들어 1TB를 기준으로 계산해보면,


컴퓨터의 1TB = 1024*1024*1024*1024B = 1,099,511,627,776B

하드제조사의 1TB = 1000*1000*1000*1000B = 1,000,000,000,000B

(컴퓨터의 1TB) - (하드제조사의 1TB) = 99,511,627,776B


의 차이가 벌어지며, 이걸 컴퓨터용 단위로 나타내보면 94901.7MB = 93GB 가 되어

자그마치 100기가에 가까운 용량이 부족한 듯이 보이게 됩니다.

즉, 1TB하드라고 사서 달았더니 컴퓨터에서는 약 0.9TB정도로 인식하는 것입니다.

요즘은 수테라씩 되는 하드도 많이 쓰니까 이 차이는 더 커지게 되지만, 이제와서 이 관습을 바꾸는건 불가능하지 싶습니다.


이러한 표기법의 꼼수는 비단 하드디스크 뿐만 아니라 USB 메모리와 같은 저장장치 전반에서 널리 사용되고 있습니다.

예를 들어 4기가로 표기된 USB 플래시 메모리를 컴퓨터에 꼽아도면 대략 3.7기가 정도로 인식하는데, 이것도 같은 이유 때문입니다.


그리고 표2를 이용한 계산의 예에서 램을 이용했는데, 램의 경우에는 이러한 꼼수가 적용되지 않은 용량이 표기 되어 있기 때문입니다.

즉, 4기가라고 표시가된 램을 사서 꼽으면 컴퓨터도 4기가로 인식합니다.


4. 이진 보조 단위


이와 같은 문제점이 발생하면서 새롭게 도입된 이진 보조 단위가 있습니다.

컴퓨터를 많이 만지시는 분들 중에는 종종 MiB나 GiB같은 단위를 접하는 경우가 있는데,

이녀석들이 이진법에 기반한 보조 단위로, 위에 적은 표와 대응시키면 아래와 같습니다.


기호

읽기

의미

 ki

 kibi(키비)

1024의 1승

 Mi

 mebi(메비)

1024의 2승

 Gi

 gibi(기비)

1024의 3승

 Ti

 tebi(테비)

1024의 4승

<표3: 이진 보조 단위>


즉 표1과 표2가 혼동되므로, 원래 일반적으로 쓰이는 표1의 의미를 지키고,

컴퓨터에서만 통용되는 표2를 대체하기 위해서 새롭게 보조 단위를 정의한 것입니다.

표1과 표2가 혼용되고 있으면 1kB가 1000B를 나타내는 것인지, 1024B를 나타내는 것인지 헷갈리기 쉽습니다.

반면에 표3을 이용하여 1kiB라고 적으면 이것은 1024B이외의 의미를 가지지 않습니다.


이를 이용해서 앞에서 적었던 하드 제조사의 1TB는 컴퓨터상에서 0.9TB로 인식된다는 내용을 다시 적어보면,

'1TB(테라바이트)의 하드는 0.9TiB(테비바이트)의 용량을 제공한다'고 할 수 있습니다.


표3이 진짜 의미를 가지려면 표2의 관용적인 컴퓨터용 보조 단위가 폐기되어야 하는데,

이게 워낙 오래 쓰여왔기 때문에 쉽지는 않을 듯하고,

실제로도 많이 보급되지 않아 GB와 GiB가 다른 의미라는걸 모르는 분들도 많습니다.

저도 처음에 GiB라는 단위를 봤을 때는 그냥 giga에서 Gi까지 적었나보다, 라고 생각했었지요.

앞으로는 혼동의 근원인 표2의 컴퓨터만을 위한 보조 단위가 사라지고,

표1의 SI 보조 단위와 표3의 이진 보조 단위만을 이용하게 되어 저장 장치 용량 표기의 혼동이 사라지길 빌어봅니다.








포스팅이 도움 되셨나요? 댓글과 공감은 힘이 됩니다!

블로그의 발전과 활성화를 위해 요 밑에 공감 하트 좀 날려주세요^^;;

한번만 눌려주시면 됩니다~!

반응형

+ Recent posts