파일 시스템 (File System)
- 파일이나 자료를 쉽게 발견 할 수 있도록 유지, 관리하는 방법
- 사용자 영역이 아닌 커널 영역에서 동작
- 파일을 빠르게 읽기, 쓰기, 삭제 등 기본적인 기능을 원활히 수행하기 위한 목적
파일 시스템 역할
- 파일 관리 : 파일 저장, 참조, 공유
- 보조 저장소 관리 : 저장 공간 할당
- 파일 무결성 메커니즘 : 파일이 의도한 정보만 포함하고 있음을 의미
- 접근 방법 : 저장된 데이터에 접근할 수 있는 방법 제공
파일 시스템 개발 목적
- 하드디스크를 효율적으로 이용하고 하드디스크와 메인 메모리의 속도 차이를 줄이기 위해
- 파일 관리
파일 시스템 구조
- 블록(Block)
- 파일 시스템의 최소 저장 단위
- 각 블록은 고유한 주소 또는 인덱스를 가진다.
- 파일 데이터와 메타데이터가 포함된다.
- 파일(File)
- 데이터를 저장하는 단위로 사용자가 생성하고 조작하는 단위
- 파일 이름과 파일 내용으로 구성되며, 파일 내용은 블록에 저장된다.
- 고유한 식별자를 가지며, 메타데이터(파일 크기, 생성일, 수정일 등)를 가지고 있다.
- 디렉터리(Directory)
- 파일과 다른 디렉터리를 그룹화하고 조직화하는 논리적인 컨테이너
- 파일과 다른 디렉터리를 그룹화하고 조직화하는 논리적인 컨테이너
- 메타데이터(Metadata)
- 파일 및 디렉터리와 관련된 정보를 나타내는 데이터
- 파일 및 디렉터리와 관련된 정보를 나타내는 데이터
- 파일 시스템 테이블(File System Table)
- 파일 시스템의 메타데이터와 관련된 정보를 포함하는 테이블
- 파일 시스템의 일관성 유지와 성능 향상을 위해 사용
파일 할당 방식
연속 할당 (Contiguous Allocation)
- 파일을 디스크 상의 연속적인 공간(블록)에 저장하는 방식
- 장점
- 파일을 읽고 쓰는 속도가 빠르다. 연속적인 블록으로 구성되어 있기 때문에 파일 접근 시 디스크 헤드의 이동이 최소화되어 효율적인 I/O가 가능하다. (동영상/음악/VOD와 같이 크기가 큰데 실시간인 자료들에 적합)
- 간단하고 직관적인 구조로 파일 시스템의 오버헤드가 적다.
- 단점
- 파일의 크기를 미리 지정해야 하기 때문에 파일 크기의 예측이 어렵다.
- 파일이 삭제되거나 크기가 변경될 경우, 연속된 공간을 유지하기 위해 파일을 이동해야 할 수 있다. 이 과정에서 외부 단편화가 발생할 수 있다.
- 연속된 공간이 부족한 경우 파일을 저장할 수 없는 상황이 발생할 수 있다.
연결 할당 (Link Allocation)
- 파일을 linked list의 형태롤 저장하는 방식
- 디렉토리에 제일 처음 저장되는 블록을 가리키게 되고 각 블록은 포인터를 가지고 있어 다음 블록을 가리킨다.
- 장점
- 외부 단편화 방지 : 새로운 파일이 만들어진다고 가정하면 비어있는 임의의 블록을 첫 블록으로 지정하고 파일이 커지면 다른 블록을 할당 받고 포인터를 이용해 연결 하면 된다.
- 외부 단편화 방지 : 새로운 파일이 만들어진다고 가정하면 비어있는 임의의 블록을 첫 블록으로 지정하고 파일이 커지면 다른 블록을 할당 받고 포인터를 이용해 연결 하면 된다.
- 단점
- 순서대로 읽는 것만 가능하다.
- 포인터 저장을 위해 4바이트 이상을 손실시켜야 한다.
- 포인터가 끊어지면 접근이 불가하기 땜누에 낮은 신뢰성을 가진다.
- 포인터를 따라가야 하므로 속도가 느릴 수 있다.
색인 할당 (Indexed Allocation)
- 파일 당 인덱스 블록을 사용하여 파일을 할당하는 방법
- 인덱스 블록 : 각 파일에 할당된 포인터를 저장하는 모음
- 연결 할당과 같은 방식으로 할당을 하지만 인덱스 블록을 둔다는 점이 다르다.
- 장점
- 인덱스를 통해 파일 내 특정 블록을 빠르게 찾을 수 있다.
- 파일의 크기를 동적으로 조정할 수 있다.
- 외부 단편화 방지
- 단점
- 인덱스 블록 할당에 따른 저장 공간의 손실이 발생할 수 있다.
파일 시스템 접근 방법
순차 접근(Sequential Access)
- 파일을 처음부터 끝까지 순차적으로 접근하는 방법
- 즉, 각 블록을 순서대로 읽거나 쓰는 방식
- 주로 테이프 드라이브와 같은 순차적인 데이터 저장 장치에서 사용
직접 접근(Direct Access)
- 파일 내의 임의의 위치에 직접 접근하는 방법
- 블록의 고유한 주소 또는 인덱스를 사용하여 원하는 위치로 직접 이동한다.
- 따라서, 파일 내의 어떤 블록에든 빠르게 접근할 수 있다.
- 하드 디스크와 같은 랜덤 액세스 장치에서 주로 사용
- 대용량 파일이나 데이터베이스와 같이 빠른 액세스가 필요한 작업에 유용
색인 접근(Indexed Access)
- 파일 시스템에 추가적인 색인 구조를 사용하여 파일에 접근하는 방법
- 일반적으로 색인 구조는 파일 시스템 테이블에 저장되며, 각 파일의 색인은 해당 파일의 위치를 가리키는 포인터로 구성된다.
- 데이터베이스 시스템에서 주로 사용
디렉토리와 디스크 구조
1단계 디렉토리 (Single-Level Directory)
- 가장 간단한 구조로 모든 파일이 하나의 디렉터리 내에 위치한다.
- 각각의 파일 이름이 달라야 하고, 파일의 사용자의 수가 증가하면 파일을 관리하는데에 어려움이 생긴다.
2단계 디렉토리 (2-Level Directory)
- 루트 = MFD, 아래로 UFD가 있고 그 아래로 파일이 있다. 여기서 파일은 트리의 리프에 해당한다.
- 사용자마다 MFD를 배정하여 서로 다른 사용자가 같은 이름의 파일을 가질 수 있다.
트리 구조 디렉토리 (Tree Directory)
- 트리 형태의 디렉토리 구조로 하나의 루트 디렉토리와 여러 개의 서브 디렉토리로 구성되어 있다.
- 디렉토리의 생성과 제거가 비교적 용이하다.
- 디렉토리 탐색시 포인터를 이용한다.
- 디렉토리간 파일이나 서브 디렉토리의 공유를 허용하지 않는다.
- 절대 경로명 : 루트에서부터 가리킨 파일까지 모든 경로를 지정하는 것
- 상대 경로명 : 현재 디렉터리의 위치를 기준으로 목적하는 파일가지의 경로를 지정하는 것
비순환 그래프 디렉토리(Acyclic Graph Directory)
- 트리 구조 디렉토리를 확장한 구조
- 트리 구조와 다르게 디렉토리간에 파일이나 서브 디렉토리의 공유가 가능하다. ex) 한 폴더에 다른 폴더에 있는 파일이나 폴더의 바로가기를 생성한 것
- 복사의 개념이 아니라 링크(link)라 불리는 새로운 디렉토리 항목을 만드는 것으로, 한 디렉토리에서 공유한 파일이나 폴더에 수정이 일어나면 다른 디렉토리에서도 해당 파일이나 디렉토리의 변화를 볼 수 있다.
- 디렉토리 구조가 복잡하고, 공유된 하나의 파일에 대해 두번 이상 탐색될 수 있어 성능이 저하될 수 있다.
- 또한, 한 디렉토리에서 공유된 파일을 삭제할 경우, 고아 포인터가 발생한다. ex) 바로가기를 눌렀을 때 해당 파일이 없다는 문구가 뜨는 것
일반 그래프 디렉토리(General Graph Directory)
- 사이클을 허용하는 디렉토리 구
- 비순환 그래프 디렉토리와 다르게 순환이 허용되므로 무한루프에 빠질 수 있다.
inode 방식 파일 시스템
- inode 고유값과 자료구조로 주요 정보 관리
- '파일이름:inode' 로 파일이름은 inode 번호와 매칭
- 파일 시스템에서는 inode를 기반으로 파일에 접근
- inode 기반으로 메타 데이터 저장
파일 시스템 구조
1. 슈퍼 블록 : 파일 시스템 정보 및 파티션 정보
2. inode 블록 : 파일 상세 정보
- inode가 모여있는 공간
- 모든 파일/디렉토리는 inode를 하나씩 가지고 있으며, 해당 파일의 소유권, 파일 종류, 실제 데이터의 주소 등(=메타 데이터)을 가지고 있다.
3. 데이터 블록 : 실제 데이터
참고
44_디렉토리 구조 (Directory Structure) :: Data Science Lab (sungwookkang.com)
'Computer Science > Operating System' 카테고리의 다른 글
[OS] Blocking & Non-Blocking I/O (0) | 2023.07.16 |
---|---|
[OS] Blocking/Non-blocking & Synchronous/Asynchronous (0) | 2023.07.16 |
[OS] 메모리 (Memory) (0) | 2023.06.17 |
[OS] Thrashing (0) | 2023.06.17 |
[OS] 페이지 교체 알고리즘 (0) | 2023.06.10 |