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

경로 탐색 예시를 총론과 같은 /home/ldmsys/a.txt로 통일
용어 통일: 시스템 콜, 컨텍스트 스위치와 첫 등장 영문 병기
 
1번째 줄: 1번째 줄:
[[운영체제 기본/Linux의 파일시스템|파일시스템 구현 목차]]
[[운영체제 기본/Linux의 파일시스템|파일시스템 구현 목차]]


기준은 Linux v6.12다. [[운영체제 기본/Linux의 파일 읽기|read() 시스템 호출 경로]]는 VFS의 파일 객체와 연산 인터페이스를 통해 실제 파일시스템 구현으로 연결된다.
기준은 Linux v6.12다. [[운영체제 기본/Linux의 파일 읽기|read() 시스템 콜 경로]]는 VFS의 파일 객체와 연산 인터페이스를 통해 실제 파일시스템 구현으로 연결된다.


== 공통 인터페이스와 구현의 분리 ==
== 공통 인터페이스와 구현의 분리 ==


프로그램은 ext4의 일반 파일도, <code>/proc/uptime</code>도 경로로 열고 반환된 파일 디스크립터로 읽는다. 그러나 앞의 파일은 저장된 내용을 읽는 대상이고, 뒤의 파일은 부팅 이후 경과 시간과 CPU 유휴 시간을 텍스트로 보여 주는 대상이다. 두 파일에 같은 시스템 콜을 사용할 수 있다고 해서 내부의 데이터 생성 방식까지 같아지는 것은 아니다.
프로그램은 ext4의 일반 파일도, <code>/proc/uptime</code>도 경로로 열고 반환된 파일 디스크립터로 읽는다. 그러나 앞의 파일은 저장된 내용을 읽는 대상이고, 뒤의 파일은 부팅 이후 경과 시간과 CPU 유휴 시간을 텍스트로 보여 주는 대상이다. 두 파일에 같은 시스템 콜(System Call)을 사용할 수 있다고 해서 내부의 데이터 생성 방식까지 같아지는 것은 아니다.


VFS(Virtual File System)는 파일시스템마다 별도의 시스템 콜을 만들지 않고도 이들을 함께 사용할 수 있게 하는 커널 계층이다. 공통 객체와 연산 인터페이스를 정의하고, 실제 대상에 맞는 파일시스템 구현을 호출한다. VFS는 이름으로 대상을 찾고 그 대상의 연산으로 연결하는 공통 경로를 제공한다.<ref name="vfs-overview">[https://docs.kernel.org/filesystems/vfs.html Linux kernel documentation, Overview of the Linux Virtual File System], Introduction, Directory Entry Cache, The File Object.</ref>
VFS(Virtual File System)는 파일시스템마다 별도의 시스템 콜을 만들지 않고도 이들을 함께 사용할 수 있게 하는 커널 계층이다. 공통 객체와 연산 인터페이스를 정의하고, 실제 대상에 맞는 파일시스템 구현을 호출한다. VFS는 이름으로 대상을 찾고 그 대상의 연산으로 연결하는 공통 경로를 제공한다.<ref name="vfs-overview">[https://docs.kernel.org/filesystems/vfs.html Linux kernel documentation, Overview of the Linux Virtual File System], Introduction, Directory Entry Cache, The File Object.</ref>