결재를 진행하시면 아래의 동영상을 시청할 수 있는 권한을 부여해 드립니다.
본인 소유의 google 계정 이메일 주소가 있어야 합니다.
커널 메모리 소스 설명 06-1(alloc_pages 함수 소스 설명)
//mm/slub.c
static struct slab *new_slab(struct kmem_cache *s, gfp_t flags, int node)
allocate_slab(s, flags, node)
struct slab *slab;
slab = alloc_slab_page(alloc_gfp, node, s->oo);
struct folio *folio;
folio = alloc_pages(flags, order);
//mm/page_alloc.c
__alloc_pages_noprof(gfp_mask, order, nid, NULL)
[kstudy 20251122] alloc_pages() 함수 소스 설명
유투브 링크: https://youtu.be/hozCE0lDsII
상영시간: 2시간 05분
커널 메모리 소스 설명 06-2(rmqueue 함수 소스 설명)
rmqueue(ac->preferred_zoneref, zone, order, gfp_mask, alloc_flags, ac->migratetype)
{
if (order <= 3)
rmqueue_pcplist()
struct per_cpu_pages *pcp;
pcp = pcp_spin_trylock(zone->per_cpu_pageset);
list = &pcp->lists[order_to_pindex(migratetype, order)];
page = __rmqueue_pcplist(zone, order, migratetype, alloc_flags, pcp, list);
rmqueue_buddy()
if (alloc_flags & ALLOC_HIGHATOMIC)
page = __rmqueue_smallest(zone, order, MIGRATE_HIGHATOMIC);
if (!page)
page = __rmqueue(zone, order, migratetype, alloc_flags);
return page;
}
[kstudy 20251129] rmqueue() 함수 소스 설명
유투브 동영상: https://youtu.be/0nblyConE2U
상영시간: 2시간 32분
커널 메모리 06 (alloc_pages, rmqueue 소스 설명)