Linux 시스템의 기본 페이지 크기가 4KB인 이유
우리 모두 알고 있듯이 Linux는 페이지 단위로 메모리를 관리합니다. 디스크에서 메모리로 데이터를 로드하거나 메모리에서 다시 디스크로 데이터를 쓰는 경우 운영 체제는 페이지 단위로 작동합니다. 이는 또한 1바이트의 데이터만 디스크에 쓰는 경우 운영 체제도 플러시해야 함을 의미합니다. 전체 페이지의 모든 데이터를 디스크에 저장합니다.
Linux에서는 작업에 보통 크기의 메모리 페이지를 사용할 수도 있고 대부분의 프로세서에서 메모리 페이지의 기본 크기가 4KB이지만 일부 프로세서에서는 8KB, 16KB를 사용할 수도 있습니다. 또는 64KB를 기본 페이지 크기로 사용합니다. 일반적인 메모리 페이지 크기 외에도 다양한 프로세서가 다양한 대용량 페이지 크기를 지원합니다. 예를 들어 x86 프로세서에서는 2MB 크기의 메모리 페이지를 사용할 수 있습니다.
4KB 메모리 페이지는 역사적인 유물이 되었습니다. 이 페이지 크기는 1980년대부터 널리 채택되었으며 오늘날에도 여전히 남아 있습니다. 오늘날의 하드웨어는 과거보다 풍부해졌음에도 불구하고 우리는 여전히 과거로부터 물려받은 4KB의 메모리 페이지 크기에 갇혀 있습니다. 일반적으로 아래 그림과 같이 메모리를 설치할 때 메모리 모듈의 사양을 명확하게 확인할 수 있습니다.

그림 1 – 랜덤 액세스 메모리
현재는 4KB 메모리 페이지 크기가 최선의 선택이 아닐 수도 있습니다. 8KB 또는 16KB가 더 나은 선택일 수도 있지만 이는 과거 특정 시나리오에서 절충된 사항입니다. 이 기사에서는 4KB라는 숫자에 너무 집착해서는 안 됩니다. 이 결과를 결정하는 여러 요소에 더 많은 관심을 기울여야 합니다. 그래야 유사한 시나리오에 직면할 때 이러한 측면에서 최선의 선택을 고려할 수 있습니다. 이 기사에서는 메모리 페이지 크기에 영향을 미치는 다음 두 가지 요소를 소개합니다.
페이지 크기가 너무 작으면 페이지 테이블 항목이 더 커져 검색 속도가 증가하고 주소 지정 중 TLB(번역 참조 버퍼)의 추가 오버헤드가 발생합니다.
과도한 페이지 크기는 메모리 공간을 낭비하고 메모리 조각화를 유발하며 메모리 활용도를 감소시킵니다.지난 세기에는 메모리 페이지 크기를 설계할 때 위의 두 가지 요소가 충분히 고려되었으며, 마침내 4KB 메모리 페이지가 운영 체제의 가장 일반적인 페이지 크기로 선택되었습니다. 다음으로 이들이 운영 체제 성능에 미치는 영향을 자세히 소개하겠습니다.
페이지 테이블 항목 Linux에 가상 메모리가 필요한 이유 기사에서 Linux의 가상 메모리를 소개했습니다. 각 프로세스에서 볼 수 있는 것은 독립적인 가상 메모리 공간입니다. 가상 메모리 공간은 여전히 논리적인 개념일 뿐입니다. 즉, 가상 메모리에서 실제 메모리로 변환하려면 각 프로세스가 보유하는 페이지 테이블을 사용해야 합니다.
64비트 운영 체제에서 128TiB 가상 메모리의 매핑된 데이터를 저장하기 위해 Linux는 2.6.10에서 가상 주소 변환을 지원하는 4계층 페이지 테이블을 도입했으며, 5계층 페이지 테이블 구조가 도입되었습니다. 4.11에서는 향후 64비트 가상 주소를 지원하기 위해 더 많은 페이지 테이블 구조 계층이 도입될 수도 있습니다.
그림 2 – 4계층 페이지 테이블 구조
위와 같이 4레벨 페이지 테이블 구조에서 운영체제는 가장 낮은 12비트를 페이지 오프셋으로 사용하고, 나머지 36비트는 4개의 그룹으로 나누어 이전 레벨에서 현재 레벨의 인덱스를 나타냅니다. 모든 가상 주소는 위에서 언급한 다중 레이어 페이지 테이블을 사용하여 해당 물리적 주소를 찾을 수 있습니다.
운영 체제의 가상 주소 공간의 크기는 고정되어 있기 때문에 전체 가상 주소 공간은 동일한 크기의 N개의 메모리 페이지로 균등하게 나누어지므로 메모리 페이지의 크기에 따라 궁극적으로 계층 구조와 페이지 테이블 항목이 결정됩니다. 특히, 가상 페이지 크기가 작을수록 단일 프로세스에 더 많은 페이지 테이블 항목과 가상 페이지가 있습니다.
PagesCount=가상 메모리 ¼ 페이지 크기현재 가상 페이지 크기가 4096바이트이므로 가상 주소 끝의 12비트가 가상 페이지의 주소를 나타낼 수 있습니다. 가상 페이지의 크기를 512바이트로 줄이면 원래 4레벨 페이지가 됩니다. 테이블 구조 또는 5레벨 페이지 테이블 구조는 5~6개의 레이어가 되며, 이는 메모리 액세스의 추가 오버헤드를 증가시킬 뿐만 아니라 각 프로세스의 페이지 테이블 항목이 차지하는 메모리 크기도 증가시킵니다.
조각화
메모리 매핑 장치는 메모리 페이지 수준에서 작동하기 때문에 운영 체제는 메모리 할당의 가장 작은 단위를 가상 페이지로 간주합니다. 사용자 프로그램이 1바이트의 메모리만 적용하더라도 운영체제는 이에 대한 가상 페이지를 적용하게 되는데, 아래 그림과 같이 메모리 페이지의 크기가 24KB라면 1바이트의 메모리를 적용하게 된다. 공간의 ~99.9939%를 낭비합니다.

그림 3 – 대용량 메모리의 조각화
메모리 페이지 크기가 증가함에 따라 메모리 조각화는 점점 더 심각해집니다. 작은 메모리 페이지는 메모리 공간의 메모리 조각화를 줄이고 메모리 활용도를 향상시킵니다. 지난 세기에는 메모리 자원이 오늘날만큼 풍부하지 않았습니다. 대부분의 경우 메모리는 프로그램 실행을 제한하는 자원이 아닙니다. 대부분의 온라인 서비스에는 더 많은 메모리가 아닌 더 많은 CPU가 필요합니다. 그러나 기억은 실제로 지난 세기에는 희소한 자원이었기 때문에 희소한 자원의 활용도를 높이는 것은 우리가 고려해야 할 사항입니다.

그림 4 – 메모리 가격
1980년대와 1990년대의 메모리스틱은 512KB나 2MB에 불과했고 가격도 터무니없이 비쌌습니다. 하지만 오늘날에는 수 GB의 메모리가 매우 보편화되어 있기 때문에 메모리 활용도가 여전히 중요하지만 오늘날에는 메모리 가격이 크게 떨어졌습니다. , 조각화된 메모리는 더 이상 해결해야 할 주요 문제가 아닙니다.
메모리 사용률 외에도 더 큰 메모리 페이지는 Linux의 쓰기 중 복사 메커니즘으로 인해 여러 프로세스가 동일한 메모리를 공유할 때 프로세스 중 하나가 변경되면 메모리 복사의 추가 오버헤드도 증가시킵니다. 이때 운영 체제의 메모리 페이지가 작을수록 쓰기 중 복사로 인한 추가 오버헤드가 줄어듭니다.
요약
위에서 언급했듯이 4KB 메모리 페이지는 지난 세기에 결정된 기본 설정이며 오늘날의 관점에서 볼 때 이는 아마도 잘못된 선택일 것입니다. arm64 및 ia64와 같은 아키텍처는 이미 8KB, 16KB의 메모리 페이지 및 기타 크기를 지원할 수 있습니다. 메모리 가격이 점점 낮아지고 시스템 메모리가 점점 커지면 운영 체제에 더 큰 메모리가 더 나은 선택이 될 수 있습니다. 페이지 크기 요소에 대한 두 가지 결정을 검토해 보겠습니다.
-
페이지 크기가 너무 작으면 페이지 테이블 항목이 더 커지게 되어 TLB(Translation Lookaside buffer) 검색 속도가 증가하고 주소 지정 중 추가 오버헤드가 발생하지만 프로그램의 메모리 조각화가 줄어들고 메모리 활용도가 향상됩니다.
- 과도한 페이지 크기는 메모리 공간을 낭비하고, 메모리 조각화를 일으키고, 메모리 사용률을 감소시키지만, 프로세스의 페이지 테이블 항목과 TLB 주소 지정 시간을 줄일 수 있습니다. 마지막에는 상대적으로 개방적인 관련 질문을 살펴보겠습니다. 관심 있는 독자는 다음 질문에 대해 신중하게 생각해 볼 수 있습니다.
- Linux의 섹터, 블록, 페이지 간의 차이점과 연결은 무엇입니까?
위 내용은 Linux 시스템의 기본 페이지 크기가 4KB인 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











대 코드 시스템 요구 사항 : 운영 체제 : Windows 10 이상, MacOS 10.12 이상, Linux 배포 프로세서 : 최소 1.6GHz, 권장 2.0GHz 이상의 메모리 : 최소 512MB, 권장 4GB 이상의 저장 공간 : 최소 250MB, 권장 1GB 및 기타 요구 사항 : 안정 네트워크 연결, Xorg/Wayland (LINUX)

VS 코드 확장을 설치하는 이유는 다음과 같습니다. 네트워크 불안정성, 불충분 한 권한, 시스템 호환성 문제, C 코드 버전은 너무 오래된, 바이러스 백신 소프트웨어 또는 방화벽 간섭입니다. 네트워크 연결, 권한, 로그 파일, 업데이트 대 코드 업데이트, 보안 소프트웨어 비활성화 및 대 코드 또는 컴퓨터를 다시 시작하면 점차 문제를 해결하고 해결할 수 있습니다.

VS Code는 Full Name Visual Studio Code로, Microsoft가 개발 한 무료 및 오픈 소스 크로스 플랫폼 코드 편집기 및 개발 환경입니다. 광범위한 프로그래밍 언어를 지원하고 구문 강조 표시, 코드 자동 완료, 코드 스 니펫 및 스마트 프롬프트를 제공하여 개발 효율성을 향상시킵니다. 풍부한 확장 생태계를 통해 사용자는 디버거, 코드 서식 도구 및 GIT 통합과 같은 특정 요구 및 언어에 확장을 추가 할 수 있습니다. VS 코드에는 코드에서 버그를 신속하게 찾아서 해결하는 데 도움이되는 직관적 인 디버거도 포함되어 있습니다.

VS 코드는 Mac에서 사용할 수 있습니다. 강력한 확장, GIT 통합, 터미널 및 디버거가 있으며 풍부한 설정 옵션도 제공합니다. 그러나 특히 대규모 프로젝트 또는 고도로 전문적인 개발의 경우 VS 코드는 성능 또는 기능 제한을 가질 수 있습니다.

메모장은 Java 코드를 직접 실행할 수는 없지만 다른 도구를 사용하여 명령 줄 컴파일러 (Javac)를 사용하여 Bytecode 파일 (filename.class)을 생성하면 달성 할 수 있습니다. Java Interpreter (Java)를 사용하여 바이트 코드를 해석하고 코드를 실행하고 결과를 출력하십시오.

Visual Studio Code (VSCODE)는 Microsoft가 개발 한 크로스 플랫폼, 오픈 소스 및 무료 코드 편집기입니다. 광범위한 프로그래밍 언어에 대한 가볍고 확장 성 및 지원으로 유명합니다. VSCODE를 설치하려면 공식 웹 사이트를 방문하여 설치 프로그램을 다운로드하고 실행하십시오. VScode를 사용하는 경우 새 프로젝트를 만들고 코드 편집, 디버그 코드, 프로젝트 탐색, VSCODE 확장 및 설정을 관리 할 수 있습니다. VSCODE는 Windows, MacOS 및 Linux에서 사용할 수 있으며 여러 프로그래밍 언어를 지원하며 Marketplace를 통해 다양한 확장을 제공합니다. 이점은 경량, 확장 성, 광범위한 언어 지원, 풍부한 기능 및 버전이 포함됩니다.

Linux의 주요 용도에는 다음이 포함됩니다. 1. 서버 운영 체제, 2. 임베디드 시스템, 3. 데스크탑 운영 체제, 4. 개발 및 테스트 환경. Linux는이 분야에서 뛰어나 안정성, 보안 및 효율적인 개발 도구를 제공합니다.

git 저장소 주소를 보려면 다음 단계를 수행하십시오. 1. 명령 줄을 열고 리포지토리 디렉토리로 이동하십시오. 2. "git remote -v"명령을 실행하십시오. 3. 출력 및 해당 주소에서 저장소 이름을 봅니다.
