Linux Kernel Memory Management: Understanding Virtual and Physical Memory, Summaries of Linux skills

An in-depth exploration of linux kernel memory management, focusing on virtual and physical memory. It covers the concepts of virtual memory, its benefits, and the role of the buddy and slab allocators. Understand how linux efficiently manages memory and allocates resources.

Typology: Summaries

2019/2020

Uploaded on 05/10/2020

andyworkingholiday
andyworkingholiday 🇰🇷

9 documents

1 / 4

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
리눅스 커널 내부구조
Chapter 4. 메모리 관리!
1. 메모리 구조
(1) Virtual memory (가상 메모리):!
가상 메모리는 실제 시스템에 존재하는 물리 메모리의 크기와 관계없이 가상적인 주소 공간을 사용자 태스크
에게 제공한다. (32bit 경우 2 32승이 최대 크기이기 때문에 4GB) -> 가상적으로 줄거라면 기왕이면
공간을 주는 것이 좋기 때문. 한가지 주의할 점은 물리적으로 4GB 메모리를 모두 제공하는 것은 아니라
것이다. !
결국 가상 메모리는 사용자에게 개념적으로 공간을 제공함과 동시에 물리 메모리는 필요한 만큼의 메모리
사용되므로 가능한 많은 태스크가 동시에 수행될 있다는 장점을 제공한다.!
가상 메모리의 주요한 기능은 다음 3가지로 요약할 있다.
기억장치의 효율적 관리 : 기억장치를 하드디스크에 대한 캐시로 설정하여, 당장 사용하는 영역
유지하고 쓰지 않는 데이터는 하드디스크로 옮긴 , 필요할 때만 램에 데이터를 불러와 올리고
사용하지 않으면 하드디스크로 내림으로써 램을 효과적으로 관리한다.!
메모리 관리의 단순화 : 프로세스 마다 가상메모리의 통일된 주소 공간을 배정할 있으므로 메모
관리가 단순해진다.!
메모리 용량 안정성 보장 : 한정된 공간의 램이 아닌 거의 무한한 가상메모리 공간을 배정함으로써
프로세스들끼리 메모리 침범이 일어날 여지를 크게 줄인다.
(2) 물리 메모리
- SMP (symmetric multiprocessing)
또는 이상의 프로세서가 개의 공유된 메모리를 사용하는 다중 프로세서 컴퓨터 아키텍처이다.
사용되는 대부분의 다중 프로세서 시스템은 SMP 아키텍처를 따르고 있다. UMA(Unified Memory
Access)라고도 불린다.
- NUMA(Non-Uniform Memory Access)
메모리에 접근하는 시간이 CPU 메모리의 상대적인 위치에 따라 달라지는 컴퓨터 메모리 설계 방법.
CPU 메모리의 일부를 자신의 지역 메모리(Local Memory) 가지고 있으며 지역 메모리에 접근하는
속도는 원격 메모리(Remote Memory) 접근하는 속도보다 훨씬 빠르다.
간단히 예를 들어 시스템에 CPU 소켓이 있고, 512GB 메모리가 설치되어 있다면 물리 주소
0~128G-1번지까지의 메모리는 0 소켓의, 128G~256G-1번지까지의 메모리는 1 소켓의 지역 메모리
되는 방식. 소켓에서 지역 메모리에 접근할 때에는 원격 메모리에 접근할 때보다 훨씬 빠르게 데이터를
읽고 있다. 하나의 CPU 소켓에 코어 여러개가 들어가 있을 있기에 같은 지역 메모리를 사용하는
CPU 코어들을 묶어서 하나의 NUMA 노드로 친다. 8코어 4소켓 CPU라면 (하이퍼스레딩을 가정하지 않을
때에) 0~7 코어는 NUMA 노드 0, 8~15 코어는 NUMA 노드 1번과 같은 방식.
pf3
pf4

Partial preview of the text

Download Linux Kernel Memory Management: Understanding Virtual and Physical Memory and more Summaries Linux skills in PDF only on Docsity!

(1) Virtual memory ( ):

. (32bit 2 32 4GB) -> . 4GB . .

- :^ , , . - : . - : .

  • SMP (symmetric multiprocessing) . SMP. UMA(Unified Memory Access).
  • NUMA (Non-Uniform Memory Access) CPU. CPU (Local Memory) (Remote Memory). CPU , 512GB 0~128G-1 0 , 128G~256G-1 1 . . CPU CPU NUMA. 8 4 CPU ( ) 0~7 NUMA 0 , 8~15 NUMA 1.
  • (^) Node bank. bank Node Node pg_data_t. ( UMA node .) - (^) Zone . 16MB zone. zone , zone . 16MB ZONE_DMA , ZONE_NORMAL . 32bit system 1GB. 1GB 1 1. 1GB 896MB( .) 1 1. 1 1 ZONE_NORMAL , ZONE_HIGHMEM. 1 1 ZONE_DMA, ZONE_NORMAL. 32bit cost , ZONE_HIGHMEM. DMA, NORMAL, HIGHMEM zone . 64MB ARM CPU node zone. - (^) Page Frame . ( ) zone zone node , node

order. order order , order.

- Lazy Buddy

2.6.19 Lazy buddy. Buddy ZONE watermark. . __free_pages() , __alloc_pages(). __free_pages() , MAX_ORDER( 10) loop , ( ) order , order nr_free.

- Slab Allocator

. 4K

4K

. byte 4K. 19byte 4K 4077 byte free . . . cache. / cache.

. text data ,

, , region. , ,

0 , 3GB