27주차 스터디 중 이해되지 않는 부분에 대해 질문드립니다.

 

질문)

arch/arm64/include/asm/pgtable.h 내의

set_pud(), set_pmd() 함수 내에서

 

static inline void set_pud(pud_t *pudp, pud_t pud)
{
#ifdef __PAGETABLE_PUD_FOLDED
    if (in_swapper_pgdir(pudp)) {
        set_swapper_pgd((pgd_t *)pudp, __pgd(pud_val(pud)));
        return;
    }
#endif /* __PAGETABLE_PUD_FOLDED */

    WRITE_ONCE(*pudp, pud);
    if (pud_valid(pud))
        dsb(ishst);
}

 

static inline void set_pmd(pmd_t *pmdp, pmd_t pmd)
{
#ifdef __PAGETABLE_PMD_FOLDED
    if (in_swapper_pgdir(pmdp)) {
        set_swapper_pgd((pgd_t *)pmdp, __pgd(pmd_val(pmd)));
        return;
    }
#endif /* __PAGETABLE_PMD_FOLDED */
    
    WRITE_ONCE(*pmdp, pmd);
    
    if (pmd_valid(pmd))
        dsb(ishst);
}

 

__PAGETABLE_PUD_FOLDED 와 __PAGETABLE_PMD_FOLDED 의 정확한 의미가 궁금합니다.

 

스터디 중에서는 

http://jake.dothome.co.kr/pt/ 에서 설명해주신 것을 토대로

 

- 예를 들어 VA_BITS = 48, PAGE_SIZE = 4K 인 시스템에서

리눅스 상에서는 논리적으로 4단계의 테이블을 가지지만

하드웨어 아키텍처에서 지원하는 테이블이 4단계 보다 적어서 각각의 테이블(pgd, pud, pmd, pte)을 만들지 않고

다른 테이블을 공유하여(예를 들면, pud 테이블을 만들지 않고, pgd 테이블에 pud 테이블 엔트리도 추가)

단계를 줄이는 것이 아닌가?

 

하는 의견을 주고 받았습니다.

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 프로그래밍 관련 Q&A 게시판 입니다. woos 2016.04.09 22243
517 alloc과 free함수에 대해서 질문입니다. [1] 정재훈 2011.06.28 93635
516 안드로이드 system 폴더안의 파일을 인식못하는데.. [5] 김영일 2011.04.14 69687
515 x86에서 ZONE_DMA 영역의 사용 [1] 홍문화 2011.05.02 58266
514 커널에서 page alloc에 관해서 [1] 미다리로23 2017.02.05 34571
513 디바이스 드라이버 모듈에서 작성한 함수를 커널에서 사용하는 방법 [1] 개짖는소리 2017.02.06 27040
512 Linux kernel의 CFS(Completely Fair Scheduling) 스케줄러에서 time slice 구하는 방법? [10] 김재호 2010.04.30 25222
511 "만들면서 배우는 OS..." 4장 kernel.asm 중 idtr 설정 질문드립니다 쿨쿨 2013.06.18 24951
510 리눅스 스케줄러 관련 [9] 홍문화 2011.02.23 22947
509 NFS NAS SAN 이란 무엇인가? file 박은병 2010.04.13 21880
508 s3c2440기반의 리눅스 커널 분석 중 MM관련 질문입니다. 유태경 2007.09.02 21523
507 /dev 폴더에 있는 node파일 중에서 어떤 것을 open해야 플래쉬를 사용할 수 있을까요? [1] 박종주 2012.02.17 19849
506 sparsemem에 대한 질문이 있습니다. [5] 안정모 2010.03.20 19717
505 16기 리눅스 커널 스터디 C조 18주차 질문입니다. [3] cien 2019.10.12 18824
504 tty, tty0, console, vc 는 각각 뭐하는 디바이스인지? [3] 이창만 2008.12.04 18552
503 ARM A8 이상의 프로세서를 공부할 때 스터디 방향 [4] 유강희 2011.06.15 18515
502 임베디드 OS 만들기 내용과 관련하여 문의드립니다. [5] 송인재 2010.03.25 18321
501 far call 이란 무엇인가요? [4] 박한범 2010.04.13 17840
500 파일시스템에 관한 질문(Htree [6] 사앙조 2017.05.22 17069
499 SMP관련 질문입니다. [2] 컴퓨터 2017.04.13 16583
XE Login