2014년 8월 23일 토요일

[Linux Kernel] 67주차(2014.08.23)

ARM10C 67주차 후기

일시 : 2014.08.23 (67주차)
모임명 : NAVER개발자커뮤니티지원_IAMROOT.ORG_10차ARM-C
장소 : 토즈 강남 타워점
장소지원: NAVER 개발자 커뮤니티 지원 프로그램
참여인원: 6명

스터디 진도 :

  • mm_init() 복습

main.c::start_kernel()

asmlinkage void __init start_kernel(void)
{
...
    boot_cpu_init();
    // 현재 cpu(core id)를 얻어서 cpu_XXX_bits[] 의 cpu를 셋한다.

    page_address_init();
    // 128개의 page_address_htable 배열을 초기화
...
    setup_arch(&command_line);
...
    setup_nr_cpu_ids();
    setup_per_cpu_areas();
    // pcpu 구조체를 만들어 줌 (mm/percpu.c)

    smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */
    // boot cpu 0의 pcpu 영역의 base주소를 core register에 설정해줌
...
    page_alloc_init();
    // cpu_chain에 page_alloc_cpu_notify를 연결함 (mutex lock/unlock 사용)
...
    vfs_caches_init_early();
    // Dentry cache, Inode-cache용 hash를 위한 메모리 공간을 각각 512kB, 256kB만큼 할당 받고,
    // 131072, 65536개 만큼 hash table을 각각 만듬
...
    mm_init();
    // buddy와 slab 을 활성화 하고 기존 할당 받은 bootmem 은 buddy,
    // pcpu 메모리, vmlist 는 slab으로 이관

// 2014/08/09 종료
  • start_kernel()->mm_init()을 복습합니다. > mm_init();

main.c::mm_init()

static void __init mm_init(void)
{
    page_cgroup_init_flatmem(); // null function
    mem_init();
    // bootmem으로 관리하던 메모리를 buddy로 이관.
    // 각 section 메모리 크기를 출력.

    // mm/Makefile 에서 CONFIG_SLUB 설정으로 slub.c 로 jump
    kmem_cache_init();
    // slub 을 활성화 시킴

    percpu_init_late();
    // dchunk로 할당 받은 pcpu 메모리 값들을 slab으로 카피하여 이관

    pgtable_cache_init(); // null function

    vmalloc_init();
    // vmlist에 등록된 vm struct 들을 slab으로 이관하고 RB Tree로 구성
}

댓글 없음:

댓글 쓰기