가상 파일시스템 


 PC를 사용하다보면 하나의 OS에서 여러 개의 파일 시스템에 접근해야 할 경우가 종종 있다. 최근의 윈도우 OS의 경우 FAT32 파일시스템 위에 OS가 설치되어 있다고 하더라도 별도의 설정 없이도 다른 파티션에 있는 NTFS를 읽고 쓸 수 있다. 또한 리눅스의 경우 지원하는 파일 시스템의 종류를 보면 10여 가지에 달한다. 이것은 OS 차원에서 가상 파일시스템(Virtual FileSystem)이라는 상위 레벨의 파일시스템 인터페이스가 존재하기 때문에 응용 프로그램에서는 아무 구분 없이 OS의 시스템 콜을 호출하면 커널은 미리 등록되어 있는 파일 시스템 함수를 호출하여 그 종류에 상관없이 같은 결과를 볼 수 있다. 만약 가상 파일시스템이 없다면 일단 OS를 설치하고 나면 다른 파일시스템에 설치된 파티션을 인식할 수 없을 뿐만 아니라 다른 파일시스템의 인식을 위해서 별도로 컴파일된 파일시스템 모듈을 덮어씌워야 할 것이다.

사용자 삽입 이미지


그림은 가상 파일스스템과 일반 파일시스템의 레이어 구조를 나타낸 것이다. 가상 파일 시스템은 로컬 영역이나 원격 영역의 파일 시스템을 실제로 제어하지 않기 때문에 OS 부팅 시에 사용 가능한 파일시스템 함수를 가상 파일시스템 쪽으로 등록해 주어야 한다. 일반적으로 하드디스크에서 사용하는 파일 시스템뿐만 아니라 CD-ROM 파일 시스템과 네트워크 파일시스템 등 기본적으로 등록하는 파일시스템이 여러 가지 있다.

가상 파일시스템의 아이디어가 최초 적용된 OS는 1986년 Sun Microsystems의 SunOS2.0이다. 당시 SunOS에서 로컬 영역의 UFS와 Remote 영역의 NFS를 동시에 지원하면서 그 개념이 도입되었고, 이후 대부분의 유닉스 계열의 OS들이 가상 파일시스템을 지원하였다.

 FAT ( File Allocation Table ) 파일 시스템  



  마이크로소프트사의 빌게이츠가 만들어쏙, 전 세계적으로 많이 사용되는 파일 시스템 중의 하나이며, 초기에 만들어진 파일시스템이다. 처음 만들어진 이후 여러 번의 발전을 거듭해 왔지만, 최초 제작 당시에는 고려하던 저장장치의 크기가 매우 작았으며 성능상의 문제는 큰 이슈로 작용하지 않았다. 따라서 매우 단순한 구조를 지니고 있으며 최근에는 대용량 저장장치를 지원하기 위해 FAT16, FAT32 등이 만들어진 이후 윈도우 OS의 흥행과 더불어 지금도 널리 사용되고 있다. 이렇나 FAT 파일시스템의 범용성은 휴대용 장치들과 PC와의 호환성을 높여주는 결과를 가져왔으며, 이동식 저장장치들은 FAT 파일 시스템을 설치하기만 하면 별도의 설치 과정 없이 엔드유저(End User)들의 PC에서 간편하게 읽어 들일 수 있게 만들었다. 파일 시스템에서 사용되는 부가 기능은 적고, 제약 사항들은 많은 단점이 있었으나 그만큼 가볍고 심플한 느낌을 갖게 한다. 하짐나 그에 따른 여러 문제점들이 생기게 되는데, 연결 리스트를 사용한 자료구조는 검색 시간이 오래 걸리게 하는 결과를 초래하였으며, 파일 데이터 블록들이 여기저기 흩어지는 단편화 현상이 심해져서 한 파일의 데이터를 읽어 들이는 데에도 디스크 헤드가 여러 번 이동하게 만들었다. 이를 위해 디스크 조각 모음 등의 부가적인 프로그램이 등장하기도 하였지만 근본적인 해결책은 되지 않았으며 서버 시스템 등에서 사용되기에는 여러 가지 부족함이 많은 파일 시스템이었기에 이후 여러 파일시스템들이 이를 개선하기 위해 등장하게 된다.


----------------------------------------------- IT EXPERT 임베디드 개발자를 위한 파일시스템의 원리와 실습 中----

+ Recent posts