Mechanics of Disks
Disk는 한 개 또는 여러 개의 platter로 구성되어있다.
platter는 윗면과 아랫면이 있다.
디스크는 track으로 구성됨. track은 하나의 Platter에 원으로 고정되어있다.
모든 면에 대해서 같은 반지름에 떨어져있는 친구들일 cylinder
track은 sector로 나뉘어져있다. 각 절편은 gaps로 나뉘어져있다.
섹터는 나눠지지 않는 unit이다.
block은 디스크랑 메인 메모리 사이에 전송되는 데이터의 단위이다.
block은 하나 이상의 sector로 구성가능하다.
eight platter -> 16 surfaces
2^16 = 65,536 tracks per surfaces
2^8 = 256 -> sectors per track
4096 -> bytes per sector
total storage = 모두 곱한 값
1block이 16MB라면 32 blocks on track
C
복사
Disk Access time
1.
seek time: disk controller가 헤드를 원하는 위치까지 옮기는 시간
2.
rotational latency: block의 첫 섹터로 이동시키는데 까지 걸리는 시간
3.
transfer time: 실제 데이터 전송 시간
disk rpm => 7200, 1 rotation => 8.33 millsec
1 ms for start and stop + 1ms / 4000 cylinders
-> 65536 tracks -> 65536/4000 + 2 = 17.38 ms
C
복사
16,384 bytes block을 옮긴다고 하자.
•
minimum: transfer time
4096 bytes per sector
block : 4 sector
이걸 읽으려면 4개의 sector와 3개의 gap을 거쳐야함.
전체 gap이 10프로이고 sector가 90프로이다.
따라서 이거 읽어들일 때의 각도 = (gap의 각도) + (sector의 각도)
gap은 전체의 10프로, sector는 90프로
transfer time ⇒ gap의 각도 + sector의 각도 x disk rpm = 0.13 ms
•
maximum
17.38(full seek time) + 8.33(하나 바퀴 도는 시간) + 0.13 (전송 속도)
•
average
◦
average seek time : half
◦
transfer time: 그대로
◦
rotational latency : half
Speed up
1.
organize data by clinder
a.
실린더에 따라서 데이터를 저장하자
1024 block을 옮긴다고 생각해보자.
1024 block은 완벽하게 하나의 cylinder와 같다. (why?)
따라서 계산할 때, 1번의 average seek time + 16번의 rotation time
C
복사
2.
use multiple disks
a.
큰 하나에 저장하기보다 작은 곳에 나눠서 저장하자. 작은 헤드가 독립적으로 움직일 수 있다.
한 track에 64block이 있는듯?
R에서 256block을 찾고 싶을 때, 4개에 동시에 접근하니까, average seek time + (disk 수) x 몇개의 track을 돌아야하느냐
C
복사
3.
mirror disk
a.
여러 데이터를 다른 디스크에 저장하기. 한 번에 여러 개의 block을 접근할 수 있다.
b.
교과서
i.
같은 내용을 담고 있으므로 N개의 mirroring이 있으면, N만큼 더 빨라진다.
ii.
또는 더 빨라질 수도 있는데, controller가 현명하게 찾고 싶은 track 가장 가까이에 있는 header를 선택한다면 그럴 수 있다.
iii.
write는 더 빨라지지 않는다.
4.
disk scheduling
a.
elevator algorithm
i.
현재 시간에서 outward로 갈지 inward로 갈지 일단 정하고, 다음 타겟으로 움직이는 시간이랑 읽어들이는 시간을 일단 다 계산한다.
ii.
다 계산했을 때, 예정된 requet가 들어왔는지 확인하고 기존에 가던 방향으로 갈 수 있는게 있는지 확인해서 움직이고, 아니면 반대방향으로 돌아서 다시 움직인다.
5.
double buffering
a.
block 요청을 예측해서 메모리에 미리 담아두는 것
b.
P≥R 인 경우 single buffering: N(R+P), double buffering: R + NP
Disk failures
•
Intermittent failure
◦
섹터를 읽거나 쓰는게 unsuccessful한데, 반복적으로 하면 성공한다
◦
checkSum을 사용해서 검사하기
•
media decay and write failure
◦
sector에 쓰려고 했으나, 성공적으로 안 써지거나 이전에 쓰여진 값을 읽지 못한다.
•
disk crash
◦
모든 디스크가 읽어지지 않는 경우