리눅스가 사용하는 메모리 관리 원리


답변:


7

리눅스는 둘 다 사용합니다. 분할을 사용하여 사용 가능한 모든 주소 공간을 매핑하면서 기본적으로 커널 및 사용자 공간보기와 같은 다른 액세스 권한을 부여합니다. 일부 예에서 KERNEL_DS (커널 데이터 세그먼트)에 대한 Linux 소스 코드를 grep 할 수 있습니다.

그런 다음 페이징은 가상 메모리를 구현하는 데 사용됩니다 (커널에서 "struct gdt_page"에 대한 Grep, 시작점)


6

Linux에서의 메모리 관리는 페이징을 통해서만 작동합니다.

Linux는 "작은"(보통 4kB) 및 "큰"(2M) 페이지를 모두 지원합니다. 전자는 특별한 작업을 알거나 수행하지 않고 "작동"하고 후자는 특별한 처리가 필요합니다 (부팅시 예약되고 특수 장치를 통해 매핑되어야 함).

Linux에서 "세그먼트"가 나타나는 유일한 컨텍스트는 프로세스의 데이터 세그먼트를 증가시키는 데 사용되는 brk () syscall입니다. 그러나 어느 쪽이든, 메모리는 페이지로 제공되고 페이지로 관리되며 x86 세그먼트 화와 관련이 없습니다.


i386이 나왔을 때 X86 세그먼테이션은 더 이상 사용되지 않습니다. 리눅스는 메모리 관리를 위해 분할을 사용한 적이 없다. ELKS 및 (아마도) uClinux와 같은 일부 파생물이있을 수 있습니다.
LawrenceC
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.