i5-2430M CPU 가 장착 된 Asus U31SD 노트북이 있습니다. 아수스 사이트에 따르면 최대 RAM은 8GB이지만 인텔의 CPU는 16GB를 지원한다고합니다. Ubuntu에서이 시스템에 사용할 수있는 최대 RAM은 얼마입니까?
i5-2430M CPU 가 장착 된 Asus U31SD 노트북이 있습니다. 아수스 사이트에 따르면 최대 RAM은 8GB이지만 인텔의 CPU는 16GB를 지원한다고합니다. Ubuntu에서이 시스템에 사용할 수있는 최대 RAM은 얼마입니까?
답변:
한계는 실제로 하드웨어 (마더 보드 메모리 지원 및 슬롯 수)와 Ubuntu 버전 (32 비트, 32 비트 + PAE, x32ABI, 64 비트) 사이입니다.
최대 4GB를 지원하는 마더 보드를 사용하는 경우 하드웨어 제한이 4GB이므로 32 비트, 32 비트 PAE 또는 64 비트를 사용하더라도 중요하지 않습니다.
그러나 더 많은 양의 메모리를 지원하는 마더 보드를 구입하면 다음과 같은 최대 지원 메모리를 가진 Ubuntu 버전을 사용할 수 있습니다.
우분투 32 비트 -4GB RAM
우분투 32 비트 + PAE (실제 주소 확장) -64GB RAM
Ubuntu x32ABI -4GB RAM (64 비트 하드웨어에서 실행되는 64 비트 향상으로 수정 된 32 비트 아키텍처 용입니다. 아직 사용할 수 없습니다.)
우분투 64 비트 -많이! (실제로 2 ^ 64) 하드웨어 제한 및 실제 컴퓨터로 인해 제한은 약 1TB (1024GB RAM)입니다.
따라서 4GB 이상의 RAM을 사용하는 경우 메모리 제한에 대한 질문을 사용해야합니다. 이 경우 실제로 큰 메모리 크기를 지원하는 32 비트 PAE 또는 64 비트가 필요합니다.
또한 지금 예를 들어 4GB가 있고 16GB 램을 구입하는 경우 Ubuntu를 다시 설치하거나 변경할 필요가 없습니다. 추억을 바꾸면 우분투는 그것들을 읽고 즉시 사용할 수 있습니다. 구성이 필요하지 않습니다. 4GB RAM의 32 비트가 있고 16GB 또는 RAM을 설치하면 Ubuntu가 자동으로 32 비트에서 32 비트 PAE로 변경됩니다. 올해 초 4GB에서 16GB로 옮겼 기 때문에이를 보증 할 수 있습니다.
다음은 32/64의 메모리에 대한 Ubuntu에 대한 아주 좋은 설명에 대한 링크입니다. https://help.ubuntu.com/community/32bit_and_64bit#Memory
업데이트 -일부 마더 보드에는 지원되는 최대 메모리를 활성화, 수정 또는 향상시키는 BIOS 업데이트가 있음을 추가하지 않았습니다. 예를 들어, 과거 일부 인텔 마더 보드는 지원되는 최대 값으로 작동하는 데 문제가있었습니다. BIOS 업데이트로이 문제가 해결되었습니다. 다른 마더 보드는 BIOS 문제로 인해 4GB를 지원했으며 업그레이드 후 4GB 이상을 지원했습니다.
또한 CPU와 마더 보드에 대해 지원되는 최대 메모리를 비교할 때 최대 값은 최소값입니다. 예를 들어 :
CASE 1
CPU 최대 지원 메모리 -16GB
마더 보드 최대 지원 메모리 -8GB
최대 지원 메모리 -8GB (CPU와 마더 보드 사이의 값이 가장 낮으므로)
CASE 2
CPU 최대 지원 메모리 -16GB
마더 보드 최대 지원 메모리 -32GB
최대 지원 메모리 -16GB (CPU와 마더 보드 사이의 값이 가장 낮으므로)
CASE 3
CPU 최대 지원 메모리 -16GB
마더 보드 최대 지원 메모리 -64GB
최대 지원 메모리 -16GB (CPU와 마더 보드 사이의 값이 가장 낮으므로)
이 메모리 제한이 CPU와 관련이있는 이유는 인텔이 최신 코어 CPU를 사용하여 기술적으로 수정했기 때문입니다.
따라서 8GB를 지원하는 마더 보드와 16GB를 지원하는 CPU가 있습니다. 즉, 마더 보드의 슬롯 수에 따라 사용할 수있는 최대 크기는 8GB입니다. 해당 Asus에는 2 개의 슬롯이 있습니다. 즉, 최대 8GB를 완료하기 위해 2 개의 4GB RAM을 가질 수 있습니다.
x32abi에 대한 추가 정보 :
커널 초보자-http : //kernelnewbies.org/Linux_3.4#head-039c9d273884c9639937c10d68b4a3214869eb4b
LWN - https : //lwn.net/Articles/456731/ (메모리 제한에 대한 설명을 쉽게 읽을 수 있도록 주석 읽기 권장)
Google - http : //sites.google.com/site/x32abi/
마지막으로 Ubuntu 12.04부터 모든 32 비트 버전의 Ubuntu에는 기본적으로 PAE가 활성화되어 있으므로 모든 32 비트는 최대 64GB의 RAM을 지원합니다. 12.04+를 사용 중이고 사용할 아키텍처를 알고 싶은 경우 몇 가지 권장 사항을 따르는 한 이러한 아키텍처 중 하나를 사용할 수 있음을 알게되었습니다.
RAM이 512MB 이하인 경우 32 비트를 사용하는 것이 좋습니다.
RAM이 4GB 미만이지만 512MB 이상인 경우 32 비트를 사용하는 것이 좋습니다 (하지만 여전히 64 비트를 사용할 수 있음)
4GB의 RAM이있는 경우 32 비트를 사용하는 것이 좋습니다 (하지만 여전히 64 비트를 사용할 수 있습니다)
4GB 또는 RAM과 64GB의 RAM이있는 경우 32 비트 또는 64 비트를 사용할 수 있지만 64 비트를 사용하는 것이 좋습니다.
64GB 이상의 RAM이 있으면 64 비트를 사용해야합니다.
32 비트의 경우 이론적 제한은 2 ^ 32 = 4096MB이지만 PAE (Physical Address Extension)의 Ubuntu 12.04에서 기본적으로 2 ^ 36 = 64GB로 설정되어 있습니다.
64 비트의 경우 이론적으로 2 ^ 64 = 16777216TB (그렇습니다. 테라 바이트) 여야합니다. 실제로 RAM의 양은 256TB의 RAM으로 2 ^ 48로 제한됩니다.
이론적 인 한계는 일반 랩톱에서는 실제로 도달 할 수 없기 때문에 실제 한계는 노트북의 메모리 슬롯 (일반적으로 1-2)과 칩셋의 지원입니다. 8GB 모듈에 대해 심각한 비용을 지불하려는 경우 8-16GB가 현실적입니다.
포인터의 크기를 결정하는 많은 질문이있었습니다. 기본적으로 이것은 프로세서 아키텍처라고 말할 수 있습니다.
x86 -> 4 bytes pointer -> can address 4,294,967,296 locations = 4GB (it is the limit)
x64 -> 8 bytes pointer -> can address 1.84467440737e+19 locations (it is the limit, big, eh)
8GB의 RAM을 처리하려면 8,589,934,592 매핑이 필요하며 크기가 4 바이트 인 포인터는 가능한 모든 값을 처리 할 수 없습니다. 이것이 x86 아키텍처에서 4GB 이상의 RAM을 가질 수없는 이유입니다.
RAM의 양은 아키텍처 (32 또는 64 비트)에 의해 제한되지 않습니다. 아키텍처는 OS와 그 시스템에서 실행되는 프로그램에 의해 한 번에 처리 할 수있는 메모리 양만 결정합니다. 32 비트 시스템, 즉 32 비트 폭 메모리 버스가있는 시스템에서 OS와 프로그램은 4GB의 메모리 만 "볼"수 있습니다. 그렇다고 4GB의 RAM 만있는 것은 아닙니다. 제조업체에서 제공 한 경우 16GB 또는 4x4GB의 RAM이있을 수 있습니다. 이 경우에는 "숨겨진"주소 라인이 2 개 더 있고이 2 개의 라인 레벨을 결정하는 하드 코딩 된 로직이 있으므로 사용 가능한 4GB RAM 중 하나를 선택합니다-00 01 10 11. 이러한 "숨겨진"주소 비트는 소프트웨어 계층에서 사용되지 않으므로 이러한 계층의 경우 4 바이트 포인터 만 사용할 수 있습니다. 이 "숨겨진"수
이것은 하나의 예일뿐입니다. 벤더, 추가 RAM 제공 방법에 따라 다릅니다.
참조 :
일반적인 경우 포인터는 시스템의 메모리 단위보다 많은 주소를 보유 할 수있을만큼 충분히 큽니다. 이것은 충분한 메모리가 설치되지 않았거나 (즉, 사용 가능한 메모리 범위를 초과하여) 아키텍처가 이러한 주소를 지원하지 않기 때문에 프로그램이 메모리 단위가 아닌 주소에 액세스하려고 시도 할 가능성이 있습니다. 첫 번째 경우는 Intel x86 아키텍처와 같은 특정 플랫폼에서 분할 오류 (segfault)라고 할 수 있습니다. 두 번째 경우는 현재 AMD64 구현에서 가능합니다. 여기서 포인터는 64 비트이고 주소는 48 비트로 만 확장됩니다. 여기에서 포인터는 특정 규칙 (정규 주소)을 따라야하므로 비정규 포인터가 역 참조되면 프로세서가 일반 보호 오류를 발생시킵니다.
반면에 일부 시스템에는 주소보다 많은 메모리 단위가 있습니다. 이 경우, 메모리 분할 또는 페이징과 같은보다 복잡한 방식이 다른 시간에 메모리의 다른 부분을 사용하기 위해 사용됩니다. x86 아키텍처의 마지막 구현은 최대 36 비트의 물리적 메모리 주소를 지원하며 PAE 페이징 메커니즘을 통해 32 비트 선형 주소 공간에 매핑되었습니다. 따라서 가능한 총 메모리의 1/16 만 한 번에 액세스 할 수 있습니다. 동일한 컴퓨터 제품군의 또 다른 예로 80286 프로세서의 16 비트 보호 모드가 있습니다.이 메모리 모드는 16MiB의 실제 메모리 만 지원하지만 최대 1GiB의 가상 메모리에 액세스 할 수 있지만 16 비트 주소와 세그먼트의 조합 하나의 데이터 구조에서 64 KiB 이상에 액세스하는 레지스터는 번거 롭다.
일관된 인터페이스를 제공하기 위해 일부 아키텍처는 메모리 매핑 된 I / O를 제공하며, 일부 주소는 메모리 단위를 참조하고 다른 주소는 컴퓨터에서 다른 장치의 장치 레지스터를 참조 할 수 있습니다. 파일 오프셋, 배열 인덱스 및 원격 객체 참조와 같은 유사한 개념이 다른 유형의 객체에 대한 주소와 동일한 목적으로 사용됩니다.
(더 여기 )