리눅스에서의 파일 제어에 대한 질문입니다.
240
작성한 질문수 158
운영체제 위에서 파일을 제어는 메모리 매핑이 기반이 된다고 생각했습니다.
메모리 매핑 = 프로세스화 되는 것이라고 생각했고, CPU가 처리하기 위해선 프로그램이 프로세스로 되야된다라고요.
근데 파일 제어 API를 언급하시면서 모든 파일 제어가 메모리 매핑 기반이 아니라고 하셨는데 그럼 위와 같은 API는 내부적으로 어떻게 동작하길래 파일의 내용을 읽어오는 것인가요?
제가 위 내용을 잘못 이해했다면 수정 부탁드리겠습니다.
답변 1
0
운영체제가 파일의 내용을 읽어오기까지는 많은 레이어를 거쳐야 합니다. 시스템콜에서부터 가상 파일시스템을 거쳐 SATA와 같은 ATA 인터페이스를 통해 실제 스토리지 디바이스까지.. 너무 어려운 질문을 해 주셨습니다ㅠㅠ 짧게 답변드릴만한 내용이 아닙니다. 제가 이 과정들을 다 알고 있지도 못하구요. 죄송합니다.
일반적으로 파일을 다루는 API와 mmap을 이용한 방법의 차이에 대해 간단히 말씀드리겠습니다. 일반적으로 파일을 다루는 API는 파일 디스크립터 혹은 파일 스트림으로 파일을 읽거나 쓰거나 하게 됩니다. 읽어온 내용이 메모리에 저장되어 반환이 되지만 메모리로 읽어온 내용을 수정한다 하더라도 그 수정사항이 파일에 반영되지는 않습니다.
반면 mmap은 파일의 내용을 메모리에 매핑하여 사용할 수 있도록 해 줍니다. 쉬운 예로, mmap으로 파일에 매핑된 메모리를 읽거나 쓰게되면 실제로 파일에서 읽거나 파일에 쓰게 됩니다.
제가 질문에 정확히 답변을 못드린 것 같네요. 죄송합니다. 그래도 조금이나마 도움이 되셨길 바랍니다.
inotify 객체에 등록된 watch descriptor 해제 관련 질문
0
37
2
select API 실습 코드 질문
0
41
2
wsl에서 fcntl사용
0
74
2
inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...
0
181
2
./stat 파일이름
0
274
2
fopen r, r+모드 차이
0
460
2
강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?
0
327
1
pthread 질문
0
420
2
I/O Multiplexing(select) 질문
0
326
1
inotify.c. ret 질문
0
303
1
inotify.c 질의합니다.
1
318
1
child process
0
715
1
read/blocking
0
566
1
flock
0
566
1
system call
0
599
1
pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?
0
487
1
fork() 함수 사용시 결과 관련 질문
0
372
1
exec 관련 궁금한 사항
0
451
2
파일 디스크립터와 FILE 구조체에 대한 질문
0
553
1
buf 선언에 따른 read() fail 문제
0
252
2
파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문
0
255
1
2번 multi thread 방법 질문
0
243
1
segmentation fault 발생 관련 문의
1
843
1
라이브 코딩 실습 코드
0
236
1





