2014-12-02 2 views
2

가상 메모리 페이지 수가 실제 메모리 프레임 수와 같고 프레임과 페이지 크기가 동일하다는 것을 32 비트 시스템에서와 같이 페이지 크기가 4096메모리 페이지 크기 변경

글쎄, 거기에 페이지 크기 나 프레임 크기를 변경할 수있는 방법이 있다고 생각 했나요?

Linux OS를 사용하고 있습니다. 내가 많이 찾았고 발견 한 것은 페이지 크기를 변경할 수 있다는 것입니다. 사실 큰 페이지로 이동하여 페이지 크기를 늘릴 수 있습니다. 다른 방법으로 (증가 또는 감소) 또는 페이지 크기를 설정할 수 있습니까? 우리 선택?

(코딩을하지 아무것도, 일반적인 질문) 실제로

+0

어떤 운영체제에 있습니까? –

+0

나는 리눅스를 사용 중이다 – user2353613

+0

질문을 편집하여 (적어도'Linux' 태그를 추가하여) 개선해야합니다. 그리고 왜 묻고 있는지 그리고 어떤 종류의 응용 프로그램을 코딩하고 있는지 설명하십시오! –

답변

1

그 것이다 (거의) 불가능 page 크기가 MMU 하드웨어에 의해 결정 & 알려져 있기 때문에 "변화"메모리 페이지 크기 때문에 운영에 시스템이 이것을 고려하고 있습니다. 그러나, 일부 리눅스 시스템을 통지 (하드웨어!) hugetlbpage을 가지고 리눅스 mmap(2)MAP_HUGETLB을 받아 들일 수있다 (하지만 코드가 때MAP_HUGETLB없이 다시 mmap를 호출하여 예 거대한 페이지를 지원하지 않는 프로세서 또는 커널의 경우 처리해야 먼저 mmapMAP_HUGETLB이 실패했습니다.

일부 시스템에서는 리눅스 시스템의 경우 다양한 크기의 hugetlbpage을 사용할 수 있습니다. 그러나 sysadmin은 이러한 커널 (또는 일부 커널에서는 커널을 비활성화 할 수 있음)을 제한 할 수 있으므로 코드는 mmapMAP_HUGETLB 인 경우 항상 실패합니다.

"거대한 페이지"인 경우에도 페이지 크기는 이 아니며이 아닙니다. POSIX 시스템에서는 sysconf(_SC_PAGE_SIZE)을 사용하여 표준 페이지 크기 (일반적으로 4KB)를 얻습니다. 심지어 hugetlbpage 기능을 가진 시스템에서, 또한 sysconf(3)

AFAIK를 참조 mmapMAP_HUGETLB없이 에게 전화 (같은 sysconf(_SC_PAGE_SIZE)에 의해보고) 페이지 크기는 여전히 4KB이다입니다 수 있습니다. 어쩌면 일부 최근 커널은 거대한 페이지를 사용하고 있습니다. IIRC 일부 커널은 1Mbyte 페이지로 구성 될 수 있습니다. (확실하지 않습니다. 잘못된 것일 수도 있습니다 ...)

+0

예 .4 .. 나는 리눅스를 사용하고있다. 거대한 페이지인지 단순한 페이지인지, 우리는 크기를 바꿀 수 없다. 나는 옳다. ? 내 시스템의 거대한 페이지 크기는 2048kb입니다. 거대한 페이지의 수를 계산할 수 있지만 크기를 변경할 수는 없습니다 .. – user2353613

+0

'MAP_HUGETLB'에서'mmap'을 사용할 수는 있지만 실패한 경우를 처리해야합니다 (예 : 'mmap'을 * MAP_HUGETLB없이 호출 *) –

+0

으흠 .. .. 고마워요. :) – user2353613