프로세스의 모든 물리적 페이지 탐색

이고르 R.

커널 모듈 (2.6.32-358.el6.x86_64)에서 프로세스의 가상 메모리에 매핑 된 모든 물리적 주소를 인쇄하고 싶습니다. 주어진 task->mm, 나는 struct page다음과 같이 프로세스를 횡단하려고 시도 합니다.

int i, j, k, l;
for (i = 0; i < PTRS_PER_PGD; ++i)
{
    pgd_t *pgd = mm->pgd + i;
    if (pgd_none(*pgd) || pgd_bad(*pgd))
        continue;
    for (j = 0; j < PTRS_PER_PUD; ++j)
    {
        pud_t *pud = (pud_t *)pgd_page_vaddr(*pgd) + j;
        if (pud_none(*pud) || pud_bad(*pud))
            continue;
        for (k = 0; k < PTRS_PER_PMD; ++k)
        {
            pmd_t *pmd = (pmd_t *)pud_page_vaddr(*pud) + k;
            if (pmd_none(*pmd) || pmd_bad(*pmd))
                continue;

            for (l = 0; l < PTRS_PER_PTE; ++l)
            {
                pte_t *pte = (pte_t *)pmd_page_vaddr(*pmd) + l;
                if (!pte || pte_none(*pte))
                    continue;
                struct page *p = pte_page(*pte);
                unsigned long phys = page_to_phys(p);
                printk(KERN_NOTICE "addr %lx", phys);
            }
        }
    }
}

출력이 약간 이상해 보이므로 (특히 일련의 동일한 주소가 있음) 이론적으로 위의 내용이 올바른지 묻고 싶습니다.

이고르 R.

더 나은 접근 방식은 프로세스의 VMA를 탐색하고 페이지 디렉터리를 통해 각 VMA를 물리적 페이지 / 주소로 변환하는 것입니다.

struct vm_area_struct *vma = 0;
unsigned long vpage;
if (task->mm && task->mm->mmap)
    for (vma = task->mm->mmap; vma; vma = vma->vm_next)
        for (vpage = vma->vm_start; vpage < vma->vm_end; vpage += PAGE_SIZE)
            unsigned long phys = virt2phys(task->mm, vpage);
//...

어디 virt2phys같을 것이다 :

//...
pgd_t *pgd = pgd_offset(mm, virt);
if (pgd_none(*pgd) || pgd_bad(*pgd))
    return 0;
pud = pud_offset(pgd, virt);
if (pud_none(*pud) || pud_bad(*pud))
    return 0;
pmd = pmd_offset(pud, virt);
if (pmd_none(*pmd) || pmd_bad(*pmd))
    return 0;
if (!(pte = pte_offset_map(pmd, virt)))
    return 0;
if (!(page = pte_page(*pte)))
    return 0;
phys = page_to_phys(page);
pte_unmap(pte);
return phys;

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Shiny의 탐색 모음을 포함한 모든 페이지에 배경색 적용

분류에서Dev

ReactJS에서 탐색 모음에서 페이지의 div 탐색을 처리 할 수 없습니다.

분류에서Dev

Linux의 모든 페이징 구조의 물리적 주소가 페이지 테이블에 매핑됩니까?

분류에서Dev

웹 사이트의 모든 페이지에서 동일한 탐색

분류에서Dev

페이지 하단의 가로 스크롤 탐색 모음

분류에서Dev

웹 페이지의 모든 링크와 하위 페이지 링크를 탐색해야합니다.

분류에서Dev

모든 탐색 탭을 페이지 확대 / 축소의 아이콘으로 모으고 싶습니다.

분류에서Dev

QML의 페이지 탐색

분류에서Dev

동적 페이지 폴리머 탐색

분류에서Dev

모든 페이지의 모든 텍스트를 특정 색상으로 전환

분류에서Dev

페이지 파일의 메모리를 Windows의 물리적 메모리로 한 번에 "스왑"하는 방법 (예 : Linux 스왑 오프)

분류에서Dev

Meteor의 특정 페이지에서 탐색 모음 제외

분류에서Dev

탐색 모음을 페이지 너비로 만들기

분류에서Dev

여러 HTML 페이지에 외부 탐색 모음로드

분류에서Dev

웹 사이트의 모든 페이지에 대한 탐색 모음의 배경색 및 텍스트 색상 변경

분류에서Dev

Vapor 코드를 액세스로부터 보호하기 위해 뜨겁습니다 (모든 유형의 액세스, 심지어 물리적 액세스)?

분류에서Dev

탭 페이지 및 하단 탐색의 정적 헤더?

분류에서Dev

Magento : 특정 제품으로 직접 정적 페이지 탐색

분류에서Dev

Magento : 특정 제품으로 직접 정적 페이지 탐색

분류에서Dev

Java (Selenium 제외)를 사용하여 페이지의 모든 웹 객체를 탐색하고 학습합니다.

분류에서Dev

Angular JS : 페이지의 모든 탐색에 동일한 URL을 설정하는 방법은 무엇입니까?

분류에서Dev

한 페이지의 모든 페이지에서 모든 양식 처리

분류에서Dev

페이지가 세그먼트로 분할 된 angularjs가있는 탐색 모음

분류에서Dev

TCPDF-모든 페이지의 페이지 테두리

분류에서Dev

하나의 물리적 클러스터에서 다른 물리적 클러스터로 Vertica Schema 또는 스키마의 모든 테이블 복사

분류에서Dev

반응 탐색 5 오류 바인딩 요소 '탐색'에는 암시 적으로 '모든'유형이 있습니다.

분류에서Dev

Wordpress의 단일 페이지에 카테고리의 모든 게시물 표시

분류에서Dev

탐색 페이지의 탐색 모음 섹션에 아이콘을 배치하는 방법

분류에서Dev

탐색 페이지의 도구 모음에 배경 이미지 제공

Related 관련 기사

  1. 1

    Shiny의 탐색 모음을 포함한 모든 페이지에 배경색 적용

  2. 2

    ReactJS에서 탐색 모음에서 페이지의 div 탐색을 처리 할 수 없습니다.

  3. 3

    Linux의 모든 페이징 구조의 물리적 주소가 페이지 테이블에 매핑됩니까?

  4. 4

    웹 사이트의 모든 페이지에서 동일한 탐색

  5. 5

    페이지 하단의 가로 스크롤 탐색 모음

  6. 6

    웹 페이지의 모든 링크와 하위 페이지 링크를 탐색해야합니다.

  7. 7

    모든 탐색 탭을 페이지 확대 / 축소의 아이콘으로 모으고 싶습니다.

  8. 8

    QML의 페이지 탐색

  9. 9

    동적 페이지 폴리머 탐색

  10. 10

    모든 페이지의 모든 텍스트를 특정 색상으로 전환

  11. 11

    페이지 파일의 메모리를 Windows의 물리적 메모리로 한 번에 "스왑"하는 방법 (예 : Linux 스왑 오프)

  12. 12

    Meteor의 특정 페이지에서 탐색 모음 제외

  13. 13

    탐색 모음을 페이지 너비로 만들기

  14. 14

    여러 HTML 페이지에 외부 탐색 모음로드

  15. 15

    웹 사이트의 모든 페이지에 대한 탐색 모음의 배경색 및 텍스트 색상 변경

  16. 16

    Vapor 코드를 액세스로부터 보호하기 위해 뜨겁습니다 (모든 유형의 액세스, 심지어 물리적 액세스)?

  17. 17

    탭 페이지 및 하단 탐색의 정적 헤더?

  18. 18

    Magento : 특정 제품으로 직접 정적 페이지 탐색

  19. 19

    Magento : 특정 제품으로 직접 정적 페이지 탐색

  20. 20

    Java (Selenium 제외)를 사용하여 페이지의 모든 웹 객체를 탐색하고 학습합니다.

  21. 21

    Angular JS : 페이지의 모든 탐색에 동일한 URL을 설정하는 방법은 무엇입니까?

  22. 22

    한 페이지의 모든 페이지에서 모든 양식 처리

  23. 23

    페이지가 세그먼트로 분할 된 angularjs가있는 탐색 모음

  24. 24

    TCPDF-모든 페이지의 페이지 테두리

  25. 25

    하나의 물리적 클러스터에서 다른 물리적 클러스터로 Vertica Schema 또는 스키마의 모든 테이블 복사

  26. 26

    반응 탐색 5 오류 바인딩 요소 '탐색'에는 암시 적으로 '모든'유형이 있습니다.

  27. 27

    Wordpress의 단일 페이지에 카테고리의 모든 게시물 표시

  28. 28

    탐색 페이지의 탐색 모음 섹션에 아이콘을 배치하는 방법

  29. 29

    탐색 페이지의 도구 모음에 배경 이미지 제공

뜨겁다태그

보관