아.... 요새 카페에서는 윈7에 대한 화두가 뜨거운거 같네요.
그도 그럴듯이, 윈7는 표준이 64비트로 작동하기 때문에, 메모리를 원하는 대로 추가하고 할당할 수 있다는 거지요.....
당연하게도, 대량의 램이 필요한 작곡이나, 포토샵 맥스 등등에서는 램의 추가만큼 좋은게 없으니까요~~
흐음.... 그래서 질문도 올라오고 해서, 시간도 때울-_-겸 32비트와 64비트의 차이점에 대해 간단히 설명 드리고자 합니다~
단, 그냥 개념정도만 잡으시라고 간단하게 올리니 다소 틀리다 싶은 부분이 있어도 넘어가 주시기 바랍니다 ^^;
* 32비트는 왜 메모리가 4기가 정도가 한계인가요?
일단 답부터 말씀드리겠습니다. 32비트가 가질 수 있는 표현력의 한계는 4기가가 최고이기 때문입니다.
그럼 왜! 32비트가 4기가 밖에 안되느냐.... 이제부터 좀 복잡해 집니다.
우선 거의 모든 컴퓨터는 0과 1의 2진수로만 구성되어 있다는 것 부터 설명을 드려야 할 것 같군요.
이 한 자릿수가 비트이며, 컴퓨터에서의 최소 계산단위입니다. 이걸로는 단순히 0과 1만 표현할 수 있습니다.
그리고 쓰시는 컴퓨터의 모든 부품은 이 최소단위로 이루어 집니다.
[이제부터 단순하면서도 복잡한 산수가 시작됩니다!]
그리고 이 자릿수가 늘어날 때마다 2승의 형식으로 표현할 수 있는 한계가 늘어납니다.
1비트 -> 2개 표현 가능
2비트 -> 4개
3비트 -> 8개
4비트 -> 16개
.
. 같은 식으로 말이죠.
그다음, 가장 많이 쓰이는 단위인 바이트! (많이들 들어 보셨죠?)
이 바이트라는 단위는 8비트가 1바이트가 됩니다.
또한 바이트란 단위는 컴퓨터에서 '처리' 할 수 있는 최소한의 단위가 됩니다.
(그러니 위의 비트에 대한 설명은 잊으셔도 됩니다.)
위에서 설명한 대로면 1바이트로 표현할 수 있는 한계는 256개가 됩니다.
다음, 예전에 컴퓨터를 써보신 분들이 들어보셨을 듯한 16비트! (16비트 컴퓨터 엄청 유행했죠 ㅋㅋㅋ)
처리할 수 있는 한계는 65536개 입니다.
[지금부터 본론입니다!]
그럼, 지금 우리가 쓰고 있는 32비트 컴퓨터는 얼마나 표현하고 읽을 수 있을까요?
정답은 4294967256 개 입니다. (갑자기 팍 늘어났습니다.)
흐음.... 어디서 많이 보던 숫자같지 않습니까? 지금 화두가 되고 있는 숫자단위랑 좀 비슷하지 않나요?
4,294,967,256 개.....
참고로 10의 3승, 그러니까 1000 단위로 편의상 표현하는 단위가 있습니다.
천은 킬로, 백만은 메가, 십억은 기가 입니다.
그래서 대충 읽어보시면 4기가 라는 답이 나옵니다.
[결론]
쉽게 얘기하자면, '32비트가 처리/인식 할 수 있는 한계는 4기가기 때문에' 라고 할 수 있겠습니다.
그리고 보통은 1000 단위가 맞지만, 컴퓨터에서는 1024 바이트 -> 1킬로 바이트 같은 식으로 처리되기 때문에....
위 숫자를 1024로 3번 나누어 보시면 딱 4라는 숫자가 나옵니다.
3번 나누었으므로 킬로 -> 메가 -> 기가 단위가 됩니다.
[추가 이야기 하나]
그리고 이것이 가능하려면 CPU와 운영체제가 같은 비트수를 지원해 줘야 합니다.
지금 대부분의 CPU는 64 비트이지만, 32비트 운영체제와의 호환을 지원해주기 때문에 지금의 XP를 돌리는 것이 가능합니다.
하지만 CPU가 너무 구닥다리라서 32비트라면 64비트 버전 운영체제를 설치해도 정상적으로 돌아가지 않습니다.....
이미 하드웨어의 한계를 넘었기 때문입니다.
[추가 이야기 둘]
이것을 많이 궁금해 하실텐데, 왜 지금 쓰는 프로그램이 윈7을 비롯한 64비트 운영체제에서 잘 안 돌아갈까요?
이것 또한 간단히 대답해 드리자면, '32비트 운영체제에 맞게 나왔기 때문에' 라고 할 수 있습니다.
프로그램을 짤 때, 32비트와 64비트는 그 표현범위에서 광범위해진 만큼, 처리할 수 있는 자료의 양이나 방법 또한 다릅니다.
단순히 2배일 뿐인 숫자라고 해도, 위에서 언급한 대로 그 표현력의 차이는 어마어마 합니다...
64비트 운영체제에서는 데이터를 한번 읽을 때 64비트의 단위로 잘라서 처리합니다. (무조건! 입니다!)
32비트에서는 당연히 32비트의 단위로 잘라서 처리하지요.
그렇게 된다면, 일이 생각만큼 간단하지 않습니다. (제 이야기 처럼.... ㅡ,.ㅡ;)
32비트용으로 2번 읽어야 할 테이터가 64비트에서는 1번 읽어서 처리할 수 있습니다.
그렇게 된다면 속도는 비약적으로 빨라집니다만....
쉽게 얘기하겠습니다;;;
1. 32비트에서는 2개를 표현하기 위해서 64비트를 썼는데, 64에서는 무조건 이것을 하나로만 인식해 버릴 수 있습니다.
그렇게 되면 정상적인 데이터 처리가 아니겠죠?
2. 끝자락이 32비트로는 나눠 지는데, 64비트로는 나눠지지 않는 경우가 있습니다.
예를 들면 96비트는 32비트로 나눠서 3개가 나오는데, 64비트로는 1개만 나오고 32비트가 덩그러니 남게 됩니다.
그럼 이 32비트는 64비트 컴퓨터에서 어떻게 읽을 수 있는가?
뒷자리를 의미없는 숫자, 0 이나 1로만 채워서 읽어버리게 됩니다.
그러면 전혀 의도하지 않았던 엉뚱한 데이터나 에러가 나게 됩니다.....
이런 이유로 64비트에 맞게 모든 프로그램을 거의 죄~~다 새로 짜야하는 불상사가 생깁니다.... ㅠ.ㅠ
64비트에서도 기존 컴퓨터에서 쓰던 프로그램이 돌아가는 이유는 두가지.
미리 64비트를 염두에 두고 만들었거나, 운영체제에서 32비트 가상화를 지원하기 때문에 그렇습니다.
특히 대부분은 후자의 경우가 많은데, 가상화 지원의 경우 말 그래로 가상화기 때문에 완벽히 돌아간다고 할 수는 없습니다.
다소의 불안함을 안고 써야 하죠.....
아무튼, 지금 생각나는대로 썼는데, 지금 졸려서 글 정리가 안 된 것 같네요....
혹시라도 호응이 있거나 (넘 어렵다던가 하는;;) 시간이 난다면 다시 정리해서 올리도록 하겠습니다.
이제 피씨방 시간이 거의 다 돼 가는군요.... 슬슬 나가봐야겠습니다... ㅠ.ㅠ
아무튼, 다소 어려운 문장이 있지만 대충이라도 읽어보고 이해하는데 도움이 되시길 바라겠습니다~ ~_~/
(추가) [다 아시겠지만]
프로그램에 램을 많이 할당할수록 좋은 이유는... 램에 있는 데이터의 처리가 훨씬 빠르기 때문입니다.
하드디스크가 오밀조일 모여있는 아파트라고 한다면, 램은 드넓은 평지 입니다.
아파트에서는 사람이 왔다갔다 거릴때마다 계단이나 엘리베이터를 타야하고, 엘리베이터가 오길 기다리기도 해야 하고, 뭔가 할 때 주변 사람에게 피해는 가지 않을까 하며 조심스레 움직여야 하고, 축구나 달리기, 줄넘기는 정말 욕 얻어먹기 딱 좋습니다. -_-;
대신에 잠을 자거나 쉬거나, 뭔가 보관할 때는 좋습니다.
한마디로 데이터가 움직이기는 불편하지만 데이터를 보관할 때는 경제적이고 좋습니다.
반면 평지에서는 어디든지 자유롭게 움직일 수 있죠.
맘껏 달리기를 해도 되고, 축구를 해도 되고, 그저 하고 싶은대로 해도 그다지 눈치 볼 필요는 없습니다.
하지만 평지에서 자는 건 얼어죽-_-기 딱 좋고, 짐을 놔뒀다가는 도둑맞기 쉽상이죠.
한마디로 데이터가 움직이기에 편하고 속도도 마음껏 낼 수 있습니다만, 그렇다고 그 자리에 오랫동안 머무를 수 있는 건 아닙니다.
평지(=램)의 크기에 따라 할 수 있는 종목도 넓으면 축구(=워드), 좁으면 족구(=메모장) 정도만 가능 할 것이고, 다 사용했으면 다음 사람(=프로그램)을 위해 양보해야 할 것입니다.
만약 축구장만한 평지에서 축구시합을 하고 있는데, 야구팀이 와서 야구를 하기 시작하면 서로가 쓸 수 있는 공간은 줄어들 것이고, 제대로 된 시합을 할 수도 없을 뿐더러 서로 눈치를 보기도 할 것입니다.
하지만 평지가 넓다면 별 상관이 없겠죠? ^^;
물론 아파트에서도 달리기는 가능하고, 족구장만한 평지에서도 축구가 가능합니다.
하지만 이에 대한 상당히 제약이 있음은 분명한 것입니다.
그렇기에 실행이 되면 프로그램이 램으로 옮겨가는 것이고, 프로그램에 좀 더 쾌적한 환경을 제공하고자 많은 램을 필요로 하는 것입니다.
첫댓글 [보너스] 64비트가 '한번에' 인식할 수 있는 데이터는 총 18,446,744,073,709,551,616 비트입니다. 그럼 64비트 운영체제에서는 램을 몇 기가까지 인식할 수 있을까요?? (답이 달리길 기대하겠습니다~ ^^;)
몇기가인가요? ^^
아아악! 계산하기 복잡해요~ ㅋㅋ 근데 멋진글 감사! ㅋ 참고로 64비트 윈도우7에서 32비트 프로그램을 돌리더라도 확실히 이득이 있습니다. 왜냐. 윈도우xp에서는 응용프로그램들에게 할당할 수 있는 총 메모리가 2GB였습니다. 즉, 이런저런 프로그램들 다 합해서 2GB이상이 되면 안된다는 것이죠. 하지만 윈도우7에서는 하나의 프로그램에도 4GB까지 할당가능합니다. 옆동네에서 어떤분이 직접 실험까지 해보셨습니다. ㅋ 그정도면 충분히 넘어갈만 하겠죠? ^^
엄청 보잡하기는 하지만 이제야 좀 이해가 가네요...좋은 글 감사합니다. 그럼 윈도7에서는 옛날 가상 악기 중 사용할 수 없는 것들이 많겠군요...쩝...
헤헤~ 우선 칭찬 감사합니다! ^^; 그리고 시퀀서나 가상악기의 경우는 제작과정이 조금 다르다고 들었습니다. 원래부터 무거울 수 밖에 없는 프로그램들이고, 작업의 속도가 중요시 되기 때문에 32비트라는 한계에서 어떻게 해서든 머리를 쥐어 짜냈다고 하더군요. 그래서 램을 가상 드라이브 개념으로 인식하게 하고, 거기다가 할당을 하는 경우도 있다고 들었습니다. 실제로는 램이지만 하드 복사하듯이 옮겨서 돌리는 그런... 그런 고로, 원래부터 64비트를 염두에 두고 만들어 진 것도 있기에 큰 걱정은 하지 않으셔도~
참고로 4기가까지 밖에 할당이 안 된다면 그것이 가상화나 프로그램의 한계입니다. 이론상으로는 몇 백 기가라도 할당이 가능해야 진짜 64비트 프로그램이라 할 수 있을겁니다. ^^; 일단 가상화의 경우 MS에서 심혈을 기울여 만들었다고 하니 대부분의 프로그램은 괜찮을 것 같습니다. 실제 별 무리가 없다는 이야기도 많고요. 그러니 기존악기는 큰 걱정 않으셔도 ^^; 그리고 윈7의 경우는 64비트의 과도기적 존재입니다. 이때는 윈7용과 XP용의 프로그램이 혼용되어 쓰일 것으로 예상되는데, 차기버전이 나올 때까지 거의 다 64비트 프로그램으로 바뀌지 않을까 조심스레 추측해봅니다.
맞아요. ^^ 64비트 os에서 32비트를 돌리다보니 어쩔 수 없이 4GB이상을 프로그램자체가 다룰 수 없게되는것이죠. 그래도 4기가면 충분한거같아요. 큐베이스5는 사실 64비트버젼도 있지만, 써본결과 아직은 좀 시기상조라는 생각이 들정도로 CPU도 많이먹고 인식이 안되는 플러그인들도 너무많네요. 조만간에 재대로 나오겠죠. ㅋㅋ
오호~ 쉽고 좋은 글입니다..
윈도우즈 2000 서버나 윈도우즈 2003 서버 등 32비트 서버들은 메모리를 16기가 이상 ~ 데이센터 서버 같은경우 64기가 이상 사용이 가능 합니다. 32비트 인데도 말이죠... 이건 어떻게 설명이 되나요? 프로세스의 개념과 확장주소공간의 개념에 대해서도 설명이 필요 할듯 하네요. 64비트에 맞게 죄다 새로 프로그램을 짜야 된다? 이는 컴파일만 새로 하면되죠. 프로그램을 새로 짤 필요는 없습니다.
그건 인텔에서 32비트에서 조금 더 확장한 36비트를 지원하는 PAE를 썼기때문입니다. 그래서 최대 64GB까지는 가능하지만.. 그것도 한계입니다. 컴퓨터에서 포인터를 사용한다면 가능하긴하죠. 편법적이고 좀 복잡해지기때문에 서버용으로만 사용했고 일반 프로그램용으로는 사용하지않았던걸로 알고있습니다. ^^ 그러나 64비트에 맞춰서 새롭게 프로그래밍을 하지않고 컴파일만 해도 된다는 것은 맞는 얘기입니다. 단, 컴파일러가 확실할 경우에만 가능하죠. 돌아는 갑니다. ^^ 하지만 64비트를 충분히 활용하기위해서 내부변수한계를 재대로 설정해주려고 한다면, 음.. 그럼 프로그램을 거의 다시짜는건 맞습니다. ^^;;
이 글을 참고해보세요. ^^ http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx
앞에서 언급했다시피, 개념 정도로만 올리기 때문에 틀린 부분이 있더라도 대충 넘어가 달라고 부탁 드렸습니다... 왜냐면 이런 이야기가 나올 걸로 예상했기에;;; 그런 중상 레벨의 이야기는 이런 곳에서는 맞지 않아서, 그런 부분은 과감히 생략했습니다. 설명하라면 할 수 있지만, 그정도는 카페의 취지에는 맞지 않다는 생각이 들어서요. (솔직히 저 정도 글도 초보분에게는 어렵다 생각합니다-_-;) (그리고 저, 임베분야에 발을 담그고 있습니다.... 초짜는 절대 아니구요.... ^^;)
그리고 정확히는, 컴파일만 새로 한다고 완벽하게 64비트로 돌아간다고 절대 장담할 수 없습니다. 플랫폼이 바꼈기 때문에, 컴파일러는 물론이고 라이브러리 링크까지 죄다 새로 해야 합니다. 물론 64비트용 컴파일러/라이브러리가 나와있을 때 얘기고, 나와있다 하더라도 64비트에서 적용되는 값과 명령어의 사용법, 그리고 추가되고 삭제된 라이브러리까지 새로 링크 시켜줘야 합니다. 더군다나 기준수치인 integer값이 배로 늘었기 때문에 이 부분도 수정해줘야 하고요. 자동으로 되는 경우도 있겠지만 기준값이 바뀐거니 만큼 세심한 프로그램(=프로그래머가 한계를 쥐어짜내 만든 프로그램)의 경우는 더더욱 복잡합니다.
뭣보다, 서버분야쪽의 이야기는 카페분들과는 동떨어진 이야기니 생략하는게 맞다고 생각합니다! 제 목적은 어디까지나 카페분들이 왜! 윈7 같은 64비트 운영체제로 넘어가면 좋은가, 메모리를 많이 쓸 수 있음 뭐가 좋은가? 이걸 설명해 드리고자 쓴거니까요~ 좀 더 궁금하신 사항이 있으시면 파코즈같은 하드웨어 사이트나 korone.net 같은 프로그래밍 사이트를 참조하시면 도움이 될겁니다~ ^_^
넘 어려워서 몬말인지 모르겟다는...+_+ㅋ 댓글이 내용이 더 어려운듯..ㄷㄷ
댓글 내용은, 어려우시면 걍 넘어가셔도 좋습니다~ ㅎㅎ
아주 유용한 정보입니다. 감사..^^ 그래도 더 자세한글 올려 주셔도 무방하지 않을까 봅니다. 왜냐하면 비록 전문적인 구체적인 글이 카페의 취지와 동떨어진다 해도 그런글을 올리면 분명 아주 반갑게 여길분들이 분명 있을 것이기 때문입니다. 우선 제가 그렇구요..ㅎㅎ 다만 호랑이 이씨 님께서 수고를 하셔야 하는 문제가 남겠지요.. ^^ 그러므로 더 자세한 글을 올리고 안올리고는 순전히 호랑이 이씨님의 선택사항이 되겠지요..^^ 다시한번 유익한 정보 감사드립니다..^^
감사합니다 .!! .
전문가들이 많으시네요.. 좋은 글입니다....