Q&A 게시판

리눅스 커널에 대한 Q&A 게시판 입니다. (비밀글 체크는 꼭 필요한 경우에만)

memblock 영역에 관하여

작성자
궁금해2
작성일
2019-01-25 01:08
조회
428
memblock 개념에 대해 이해가 되지 않는 부분이 있어서 문의드립니다.
memblock 이 ramdisk 영역을 reserved memblock에 추가하게 되는데, memory 타입과 reserved 타입 둘다 사용할 물리 메모리 영역을 등록하는 것으로 책에 기술되어 있습니다. 추가적으로 reserved memory는 사용중인 메모리도 있다고 하는데, 그러면 reserved 타입이 memory 타입을 포함하는 구조이지 않나요?? 그럼 굳이 memory 타입을 사용할 필요가 잇나요?
전체 3
  • 2019-01-25 08:56
    안녕하세요?

    memory 타입은 실제 사용할 수 있는 메모리를 등록합니다.
    예를 들어 arm 임베디드 시스템에 1G 메모리를 사용하는 경우 사용하는 1G 물리 메모리 가 1건 통째로 등록됩니다.

    reserved 타입은 위의 등록된 memory 범위내에서 커널이 할당하여 사용하는 물리 메모리 범위(region)를 등록하여 사용합니다.
    reserved 타입에 등록되면 '이 영역은 어떤 루틴에선가 사용하는 영역이니 다른 빈 곳을 찾아 사용하세요.' 라는 의미 입니다.
    따라서 ramdisk 영역도 reserved에 포함되어야 합니다. 이렇게 등록된 영역은 커널의 memblock이 메모리 할당을 해야 할 때 이 영역을 피해갑니다.

    즉 간단히 표현하면
    - memory 타입은 RAM으로 사용할 수 있는 물리 주소 공간을 등록하고,
    - reserved 타입은 그 RAM 영역 중 할당(allocation)된 물리 메모리의 주소 영역이 등록됩니다.

    도움이 되시길 바랍니다.

  • 2019-03-26 10:25
    memblock 에서 메모리 할당을 하게되면 reserved 로 등록이 되나요?
    memblock.memory 에서 빈영역을 찾아서 할당이 되면 그 영역이 reserved 로 등록이 되는지 궁금합니다.

  • 2019-04-24 17:12
    아 추가 질문이 있었는지 몰랐네요.

    memblock으로 할당하려고 하면 다음과 같이 2 스텝을 사용합니다.

    1) 먼저 빈공간 검색
    DRAM 전체 영역이 표현된 memblock.memory 범위 안이어야 하고, 할당 공간을 표현한 memblock.reserved에 등록되지 않은 빈 공간을 찾습니다.

    2) 찾은 공간 등록
    memblock.reserved에 찾은 공간을 추가합니다.

    수고하세요.