• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    미해결

리눅스에서의 파일 제어에 대한 질문입니다.

19.04.11 23:32 작성 조회수 130

0

운영체제 위에서 파일을 제어는 메모리 매핑이 기반이 된다고 생각했습니다.

메모리 매핑 = 프로세스화 되는 것이라고 생각했고, CPU가 처리하기 위해선 프로그램이 프로세스로 되야된다라고요.

근데 파일 제어 API를 언급하시면서 모든 파일 제어가 메모리 매핑 기반이 아니라고 하셨는데 그럼 위와 같은 API는 내부적으로 어떻게 동작하길래 파일의 내용을 읽어오는 것인가요?

제가 위 내용을 잘못 이해했다면 수정 부탁드리겠습니다.

답변 1

답변을 작성해보세요.

0

운영체제가 파일의 내용을 읽어오기까지는 많은 레이어를 거쳐야 합니다. 시스템콜에서부터 가상 파일시스템을 거쳐 SATA와 같은 ATA 인터페이스를 통해 실제 스토리지 디바이스까지.. 너무 어려운 질문을 해 주셨습니다ㅠㅠ 짧게 답변드릴만한 내용이 아닙니다. 제가 이 과정들을 다 알고 있지도 못하구요. 죄송합니다.

일반적으로 파일을 다루는 API와 mmap을 이용한 방법의 차이에 대해 간단히 말씀드리겠습니다. 일반적으로 파일을 다루는 API는 파일 디스크립터 혹은 파일 스트림으로 파일을 읽거나 쓰거나 하게 됩니다. 읽어온 내용이 메모리에 저장되어 반환이 되지만 메모리로 읽어온 내용을 수정한다 하더라도 그 수정사항이 파일에 반영되지는 않습니다.

반면 mmap은 파일의 내용을 메모리에 매핑하여 사용할 수 있도록 해 줍니다. 쉬운 예로, mmap으로 파일에 매핑된 메모리를 읽거나 쓰게되면 실제로 파일에서 읽거나 파일에 쓰게 됩니다.

제가 질문에 정확히 답변을 못드린 것 같네요. 죄송합니다. 그래도 조금이나마 도움이 되셨길 바랍니다.