개요
컴퓨터에서 파일은 단순한 데이터 묶음이 아니라 생성, 수정, 삭제, 접근 제어까지 체계적으로 관리되어야 합니다. 이 과정을 담당하는 것이 바로 파일 관리 소프트웨어입니다.
파일 관리의 주요 역할:
- 사용자 파일 생성, 수정, 삭제 지원
- 읽기·쓰기·실행 같은 다양한 액세스 방식 제공
- 사용자 수, 파일 크기 등 환경에 맞춘 설계
- 응용 프로그램에 적합한 파일 구성과 디렉터리 구조 결정
파일 관리 기능
파일 시스템이 제공하는 핵심 기능은 다음과 같습니다:
- 파일 관리: 원하는 구조로 파일을 저장하고 연결
- 보조 메모리 관리: 하드디스크, 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)까지만 가고 돌아오는 게 특징입니다.
정리
파일 관리 시스템은 단순히 파일을 저장하는 것이 아니라,
생성 → 접근 → 보호 → 삭제 → 복구까지 전 과정을 책임지는 운영체제의 핵심 기능입니다.