상호 작용

상호 작용

Linux에서 VFS가 무엇인지 이해하려고 합니다. 다음 이미지는 VFS를 나타냅니다.

여기에 이미지 설명을 입력하세요.

내가 확신할 수 없는 것은 VFS가 애플리케이션이 통신하고 VFS가 적절한 파일 시스템 드라이버와 통신하는 프로그램인지, 아니면 VFS가 파일 시스템 드라이버가 구현해야 하는 인터페이스/공통 언어일 뿐인지, 실제로는 응용 프로그램이 이 인터페이스/범용 언어를 사용하고 있습니다. 파일 시스템 드라이버와 직접 통신합니까?

답변1

VFS는 커널의 인터페이스 계층입니다. 이는 사용된 파일 시스템에 관계없이 애플리케이션이 파일 시스템과 통신할 수 있는 통합 인터페이스를 제공합니다. 따라서 , , 등과 open같은 write시스템 호출은 read모두 VFS 계층에 들어간 다음 이를 적절한 파일 시스템으로 전달합니다.

파일 시스템은 VFS 계층에 자신을 등록하고 VFS 계층이 사용할 수 있도록 표준 정보 세트를 제공합니다. 이는 Linux의 모든 파일 시스템이 유사한 개념(주로 inode, 디렉터리 항목 및 파일)을 구현해야 함을 의미합니다.

이것은커널의 자세한 문서.

답변2

VFS는 시스템 호출과 파일 시스템 드라이버 사이에 있는 커널의 전체 소프트웨어 계층이며 파일 시스템 자체는 아닙니다.

일반정보를 제공합니다상호 작용다양한 파일 시스템 유형.

다음 명령을 사용한다고 상상해보십시오.

cp /usb/file /tmp/file

/usbfat32 USB에 설치되는 파일 시스템 /tmp입니다 etx2.

VFS 계층은 애플리케이션과 파일 시스템 사이에 위치하므로 cp명령은 복사를 수행하기 위해 파일 시스템을 알 필요가 없습니다. 대신 다음 과 cp같은 일반적인 시스템 호출을 사용하여 VFS와 상호 작용하십시오 .openwriteread

답변3

인터페이스 및 공통 기능.

상호 작용

파일 시스템은 이 인터페이스를 구현해야 합니다.

공통 기능

모든 파일 시스템이 구현해야 하는 것들이 있지만 구현은 동일합니다. 캐싱, 심볼릭 링크 순회 등.

(참고로 제가 해본적이 없어서 오타가 있을 수 있습니다)

관련 정보