소프트웨어 32비트 운영체제에서의 램디스크 구동방식이 궁금합니다
2012.01.03 09:59
이곳저곳 쑤셔보다가 알게된 사실이 ...
32비트 운영체제가 4기가바이트(2^32 byte)의 페이지 주소를 사용하기 때문에 이를 넘는 메모리는 사용불가능하고,
따라서 메모리의 한 종류인 RAM 역시 이를 다 활용하지 못한다 <- 다른 종류의 메모리들도 페이지 내로 들어와야 하므로...
까지는 무리없이 잘 이해가 됩니다.
그럼 질문이 두가지가 생기는데,
첫째로는, 그 4기가까지밖에 활용하지 못하는 운영체제 상에서 나머지 비관리(un-managed)부분은 어떻게 활성화하는지?
쉽게 말해서 윈도우도 못쓰는 부분을 윈도의 하위 응용프로그램 '따위'가 어떻게 사용하는지요?
프로그램 제조사들의 기업비밀 이외에 납득할만한 작동원리가 있는지 궁금합니다 ㅎㅎ
두번째로는, RAM 이외의 대표적 메모리로 그래픽 메모리의 사유를 들어서 맨 위의 이론을 설명하는 글들이 꽤 많던데,
32비트 운영체제에서 4GB이상의 비디오 메모리를 갖는 그래픽카드를 장착한 컴퓨터는 위의 설명대로라면
부팅조차 하지 못해야 할 판인데, 그렇지는 않습니다.
이건 왜 때문인가요?
댓글 [5]
-
kokorozzing 2012.01.03 11:38
-
헤링턴 2012.01.03 12:44
제가 갖고 있는건 아니고 ,,
암드 6990은 2G *2로 4G입니당,,, 그리고 쿼드로/파이어프로 류들은 6기가까지도 있기도.. 합니다 ㅎ
다른 포럼 어딘가에서였나 해당 그래픽 카드 꽂고도 32비트 운영체제 설치 후 동작은 가능하더라 라는 댓글이 있었던 걸로 기억합니다.
-
kokorozzing 2012.01.03 13:48
그렇군요 메모리가6기가 넘는그래픽카드가 나왔었군요.
몰랐네요.
-
sone 2012.01.03 14:47
x86 프로세서는 기본적으로 32비트의 어드레스라인을 가지므로 , 4기가 바이트 영역의 메모리에만 접근이 가능한데, 이를 좀 개선해보기 위해서 설계자들이 x86에서도 4기가 바이트 이상의 메모리에 접근가능하게끔 해보자~ 라는 취지를 가지고 , CPU를 설계할때 PAE라는 기능을 CPU에 탑재한겁니다. PAE는 기본적으로 칩셋을 설계하는 제조사에따라서 다 다르지만, 인텔같은 경우 4비트의 추가적인 Address Lines을 더 둡니다. 그래서 총 36비트의 메모리 어드레스 라인을 가지게 되고, 이는 곧 64GB의 메모리 엑세스가 가능하다 라는 결론이 나옵니다.
그러나 x86 운영체제하에서 작동하는 어플리케이션 프로세스들은 64GB의 Virtual Address Space를 쓸수있는게 아니라 , 그대로 4GB의 Virtual Address Space만 사용가능합니다. 생각해보면 당연한게 근대의 CPU는 32비트 동작모드 , 64비트 동작모드를 가지고있는데, 36비트 작동모드란건 없습니다. 36비트 작동모드라는걸 도입하려면 Instruction Fetch, GP Register등의 활용방안 알고리즘들도 완전히 다 새로 짜야할 판이죠. 그래서 어플리케이션들은 4GB까지의 VAS에만 엑세스 할수 있습니다.
그럼 PAE 적용시켜도 별반 다를게 없는거 아니냐? 라고 하실텐데, 운영체제를 만든사람들이 그렇게 바보는 아닙니다.
응용프로그램은 4GB의 VAS까지밖에 접근 못한다고 쳐도 , 운영체제가 PAE모드로 작동하면 커널내부에서 페이지테이블을 확장시켜서 이 4GB의 Virtual Address Space(VAS)를 64GB의 Physical Address 영역에 알아서 맵핑시켜줍니다. 그래서 결국 따지고보면 시스템에 64GB의 RAM이 장착되어져있고 , OS가 PAE모드로 동작한다면 64GB의 Physical 영역을 다 활용한다는 결론이 나오죠.
그러나 우리가 많이 사용하는 Windows 같은 경우는 좀 다릅니다.
일단 MS는 32비트 가정용 운영체제 같은 경우, PAE를 켠다해도 4GB의 Physical 영역까지밖에 엑세스를 할수 없습니다. 그 이유는 첫째로 MS가 다양한 제품을 팔아먹기 위해서 라이센스 제한을 걸어놔서입니다. 서버 OS같은 경우 PAE를 켜면 더 넓은 Physical 영역에 접근이 가능합니다. 그리고 두번째 이유는 , 위에 메리아님께서 답글 다셨다시피, 일부 써드파티 디바이스 드라이버에서 예기치 못한 충돌을 일으켜서 4GB로 고정시켰다고 합니다. 비공식적인 커널패치도 있긴있습니다만 , 불안정을 초래할수 있다고 합니다.
마지막으로 한가지 덧붙이자면 Intel CPU같은 경우 , Memory Mapped I/O 방식이 아니기때문에 Video RAM이 무지막지하게 많다하여 , 그것이 OS의 구동불능을 초래하진 않습니다...VGA도 CPU입장에선 엄연히 IO디바이스의 한 종류일뿐입니다.
-
헤링턴 2012.01.09 11:04
으......어렵지만 뭔가 심오하고 좋은 내용이네요 ㅎㅎ
그럼 서버 2003 혹은 2008(32비트 버전)을 사용하면 8기가를 장착한 경우 모두 쓸 수 있다는 이야기인가요?
드라이버는 둘째 치더라도..ㅎㅎ
속시원하게 64비트로 전환하면 좋겠지만 그것도 쉬운 일이 아니라서... ㅜㅜ
Random Access Memory 의 앞머리만 딴게 ram 입니다.
첫번째 질문에 대한 해답은 램디스크 혹은 eboostr 를 사용하여 비활성화된 메모리부분을 사용하는게 답이겠고
두번째 질문에 대한답은 (4기가 그래픽카드가 있나요?근데)
그래픽 메모리가 4기가 이상이라고해도 이와같은 원리라면 부팅해서 사용은 되데 다 사용하지못하는게 아닐까요?
(메리아님 말대로 윈도우 서버 부분에서는 4기가를 다 사용할수 있는 경우도 있습니다.)
제가 잘못 알고있는지 모르지만
헤링턴님이 4기가 이상 그래픽메모리를 장착한 컴퓨터의 부팅이 된다고 적으신걸 보니
(저는 4기가 그래픽메모리카드가 없는걸로 알았음)
혹시 4기가 그래픽메모리가 아니라 메모리 클럭을 보신거는 아닌가요?
4000MHz <--이런식으로 표기된게 아닌가 궁금합니다.
메모리 클럭은 속도이지 용량은 아닙니다.