일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 카프카
- Android
- strex
- proc
- Linux
- vmalloc
- multiqueue
- memory
- mm_struct
- NDK
- BLOCK
- Apache
- slab
- blk-mq
- devicedriver
- fastpath
- pmap
- kmalloc
- Kernel
- slub
- lruvec
- vm_area_struct
- Network
- spinlock
- page
- allocator
- commit
- buddy_system
- slowpath
- kafka
- Today
- Total
목록page (2)
Art of Pr0gr4m

리눅스 커널은 메모리 부족시 reclaim에 LRU(Least Recently Used) 정책을 사용한다. 1. Basis 커널은 리스트를 이용하여 LRU를 구현한다. 커널 2.4엔 하나의 리스트를, 커널 2.6.28 이전엔 active_list와 inactive_list를, 그 이후엔 5개의 리스트를 사용했다. 또한, 커널 4.7까지는 리스트를 구조체 zone에서 관리했는데, 4.8부터는 구조체 pglist_data에서 관리한다. 5개의 리스트는 다음과 같다. pglist_data->__lruvec.lists[LRU_INACTIVE_ANON] pglist_data->__lruvec.lists[LRU_ACTIVE_ANON] pglist_data->__lruvec.lists[LRU_INACTIVE_FILE..

이번 포스트부터는 리눅스의 메모리 모델과 관리 정책들에 대해서 알아본다. 가장 먼저 가상 메모리와 페이징에 대해서 알아볼 것이다. 참고로 세그먼테이션은 추후에 부팅과정에 대해 다룰 때 운영 모드와 함께 다룰 예정이며, 메모리 관리 정책에서는 넘어갈 것이다. 또한, 해당 포스트는 가상 메모리와 페이징의 일반적인 개념을 공부하는 포스트는 아니므로 컨셉에 대한 공부가 필요하다면 아래 링크를 참고하도록 한다. https://en.wikipedia.org/wiki/Virtual_memory flags bits: * * PG_reserved is set for special pages. The "struct page" of such a page * should in general not be touched (e.g..