virtual-memory

Linux에서 비권한 모드로 페이지 테이블을 읽을 수 있습니까?
virtual-memory

Linux에서 비권한 모드로 페이지 테이블을 읽을 수 있습니까?

이것은 Unix와 Linux에서의 첫 번째 질문입니다. 현재 가상 메모리에 대해 배우고 있습니다. 이 훌륭한 논문에 감사드립니다.드러머(CCS'16). Android 6.0.1에서는 버디 할당자를 속여 취약한 페이지에 페이지 테이블 페이지를 할당합니다(해당 Linux 커널은~3.18.10.) 권한이 없는 작업을 수행합니다(궁극적인 목적은 다음과 같습니다.루트 권한 에스컬레이션.). 하지만 사용자 모드에서 페이지 테이블 페이지에 액세스하는 방법을 모르겠습니다. 가상 메모리에서는 전체 가상 메모리 주소가...

Admin

페이지 크기가 4096이 아닌 x86_64용 Linux를 컴파일하는 방법은 무엇입니까?
virtual-memory

페이지 크기가 4096이 아닌 x86_64용 Linux를 컴파일하는 방법은 무엇입니까?

페이지 크기가 4096보다 큰 x64 Linux 커널을 컴파일하려고 합니다. 블록 크기가 큰 파일 시스템은 VFS를 통해 마운트해야 합니다. 다른 아키텍처에서는 커널 구성을 사용하여 페이지 크기를 선택할 수 있습니다. x86_64에서는 작동하지 않습니다. x86_64에서 페이지 크기를 변경할 수 있습니까? PAGE_SHIFT를 16으로 늘리려고 시도했지만 arch/x86/include/asm/page_types.h오류가 발생했습니다. x86_64에서 다양한 페이지 크기로 빌드가 가능하다면 어떤 페이지...

Admin

순차 액세스와 랜덤 액세스 메모리 페이지 오류의 차이점은 무엇입니까?
virtual-memory

순차 액세스와 랜덤 액세스 메모리 페이지 오류의 차이점은 무엇입니까?

매핑된(그러나 로드되지 않은) 메모리 값의 시퀀스가 ​​있고 이에 액세스하려고 한다고 가정합니다. 페이지 오류가 발생하고 커널이 이를 메모리에 로드할 때 커널은 임의 액세스보다 순차 액세스를 더 빠르게 만들기 위해 어떤 종류의 최적화를 수행합니까? 예를 들어, 100페이지의 메모리를 매핑한 경우 순차 액세스는 페이지 1, 2, 3...을 읽고 무작위 액세스는 페이지 10, 2, 5...를 무작위 방식으로 읽습니다. 지연 시간의 차이가 있다면 무엇으로 설명할 수 있나요? ...

Admin

Linux 4.x에서 4kB RSS를 구현하는 방법은 무엇입니까?
virtual-memory

Linux 4.x에서 4kB RSS를 구현하는 방법은 무엇입니까?

저는 90년대 후반부터 오픈 소스 IRC 봇의 개발자/유지관리자로 활동해 왔습니다. 목표는 항상 작은 메모리 공간 내에서 최대한 다양하고 유용하게 만드는 것입니다. 2000년대에는 유용한 프로그램을 4kB RSS로 압축한 개념 증명 코드도 작성했는데, 이는 2.4 커널에서 구현하기 어렵지 않았습니다. 나는 init와 Agetty를 사용하여 이를 달성했습니다. 즉, 단일 4kB 메모리 페이지 내에서 상주하여 실행되도록 했습니다. 이제 어느 날 봇에게 메모리 사용량을 보고하도록 요청했을 때 봇은 다음과 ...

Admin

Linux 커널의 페이지에 가상 주소를 수동으로 매핑하는 방법은 무엇입니까?
virtual-memory

Linux 커널의 페이지에 가상 주소를 수동으로 매핑하는 방법은 무엇입니까?

저는 임베디드 Linux 시스템(kernel-5.10.24)을 개발 중이며 커널 메모리 매핑 테스트를 시도하고 있습니다. 이 테스트도 비슷한 작업을 수행합니다 vmalloc(). 가상 메모리 주소와 사용 가능한 페이지를 얻은 다음 가상 메모리 주소를 페이지 또는 물리적 주소에 매핑해야 합니다. map_kernel_range()및 에 대한 커널 함수를 사용할 수 있을 것 같지만 unmap_kernel_range()외부 커널 모듈로 내보내지지는 않습니다. 그렇다면 이 매핑을 수행할 수 있는 다른 커널 A...

Admin

Linux는 RAM 캐시를 비활성화합니다.
virtual-memory

Linux는 RAM 캐시를 비활성화합니다.

저는 ARM M1 MacBook Air에서 커널 6.5를 사용하여 Debian stable을 실행하고 있습니다. 가장 큰 문제는 RAM과 VRAM이 통합되어 있다는 점이며, 사용된 RAM의 양이 VRAM인지 확인할 수 있는 구체적인 방법이 없습니다(Asahi Linux 메인 개발자의 확인). 이로 인해 여유 RAM이 500MiB에 가까워지면 시스템이 지속적으로 중단됩니다. 이론적으로는 이 프로그램을 사용하여 메모리를 할당할 수 stress있으며 커널은 이를 종료하지만 실제로 너무 많은 메모리를 사용하...

Admin

프로세스 메모리 레이아웃 - 힙, 데이터 및 mmap 영역의 차이점
virtual-memory

프로세스 메모리 레이아웃 - 힙, 데이터 및 mmap 영역의 차이점

나는 온라인에서 Linux 프로세스의 메모리 레이아웃에 대해 상충되거나 불분명한 설명을 많이 보았습니다. 대개일반적으로 사용되는 사진좋다: 또 다른 공통점이 있다설명하다말할 수있다: 데이터 세그먼트에는 미리 정의된 값이 있고 수정될 수 있는 전역 또는 정적 변수만 포함됩니다. 힙에는 일반적으로 데이터 세그먼트가 끝나는 곳에서 시작되는 힙 섹션이라고 하는 메모리 부분에 저장되는 동적으로 할당된 데이터가 포함됩니다. 그리고반품: 일반적으로 힙은 C 런타임에 의해 생성 및 관리되는 특정 메모리 영역...

Admin

GParted에서 크기 조정 작업을 적용한 후에도 df -h에 표시되지 않는 CentOS VM의 확장 가상 하드 디스크
virtual-memory

GParted에서 크기 조정 작업을 적용한 후에도 df -h에 표시되지 않는 CentOS VM의 확장 가상 하드 디스크

CentOS VM(Windows Hyper-V Manager)의 가상 드라이브를 25GB에서 40GB로 확장했습니다. /dev/sda2 또한 GParted를 사용하여 새로 할당된 15GB 공간 전체를 사용하도록 기존 공간의 크기를 조정합니다 (모두 적용 클릭). 하지만 여전히 나타나지 않았습니다 df -h. 제가 취해야 할 다른 조치가 있나요? ...

Admin

어떤 물리적 주소가 어떤 NUMA 노드에 속하는지 확인하는 방법은 무엇입니까?
virtual-memory

어떤 물리적 주소가 어떤 NUMA 노드에 속하는지 확인하는 방법은 무엇입니까?

물리적 주소가 있고 그것이 속한 NUMA 노드를 확인하고 싶습니다. 검색 중 NUMA 노드를 확인하는 몇 가지 방법을 찾았습니다.가상 주소(예: move_pages)이지만 실제 주소는 포함되지 않습니다. 아마도 두 번째로 좋은 방법은 pagemap물리적 주소를 가상 주소로 역변환하는 것을 확인하는 것입니다 . ...

Admin

스택 및 힙 할당과 관련된 시스템 호출
virtual-memory

스택 및 힙 할당과 관련된 시스템 호출

프로세스 주소 공간에는 스택과 힙이 있습니다. 함수가 호출되거나 지역 변수가 선언될 때 커널은 물리적 주소를 할당하고 가상 주소와 물리적 주소의 매핑을 생성해야 하므로 여기에는 시스템 호출이 필요합니다. 무슨 일이야? Linux에서 스택 할당은 어떻게 작동합니까? 첫 번째 대답은 다음과 같습니다. "(strace에 따라) 시스템 호출 없이 스택이 커지는 것을 발견했습니다. 따라서 이는 커널이 자동으로 스택을 커진다는 의미입니다(위의 "암시적"이 의미하는 것입니다). 즉, 프로세스에서 명시적인 mmap...

Admin

/proc/를 사용하여 하위 작업(스레드)의 스택을 찾는 방법/지도?
virtual-memory

/proc/를 사용하여 하위 작업(스레드)의 스택을 찾는 방법/지도?

목적: Linux 환경에서 포인터 스캐너를 만드는 방법에 대해 이론화 중입니다. 부인 성명: 내 결과는 Debian Bookworm(현재 안정 버전)과 사용자 정의 커널이 있는 Gentoo 시스템에서 테스트되었습니다. 차이는 관찰되지 않았습니다. 질문: 대상 프로세스에 디버거를 연결하지 않고도 각 스레드/하위 작업 스택에 대한 VMA를 식별할 수 있기를 바랍니다. 이것은 다음을 사용하여 가능해야합니다프로세스의사 파일 시스템 논의하다: Linux 4.5 이전에는 경로명 필드에 상위 작업의 스택 영역이...

Admin

mmap I/O 대기 시간을 측정하는 방법은 무엇입니까?
virtual-memory

mmap I/O 대기 시간을 측정하는 방법은 무엇입니까?

디스크 I/O가 많이 진행되는 동안 속도가 느려지거나 차단되는 것처럼 보이는 응용 프로그램이 있으므로 응용 프로그램의 I/O 작업이 차단되는 것으로 의심됩니다. 또 무엇이 잘못되었는지 상상할 수 없지만 확인하고 싶었습니다. 문제는 응용 프로그램이 주로 I/O에 mmap 파일을 사용하므로 mmap 메모리에서 I/O를 차단하는 것이 페이지 오류라는 것을 알지 못합니다 strace. 그런데 페이지 오류로 인해 스레드 실행이 일시 중지된 시간을 측정하는 방법이 있습니까? ...

Admin

아직 86GB의 RAM을 사용할 수 있는데 시스템에서 스왑을 많이 사용하는 이유는 무엇입니까?
virtual-memory

아직 86GB의 RAM을 사용할 수 있는데 시스템에서 스왑을 많이 사용하는 이유는 무엇입니까?

성능 문제라기보다는 무슨 일이 일어나고 있고 어떻게 작동하는지 이해하려는 욕구입니다. 내 시스템에는 128GB RAM을 포함하여 많은 리소스가 있습니다. 내가 발견한 것(그리고 충분한 런타임이 있을 때마다 일어난 일)은 여전히 ​​86GB의 메모리가 남아 있을 때 시스템이 사용 가능한 전체 스왑 공간을 사용하기 시작한다는 것입니다. 다음은 시스템 상태를 보여주는 htop의 스크린샷입니다. Swappiness는 5로 설정됩니다. $ sysctl vm.swappiness vm.swappiness = 5...

Admin

Linux의 힙 메모리 할당
virtual-memory

Linux의 힙 메모리 할당

프로세스가 "x"만큼의 힙을 요청할 때 Linux에서 할당한 메모리가 실제로 물리적으로 연속되어 있는지 혼란스럽습니다. 나의 현재 이해는 다음과 같습니다. Linux의 메모리 할당 단위는 페이지 크기입니다. 기본적으로 페이지 크기는 4KB입니다. 페이지는 RAM에서 물리적으로 연속되어 있습니다. /proc/buddyinfo의 출력에서 ​​총 메모리가 그룹 0, 그룹 1, ... 그룹 10 등 여러 그룹으로 나누어져 있음을 알 수 있습니다. 각 그룹 "n"은 각각 크기가 4KB * (2^n)인 여러 개...

Admin

실제적인 문제
virtual-memory

실제적인 문제

이사 공지 방금 이 질문(약간 수정됨)을 StackOverflow 질문(교차 게시에 대한 강력한 반대 때문에 삭제함)에서 옮겼는데 아직 답변이 제공되지 않았으며 여기에 더 적합할 수 있습니다. StackOverflow 질문에는 두 가지 의견(답변 없음)이 있습니다. 다음은 이러한 의견에 대한 간략한 요약입니다(이를 이해하려면 실제 질문을 읽어야 할 수도 있습니다). 파일 시스템 접근 방식을 libhugetlbfs사용하면 다양한 작업을 수행할 수 있습니다. 그것은 저에게 별로 설득력이 없습니다. 제...

Admin