Skip to content

파일 시스템

  • 파일: 논리적 저장 단위
  • 파일을 정리하고 메모리에 매핑
  • 디렉터리로 계층적 연결 (폴더와 비슷)
    • 디렉토리란?/ 디스크에 존재하는 파일에 대한 정보를 가진 테이블
    • DOS, Linux, Unix 등 텍스트 기반은 디렉토리
    • GUI에선 폴더, 폴더에는 네트워크 설정 같은 특수 폴더가 포함됨
  • 사용자가 생성, 수정 삭제 가능

파일 구성

  • 비트 < 바이트 < 워드 < 필드 < 레코드 < 파일
  • 레코드 단위 작업
    • Read, Write, Update, Insert, Delete, Search
  • 파일 단위 작업
    • Open, Close, Copy, Destroy, Rename, List

File Descripter

  • 열린 파일의 목록을 관리하는 테이블의 인덱스
  • 0 또는 양수 값을 가짐
  • 정보
    • 파일이름 및 크기
    • 보조기억장치 위치
    • 파일 구조(순차, 색인 순차, 색인 파일)
    • 엑세스 제어 정보
    • 엑세스 횟수
    • 파일 유형
    • 생성, 수정, 제거 날짜

파일 시스템 특징

  • 무결성 보장
  • 백업과 복구
  • 암호화

디렉토리

계층 구조에 따라 여러 분류가 있음

  • 1단계(단일)
    • 루트에 모든 파일이 속함
    • 관리 어렵고 중복이름 X
  • 2단계
    • 루트 및에 유저별 폴더
    • 파일이름은 폴더명 안에서만 유니크하면 됨
  • 트리 구조
    • 폴더 안의 폴더
    • 절대경로: 루트부터
    • 상대경로: 현재 dir 부터
  • 비순환 그래프
    • 하위파일이나 dir 공유(바로가기)를 지원함
    • 다른 경로로 2번 이상 찾아 성능 저하 가능성 있음
    • 공유된 파일을 삭제했는데 포인터가 남아있으면 허상포인터 문제 발생
  • 일반 그래프
    • 트리 구조에 링크 추가
    • 순환 가능
    • 파일이나 디렉터리 공유 가능
    • 접근 용이

파일 할당 방식

  • 디스크에 여러 파일이 저장될 때 배치하는 방법
  • 연속할당
    • 배열처럼 인접하여 할당
    • 물리적으로 연속이라 엑세스 시간 감소
    • 새 파일공간의 크기를 미리 결정해야 함
    • 공간 확볼르 위해 재배치 및 압축 필요
  • 연결할당
    • 파일을 블록 크기로 나누고 디스크 내에서 포인터로 연결
    • 외부단편화X, 재배치 및 압축 불필요
    • 포인터 잃으면 파일 날아감
    • 크기 고정 불필요
  • 색인 할당
    • 색인(index)로 각 블록의 주조 지정
    • 모든 블록 크기 같음
    • 작은 파일에 대한 색인할당은 오버헤드 좀 있음

디스크 자유 공간 관리

  • 비트벡터
    • 각 블록을 비트로 표현해서 자유블록 여부를 배열로 저장
  • 연결리스트
    • 모든 자유블록을 연결리스트로 연결