Kim Jinung

10. 파일 시스템 본문

Computer Science/Operating System

10. 파일 시스템

Kim Jinung 2023. 1. 13. 21:30
평소에 사용하고 있는 파일과 디렉터리라는 개념을 어떻게 정의하고 있는가?
운영체제가 디스크에 파일을 저장하는 방법 그리고 저장한 파일에 접근하는 방법에 관하여

Basic Concept

  • File: 연관된 정보의 집합으로 운영체제에 의해 구현되는 추상적인 자료형이다. 운영체제는 파일에 대한 system call을 제공하게 된다.
  • File System: 운영체제 내에서 유저가 사용하는 파일을 관리하는 시스템. 운영체제가 이를 제공한다.
  • Directory: 파일들을 그룹핑하고 이러한 그룹들을 계층화 해주는 개념
  • Device Driver: 운영체제와 I/O 장치 사이에는 드라이버가 존재한다. (운영체제가 모든 하드웨어에 대한 정보를 가지고 있을 수 없으니까, 각 제조사에서 이를 소프트웨어 형태로 제공하는 것임) 운영체제는 드라이버를 통해 논리 주소를 물리 주소로 변환하여 I/O 장치에 접근하게 된다. ex) 그래픽카드 드라이버

Directory Structure

  • Single level directory: 모든 파일이 하나의 디렉터리 내에 존재한다.
  • Two level directory: 계층이 생기지만 각 유저의 상위 디렉터리 하나만 존재한다.
  • Tree structured directory: 2단계 디렉터리를 기반으로 계속해서 확장하는 구조의 디렉터리
  • Ayclic graph directory: 디렉터리들이 서브 디렉토리와 파일을 공유할 수 있다. Symbolic link를 사용할 수 있다.
  • General graph dirctory: 하위 서브 디렉터리 뿐만 아니라 상위 디렉터리에도 link를 걸 수 있다. 즉 Tree 구조에서 cycle이 발생 할 수 있다. 단 무한 루프 문제가 발생 할 수 있다.

File Access Method

운영체제가 디스크에 저장되어 있는 파일에 접근하는 방법

 

  • Sequential access: 디스크에 저장되어 있는 파일을 byte단위로 읽는 방법
  • Direct access: 데이터를 저장하고 있는 블록에 직접 액세스 하는 방법
  • Indexed access: 인덱스 기반으로 디스크 블록에 매핑

File Allocation Methods

운영체제가 디스크에 파일을 할당하는 방법들

 

  • Continuos alloctation: 디스크 블록에 연속적인 공간으로 저장한다. 메모리처럼 외부 단편화 문제 발생 가능
  • Linked allocation: 링크드 리스트 기반으로, 블록은 다음 블록에 대한 포인터 정보를 포함한다. Windows의 FAT가 이에 해당한다. 
  • Indexed allocation: 인덱스 테이블을 별도로 관리하여 블록을 매핑한다. File의 모든 블록의 index를 관리해야 하므로 포인터 오버헤드가 발생한다. 그대로는 사용하지 않고 Linked scheme, mutilevel index, combined scheme 등의 기법을 혼합해서 개선한 버전을 사용한다. combined scheme은 UNIX 계열에서 사용한다. UNIX에서는 이를 inode라고 칭한다.

Free Space Management

운영체제를 통해 새로운 파일을 저장하려면 파일의 가용 공간을 탐색해야 한다. 이를 위해서 운영체제는 가용 가능한 디스크의 블록을 지속적으로 관리한다. 

  • Bit vector: 디스크의 사용 중인 블록을 모두 1bit flog로 저장한다. 모든 블록을 저장해야 하는 단점이 존재한다.
  • Linked list: 첫 번째 블록이 다음 블록에 대한 정보를 가지고 있다. 디스크에서 가용 블록 확인 시 모든 블록을 순회 해야하므로 비효율적이다. 
  • Grouping: linked list의 변형으로 첫 번째 블록에 다음 n개의 블록 주소를 저장하는 방법이다. 
  • Counting: 사용 가능한 연속된 블록 중에서 첫 번째 블록의 주소와 몇개의 블록이 비어있는지를 저장한다. 

파일 시스템은 양이 방대하므로 모르는 개념이 생기면 그때그때 추가하는 방향으로 더 공부할 것

ex) 카프카는 페이징 기법을 사용해서 파일 시스템의 속도를 향상시킨다.

 

Linux의 파일 시스템을 찾아보는 것도 도움이 많이 될 듯 하다.

'Computer Science > Operating System' 카테고리의 다른 글

9. I/O 시스템  (0) 2023.01.13
8. 대용량 저장장치 구조  (0) 2023.01.11
7. 메모리 관리  (0) 2023.01.09
6. 프로세스 동기화 그리고 데드락  (0) 2023.01.06
5. CPU 스케줄링  (0) 2023.01.05