시스템 프로그래밍 02 mmap 예제 및 활용

2021. 3. 13. 18:00Computer(인강)/시스템 프로그래밍

728x90
반응형

안녕하세요 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하는 부분에 대한 걸 줄여줄 수 있어서 성능 높아진다

728x90
반응형