운영 체제에서 메모리 매핑 파일은 어떻게 작동합니까?

운영 체제에서 메모리 매핑 파일은 어떻게 작동합니까?

운영 체제 개념에는 다음과 같이 명시되어 있습니다. 가상 주소 공간의 일부가 파일과 논리적으로 연결되도록 허용하는 메모리 매핑 파일

내 철학은 다음과 같습니다.

일반적으로 프로세스가 표준 시스템 호출 open() read() write()를 사용하여 디스크의 파일을 읽을 때 모든 파일 액세스에 대한 시스템 호출과 디스크 액세스가 있습니다. 디스크에 액세스하고 있기 때문에 시간이 걸립니다.

이 경우 메모리 매핑 파일을 사용할 수 있습니다.

여기서는 가상 메모리 기술을 사용하고 파일을 프로세스의 가상 주소 공간에 매핑합니다.

메모리 매핑 파일

이 프로세스 동안 프로세스는 파일 설명자와 파일 블록을 매핑하려는 가상 메모리 영역(힙과 스택 사이의 영역) 내의 위치를 ​​커널에 지정합니다.

공유 메모리 매핑

그런 다음 커널은 특정 파일을 프로세스의 가상 주소에 매핑하고 파일은 여러 페이지로 나뉩니다. 파일에 대한 액세스는 요청 시 페이징됩니다. CPU가 페이지의 가상 주소를 생성할 때 파일은 프로세스 가상 메모리에 매핑됩니다. 처음에는 페이지에 오류가 발생하고 파일 페이지가 파일 시스템에서 여유 메모리 프레임으로 로드되고 프로세스의 페이지 테이블은 해당 주소를 사용합니다. 페이지 테이블 항목의 프레임 번호를 업데이트합니다. 이후 프로세스는 디스크에 액세스하지 않고 일반적인 메모리 액세스 루틴을 사용하여 파일을 읽고 쓸 수 있습니다.

메모리 내 매핑된 파일에 대한 쓰기는 디스크의 파일에 즉시 기록되지 않습니다. 일부 운영 체제는 주기적으로 페이지 테이블 항목에서 더티 비트를 확인합니다. 파일이 닫히면 메모리 매핑된 모든 데이터가 디스크에 다시 기록되고 프로세스의 가상 메모리에서 제거됩니다.

여러 프로세스는 페이지 공유를 사용하고 메모리 매핑된 파일을 서로 공유할 수도 있습니다.

그들이 해야 할 일은 가상 주소를 매핑된 파일의 물리적 주소에 매핑하는 것뿐입니다.

메모리 매핑 파일이 작동하는 방식인가요?

관련 정보