2021. 3. 13. 18:00ㆍComputer(인강)/시스템 프로그래밍
안녕하세요 bannavi입니다^ㅅ^
오늘은 mmap의 예제 및 활용에 대해서 공부해보겠습니다!!!
힘차게, 바로 시작하겠습니다!
메모리의 값이 변경되면 해당 파일에 써주어야 하잖아요?
파일에 업데이트 해줘야하는데, 이를 강제적으로 할수도 있습니다
msync()
파일 처리 성능개선기법 - 메모리에 파일 매핑
# start:mmap()를 통해 리턴받은 메모리 맵의 시작 주소
# length: 동기화를 할 길이. 시작 주소로부터 길이를 지정하면 된다
# flags
1. MS_ASYNC : 비동기방식, 동기화 하라는(Memory -> File) 명령만 내리고 결과에 관계없이 다음 코드 실행(따라서, 동기화가 완료 안된 상태로 다음 코드 실행 가능)
메모리에 있는것을 파일에 업데이트 하라는 명령만 내리고 그다음 코드를 바로 실행한다
2. MS_SYNC : 동기방식, 동기화(Memory -> File)가 될 때까지 블럭 상태로 대기
메모리에 있는 데이터가 파일에 다 쓰여질때까지 해당명령은 다음 명령을 실행하지 않고 블럭 상태로 대기
3. MS_INVALIDATE : 현재 메모리 맵을 무효화하고 파일의 데이터로 갱신. 즉, File -> Memory
현재 메모리에 어떤 데이터가 쓰여져 있든 본래의 파일 데이터로 갱신시켜준다
보통은 1번과 2번이 많이 쓰여집니다.
예시코드
* munmap을 안해도 프로세스가 종료되면 자동으로 싱크하는 작업은 돌아가게 되어있습니다.
장점보다 단점이 더 많은 mmap
1. 메모리에 매핑하게 되면 현재 컴퓨터 시스템에서 저장매체 파일을 access하는 부분에 대한 걸 줄여줄 수 있어서 성능 높아진다
'Computer(인강) > 시스템 프로그래밍' 카테고리의 다른 글
시스템 프로그래밍 03 파일 시스템 관련 시스템콜 이해 (0) | 2021.03.14 |
---|---|
시스템 프로그래밍 01. 메모리와 mmap (0) | 2021.03.12 |
스레드 02 - 기본과 동기화 (0) | 2021.03.12 |
스레드 01 기본 (0) | 2021.03.12 |
쉘스크립트 - 04 협업 예제 및 정리 (0) | 2021.03.12 |