File System

기술노트

파일 시스템(File System)


컴퓨터에서 파일이나 자료를 쉽게 발견할 수 있도록, 유지 및 관리하는 방법이다.

저장매체에는 수많은 파일이 있기 때문에, 이런 파일들을 관리하는 방법을 말한다.


          1. 특징
  • 커널 영역에서 동작
  • 파일 CRUD 기능을 원활히 수행하기 위한 목적
  • 계층적 디렉터리 구조를 가짐
  • 디스크 파티션 별로 하나씩 둘 수 있음
          1. 역할
  • 파일 관리
  • 보조 저장소 관리
  • 파일 무결성 메커니즘
  • 접근 방법 제공
          1. 개발 목적
  • 하드디스크와 메인 메모리 속도차를 줄이기 위함
  • 파일 관리
  • 하드디스크 용량 효율적 이용
          1. 구조
  • 메타 영역 : 데이터 영역에 기록된 파일의 이름, 위치, 크기, 시간정보, 삭제유무 등의 파일 정보
  • 데이터 영역 : 파일의 데이터



접근 방법

1. ##### 순차 접근(Sequential Access)

  > 가장 간단한 접근 방법으로, 대부분 연산은 read와 write
  <img src="https://noep.github.io/2016/02/23/10th-filesystem/10.1.png">
  현재 위치를 가리키는 포인터에서 시스템 콜이 발생할 경우 포인터를 앞으로 보내면서 read와 write를 진행. 뒤로 돌아갈 땐 지정한 offset만큼 되감기를 해야 한다. (테이프 모델 기반)

2. ##### 직접 접근(Direct Access)

  > 특별한 순서없이, 빠르게 레코드를 read, write 가능
  <img src="https://noep.github.io/2016/02/23/10th-filesystem/10.2.png">
  현재 위치를 가리키는 cp 변수만 유지하면 직접 접근 파일을 가지고 순차 파일 기능을 쉽게 구현이 가능하다.
  무작위 파일 블록에 대한 임의 접근을 허용한다. 따라서 순서의 제약이 없음
  대규모 정보를 접근할 때 유용하기 때문에 '데이터베이스'에 활용된다.

3. 기타 접근

  > 직접 접근 파일에 기반하여 색인 구축
  <img src="https://noep.github.io/2016/02/23/10th-filesystem/10.3.png">
  크기가 큰 파일을 입출력 탐색할 수 있게 도와주는 방법임



디렉터리와 디스크 구조

---

  • ##### 1단계 디렉터리
 > 가장 간단한 구조
 파일들은 서로 유일한 이름을 가짐. 서로 다른 사용자라도 같은 이름 사용 불가
 <img src="https://noep.github.io/2016/02/23/10th-filesystem/10.5.png">
  • ##### 2단계 디렉터리
 > 사용자에게 개별적인 디렉터리 만들어줌
 - UFD : 자신만의 사용자 파일 디렉터리
 - MFD : 사용자의 이름과 계정번호로 색인되어 있는 디렉터리
 <img src="https://noep.github.io/2016/02/23/10th-filesystem/10.6.png">
  • ##### 트리 구조 디렉터리
 > 2단계 구조 확장된 다단계 트리 구조
 한 비트를 활용하여, 일반 파일(0)인지 디렉터리 파일(1) 구분
 <img src="https://noep.github.io/2016/02/23/10th-filesystem/10.7.png">
  • 그래프 구조 디렉터리
 > 순환이 발생하지 않도록 하위 디렉터리가 아닌 파일에 대한 링크만 허용하거나, 가비지 컬렉션을 이용해 전체 파일 시스템을 순회하고 접근 가능한 모든 것을 표시
 링크가 있으면 우회하여 순환을 피할 수 있음
 <img src="https://noep.github.io/2016/02/23/10th-filesystem/10.9.png">







          1. [참고 자료]