조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다
1. 파일
- 논리적인 데이터 집합
- 여러 개의 블록으로 구성됨
- 제 2 저장장치에 저장됨
블록
- 일정한 크기의 데이터 단위
- 파일은 블록 단위로 나뉘어 저장됨
Unit
- Memory: byte
- HDD: Cluster
- File System: 4KB (ext4, NTFS)
속성
파일 헤더
구성 요소 | 설명 |
첫 블록 주소 | 파일의 첫 번째 데이터 블록의 주소를 나타냄 |
name | 파일 이름 |
type | 파일 유형 (예: 텍스트, 이진 등) |
size | 파일 크기 (바이트 단위) |
time | 파일 생성, 수정, 접근 시간 |
location | 파일이 저장된 위치 (디스크 상의 물리적 위치) |
accessibility | 파일의 접근 권한 (읽기, 쓰기, 실행 등) |
owner | 파일 소유자 |
- 파일 테이블에서 관리됨
파일 디스크립터
파일 식별자
- 프로세스의 파일 접근에 사용됨
- 프로세스마다 파일 디스크립터 테이블을 가지고 있음
open()
- 시스템 콜을 호출하여 파일 디스크립터를 리턴받음
- 파일 관리자로부터 부여받음
종류
파일 종류 | 설명 | 특징 |
실행 파일 | 직접 실행될 수 있는 프로그램 코드가 포함된 파일 | - 프로세스 생성 및 메모리 로드를 거쳐 실행됨 - 유닉스에서는 접근 권한으로 실행 여부 결정 (확장자로 구분되지 않음) |
데이터 파일 | 실행 파일이 작업하는 데 필요한 데이터를 모아놓은 파일 | - 실행 파일이 작업을 수행하는 데 필요한 데이터를 포함 - 연결 프로그램이 해당 파일을 실행하면 자동으로 실행됨 - 고유 헤더를 통해 파일 형식 및 열어야 할 프로그램을 구분 가능 |
이진 파일 | 이진 형식으로 인코딩된 데이터 | - 텍스트, 이미지, 오디오, 비디오 등 다양한 데이터를 포함할 수 있음 - 컴퓨터가 데이터를 효율적으로 저장하고 처리하기 위해 사용됨 - 포맷 정보(글꼴, 스타일 등)를 포함할 수 있음 |
텍스트 파일 | 사람이 읽을 수 있는 문자로 구성된 파일 | - 사람이 읽을 수 있는 문자로 구성됨 - 문자 기반 데이터만 포함 (이미지, 비디오 등은 포함되지 않음) - 코드, 로그 파일, 구성 파일 등에서 흔히 사용됨 |
구조
파일 구조 | 특징 |
순차 파일 구조 | - 저장 공간에 낭비되는 부분이 없음 - 수정 및 삽입 작업 시 비용이 많이 듦 - 특정 데이터로 이동 시 직접 접근 불가 |
인덱스 파일 구조 |
- 순차 파일 구조에 인덱스 테이블을 추가하여 효율성 증가
- 플로피 디스크, CD-ROM, HDD 등에서 사용 |
직접 파일 구조 |
- 데이터의 특정 값에 관계를 정의하여 물리 주소로 바로 변환
- 접근이 매우 빠름 - 해시 함수를 사용하여 빠른 데이터 접근 가능 |
2. 파일 시스템
- 파일을 어떻게 읽고, 쓰고, 관리할 지에 대한 규칙
- 파티션 당 하나씩 존재
목적
- 사용자로부터 파일 보호
- 공간을 효율적으로 사용
기능
기능 | 설명 |
구성 |
파일 또는 디렉토리로 데이터를 저장하고 조직하는 방식
|
관리 | 파일의 생성, 수정, 삭제 등의 작업을 처리 |
접근 |
파일에 대한 접근 권한 설정 및 프록시 역할 수행
|
무결성 보장 | 파일의 내용이 손상되지 않도록 보호하고 유지 |
백업 및 복구 |
데이터의 손실을 방지하기 위한 백업 및 복구 기능
|
암호화 | 파일의 데이터를 암호화하여 보안성 강화 |
파티션
클러스터 단위
- 연속된 섹터 묶음 (물리적으로 연속됨)
- 섹터 번호를 기준으로 나뉨 (lba 기준)
독립적
- 디스크를 여러 파티션들로 나눌 수 있음
- 한 파티션당 하나의 파일 시스템만 사용 가능
- 사용자별 파티션 부여 가능
구성
구성 요소 | 설명 |
Boot Block |
부트스트랩 코드 보관 (OS를 부팅하거나 초기화하기 위한 코드)
|
Super Block |
파일 시스템의 정보 저장 (파일 시스템의 전체적인 구조와 상태 정보)
|
i-list (inode list) | 파일 및 디렉토리의 메타데이터 목록 inode: 파일 또는 디렉토리에 대한 메타데이터 (파일 속성 등) |
- inode number | 파일 또는 디렉토리를 고유하게 식별하는 번호 |
- Size | 파일의 크기 |
- Owner | 파일의 소유자 |
- Mode | 파일의 접근 권한 (읽기, 쓰기, 실행 권한) |
- Timestamp |
파일의 생성 시간, 수정 시간 등 타임스탬프 정보
|
- Hard Link Count | 해당 inode를 참조하는 하드 링크의 수 |
- Data Block Pointers | 데이터 블록을 가리키는 포인터 |
-- Direct |
데이터 블록 포인터 (파일의 실제 데이터가 저장된 위치)
|
-- Indirect |
데이터 블록 번호를 저장한 데이터 블록의 포인터들 (single, double, triple)
|
Directory Blocks |
디렉토리의 데이터 블록 (디렉토리 항목이 저장되는 블록)
|
Data Blocks | 파일의 실제 데이터가 저장되는 블록 |
볼륨
- 여러 섹터나 클러스터들로 이루어진 집합
- 파티션과 달리, 물리적으로 연속되지 않아도 됨
- 논리적으로 하나의 단위처럼 동작
3. 디렉토리
- 관련있는 파일을 하나로 모은 것
헤더
- 디렉터리 이름, 만든 시간, 접근 권한, 블록 위치
구조
- 트리 구조
마운트
- 여러 개의 파티션을 하나의 파티션으로 통합하는 명령
mounting point
- 파티션끼리 연결된 지점
- 외부 저장장치도 파티션에 붙이고 해제할 수 있음
- /dev: 외부 저장장치가 마운트된 디렉토리
4. 디스크 파일 할당
할당 방식 | 세부 방식 | 설명 | 예시 |
연속 할당 (Contiguous Allocation) |
- | 데이터가 연속된 물리적 위치에 할당됩니다. 접근 속도가 빠르고 관리가 용이합니다. |
- |
불연속 할당 (Non-contiguous Allocation) |
연결 할당 (Linked Allocation) |
데이터 블록들이 연결 리스트로 관리되며, 각 블록은 다음 블록을 가리키는 포인터를 포함합니다. |
FAT(File Allocation Table)
연결 리스트 방식 |
인덱스 할당 (Indexed Allocation) |
파일에 대한 데이터 블록의 인덱스를 인덱스 블록에 저장 필요한 경우 간접 인덱스 블록을 사용합니다. |
- |
빈 공간 관리
- 빈 블록의 정보만 모아놓는 빈 공간 리스트를 유지하여 관리
'OS' 카테고리의 다른 글
[따배셸] 2. Bash Shell과 변수 (0) | 2025.03.31 |
---|---|
[따배셸] 1. Linux Shell 이란? (0) | 2025.03.31 |
[쉽게 배우는 운영체제] 9. 가상 메모리 관리 (0) | 2024.12.13 |
[쉽게 배우는 운영체제] 8. 가상 메모리의 기초 (0) | 2024.12.12 |
[쉽게 배우는 운영체제] 7. 물리 메모리 관리 (0) | 2024.12.12 |