운영체제에서 사용하는 Virtual File System(VFS) 은 쉽게 말해 운영체제와 실제 파일 시스템 사이에 존재하는 미들 계층이다. 예를 들어 어제 객체 지향 프로그래밍에서 배운 DIP(Dependency Inversion Principle) 개념처럼, 운영체제가 FAT나 ext4, NTFS와 같은 다양한 파일 시스템에 직접 접근하지 않고 VFS를 통해 간접적으로 소통하게 해주는 구조라고 이해하면 된다.
그렇다면 왜 이런 구조가 필요할까?
파일 시스템마다 제공하는 API가 제각각 다르기 때문이다. VFS는 이 다양한 API들을 감싸서, 운영체제가 항상 동일한 방식으로 파일 작업을 요청할 수 있도록 추상화된 인터페이스를 제공한다. 덕분에 운영체제 입장에서는 어떤 파일 시스템이든지 구분하지 않고 일관된 방식으로 접근할 수 있게 된다.
물론 VFS는 운영체제와는 별개의 독립된 존재는 아니다. 운영체제 내부에 포함된 하나의 계층이며, 논리적으로 보면 '실제 파일 시스템 → VFS → 운영체제' 순서로 흐름이 이루어진다고 볼 수 있다.
실생활에서 외장하드를 바꾼다고 해서 운영체제를 다시 설치할 필요가 없는 것도 이러한 구조 덕분이다. 만약 VFS가 존재하지 않았다면, 새로운 파일 시스템을 사용할 때마다 운영체제 내부의 파일 시스템 호출부를 직접 수정하거나 재설치해야 했을 것이다.
