일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- AINCAA
- CTF
- dirty cow
- Security
- ret2libc
- frequency-domain spectrum analysis
- Rr
- 게임개발
- 메카님
- 게임 개발
- 유스케이스
- stride
- 유니티
- Unity #Indie Game
- DP
- RBAC
- linear difference equation
- dtft
- STCF
- 언리얼엔진
- TSet
- 운영체제
- Double free
- sampling theory
- Race condition
- pdlc
- MLFQ
- DSP
- MAC
- 배경 그림
- Today
- Total
다양한 기록
Consistency other approaches / Ext2,3,4 본문
fsck: a lazy approach
저널링: an active approach .. 문제가 발생하지 않아도 미리미리 대비
Soft update
항상 순서, 룰을 지키면서 업데이트
너무 복잡해서 보통 그냥 저널링을 씀
CoW (Copy on Write)
파일이 트리 형태로 관리될 때, 바로 수정하는게 아니라 복사한 다음 복사한 위치에 수정함
그다음 상위 파일도 마찬가지로 복사해서 수정된 노드를 가리키도록 하고, 최종적으론 루트까지 카피해서 바꿈
Optimistic Crash Consistency
이름처럼 정상적으로 작동할 것이라 가정하고 최대한 많은 작업을 동시에 수행시켜 성능 극대화
대신 체크섬을 이용하여 데이터가 손상되었거나 불일치가 발생했는지 감지 가능
Ext2
기본 아이디어: 패스트 파일 시스템을 리눅스
성능 향상을 위한 기법
1) 실린더 그룹
2) pre-allocation: 미리 인접 블록을 할당해놔서 나중에 appending 되어도 성능 문제 없도록 함
3) Read-ahead during sequential reads: 연속적으로 읽게 될 가능성이 높은 데이터 블록을 미리 읽어옴
Ext3
Ext2 + 저널링
Ext4
큰 파일 지원에 관심
기존 inode는 4테라 정도만 지원
Extent-based mapping
- Extent: 가변 사이즈의 블록 사이즈를 지원함
- 트리 구조, 스플릿 / 머지 연산 필요
FAT (File Allocation Table)
inode의 단점은 파일마다 필요하다는 거
스토리지 크기가 작으면 굳이 파일마다 inode를 만들어야 하나가 이슈
inode, 비트맵 역할을 하는 하나의 테이블을 만들자
1) Used for used/free
2) data location
FAT 테이블에서 0x00은 프리 상태
Boot Sector |
FAT | FAT | Root | hello.c | hello.c | a.out | a.out | a.out | a.out |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
hello.c -> 7KB
a.out -> 15KB
여기서 FAT Table은 다음과 같이 구성된다.
Res | Res | Res | 0xFF | 0x05 | 0xFF | 0x07 | 0x08 |
0x09 | 0x0FF | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 |
0xFF(-1)가 엔드 오브 파일
예시)
a.out을 읽고 싶다
루트에서 FAT의 6번을 가리킴
FAT에서 6번은 7번을 가리킴 --- -0xFF까지 계속 따라가면
6 - 7- 8 - 9 -1이 됨
=> 6, 7, 8, 9번을 읽으면 a.out
LFS (Log-Structured FIle System)
데이터 업데이트 시 원래 장소 말고 아예 다른 장소에 씀 (Out-of-place update)
inode에 새로운 매핑 필요
invalidated된 데이터에 가비지 컬렉션 필요
'운영체제' 카테고리의 다른 글
메모리 가상화 - introduction (0) | 2024.06.15 |
---|---|
플래시 메모리과 파일 시스템 (0) | 2024.06.15 |
Consistency / Journaling (0) | 2024.06.15 |
Consistency / FSCK (File System Checker) (0) | 2024.06.15 |
Fast File System (0) | 2024.05.28 |