OS

[쉽게 배우는 운영체제] 11-1. 파일 시스템: 파일

noahkim_ 2024. 12. 14. 02:04

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다.

 

1. 블록

  • 데이터를 읽고 쓰는 최소 단위

 

표) 계층별 블록 단위

더보기
계층 단위 특징
Memory Byte CPU가 직접 다루는 최소 단위
HDD 물리 Sector (512B/4KB) 디스크가 물리적으로 읽는 최소 단위
File System Block (보통 4KB) OS가 파일을 관리하는 최소 단위
Windows 파일 시스템 Cluster (보통 4KB) 블록 묶음 단위

 

2. 파일

  • 논리적인 데이터 집합
  • 실제 저장 장치에서 여러 개의 블록으로 나뉘어 저장됨

 

헤더

구성 요소 설명 특징/예시
첫 블록 주소 파일 데이터 시작 위치  
name 파일 이름  
type 파일 유형 regular, directory, socket
size 파일 크기 바이트 단위
time 생성/수정/접근 시간  
location 디스크 상의 물리적 위치  
accessibility 파일의 접근 권한 읽기, 쓰기, 실행
owner 파일 소유자 UID/GID

 

타입

타입 표기 설명 특징
Regular file - 일반 파일 (텍스트, 이미지, 실행 파일 등) 바이너리 형태로 저장됨
Directory d 파일 목록을 담는 특수 파일  
Symbolic link l 다른 파일을 가리키는 링크 - 원본 삭제 시 깨짐
- i-node 번호 공유 안함
Character device c 입출력 콘솔 장치 (키보드, 터미널 등) /dev/console로 마운트됨
Block device b 블록 장치 (HDD, SSD 등) /dev/sda*로 마운트됨
FIFO (named pipe) p 특수 파일 (프로세스 간 통신용 파이프) /run/systemd/initctl/fifo*로 마운트됨
Socket s 특수 파일 (네트워크/IPC 통신용) /dev/log*로 마운트됨

 

 

표) 구조

더보기
파일 구조 특징 특징
순차 파일 구조 데이터를 순서대로 차례대로 저장하는 구조 - 저장 공간에 낭비되는 부분이 없음
- 수정 및 삽입 작업 시 비용이 많이 듦
- 특정 데이터로 이동 시 직접 접근 불가
인덱스 파일 구조 순차 파일 구조에 인덱스 테이블을 추가한 구조
- 플로피 디스크, CD-ROM, HDD 등에서 사용
직접 파일 구조 키 값을 해시 함수로 계산해서 곧바로 물리 주소로 매핑함
- 접근이 매우 빠름

 

표) 종류

더보기
파일 종류 설명 특징
실행 파일 운영체제가 직접 실행할 수 있는 파일 - 내부에 기계어 코드가 포함됨
- 메모리에 로드되어 프로세스로 실행됨
- 유닉스에서는 확장자가 아닌 접근 권한으로 실행 여부가 결정됨
데이터 파일 실행 파일이 읽어서 사용하는 파일 - 실행 파일이 작업을 수행하는 데 필요한 데이터를 포함
- 스스로 실행되지 않음
파일 종류 설명 특징
이진 파일 사람이 읽기 어려운 기계 친화적 파일 - 컴퓨터가 데이터를 효율적으로 저장하고 처리하기 위해 사용됨
- 다양한 데이터: 텍스트, 이미지, 오디오, 비디오 등
- 포맷 정보(글꼴, 스타일 등) 등
텍스트 파일 사람이 읽을 수 있는 문자 기반 파일 - 문자 기반 데이터 (이미지, 비디오 등은 포함되지 않음)
- 코드, 로그 파일, 구성 파일

 

링크

구분 하드 링크 심볼릭 링크
정의 기존 파일과 동일한 inode를 공유하는 또 다른 이름 원본 파일의 참조를 문자열로 저장한 파일
inode 공유
link count 증가
다른 파일시스템 불가 가능
원본 삭제 시 유지 깨짐
수정 시 반영 동일 동일 (원본 기준)

 

예제) hard link

더보기
echo hello > a
ln a b
12345 -rw-r--r-- 2 user user 6 a
12345 -rw-r--r-- 2 user user 6 b

 

예제) symbolic link

더보기
echo hello > a
ln -s a b
12345 -rw-r--r-- 1 user user 6 a
12346 lrwxrwxrwx 1 user user 1 b -> a

 

3. 파일 디스크립터

  • 프로세스가 열린 파일을 식별하기 위한 정수 값
  • ✅ 프로세스의 파일 접근에 사용됨
  •  프로세스마다 파일 디스크립터 테이블을 가지고 있음

 

표) 기본 FD 번호

더보기

✅ 모든 프로세스는 기본 파일 디스크립터 번호가 등록되어 있음

  • 0: stdin (표준 입력)
  • 1: stdout (표준 출력)
  • 2: stderr (표준 에러)

 

예시) open()

더보기

파일 관리자로부터 파일 디스크립터를 리턴받음

int fd = open("text.txt", O_RDONLY);