8. Free Space Management
Linked list(Free list)
- 빈 블록의 linked list로 관리
- 비효율적
- 연속적인 공간을 얻을 수 없다.
- 하지만 공간 낭비는 없음
Bit vector
더 많이 사용
- bit map/ bit vector로 구현
- 각 블록은 1 bit로 표현된다. free : 1 / allocated : 0
- 어떤 게 비어 있는지 찾기 빠르다.
- calculation of bit number = (number of bits per word) * (number of 0-value words) + offset of first 1 bit
- bit map은 추가적인 공간을 요구한다.(메모리에)
block size = 2^12 bytes (4 KB)
disk size = 2^30 bytes (1 GB)
bit map 크기 n = 2^30/2^12 = 2^18 bits (32 KB) (2^18개의 block이 있는 것)
linux
efficiency dependent on
- disk allocation, free space, directory algorithm
- file directory data type(ex.i-node in Unix) ; attribute는 file 수정할 때마다 update
performance
- disk cache : 자주 쓰이는 블록을 위한 메모리의 구분된 영역
- synchronous write(metadata) vs. asynchronous write(data)
disk operation
metadata는 매번 바꿀 때마다 disk에 써준다 중요하기 때문
data는 asynchronous
중간에 power나가면 metadata는 남아있지만 data는 날아감
- optimization in sequential access
- free-behind : 다음 페이지가 요청될 때 buffer에서 페이지 지운다...? 앞에 있는 거 썼으니까 뒤에 있는 애를 위해 비워준다
- read-ahead : 순차적으로 읽는 것 -- 다음에 읽을 게 뻔하다면 미리 읽어놓는다
ex. 음악, 영상 재생
- using virtual disk, RAM(power나가면 없어짐)
Various Disk-Caching Locations
Page cache
초기에는 page cache/buffer cache 나누어져 있었다.
Unified Buffer Cache
요즘에는 모든 게 다 buffer cache로 통합
10. Recovery
- consistency checking
data 업데이트 asynchronous, consistency checking 필요
- back up
- Full backup : 모든 내용
- Incremental backup : 변경된 내용만