[운영체제] 디스크 공간 할당 방법

[운영체제] 디스크 공간 할당 방법

파일이 하드디스크에 어떻게 저장되는지에 따라~~
디스크 공간 할당은 파일을 효율적으로 저장하고 사용하기 위해 파일을 기억공간에 어떻게 할당할 것인가를 결정하는 방법이다.
파일을 디스크 공간에 할당하는 방법에는 연속 할당 방법 불연속 할당 방법이 있으며, 불연속 할당 방법에는 섹터 단위 할당과 블록 단위 할당이 있다.


1. 연속할당(Continuous Allocation)

파일을 디스크의 연속된 기억공간에 할당하는 방법으로, 생성되는 파일 크기만큼의 공간이 있어야 한다.
  • 논리적으로 연속된 레코드들이 물리적으로 인접한 공간에 저장되기 때문에 접근 시간이 빠르다.
    • but) 낭비하는 공간이 너~~무 많다
  • 디렉터리는 파일의 시작 주소와 길이에 대한 정보만 가지고 있으므로 디렉터리가 단순하고, 관리 및 구현이 용이하다.
  • 파일 크기에 알맞은 연속 공간이 없을 경우 파일이 생성되지 않는다.
  • 파일의 생성과 삭제가 반복되면서 단편화가 발생한다.
  • 단편화를 줄이기 위해 재배치에 의한 주기적인 압축(Compaction)이 필요하다.
    • 반드시 해야 함!!!!!
  • 파일의 크기가 시간에 따라 변경될 경우 구현하기가 어렵다.
  • 가상기억장치로 사용할 수 없다.
  • 다중 프로그래밍에 사용하기 어렵다.


2. 불연속 할당(Non-Continuous Allocation)

불연속 할당에는 섹터 단위 할당블록 단위 할당 방법이 있다.(하나의 파일은 연결고리를 만들어 줘야 함)

섹터 단위 할당

  • 섹터 단위 할당은 하나의 파일이 디스크의 섹터 단위로 분산되어 할당되는 방법으로 하나의 파일에 속하는 섹터들이 연결 리스트(Linked List)로 구성되어 있다.
  • 하나의 파일에 속하는 각각의 섹터는 연결을 위해 다음 내용이 있는 곳의 포인터를 가지고 있다.
  • 레코드를 검색할 경우 파일이 속한 레코드를 순차적으로 검색해야 하므로 탐색 시간이 오래 걸리고, 직접 접근이 불가능하다.
  • 각 섹터의 포인터가 차지하는 공간만큼 실제 데이터가 저장될 공간이 감소한다.

블록 단위 할당

파일이 커질수록 섹터의 링크 정보로 낭비되는 공간이 늘어난다. 하나의 섹터가 512byte일 때, 실제 데이터가 저장되는 공간 500byte, 링크 정보가 12byte라고 하면... 2000byte파일이 있으면 굉장히 많은 부분이 손해를 본다.
하나의 파일이 연속된 여러 개의 섹터를 묶은 블록 단위로 할당되는 방법이며 블록 체인 할당, 색인 블록 체인 할당, 블록 지향 파일 사상 기법이 있다.
블록(클러스터) : 섹터들의 집합
  • 섹터 : 파일이 저장되어 있는 공간

블록 체인 기법

  • 섹터 단위 할당 기법과 비슷하나 할당 단위를 블록 단위로 구성하는 방법이다.
  • 하나의 블록은 여러 개의 섹터로 구성되어 있다
  • 초기에 쓰던 방법

색인(인덱스) 블록 체인 기법


  • 파일마다 색인 블록을 두고, 파일이 할당된 블록의 모든 포인터를 이 색인 블록에 모아 둠으로써 직접 접근을 가능하게 한 방법이다.
    • 직접 지정, 1차 간접 지정, 2차 간접 지정, 3차 간접 지정 등이 있다.
  • 색인 블록 하나로 파일을 전부 나타낼 수 없는 경우 여러개의 연속된 색인 블록을 서로 링크하여 사용할 수 있다.
  • unix에서 사용

블록 지향 파일 사상 기법

  • 포인터 대신 파일 할당 테이블(FAT; File Allocation Table)에 있는 블록 번호를 사용하는 기법이다.
    • 링크로 하는 것이 아니다!!
  • 블록 안에는 연속적인 섹터 + 블록끼리는 불연속적
  • 파일 할당 테이블에는 각 블록에 해당하는 항목이 있고, 각 항목은 블록 번호에 의해 색인 된다.
  • MS사(Windows)에서 사용


출처

댓글

이 블로그의 인기 게시물

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?

[Python] # -*- coding: utf-8 -*-를 쓰는 이유