if the input file is mmap'ed 라는게 무슨 의미인가요?
글쓴이: ssehoony / 작성시간: 목, 2003/11/27 - 2:57오후
zlib 를 이용할려고 메뉴얼을 읽고 있는데
Quote:
int uncompress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);
Decompresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size of the destination buffer, which must be large enough to hold the entire uncompressed data. (The size of the uncompressed data must have been saved previously by the compressor and transmitted to the decompressor by some mechanism outside the scope of this compression library.) Upon exit, destLen is the actual size of the compressed buffer.This function can be used to decompress a whole file at once if the input file is mmap'ed.
uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer, or Z_DATA_ERROR if the input data was corrupted.
이렇게 uncompress 에 대한 함수 설명이 있었습니다.
근데 이 설명중에
Quote:
This function can be used to decompress a whole file at once if the input file is mmap'ed.
라는 문구에서 mmap'ed 라는게 무슨 의미인가요?
mmap 이라는 라이브러리도 있던데 그거랑 상관있는건가요?
덤으로 mmap 라이브러리가 뭔지도 설명해 주신다면 감사하겠습니다.
Forums:
그거랑 상관있습니다. 8) 단, libc 같은 것들을 라이브러리라고 하고
그거랑 상관있습니다. 8) 단, libc 같은 것들을 라이브러리라고 하고, 그안에 들어 있는 mmap 같은 것들은 라이브러리 함수라고 합니다(mmap != 라이브러리).
한국 BSD 사용자 포럼
mmio( memory-mapped i/o )
파일이나 디바이스영역을 메모리에 매핑시켜서 제어하는 것을 말합니다.
mmap, msync, munmap, mremap 등의 함수가 있고 윈도우도 마찬가지로 그러한 방식으로 프로그래밍하지않으면 안될때가 많습니다.
인용하신 부분은 '(전체)입력파일이 메모리매핑되어 있으면 한방에 압축을 풀수있다' 정도인데요 zlib의 API를 보시면 그게 무슨뜻인지 잘 아실겁니다. uncompress() 같은 zlib의 함수들은 길이를 인자로 받는데 메모리매핑이 되어있다면 파일전체길이를 넘겨서 한방에 작업이 가능하지요.
mmio는 posix를 준수하는 현대적인 유닉스커널에서는 라이브러리가 아닌 시스템콜로써 구현됩니다. aio 역시 커널 2.6부터는 aix같은 유닉스들처럼 librt가 아닌 시스템콜로써 구현될 예정이라고 들었습니다.
homeless
댓글 달기