Linux 커널 메모리 단편화 방지 기술: 메모리 관리에 대한 심층적인 이해
Linux 시스템에서 다양한 메모리 문제를 겪어본 적이 있나요? 메모리 누수, 메모리 조각화 등 이러한 문제는 리눅스 커널 메모리 단편화 방지 기술에 대한 깊은 이해를 통해 해결될 수 있습니다.
리눅스 커널이 물리적 메모리를 구성하고 관리하는 방식이 버디 시스템인데, 물리적 메모리 조각화는 조각화 문제를 예방하고 해결하기 위해 몇 가지 실용적인 기술을 채택했습니다. 여기서 요약하겠습니다.
1 메모리가 부족할 때 조각 통합
친구의 메모리 페이지 적용 적합한 페이지가 없으면 압축 및 회수라는 두 단계의 메모리 조정이 수행됩니다. 전자는 더 큰 연속 메모리를 얻기 위해 조각을 통합하는 것이고, 후자는 반드시 메모리를 차지하지 않는 버퍼 메모리를 재활용하는 것입니다. 여기서 초점은 전체 프로세스를 대략적으로 이해하는 것입니다.
으아아아GFP_FS 및 __GFP_IO; 또한, 영역의 남은 메모리는 특정 조건을 충족해야 합니다. 커널은 이를 "조각화 인덱스"라고 부릅니다. 이 값은 0에서 1000 사이입니다. 압축은 기본 조각화 인덱스가 더 큰 경우에만 수행할 수 있습니다. 500보다. 이 기본값은 proc 파일 extfrag_threshold를 통해 조정할 수 있습니다. 조각화 지수는 Fragmentation_index 함수를 통해 계산됩니다.
으아아아메모리 조각을 통합하는 과정에서 조각난 페이지는 이 영역 내에서만 이동하며, 해당 영역의 낮은 주소에 있는 페이지는 최대한 영역 끝으로 이동합니다. 새 페이지 위치 적용은 Compaction_alloc 함수를 통해 구현됩니다.
이동 프로세스는 동기식과 비동기식으로 구분됩니다. 메모리 적용이 실패한 후 첫 번째 압축에서는 비동기식을 사용하고 후속 회수에서는 동기식을 사용합니다. 동기 프로세스는 현재 사용되지 않는 페이지만 이동하고, 비동기 프로세스는 이동하기 전에 모든 MOVABLE 페이지가 사용될 때까지 순회하고 기다립니다.
2 이동성으로 페이지 정리
메모리 페이지는 이동성에 따라 다음 세 가지 유형으로 구분됩니다.
UNMOVABLE: 메모리의 위치가 고정되어 있어 마음대로 이동할 수 없습니다. 커널에 의해 할당된 메모리는 기본적으로 이 유형에 속합니다.
RECLAIMABLE: 이동할 수는 없지만 삭제 및 재활용은 가능합니다. 예를 들어, 파일 매핑 메모리;
MOVABLE: 사용자 공간 메모리는 기본적으로 이 유형에 속합니다.
메모리 신청 시 이동성에 따라 먼저 지정된 유형의 무료 페이지에서 메모리를 신청하세요. 각 영역의 여유 메모리는 다음과 같이 구성됩니다.
으아아아
대체 유형 우선순위 목록은 다음과 같이 정의됩니다.
으아아아
으아아아
page_group_by_mobility_disabled인 경우 모든 메모리를 이동할 수 없습니다.
각 메모리 영역이 갖는 최소 페이지 수를 결정하는 매개변수인 pageblock_nr_pages가 있으며 다음과 같이 정의됩니다.
으아아아
시스템 초기화 중에 모든 페이지는 MOVABLE로 표시됩니다:으아아아
다른 이동성 유형의 페이지는 나중에 생성되는데, 이는 위에서 언급한 "훔치기"입니다. 이런 일이 발생하면 일반적으로 작은 조각 생성을 피하기 위해 대체에서 우선순위가 높고 더 큰 연속 페이지가 "도용"됩니다.으아아아
/proc/pageteypeinfo를 통해 현재 시스템의 다양한 유형의 페이지 분포를 볼 수 있습니다.
3 가상 이동식 메모리 도메인
이동성을 기반으로 페이지를 구성하는 기술 이전에 커널에 통합된 또 다른 방법이 있는데, 바로 가상 메모리 도메인인 ZONE_MOVABLE입니다. 기본 아이디어는 간단합니다. 메모리를 분리 가능한 부분과 제거 불가능한 부분의 두 부분으로 나누는 것입니다.
1. enum zone_type { 2. \#ifdef CONFIG_ZONE_DMA 3. ZONE_DMA, 4. \#endif 5. \#ifdef CONFIG_ZONE_DMA32 6. ZONE_DMA32, 7. \#endif 8. ZONE_NORMAL, 9. \#ifdef CONFIG_HIGHMEM 10. ZONE_HIGHMEM, 11. \#endif 12. ZONE_MOVABLE, 13. __MAX_NR_ZONES 14. };
ZONE_MOVABLE的启用需要指定kernel参数kernelcore或者movablecore,kernelcore用来指定不可移动的内存数量,movablecore指定可移动的内存大小,如果两个都指定,取不可移动内存数量较大的一个。如果都不指定,则不启动。
与其它内存域不同的是ZONE_MOVABLE不关联任何物理内存范围,该域的内存取自高端内存域或者普通内存域。
find_zone_movable_pfns_for_nodes用来计算每个node中ZONE_MOVABLE的内存数量,采用的内存区域通常是每个node的最高内存域,在函数find_usable_zone_for_movable中体现。
在对每个node分配ZONE_MOVABLE内存时,kernelcore会被平均分配到各个Node:
kernelcore_node = required_kernelcore / usable_nodes;
在kernel alloc page时,如果gfp_flag同时指定了__GFP_HIGHMEM和__GFP_MOVABLE,则会从ZONE_MOVABLE内存域申请内存。
总之,Linux kernel内存碎片防治技术是一个非常重要的概念,可以帮助你更好地理解Linux系统中的内存管理。如果你想了解更多关于这个概念的信息,可以查看本文提供的参考资料。
위 내용은 Linux 커널 메모리 단편화 방지 기술: 메모리 관리에 대한 심층적인 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

소개 Linux는 유연성과 효율성으로 인해 개발자, 시스템 관리자 및 전원 사용자가 선호하는 강력한 운영 체제입니다. 그러나 길고 복잡한 명령을 자주 사용하는 것은 지루하고 응급실이 될 수 있습니다.

Linux는 서버, 개발 환경 및 임베디드 시스템에 적합합니다. 1. 서버 운영 체제로서 Linux는 안정적이고 효율적이며 종종 고 대전성 애플리케이션을 배포하는 데 사용됩니다. 2. 개발 환경으로서 Linux는 효율적인 명령 줄 도구 및 패키지 관리 시스템을 제공하여 개발 효율성을 향상시킵니다. 3. 임베디드 시스템에서 Linux는 가볍고 사용자 정의 가능하며 자원이 제한된 환경에 적합합니다.

소개 : Linux 기반의 윤리적 해킹으로 디지털 프론티어 보안 점점 더 상호 연결된 세상에서 사이버 보안이 가장 중요합니다. 윤리적 해킹 및 침투 테스트는 취약점을 적극적으로 식별하고 완화하는 데 필수적입니다.

기본 Linux 학습 방법은 다음과 같습니다. 1. 파일 시스템 및 명령 줄 인터페이스 이해, 2. LS, CD, MKDIR, 3. 파일 생성 및 편집과 같은 파일 작업 배우기, 4. 파이프 라인 및 GREP 명령과 같은 고급 사용법, 5. 연습 및 탐색을 통해 지속적으로 기술을 향상시킵니다.

Linux는 서버, 임베디드 시스템 및 데스크탑 환경에서 널리 사용됩니다. 1) 서버 필드에서 Linux는 안정성 및 보안으로 인해 웹 사이트, 데이터베이스 및 응용 프로그램을 호스팅하기에 이상적인 선택이되었습니다. 2) 임베디드 시스템에서 Linux는 높은 사용자 정의 및 효율성으로 인기가 있습니다. 3) 데스크탑 환경에서 Linux는 다양한 사용자의 요구를 충족시키기 위해 다양한 데스크탑 환경을 제공합니다.

Linux의 단점에는 사용자 경험, 소프트웨어 호환성, 하드웨어 지원 및 학습 곡선이 포함됩니다. 1. 사용자 경험은 Windows 또는 MacOS만큼 친절하지 않으며 명령 줄 인터페이스에 의존합니다. 2. 소프트웨어 호환성은 다른 시스템만큼 좋지 않으며 많은 상용 소프트웨어의 기본 버전이 부족합니다. 3. 하드웨어 지원은 Windows만큼 포괄적이지 않으며 드라이버를 수동으로 컴파일 할 수 있습니다. 4. 학습 곡선은 가파르고 명령 줄 운영을 마스터하는 데 시간과 인내가 필요합니다.

LinuxisNothardTolearn, ButtheDifficulturedsonyourbackground 및 Ggoals.forthosewithoSexperience, 특히 Command-linefamiliarity, BeginnersMayFaceAsTeeperLearneLearneCURVEBUTCANMANAGEWITHPROPERSORCES.LINUX'SOURCENATURY, BAS

Linux의 5 가지 기본 구성 요소는 다음과 같습니다. 1. 커널, 하드웨어 리소스 관리; 2. 기능과 서비스를 제공하는 시스템 라이브러리; 3. 쉘, 사용자가 시스템과 상호 작용할 수있는 인터페이스; 4. 파일 시스템, 데이터 저장 및 구성; 5. 시스템 리소스를 사용하여 기능을 구현합니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
