non-volatile한 storage의 각종 파일 시스템, 디바이스들이 어떻게 관리되는지 알아보는 파트이다.
크게 실제로 데이터가 저장되는 미디어인 Disk pack, 미디어에 저장되어 있는 파일을 읽고쓰는 Disk drive로 구성되어있다.
가장 오른쪽에 있는 spindle을 기준으로 회전한다. 데이터가 저장되는 미디어 영역인 platter(디스크 원판)이 있다. platter는 앞면 뒷면 모두 데이터를 저장할 수 있기 때문에 각각의 면을 surface라고 한다. surface에있는 track을 따라 데이터가 저장되어있다.
하나의 디스크 팩은 위와 같이 Surface >> Track >> Sector 순으로 구성된다.
Seek time : 일단 헤드를 움직여서 원하는 cylinder 위로 헤드를 이동시키는 시간. (3~9ms)
Rotational delay (latency time) : 헤드가 원하는 track에 위치한 시간부터 목표한 sector가 회전해서 올 때까지 기다리는 시간. 평균적으로 하드디스크 회전시간의 반정도의 시간이 걸린다. (1~4ms)
Data transmission time : 해당 sector가 헤드밑에 도착하는 순간부터 모두 읽을 때까지 걸리는 시간. 한 트랙에 sector가 몇개있는지 보고, 1 / # of sector를 곱해주면된다.
정보가 주어진다면 다음 공식으로 쉽게 구할 수 있다. 구조를 살펴보면 쉽게 이해할 수 있다.
Capacity(용량)
= (# bytes/sector) x (avg.# sectors/track) x (# tracks/surface) x (# surfaces/platter) x (# platters/disk)
정보가 이렇게 주어진다면,
Capacity = 512 x 300 x 20,000 x 2 x 5 = 30,720,000,000 = 30.72GB이다.
In-place writing
(overwrite) : 어느 한 트랙의 sector에 데이터가 있더라도 다른 데이터를 덮어쓸 수 있다.Direct access
: 원하는 데이터의 위치(Cylinder 번호, Surface번호, sector번호)만 알면 바로 접근할 수 있다. (마그네틱 테이프 같은 경우 sequential access만 가능하다).flash memory chips
과 FTL
로 구성됨FTL
(Flash Translation Layer) : HDD의 disk controller의 역할로, host에서 데이터 접근을 요청하면 flash memory칩으로 요청을 전달해 실제로 해당 데이터가 접근되게 만들어주는 일을 한다.Head나 arm이 움직이는 HDD와는 다르게, 움직이지 않는다. 구조는 다음과 같이 생겼다.
Flash memory는 여러개의 block, 각 block은 여러개의 page로 구성된다.
여기서 사용하는 block, page는 메모리관리할때의 page,block과 다름.
Host에서 데이터를 읽으려는 '6번 disk block을 읽어라'와 같은 요청이 들어오게 되면, FTL
에서는 해당 block이 flash memory에 어느 block, 어느 page에 있는지 찾아서 읽어주게 된다.
page
이다In-place write
불가능하기 때문에 데이터를 쓰려면 page가 들어있는 block 전체가 지워진 후에 가능하다.예를들어 /a/r의 몇 바이트를 읽어야한다고 요청이 내려오면 kernel은 kernel view에서 사용할 수 있는 block num으로 변환하고, HDD controller나 FTL가 device view에서 사용할 수 있도록 변환하는 과정을 거친다.
Definition
Types of files
File attributes(metadata) <- FCB
에 저장된다.(unix/linux의 경우Inode
에 저장된다.)
File operations <- system call로 이뤄진다.
open-file table
) 에 copy해서 상주시킴Open-file table
Per-process table
,System-wide table
두개로 2-level로 구성돼있다.ELF
(executable and linking format)로, 기본적으로 어떤 architecture에서도 실행할수있도록 해준다. (MS만 다른 PE format사용)하나의 시스템에 하나의 디렉토리만 있다. naming, protection, management 하는데 문제가 있지만 관리하기엔 편하다.
유저별로 디렉토리를 나눠준다.MFD가 root directory 역할을 하지만, naming문제, 공유파일문제 등의 문제가 아직 남아있다.
tree구조로 사용자가 얼마든지 sub directory를 만들 수 있다.
방향성이 없는 graph구조로 두 개의 파일을 연결해서 하나로 만드는Link
명령어로 인해서 생긴다. (MS windows의 바로가기) ln을 통해서 Inode를 공유하게 하므로 같은 파일이 생성된다.x1, x2두개의 파일이 ln
명령어를 통해 생성된 같은 파일일 경우 사실 필기한 검은색 선처럼 표시될 수 있고, acyclic graph가 된다.
cycle이 존재하는 graph다.