7. File System

EEEFFEE·2023년 7월 18일
0

운영체제

목록 보기
8/8
post-custom-banner

23.07.17 최초 작성
23.11.30 VFS 내용 추가

1. Storage Management & File Systems

1.1 File

외부 저장장치에 어떤 관련있는 정보들을 모아놓은 것.

1.2 File Operation

1.2.1 Open

OS는 시스템에서 Open된 파일들을 Open-File Table을 통해 관리한다. 이 테이블에 파일이 열린 횟수, 파일의 위치, 접근 권한을 저장한다.
각 프로세스는 고유의 File Descriptor라는 테이블을 가지고 있고 이 테이블에 프로세스가 Open한 파일들의 정보를 담아둔다. 스레드의 경우 이 테이블을 공유하며 fork()시 이 정보가 그대로 복사된다.

1.2.2 Access

각 프로세스들은 각 열린 파일들에 대해 File Pointer를 가지고 있으며 마지막으로 파일에서 R/W 한 위치를 가리킨다. read(), write()시 자동적으로 파일 포인터를 바꾸며 lseek() 시 이 위치를 조정한다.

1.2.3 Directories

관련 파일들과 디렉토리들의 집합. 사용자에게는 파일을 체계적으로 구성할 수 있게 해주며 시스템에게는 물리적인 디스크의 파일 위치로 부터 각각의 파일의 집합을 나타낼 수 있는 정형화된 이름 인터페이스를 제공한다.
디렉토리는 파일을 File Attribute(metadata)에 매핑하는 역할을 한다. File Attribute는 파일 ID, 형식, 디스크의 위치, 크기 등을 담고 있다.
각 디렉토리는


파일은 디렉토리와 연결되어 해당 디렉토리가 호출될 경우 파일을 열 수 있다. 이 연결을 "Link" 라고 하며 파일은 여려개의 디렉토리와 링크될 수 있다.

  1. Hard Link
    파일이나 디렉토리를 가르키는 엔트리를 만든다. 파일에 Link Counter가 있어서 파일에 몇개의 링크가 있는지 알 수 있고 이 Link Counter가 0이 될 시 자동적으로 파일이 제거된다. 파일을 제거 시 해당 링크를 지우는 동작을 한다.
    다른 파일 시스템에 생성할 수 없다.
  2. Symbolic Link
    파일까지의 경로를 통해 엔트리를 만든다. Link Counter에 영향을 끼치지 않으며 Link Counter가 0이 될 시 Dangling Link가 되어 아무것도 가르키지 않는 링크가 된다.
    다른 파일 시스템에 생성할 수 있다.

1.3 Storage

메모리 이외에 모든 저장장치를 의미하며 고정된 크기의 블록의 모음으로 볼 수 있다.
저장장치에 데이터, 파일, 메타데이터를 블록에 배치하는 방식을 결정해야 하는데 파일 시스템을 통해 이를 구현한다.

2. Hard Disk Drives

비휘발성의 마그네틱 저장장치이다. 여러개의 플래터가 스핀들에 의해 고정되어 있으며 암에 달린 헤드가 플래터의 데이터를 읽는다.
플레터는 여러개의 트랙이 존재하며 트랙은 일정 크기의 섹터가 여러개 존재한다.

  • Seek Time : 디스크 암이 정확한 실린더에 도달하는 시간(실린더간의 거리에 반비례)
  • Rotational Delay : 정확한 섹터에 도달하기 위해 플래터가 회전하는 시간(RPM과 반비례)
  • Transfer Time : 표면에서 디스크 컨토롤러로 데이터를 전송하고 호스트로 보내는 시간

3. Solid State Drive

전기적인 장치를 이용한 저장장치. HDD와 달리 기계적인 요소가 없으며 수명이 제한적이다.

3.1 NAND Flash Memory

위의 FET는 플래시 메모리의 기본 단위(Cell)로 Work Line에 전기의 흐름을 제어해 0과 1을 나타낼 수 있다. 데이터를 Write할 때 마다 Oxide Layer가 마모되며 이로인해 저장장치의 수명이 제한된다.

Cell 의 모음을 Page 라 하며 읽기, 쓰기의 기본 단위이다. Page 의 모음을 Block 이라고 하며 지우는 작업의 기본 단위이다.

3.2 FTL (Flash Transition Layer)

OS의 파일 시스템은 섹터 기반으로 인식하기 때문에 SSD의 페이지와 블록을 단위로 인식하는 체계와 맞지 않는다. 이를 해결하고 SSD를 섹터 기반으로 인식할 수 있도록 하는 소프트웨어 레이어를 FTL 이라고 한다.

4. Allocation Strategies

4.1 Issues

  • 순차적 접근의 성능
  • 데이터 탐색을 위한 Random Access의 속도
  • Fragmentation
  • Metatdata 관리
  • File에 데이터가 추가될 때 성능

4.2 FAT(File Allocation Table)

적용하기 쉽고 작동하는데 메모리 자원을 적게 필요로 한다.

  • 총 Directory Entry의 크기 : 32Byte
  • File Name : 파일 이름의 텍스트 정보
  • Start-of-File Cluster : 파일 데이터의 첫번째 데이터 위치 정보. 그 다음부터 N+1번째 위치 정보는 N번째 위치에 존재함
  • File Size : 파일 데이터의 크기 정보

4.3 EXT4(4th Extended Filesystem)

Linux/Unix의 파일 시스템 표준이며 FAT보다 유연하고 강력한 기능을 제공한다.

5. VFS(Virtual File System)

여러 파일 시스템을 일관된 인터페이스를 통해 접근할 수 있도록 하는 기능. 유저 애플리케이션에서 open, write, read와 같은 시스템 콜을 호출하면 파일 시스템으로 연결해주는 소프트웨어 계층.

5.1 특징

  • 오직 가상 파일 시스템을 통해서 파일 시스템에 접근할 수 있음
  • 여러 파일 시스템에서 공통으로 파일과 디렉토리를 관리할 수 있음
  • 디바이스 드라이버가 연동되어 동작
  • Superblock : 전체 파일 시스템을 뜻함
  • Dentry : 디렉토리에 대응됨
  • Inode : 파일 시스템 안의 객체(파일 & 디렉토리)에 대응됨

5.1 Page Cache

사용하지 않는 여유 RAM을 파일 데이터를 캐시하는데 사용하는 방법. 만약 RAM의 여유 공간이 부족해지면 해당 데이터들은 Clean File Page를 저장한 공간을 해제하고 사용한다.

post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

좋은 글 감사합니다!

답글 달기