1. 공간 할당 방식(Allocation Methos)

  • 연속 할당(Continuous Allocation)
    • 한 File을 디스크상의 연속된 공간에 저장
    • file이 물리적으로 연속된 공간에 존재하기 때문에 순차접근, 직접접근 모두 효율적으로 가능
    • 구현이 간단하고 관리가 쉬움
    • 외부 단편화(external fragmentation) 문제가 발생할 수 있음
    • 파일의 크기가 변화할 경우를 고려하기 어려움

  • 비연속 할당(Non-Continuous Allocation)
    • 파일을 연속되지 않은 여러 블록에 나누어 저장

    • 연결 할당(Linked Allocation)
      • 파일을 구성하는 블록들을 순서대로 linked list 의 형태로 관리
      • 구현이 간단하고 외부 단편화가 발생하지 않으며 파일의 크기가 변화해도 문제가 없음
      • 포인터를 관리하기 위한 공간이 추가적으로 필요
      • 블록이 linked list 형태로 관리되기 때문에 직접 접근이 비효율적
      • 저장된 포인터에 문제가 생길경우 파일에 치명적인 문제가 발생
      • FAT 포맷이 대표적인 Linked Allocation 방식의 파일시스템

    • 색인 할당(Indexed Allocation)
      • 파일이 저장된 블록의 위치정보를 index 블록에 저장해두는 방식
      • index를 참조하여 원하는 블록에 바로 접근할 수 있기 때문에 직접 접근이 효율적
      • 블록 하나에 접근할 때마다 index 블록을 참조해야하기 때문에 순차접근은 비효율적
      • 파일마다 index 블록을 유지할 추가공간이 필요
      • 파일의 최대 크기가 index블록의 크기에 종속적
      • UNIX 등에서 사용

 

 

2. 빈 공간 관리(Free Space Management)

  • Bit Vector
    • 디스크 내 모든 블록의 사용중 여부를 bit 로 표시 (0: free / 1: allocated)
    • 구현이 간단하며 n개의 연속된 빈공간을 탐색하는데 효율적
    • bit vector 가 모두 메모리에 적재되어있어야 함 => 대규모 시스템엔 부적합
    • 규모가 작은 마이크로 컴퓨터에 적합

  • Linked List
    • 빈 블록을 linked list 형태로 관리
    • 포인터를 관리할 추가 공간을 필요로함 => 공간적으로 비효율적
    • n개의 빈 공간을 찾기 위해 n번의 참조가 필요함 => 시간적으로 비효율적

  • Grouping
    • 몇개의 빈 블록을 그룹으로 묶고 그룹단위로 linked list를 구성하여 관리
    • linked list 방식에 비해서 관리해야할 포인터의 갯수나 빈공간 탐색 시간을 많이 줄일 수 있음
    • n개의 연속된 빈 블록 탐색이 효율적

  • Counting
    • 연속된 빈 블록의 첫 번째 주소와 연속된 빈 블록의 갯수를 테이블로 관리
    • 빈 블록들이 서로 연속되지 않을수록 테이블의 크기가 늘어나 비효율적일 수 있음
    • 연속 할당 기법을 사용하는 시스템에 유리

'CS > 운영체제' 카테고리의 다른 글

#24 디스크 스케줄링(Disk Scheduling)  (0) 2022.02.07
#23 입출력 시스템(I/O System)  (0) 2022.02.05
#21 파일 보호(File Protection)  (0) 2022.02.02
#20 디렉토리(Directory)  (0) 2022.01.31
#19 파일 시스템(File System)  (0) 2022.01.28

+ Recent posts