2011-12-28 2 views

답변

1

페이지 폴트 문제 일 수 있습니다. RAM의 큰 블록을 malloc하면 물리적 RAM이 곧바로 할당되지 않고 일부 페이지 테이블 항목이 설정됩니다. 물리적 RAM은 처음 위치에 액세스 할 때까지 할당되지 않습니다. 이

  • 페이지 오류,
  • 이것은 측면에서 비용이 많이 드는 작업이다 페이지 테이블

를 업데이트 해당 페이지

  • 에 모든 위치를 제로 물리적 메모리 페이지
  • 을 찾는 포함 할당 된 페이지 당 한 번씩 발생합니다 (할당 할 RAM에 대해 550 x 4kbyte 페이지)

  • +0

    왜 더 많은 페이지가 있어야합니까? 내가 블록을 더 자주 재 할당 할 때? iPad L2 캐시는 1MB이므로 정적/스택 메모리에도 페이지 오류가 발생해야합니다. 그리고 zeroing 인수는 호출 된 메모리에만 해당됩니다. Malloc은 메모리를 0으로 만들지 않습니다. 귀하의 게시물에 대한 자세한 설명을 추가해주십시오. – Etan

    +0

    @Etan : 아마 같은 메모리 블록을 재사용하지 않거나 할당 해제시 메모리를 OS에 돌려 주었을 것입니다 (메모리는 iDevices에서만 제한되어 있으므로 이것이 가능합니다). 정적 메모리는 영구적으로 할당되며 스택 메모리는 처음 사용되면 영구적으로 할당됩니다. – JeremyP

    +0

    기본적으로 지연 할당은 여기에서 나를 죽입니다. 또한 calloc이 memset 또는 {0} 이니셜 라이저보다 훨씬 빠른 이유를 설명합니다. 이전 페이지가 재사용되는 경우에도 프리 콜 후에 페이지가 더러 워지기 때문에 매번 동일한 메모리 블록을 사용하는지 여부는 페이지 폴트 수를 변경해서는 안됩니다. – Etan