본문 바로가기
Computer Science/운영체제

[OS] 파일과 파일 시스템 (파일 접근 방식, 파일 할당 방식, 운영체제 별 파일 시스템, 디스크 파편화 관리)

by 그적 2024. 2. 5.

목차

  • 파일이란?
  • 파일 시스템이란?
  • 디렉터리란?
  • 파티션이란?
  • 파일 접근 방식
    • 순차 접근 (Sequential Access)
    • 직접 접근 (Random Access)
    • 색인 접근 (Index Access)
  • 파일 할당 방식
    • 연속 할당 (Contigious Allocation)
    • 연결리스트 할당 (LinkedList Allocation)
    • 인덱스 할당 (Indexed Allocation)
  • 운영체제 별 파일 시스템
    • 윈도우 : FAT, NTFS
    • 리눅스 : EXT2, EXT3, EXT4
  • 디스크 파편화 관리

 


1. 파일이란?

파일은 사용자 관점에서 데이터에 대한 논리적 저장 단위로, 관련된 정보들을 저장하기 위해 데이터 집합에 이름을 붙인 것이다. 블록이나 레코드 단위로 HDD 혹은 SSD와 같은 비휘발성 보조기억장치에 저장된다.

 


2. 파일 시스템이란?

시스템 내의 모든 파일 정보를 제공하는 계층적 디렉터리 구조이며, 데이터 및 프로그램의 저장과 접근을 위한 기법을 제공한다. 파일 및 파일 메타데이터, 디렉터리 정보 등을 관리하고, 파일의 저장 방법을 결정하고 파일을 보호한다.

 


3. 디렉터리란?

디렉터리란 파일의 일종으로, 같은 집합에 속한 파일들의 이름, 속성, 크기 등과 같은 메타데이터를 저장하고 있다.

 


4. 파티션이란?

연속된 저장 공간을 나누어 하나 이상의 연속되고 독립적인 영역으로 사용할 수 있도록 하는 정의한 규약이다. 디스크에 여러 파티션을 두는 것이 일반적이지만, 여러 개의 디스크를 하나의 파티션으로 구성하기도 한다.


5. 파일 접근 방식

1) 순차 접근 (Sequential Access)

: 파일의 정보가 레코드 순서대로 저장되는 방식이다. 현재 위치에서 읽거나 쓰면 offset이 증가하고, 다시 되돌아가기 위해서는 되감기가 필요하다.

 

2) 직접 접근 (Random Access)

: 파일을 임의의 순서로 접근할 수 있는 방식이다. 읽거나 쓰는 순서에 제약이 없으며, 현재 위치(cp 변수)만 유지할 수 있다면 순차 접근 기능도 구현할 수 있다.

 

3) 색인 접근 (Index Access)

: 파일에서 레코드를 찾기 위해 인덱스를 먼저 찾고, 대응하는 주소를 얻는다. 인덱스를 사용해 레코드 위치에 접근하므로 직접 접근보다는 느릴 수 있지만, 크기가 큰 파일에 유용하다는 장점을 가진다.

 


6. 파일 할당 방식

1) 연속 할당 (Contigious Allocation)

: 하나의 파일을 디스크 내 연속된 블록에 저장하는 방식이다.

  • 장점 : 블록 주소와 offset을 통해 빠르게 접근할 수 있다.
  • 단점 : 내부/외부 단편화가 모두 발생하고, 파일 크기 측면에서 유연하지 않다.

 

2)  연결리스트 할당 (LinkedList Allocation)

: 파일을 구성하는 각 블록을 연결리스트로 구현하는 방식이다. 디렉터리는 첫 번째와 마지막 블록에 대한 주소를 가진다.

  • 장점 : 외부 단편화를 해결했으며, 파일 크기 측면에서 매우 유연하다.
  • 단점 : 블록이 무작위로 할당되고, 개별적인 블록에 바로 접근하기 어렵고 느리다.

 

3) 인덱스 할당 (Index Allocation)

: 파일에 저장된 블록들의 주소들을 인덱스 블록에 저장해둔다. Index-node(i-node) 형태로 관리되며, 리눅스/유닉스에서 채택된 파일 저장 방식이다.

  • 장점 : 외부 단편화를 해결했으며, 직접 접근으로 속도가 빠르다.
  • 단점 : 인덱스 블록을 모아두어 디스크가 낭비된다. 

 


7. 윈도우

1) FAT16 (File Allocation Table 16)

  • 최대 2GB까지 지원
  • 암호화 및 압축 불가
  • 파일명 최대 8글자
  • 클러스터 당 1632KB를 할당하여 내부 단편화 발생

 

2) FAT32 (File Allocation Table 32)

  • 최대 2TB까지 지원
  • 암호화 및 압축 불가
  • 파일명 최대 256글자
  • 클러스터 당 4KB를 할당하여 내부 단편화 줄임

 

3) NTFS (New Technology File System)

  • 대용량 파일 시스템 지원
  • 암호화 및 압축 지원
  • 보안 및 공유 폴더 지원
  • 트랜잭션을 통한 복구/오류 수정 가능
  • Windows NT 이상에서 지원

 


8. 리눅스

1) EXT (Extended File System)

  • 최대 2GB 파일 시스템 지원
  • 255byte 파일명 지원
  • 파일에 대한 접근 제어, 타임스탬프 변경 등 불가
  • 사용할수록 단편화 심화

 

2) EXT2 (Extended File System 2)

  • 최대 2GB 파일 시스템 지원, 서브 디렉터리 개수 증가
  • FSCK를 통한 파일 시스템 오류 수정 지원

 

3) EXT3 (Extended File System 3)

  • 저널링 기능 지원
  • 디스크 조각화 최소화

 

4) EXT4 (Extended File System 4)

  • 대용량 파일 시스템 지원
  • 온라인 디스크 조각 모음 기능 지원

 


9. 디스크 파편화 관리

사용자가 하나의 파일을 쓰고 저장할 때, 디스크 내부적으로는 여러 레코드로 쪼개져 저장된다. 또한 파일을 삭제할 때는 흩어진 파일 레코드를 삭제하면서 디스크 중간에 빈 공간이 생기게 되며, 이것을 디스크 파편화라고 부른다.

 

한정된 디스크 공간을 효율적으로 쓰기 위해 주기적으로 디스크 파편화를 정리해 주어야 하며, 이때 운영체제의 '디스크 조각 모음' 기능을 사용할 수 있다. 현대 컴퓨터에서는 파일 시스템이 알아서 공간을 효율적으로 정리해주어 수동으로 동작시킬 필요는 없지만, 아래와 같은 방법들로 디스크 내 빈 공간을 추적할 수 있다.

 

1) Bit - Map

: 비트 맵은 디스크 블록에 해당하는 일련의 비트 모음이다. 비트는 0과 1의 값을 가질 수 있는데, 0은 블록이 할당되었음을 의미하고, 1은 사용 가능한 블록을 의미한다. 연속적으로 빈 공간을 확인할 수 있어 빠르다는 장점을 가진다.

 

2) LinkedList

: 사용 가능한 디스크 블록을 연결 리스트로 연결하며, 각 빈 블록은 다음 사용 가능한 블록에 대한 주소 값을 가지고 있다.  연결리스트를 탐색하기 위한 I/O 부담을 가진다.

 

3) Grouping

: Index Allocation처럼 첫 번째 사용 가능한 블록에 사용 가능한 블록들의 주소를 저장한다. 직접 빈 디스크 블록에 접근할 수 있어 빠르다는 장점을 가진다.

 

 

댓글