Free-Space Management
ㄴ list -> bitmap

block number : (워드당 비트 수) * (0 값 워드 수) + 첫 번째 1 비트의 오프셋
// CPU) 워드 내 첫 번째 "1" 비트의 오프셋을 반환하는 명령어 있음
ex) block size = 4KB (2^12 bytes), Disk = 1 TB (2^40 bytes)
- n = 2^40 / 2^12 = 2^28 (32MB)의 비트맵 필요.
- cluster size (block모음) : 4blcok -> 8MB의 메모리
Linked Free Space List on Disk

공간 낭비 X, 효율적 할당 : 2->3 하고 포인터 설정 후 다음에 4번부터 이어서
<> 연속할당은 불리
Free-Space Management
- Grouping (그룹화): ~= index.
- Counting (카운팅): 연속 할당시 유용
- 8|6|17 : 8번부터 6개 연속 -> 17번으로
- 17|2|25 : 17번부터 2개 이어서 25번으로
- // 바로 위 사진 참고
- Space Maps (스페이스 맵):
[1] 디스크 → many metaslab (공간 관리 단위)| **Pool (Volume)** | 전체 저장소 공간. 여러 디스크의 묶음 // 수백개의 metaslab | **VDEV** | 실제 물리 장치 또는 장치 묶음 | **Metaslab** | 디스크를 일정한 단위로 나눈 작은 블록 관리 단위 | **Space Map (log) | 각 Metaslab 내의 공간 상태(할당/해제)를 추적하는 데이터 구조
[2] 각 메타슬랩 -> Space Map(Log) 보유
- block 할당/해제를 log 로 기록 (카운팅 + 오프셋 형식)
[3] 메타슬랩 사용 시
→ Space Map log -> memory load
→ 트리 구조로 정리 (빠른 검색/결합 가능)
[4] contiguous free block → 하나로 압축 기록
- TRIMing Unused Blocks
- HDD) overwrite <> NVM : 지우고 free space에 써야함
- TRIM) NVM의 해당 page 가 free space임을 알림
- garbage colletion, free block -> 삭제
- TRIM) NVM의 해당 page 가 free space임을 알림
- HDD) overwrite <> NVM : 지우고 free space에 써야함
//NVM : NonVolatile Memory // SSD, Flash.. <> HDD: NAND 기반
Performance
- Buffer cache : 자주 사용되는 block 임시 buff
- Synchronous writes: Disk write 까지 wait //반환 기다림
- Asynchronous writes: 그냥 쓰고 다른일함 // 비동기
- Free-behind and read-ahead: 순차 접근 최적화
- 속도) Write >> Read : 값을 받을때까지 기다려야하므로
- > read-ahead: 미리 읽기, free-behind: 사용한 블록은 즉시 버퍼에서 해제
- >> sequential access 일때 유용
- 속도) Write >> Read : 값을 받을때까지 기다려야하므로
Page Cache (페이지 캐시)
- Disk block 대신 가상 메모리 기법/ 주소로 page cache
- Memory-mapped I/O) 페이지 캐시
- 일반적인 File system I/O) 버퍼캐시 사용

ㄴ 동일한 Data가 두 캐시에 이중으로 존재할수있음
>>
Unified Buffer Cache
- 동일한 page cache -> Memory-mapped page 와 일반적인 File system 모두 cahche
- ㄴ이중 캐싱을 방지

Recovery
- Consistency checking : Directory data <-비교-> Disk data block -> slow
- ㄴ 다른 Device 로 백업
Log Structured File Systems (LFS)
: 모든 변경을 log 로 순차적 기록
[1] 트랜잭션(단위) 생성 → 로그에 기록 (순차적)
[2] File system) 비동기적으로 해당 변경을 반영
[3] 반영될시 해당 로그 제거
if) 충돌 시, 남은 로그를 보고 Recovery
File System (파일 시스템 구조)

volume : 1~N partition
ㄴ volume 별로 File system이 따로 들어감
Partitions and Mounting
- Boot block: boot loader // OS를 memory로 올려주는 code
- Root partition : OS 포함. 부팅 시 mount
- 마운트 할때: file system -> metadata consistency checked
Virtual File Systems (VFS)
: user(app) -> VFS API 로 파일 접근
ㄴVFS interface) virtual node(vnode) 로 File systems 연결

'전공 > 운영체제' 카테고리의 다른 글
| File system (1) | 2025.06.07 |
|---|---|
| I/O systems (0) | 2025.06.05 |
| Virtual memory-2 (0) | 2025.05.23 |
| 가상메모리 (0) | 2025.05.15 |
| 메모리-4 (0) | 2025.05.11 |