본문 바로가기

linux kernel33

anon_vma chaining (v2.6.34) Previously on rmap rmap (v2.5.27): pte chaining & page frame reclamation Introduction What is Reverse Mapping? 가상 메모리는 페이지 테이블을 사용해서 가상 주소를 물리 주소로 변환한다. 페이지 테이블은 프로세스별로 존재하며, 각각의 프로세스는 독립적인 가상 주소공간 hyeyoo.com Object-based reverse mapping (v2.6.7) Previously on rmap rmap (v2.5.26): pte chaining & page frame reclamation Introduction What is Reverse Mapping? 가상 메모리는 페이지 테이블을 사용해서 가상 주소를 물리 주소로 변환한다.. 2023. 2. 24.
Object-based reverse mapping (v2.6.7) Previously on rmap rmap (v2.5.26): pte chaining & page frame reclamation Introduction What is Reverse Mapping? 가상 메모리는 페이지 테이블을 사용해서 가상 주소를 물리 주소로 변환한다. 페이지 테이블은 프로세스별로 존재하며, 각각의 프로세스는 독립적인 가상 주소공간 hyeyoo.com 이전 글에서는 v2.5.27에 도입된 minimal rmap을 살펴봤다. pte chain 기반 rmap은 메모리 오버헤드와 fork/exit, page mapping/unmapping의 긴 실행 시간 때문에 머지 않아 object 기반 rmap에 의해 대체되었다. [4], [5] Some changes in pte chaining pt.. 2023. 2. 17.
Physical Memory Model (FLATMEM, SPARSEMEM) struct page 메모 struct page에 대한 간단한 노트 참고로 64비트 리눅스는 LP64를 사용한다. 이 글에서 자료형의 크기는 LP64에 따라서 서술되었다. Introuction struct page는 페이지 프레임 하나 (보통 4096 바이트)에 대한 정 hyeyoo.com Introduction 물리 메모리는 시스템 내에서 다양한 형태로 존재할 수 있다. 물리 주소 공간의 처음부터 끝까지 사용가능한 물리 메모리가 연속적으로 존재하거나, 중간에 구멍이 있을 수도 있다. 아니면 중간에 구멍이 있는 정도가 아니라 드문드문 물리 메모리가 존재할 수도 있으며, 서로 다른 NUMA 노드에 속할 수도 있다. 그림에서 보여주듯 물리 메모리의 레이아웃은 정말 다양한 형태로 존재할 수 있으며, 운영체제 .. 2023. 2. 8.
rmap (v2.5.27): pte chaining & page frame reclamation Introduction What is Reverse Mapping? 가상 메모리는 페이지 테이블을 사용해서 가상 주소를 물리 주소로 변환한다. 페이지 테이블은 프로세스별로 존재하며, 각각의 프로세스는 독립적인 가상 주소공간을 갖는다. MMU는 가상 주소를 물리 주소로(forward mapping) 변환하지만, 운영체제는 반대로 어떤 페이지 프레임이 어떤 프로세스의 가상 주소 공간에 매핑되어있는지(reverse mapping)를 알아야 하는 경우가 있다. 구체적으로 어떤 경우에 reverse mapping이 필요한가 하면 swapout/pageout, migration, compaction을 할때 해당 페이지프레임을 사용하고 있는 프로세스의 pte를 빠르게 찾거나 수정하기 위해 필요하다. 예전 (Linux.. 2022. 12. 26.
Page Frame Reclamation and Swapout (v2.4.22) Introduction 언젠가 swap, PFRA, rmap에 대해서도 글을 써야겠다고 생각하고 있었는데, 모두 복잡하다보니 어디서부터 시작할지가 항상 고민이었다. 결국 가장 문서화가 잘 되어있는 Understanding the Linux Virtual Memory Manager 에서 시작을 해보기로 했다. 따라서 이 글은 책에서 다루는 v2.4.22에 기반한다. References: Understanding the Linux Virtual Memory Manager 이 글은 Mel Gorman의 책과 많이 겹친다. 이 글과 같이 읽으면 좋을 것 같다. 이 글에서는 swap 자체의 동작 방식에 관한 내용은 다루지 않는다. Page Frame Reclamation Ch 10. Page Frame Recla.. 2022. 12. 24.
Process Address Space 이 글에서는 리눅스에서의 프로세스 주소 공간을 관리하는 자료구조를 알아볼 것이다. 이 글에서는 page table isolation / address space isolation은 고려하지 않는다. outdated된 내용이 조금 있을 수 있지만 우선은 프로세스 주소 공간에 대한 큰 그림을 그려보자. Address Space 주소 공간은 주소의 범위를 의미한다. 주소 공간의 크기는 32비트에서 4G, 64비트에서 16EB이다. 그리고 이 주소 공간을 어떻게 잘 나눠서 사용할지는 아키텍처에서 정한다. 예시) x86_64, aarch64 주소 공간은 크게 user (process) address space와 kernel address space로 나뉜다. kernel과 user의 address space를 어.. 2022. 11. 5.