운영체제 기본/Linux/파일시스템/procfs의 파일 읽기: 두 판 사이의 차이

잔글 관리자님이 운영체제 기본/Linux의 파일시스템/procfs의 파일 읽기 문서를 운영체제 기본/Linux/파일시스템/procfs의 파일 읽기 문서로 이동했습니다: Linux 각론 제목을 계층형 경로로 통일
잔글 Linux 각론 경로 변경에 따른 본문·목차·틀 링크 갱신
 
1번째 줄: 1번째 줄:
{{이전 다음 문서
{{이전 다음 문서
|이전=← 이전 문서<br />[[운영체제 기본/Linux의 파일시스템/ext4의 파일 읽기|ext4의 파일 읽기]]
|이전=← 이전 문서<br />[[운영체제 기본/Linux/파일시스템/ext4의 파일 읽기|ext4의 파일 읽기]]
|목차=[[운영체제 기본/Linux의 파일시스템|파일시스템 목차]]
|목차=[[운영체제 기본/Linux/파일시스템|파일시스템 목차]]
|다음=다음 문서 →<br />[[운영체제 기본/Linux의 파일시스템/페이지 캐시|페이지 캐시]]
|다음=다음 문서 →<br />[[운영체제 기본/Linux/파일시스템/페이지 캐시|페이지 캐시]]
}}
}}


9번째 줄: 9번째 줄:
== 같은 파일 객체, 다른 연산 구현 ==
== 같은 파일 객체, 다른 연산 구현 ==


<code>/proc</code>에 procfs가 마운트되어 있다면 경로 탐색은 그 마운트를 통해 procfs의 이름 공간으로 들어간다. <code>uptime</code>도 inode로 표현되며, 열면 열린 파일을 나타내는 <code>struct file</code>과 파일 디스크립터를 얻는다. [[운영체제 기본/Linux의 파일 시스템 콜/read와 write|파일 읽기]]에서 본 것처럼 프로그램은 파일 디스크립터, 받을 버퍼, 읽을 길이를 <code>read()</code>에 전달한다. 프로그램이 별도의 ‘커널 상태 읽기’ 시스템 콜을 선택할 필요는 없다.
<code>/proc</code>에 procfs가 마운트되어 있다면 경로 탐색은 그 마운트를 통해 procfs의 이름 공간으로 들어간다. <code>uptime</code>도 inode로 표현되며, 열면 열린 파일을 나타내는 <code>struct file</code>과 파일 디스크립터를 얻는다. [[운영체제 기본/Linux/파일 시스템 콜/read와 write|파일 읽기]]에서 본 것처럼 프로그램은 파일 디스크립터, 받을 버퍼, 읽을 길이를 <code>read()</code>에 전달한다. 프로그램이 별도의 ‘커널 상태 읽기’ 시스템 콜을 선택할 필요는 없다.


달라지는 지점은 파일 객체에 연결된 연산이다. procfs에는 VFS가 호출하는 <code>struct file_operations</code>와 개별 항목이 제공하는 <code>struct proc_ops</code>가 따로 있다. 전자는 VFS 쪽 입구이며, 그 래퍼 함수가 후자의 콜백으로 요청을 넘긴다.<ref name="proc-inode">[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/proc/inode.c?h=v6.12 Linux v6.12 fs/proc/inode.c], proc_get_inode, proc_iter_file_ops, proc_reg_open, proc_reg_read_iter.</ref>
달라지는 지점은 파일 객체에 연결된 연산이다. procfs에는 VFS가 호출하는 <code>struct file_operations</code>와 개별 항목이 제공하는 <code>struct proc_ops</code>가 따로 있다. 전자는 VFS 쪽 입구이며, 그 래퍼 함수가 후자의 콜백으로 요청을 넘긴다.<ref name="proc-inode">[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/proc/inode.c?h=v6.12 Linux v6.12 fs/proc/inode.c], proc_get_inode, proc_iter_file_ops, proc_reg_open, proc_reg_read_iter.</ref>
55번째 줄: 55번째 줄:


{{이전 다음 문서
{{이전 다음 문서
|이전=← 이전 문서<br />[[운영체제 기본/Linux의 파일시스템/ext4의 파일 읽기|ext4의 파일 읽기]]
|이전=← 이전 문서<br />[[운영체제 기본/Linux/파일시스템/ext4의 파일 읽기|ext4의 파일 읽기]]
|목차=[[운영체제 기본/Linux의 파일시스템|파일시스템 목차]]
|목차=[[운영체제 기본/Linux/파일시스템|파일시스템 목차]]
|다음=다음 문서 →<br />[[운영체제 기본/Linux의 파일시스템/페이지 캐시|페이지 캐시]]
|다음=다음 문서 →<br />[[운영체제 기본/Linux/파일시스템/페이지 캐시|페이지 캐시]]
}}
}}


{{운영체제 기본 둘러보기}}
{{운영체제 기본 둘러보기}}