iOS 또는 OSX의 프레임 워크에서 mmap()
이 어떻게 작동하는지 조금 혼란 스럽습니다.mmap'ed 데이터가 객체 할당과 어떻게 작동합니까?
파일이 mmap()
을 사용하여 가상 메모리에 매핑되고 데이터가 요청되면 커널에서 데이터를 RAM으로 페이지합니다. 이것이 실제로 객체를 만드는 방법에 실제로 어떤 영향을 줍니까?
보통 alloc
/init
을 사용하여 개체를 만드는 경우 메모리 블록이 할당되고 개체가 시작됩니다. 그러나 데이터가 mmap
'파일의 가상 메모리에 상주하면 어떻게 될까요? alloc
을 개체에서 호출해야합니까? 개체에 할당 된 메모리가 가상 메모리의 데이터로 채워 집니까? 또는 alloc
호출을 건너 뛰고 가상 메모리의 데이터 포인터를 전달하기 만합니까?
이미지 또는 사운드 파일, 파일이 가상 메모리에있는 위치를 알고있는 경우 개체를 어떻게 설정합니까?
데이터를 할당하는 경우 데이터가 RAM에 이미 페이징 된 경우 중복되지 않습니까?
가상 주소의 메모리를 사용하면 힙에 할당 할 필요가 없다고 생각했습니다.
예, 오프셋이 사용되고 오프셋이 알려져 있고 올바른 데이터가 객체로 처리되는 경우 alloc을 건너 뛸 수 있는지 확인하고 싶었습니다. 예 : UIImage, mmap'ed 인 알려진 데이터에서 init 호출 – user773578
확인되었습니다. 오프셋을 알고 나면 그 위치에 대한 포인터를 객체 유형에 대한 포인터로 캐스트 할 수 있습니다. – DRVic
감사합니다. 그렇다면 VM 데이터에 어떻게 액세스합니까? 알려진 데이터의 오프셋과 크기를 전달합니까? UIImage 예제를 사용하면 오프셋 500이 이미지로 알려져 있고 특정 크기 인 경우 시스템에 일정량의 데이터 만 가져 와서 이미지로 처리하도록 시스템에 지시하는 방법은 무엇입니까? – user773578