개요

컴퓨터에서 파일은 단순한 데이터 묶음이 아니라 생성, 수정, 삭제, 접근 제어까지 체계적으로 관리되어야 합니다. 이 과정을 담당하는 것이 바로 파일 관리 소프트웨어입니다.

파일 관리의 주요 역할:

  • 사용자 파일 생성, 수정, 삭제 지원
  • 읽기·쓰기·실행 같은 다양한 액세스 방식 제공
  • 사용자 수, 파일 크기 등 환경에 맞춘 설계
  • 응용 프로그램에 적합한 파일 구성과 디렉터리 구조 결정

파일 관리 기능

파일 시스템이 제공하는 핵심 기능은 다음과 같습니다:

  • 파일 관리: 원하는 구조로 파일을 저장하고 연결
  • 보조 메모리 관리: 하드디스크, SSD 등 다양한 장치 지원
  • 무결성 보장: 데이터 보호 및 암호화 기능 제공
  • 액세스 방식 제공: 순차 접근, 직접 접근 등 다양한 방법 지원
  • 백업과 복구: 파일 손상이나 삭제 시 복원 가능

파일의 구조

파일은 크게 두 가지로 나눌 수 있습니다:

  • 논리적 파일: 파일의 이름, 속성, 디렉터리 구조, 가능한 연산 등
  • 물리적 파일: 실제 디스크에 저장된 데이터로, 논리 파일을 실제 장치에 매핑한 결과

블록(Block)

파일은 디스크에 저장될 때 블록 단위로 관리됩니다.

  • 블록은 메모리와 디스크 간의 데이터 전송 기본 단위
  • 운영체제는 **논리 블록 번호(LBN)**를 사용해 파일을 관리하고, 이를 **물리적 주소(트랙, 섹터 등)**로 변환하여 저장

메타데이터(Meta Data)

파일 그 자체 외에도 시스템은 파일에 대한 여러 정보를 따로 관리합니다.
예를 들어:

  • 파일 크기, 소유자, 생성·수정 시간
  • 저장 위치와 접근 권한
  • 시스템의 가용 공간, 루트 데이터 위치

이러한 메타데이터는 사용자가 직접 수정할 수 없으며, 파일 무결성을 지키는 핵심 요소입니다.


마운트(Mount)

새로운 저장 장치를 연결할 때는 마운트 과정을 거칩니다.
즉, 운영체제가 기존 디렉터리 구조에 새로운 파일 시스템을 붙여서 사용할 수 있도록 만드는 절차입니다.


파일 이름과 속성

  • 파일명: 사용자가 이해할 수 있는 고유 이름
  • 파일 타입: 텍스트, 실행파일, 이미지 등 형식 구분
  • 저장 위치: 파일이 존재하는 장치와 주소
  • 파일 크기: 현재 크기 및 최대 크기
  • 권한: 읽기, 쓰기, 실행 권한
  • 시간 정보: 생성, 수정, 최근 접근 시간

파일 구조 유형

  • 순차 파일: 일정한 순서로 기록된 파일
  • 인덱스 파일: 키 값을 기준으로 색인을 둔 파일
  • 분할 파일: 여러 개의 작은 파일(멤버)로 나누어 구성된 파일

파일 연산

우리가 흔히 하는 작업들은 파일 연산으로 정리됩니다.

  • 생성: 새로운 파일 공간 확보 후 디렉터리에 기록
  • 기록(쓰기): 데이터 저장, 기록 포인터 갱신
  • 판독(읽기): 파일 내용을 불러오기
  • 탐색(재설정): 포인터 이동으로 원하는 위치 접근
  • 삭제: 파일 공간 해제 및 디렉터리에서 제거
  • 크기 조정: 편집, 복사 등으로 크기 변경

액세스 방법

파일을 읽고 쓰는 방식에는 두 가지가 있습니다:

  • 순차 접근: 처음부터 순서대로 접근 (텍스트 파일에 주로 사용)
  • 직접 접근: 원하는 위치로 곧바로 이동해 읽기/쓰기 (데이터베이스에 주로 사용)

디렉터리

디렉터리는 파일을 관리하기 위한 목차 역할을 합니다.
파일 이름, 위치, 속성 정보를 담고 있으며, 파일을 효율적으로 탐색하고 관리할 수 있게 합니다.

디렉터리 구조 유형

  • 단일 디렉터리: 모든 파일을 하나에 저장 (단순하지만 충돌 위험 큼)
  • 2단계 디렉터리: 사용자별 디렉터리 제공
  • 트리 구조 디렉터리: 가장 일반적, 루트를 중심으로 계층 구조 형성

디스크 할당 방식

파일을 디스크에 배치하는 방법:

  • 연속 할당: 연속된 공간에 저장 (빠르지만 단편화 문제 발생)
  • 인덱스 할당: 인덱스 블록으로 포인터 관리 (효율적이나 공간 낭비 가능)

디스크 스케줄링

여러 프로그램이 동시에 디스크 접근을 요청하면, 운영체제는 스케줄링을 통해 순서를 정합니다.
평가 기준은 다음과 같습니다:

  • 처리량
  • 탐색 시간
  • 평균 응답 시간
  • 응답 시간의 안정성

선입선출스케줄링(FCFS, First Come First Served)

  • 먼저 도착한 프로세스부터 처리하는 방식
  • 말 그대로 ‘선착순’ 원칙을 따르기 때문에 줄 서기와 비슷합니다.
  • 운영체제는 준비 큐(Ready Queue)에 들어온 순서대로 CPU를 할당합니다.

최소탐색시간우선스케줄링(SSTF, Shortest Seek Time First)

즉, “헤드에서 가장 가까운 트랙부터 처리한다”라고 이해하면 쉽습니다.

  • 현재 디스크 헤드(읽기/쓰기 장치)의 위치에서 가장 가까운 요청을 먼저 처리하는 방식
  • 이름 그대로 **탐색 시간(Seek Time)**을 최소화하는 것이 목표
  • 디스크 요청 순서가 [82, 170, 43, 140, 24, 16, 190]이고, 현재 헤드 위치가 50이라고 가정해봅시다.
  • 현재 위치: 50
    • 가장 가까운 요청은 43 (거리 7)
    • 이동 후 위치: 43
    • 다음으로 가까운 요청은 24 (거리 19)
    • 이동 후 위치: 24
    • 다음은 16 (거리 8)
    • 이후에도 계속 “가장 가까운 요청”을 선택

순환스캔스케줄링(C-SCAN, Circular SCAN)

  • SCAN 방식(엘리베이터 알고리즘)을 개선한 방식으로, 디스크 헤드가 한쪽 끝까지 갔다가 다시 반대쪽으로 이동할 때는 요청을 처리하지 않고 바로 되돌아오는 방식
  • 쉽게 말하면, 디스크 헤드가 한쪽 끝에서 다른 쪽 끝까지 한 방향으로만 서비스하고, 다시 출발점으로 올 때는 그냥 “순환”하는 구조입니다.

    그래서 이름이 Circular(순환형) SCAN입니다.

  • 요청 큐: [98, 183, 37, 122, 14, 124, 65, 67]
  • 현재 헤드 위치: 53
    • 왼쪽 → 오른쪽 방향으로 진행
    • 65 → 67 → 98 → 122 → 124 → 183 순으로 처리
    • 끝(199)에 도달하면, 다시 9으로 이동 (이때 요청 처리 안함)
    • 다시 오른쪽으로 이동하며 남은 요청 처리
    • 14 → 37 순으로 처리

룩(LOOK)스케줄링

  • 기본 개념은 **SCAN(엘리베이터 알고리즘)**과 비슷합니다.
  • 차이점은, 헤드가 디스크 끝까지 가지 않고, 현재 요청이 있는 마지막 위치까지만 이동한다는 점이에요.

    즉, “끝까지 가지 말고, 필요한 지점까지만 보고(LOOK) 되돌아오자” 라는 원리입니다.

  • 요청 큐: [10, 22, 20, 2, 40, 6]
  • 현재 헤드 위치: 20
    • 오른쪽 방향으로 진행: 22 → 40
    • 오른쪽 끝(199)까지 가지 않고, 여기서 바로 방향 전환
    • 왼쪽 방향으로 진행: 10 → 6 → 2
    • SCAN과 달리 199까지 가지 않고, 마지막 요청(40)까지만 가고 돌아오는 게 특징입니다.

정리

파일 관리 시스템은 단순히 파일을 저장하는 것이 아니라,
생성 → 접근 → 보호 → 삭제 → 복구까지 전 과정을 책임지는 운영체제의 핵심 기능입니다.