대부분의 시간은 seek time과 rotational latency에서 소요된다.
cpu는 디스크를 얘기할 때 logical block을 다룬다. 마치 1차원 배열처럼. 논리적인 블록을 섹터랑 매칭하는 것은 컨트롤러가 한다.
디스크 컨트롤러가 섹터 단위로 쪼개서 관리하겠다고 구획을 나누는 것을 format이라 한다.
partitioning은 디스크 하나를 c 드라이브, d 드라이브 등으로 나누는 것이다.
logical formatting은 파티션된 논리적인 디스크에 파일 시스템을 설치하는 것이다.
메모리 바로 옆에 비휘발성 아주 작은 메모리가 있는데 이것이 ROM이다. ROM에는 부팅할 때 0번째 섹터를 메모리에 올려서 실행하라고 적혀있다.
가장 다음 이동거리가 짧은 곳으로 이동하는 방식이다. startvation 발생 가능하다.
대기 시간의 편차가 클 수도 있다.
swap area는 파일 시스템보다 단위 크기가 훨씬 크다. 전원이 끄면 사라지므로 공간을 효율적으로 사용하는 것이 중요하지 않다. 속도가 더 중요하다.
병렬성을 이용해서 성능을 향상 시키는 것이다.
inode에는 메타데이터 정보를 보관하고 있다.
현재 가장 많이 사용되는 파일시스템은 EXT4이다.
indirect pointer는 큰 파일을 지원하기 위해서이다.
원래 파일에 접근하기 위해서는 메타데이터에 접근하고, 실제 파일에 접근하는데 i-node block과 data block을 왔다갔다하는 것은 디스크 헤더가 많이 움직인다. 이러한 단점을 보완하기 위해서 블록의 그룹화가 나왔다.
그룹에 대한 총체적인 정보를 담고 있는 것이 Group descriptor이다.
사용적인 블록과 비어있는 그룹은 block bitmap으로 구분한다.
전원이 나가서 메모리의 내용이 휘발되면 파일시스템의 내용이 깨질 수 있다.
버퍼캐시에서 쫓겨날때 파일에 저장을 해주는 것이 아니라, 주기적으로 스토리지에 써주는 것이다. 파일시스템에 쓰는것이 아니라 저널 영역이라는 것에 써주는 것이다. 도중에 크래쉬가 나더라도 저널영역에 있는 것을 옮겨쓰면 된다.
이건 메타데이터만 저널링하는 방법이다. 메타데이터만 저널링했기 때문에 파일의 위치정보는 깨지지않는다. 일반 데이터는 깨질 수 있다.
lru와 lfu 둘다 일부분의 정보만 사용하기 때문에 단점이 있다.
어떤 것을 쫓아낼지 logn 안에 결정 할 수 있어야하는데 이렇게하면 O(n)이다.