제 45주차 2019년 3월 2일 (토)
| 모임장소 : 만렙커피, 강남역 이지스터디 19번방
| 모임시간 : 15:00 ~ 22:00
| 참여인원 : 총 3명 (오곡라뗴, 코딩코딩, 코딩의노예)
2.스터디 내용
5.1. 방법: 함께 한 줄씩 분석하며 논의한 내용을 바탕으로 주석을 남긴 후 git에 업데이트함
5.2. 진행 사항:
start_kernel - mm_init() - kmem_cache_init() 흐름 파악
slab (slub)에 대해 공부. 흐름 파악.
------------------------------------------------------------------------------------------------
History ( Iamroot.org 커널 스터디 그룹 15차A조 )
1주차 - 28, April, 2018, 숭실대학교 정보과학관 204호 강의실 (리눅스 내부구조 ~ 72p)
2주차 - 5, May, 2018, 넷마블 본사 19층 회의실 (리눅스 내부구조 ~ 117p)
3주차 - 12, May, 2018, 숭실대학교 문화관 3307호 (리눅스 내부구조 ~ 159p)
4주차 - 19, May, 2018, 숭실대학교 문화관 3307호 (리눅스 내부구조 ~ 174p)
5주차 - 26, May, 2018, 숭실대학교 문화관 3312호 (리눅스 내부구조 ~ 247p 끝), Linuxias 님 systemd, ELF 세미나
6주차 - 2, June, 2018, 숭실대학교 문화관 3307호 리눅스 커널 심층분석 개정 3판 ~103 page
7주차 - 9, June, 2018, 숭실대학교 문화관 3307호 리눅스 커널 심층분석 개정 3판 ~200 page
8주차 - 16, June, 2018, 숭실대학교 문화관 3307호 리눅스 커널 심층분석 개정 3판 ~239 page
9주차 - 23, June, 2018, 을지로입구역 SKT타워 지하2층 G회의실 리눅스 커널 심층분석 개정 3판 ~294 page
10주차 - 30, June, 2018, 여의도역 국제금융로 2길 25 리눅스 커널 심층분석 개정 3판 ~349 page
11주차 - 7, July, 2018, 서울특별시 관악구 남현동 1062-10번지 3층 리눅스 커널 심층분석 개정 3판 ~417 page
12주차 - 14, July, 2018, 서울특별시 관악구 남현동 1062-10번지 3층 리눅스 커널 심층분석 개정 3판 ~462 page
13주차 - 21, July, 2018, 서울특별시 강남구 강남대로94길 18 2층 리눅스 커널 심층분석 개정 3판 ~512 page
14주차 - 28, July, 2018, 서울특별시 강남구 강남대로94길 18 2층 리눅스 커널 심층분석 개정 3판 ~584 page 끝
15주차 - 4, August, 2018, 서울특별시 관악구 남현3길 62 지하, start_kernel ~4line
16주차 - 11, August, 2018, 강남역 스터디블룸 4층 3번방, start_kernel ~setup_arch()
17주차 - 18, August, 2018, 강남역 이지스터디 3층 G번방, early_fixmap_init() ~ pud_init()
18주차 - 25, August, 2018, 강남역 이지스터디 2층 11,15번방, early_fixmap_init() ~ pud_init()
19주차 - 1, September, 2018, 사당역 더포도 스터디룸 3층 5번방, early_init_dt_scan_memory() ~ memblock_add_range()
20주차 - 8, September, 2018, 서울특별시 서초구 강남대로 53길 7 애니타워 1204호, setup_machine_fd() ~ efi_init()
21주차 - 15, September, 2018, 강남역 이지스터디 2층 15번방, arm64_memblock_init ~ early_init_fdt_scan_reserved_mem()
22주차 -
23주차 -
24주차 - 6, October, 2018, 강남역 이지스터디 3층 G번방, acpi_boot_table_init() ~ memory_present()
25주차 - 13, October, 2018, 강남역 이지스터디 2층 12번방, arm64_memory_present() ~ sparse_init()
26주차 - 20, October, 2018, 강남역 이지스터디 3층 B번방, sparse_init() ~ memblock_free_early()
27주차 - 27, October, 2018, 강남역 이지스터디 2층 5번방, zone_sizes_init() ~ find_zone_movable_pfns_for_nodes()
28주차 - 3, November, 2018, 강남역 이지스터디 2층 5번방, free_area_init_nodes()
29주차 - 10, November, 2018, 강남역 이지스터디 3층 H번방, bootmem_init() ~ cpu_read_bootcpu_ops()
30주차 - 17, November, 2018, 여의도역 국제금융로 2길 25 16층, cpu_read_bootcpu_ops() ~ setup_per_cpu_areas()
31주차 - 24, November, 2018, 여의도역 국제금융로 2길 25 16층, setup_per_cpu_areas() 진행 중.
32주차 - 1, December, 2018, 당산역 스타벅스, UMA/NUMA, SMP/AMP, page table, percpu 관련내용 복습
33주차 - 8, December, 2018, 사당역 더포도, setup_per_cpu_areas()~pcpu_setup_first_chunk(거의 끝)
34주차 - 15, December, 2018, 강남역 이지스터디 2층 7번방, setup_per_cpu_areas() 끝.
35주차 - 22, December, 2018, 강남역 이지스터디 2층 12번방, percpu setup이후 작업 코드 진행 중.
36주차 - 29, December, 2018, 사당역 더포도 3층 13번방, 코드로 알아보는 ARM리눅스커널 ~ 48p.
37주차 - 5, January, 2019, 강남역 이지스터디 3층 D번방, 코드로 알아보는 ARM리눅스커널 1장 마침.
38주차 - 12, January, 2019, 강남역 이지스터디 3층 E번방, smp_prepare_boot_cpu.
39주차 - 19, January, 2019, 강남역 스터디블룸 6번방, build_all_zonelists
40주차 -
41주차 - 쉼.
42주차 -
43주차 -
44주차 - 23, February, 2019, 강남역 이지스터디, mem_init() 버디
45주차 - 2, March, 2019, 강남역 이지스터디 2층 19번방, kmem_cache_init() 흐름 파악
댓글 2
-
코딩코딩
2019.03.04 22:50
-
코딩의노예
2019.03.04 23:11
Slab은 적당한 성능을 보이나 PC급 컴퓨터에서는 간단하고 메타데이터의 양이 적은 Slub을 사용. 임베디드와 같이 작은 시스템에서는 컴팩트한 Slob을 사용.
kmem은 kernel memory의 준말로, 페이지 할당을 해주는 buddy는 최소 페이지가 4kb 단위이므로 커널에서 적은 용량의 자료구조를 사용하고자 할 때, 수바이트에서 수십, 수백 바이트에 이르는 크기만큼만 할당해주는 일종의 "Cache"이다.
이 "Cache"를 "Slab"이라고 부르며, 그 종류에는 slab(이름 겹침 주의), slob, slub으로 이루어져 있다.
커널 2.6.19(맞나?) 전까지 Slab이 대표적으로 사용되어 slab이라는 용어가 kernel memory cache 라는 의미로 사용하는 것으로 보이며, 그 종류에는 slab, slob, slub으로 세가지 방식이 있는 것으로 추측 중이다.
.
참고 :
kmem_cache_init은 slab, slub, slob 할당자 초기화하는 코드입니다.
어떤 것이 kernel config로 활성화 되어있느냐에 따라 다르게 처리됩니다.
(스터디는 최근 커널에서 기본으로 쓰이는 slub사용.)