디스크의 구성
![](https://velog.velcdn.com/images%2Fkdo6301%2Fpost%2F0356eb4c-0340-4c6d-b31e-b80a20ad696a%2Fimage.png)
❗❗ - 필요한 공간과 용량 측정
디스크 용량 = 실린더 수 * ⭕ 실린더 용량
⭕실린더 용량 = 실린더당 트랙 수 * ✅트랙 용량
✅트랙 용량 = 트랙당 섹터수 * 섹터당 바이트 수
EX)
섹터당 바이트 수 = 512
트랙당 섹터 수 = 63
실린더당 트랙수 = 16
실린더수 = 4096
디스크용량 = 4096 * (16 * (63 * 512)) = 2,113,929,216 = 2.1G
- 2.1G 디스크에 "50,000개의 고정길이 레코드(256 바이트)" 저장할 때 실린더가 얼마나 필요할까?
한 섹터당 512 바이트 저장하므로 2레코드 저장가능
1레코드 저장하기 위해 필요한 섹터는 50000개/2인 25000섹터가 필요하다.
- 한 실린더는 트랙수 16 * 트랙당 섹터수 63 =1008 섹터를 저장할 수 있다.
- 레코드 저장하기 위해 필요한 실린더 : 25000/1008 = 24.8개 필요하다.
- 섹터로 구성된 트랙
- 클러스터 : 고정된 몇개의 연속하는 섹터의 집합
파일 관리기 : 파일의 논리적 부분을 물리적 위치로 대응사카눈 욕할 ( 파일을 일련의 클러스터들로 간주)
- 단편화
: 섹터 내에 레코드를 구성하는 두가지 방식
- Store only one record per sector
( 1섹터 1레코드 저장)
- 장점 : 모든레코드가 단지 한섹터에 접근하여 검색 가능
(빠르다)
- 단점 : 각 섹터의 사용되지 않는 부분이 증가, 내부단편화
(낭비되는 공간존재)
- 두개의 섹터에 한개의 레코드를 겹쳐서 저장
- 장점 : 내부 단편화로인한 공간낭비 x
- 단점 : 둘 이상의 섹터에 접근해야 검색가능
![](https://velog.velcdn.com/images%2Fkdo6301%2Fpost%2F3426a629-e74c-4790-b0a5-3110b907fa20%2Fimage.png)
- 블록으로 구성된 트랙
- 계수 서브블럭 : 데이터 블럭 내에 있는 바이트 수
- 섹터 대신 블록을 사용
- 장점 : 융통성
- 단점 : 프로그래머/시스템이 데이터 구성에 부가적 작업 필요
- 디스크 정보 오버헤드
- 블록과 섹터 모두는 디스크 정보 오버헤드 공간 요구
오버헤드 는 사전 포매팅에서 저장되는 정보
ex)
- 트랙당 20,000바이트
- 서브블럭과 블럭간 갭에 사용되는 공간이 블록마다 각각 300바이트(오버헤드)
- 디스크에 100바이트의 레코드로 이루어진 파일을 저장하려고한다.
- 블럭킹 계수가 10, 60일때 트랙 마다 몇개의 레코드가 저장될까?
-
블럭킹 계수 10일때
( 데이터블럭 = 블럭킹 계수 * 파일용량 = 10 X 100바이트 = 1000바이트 )
트랙당 블록의 수 = 20000/(1000+300) = 15.83 = 15개
트랙당 15개의 블록, 즉 15*10개의 레코드 저장가능
-
블럭킹 계수 60일때
( 데이터블럭 = 60*100 = 6000)
트랙당 블록수 = 20000/(6000+300) = 3
트랙당 3개의 블록, 즉 180개의 레코드 저장가능
디스크 접근에 필요한 비용
전체시간 = 1.탐색시간 + 2.회전지연 + 3.전송시간
1. 탐색시간
- 암(arm)을 적절한 실린더로 옮기는 데 필요한 시간.
- 특정 파일연산에 요구되는 평균탐색시간을 사용
평균 탐색시간 = 8ms 로 정해짐.
2. 회전지연
- 회전 지연은 판독/기록헤드에 원하는 섹터가 놓이도록, 디스크를 회전하는데 걸리는 시간
- 하드디스크
- 10,000rmp 의 속도로 회전 (10,000/60 = 167 회전 per second)
- 1회전 소요시간 : 1/167 = 6msec
- 평균적으로 회전 지연은 회전의 절반의 3mesc정도
3. 전송시간
- 원하는 데이터가 판독/기록 헤드아래 있을때, 전송가능
- 전송시간 : (전송될 바이트 수)/(한트랙에 있는 바이트 수) * 회전시간
ex) Seagate Cheetat(10,000rpm, 트랙당 170섹터, 섹터당 바이트 수=512)
![](https://velog.velcdn.com/images%2Fkdo6301%2Fpost%2Fed9e3ce3-a818-45b1-af2d-c471edd05e3c%2Fimage.png)
에서 하나의 섹터를 전송하는 시간은?
전송시간 : (1512)/(170512) * 6ms = 0.035ms
-
전체시간 계산
: 34,000record(256byte)로 구성된 파일 읽음(8,704,000byte)
-
4096바이트 클러스터(16개의 레코드 저장) 사용한다고 가정
-
한 섹터는 512바이트므로 (8개의 섹터) 사용
-
한 트랙은 340개 레코드 저장. (트랙당 170 섹터이고, 섹터당 512바이트므로 레코드가 한 섹터에 2개들어감)
(1) 순차적으로 접근
- 전체 파일을 위해, 34000/340 = 100개의 트랙 필요
- 평균탐색시간 : 8ms, 회전지연시간 : 3ms
- 트랙당 전송시간 : 6ms
- 디스크 접근시간 : 8+6+3= 17ms
- 레코드를 읽기 위한 총 소요시간 : 100*17 = 1700ms= 1.7s
(2) 임의적으로 접근
- 평균 탐색시간 : 8ms, 회전 지연시간 : 3ms
- 클러스터당 전송시간 : (8512)/(170512) * 6ms = 0.28ms
- 디스크접근시간 = 8+3+0.28 =11.28ms
- 레코드를 읽기위한 총 소요 시간 = 34,000 * 11.28 ms = 9.250ms = 9.25s
디스크로 인한 병목현상 해결방안
- 스트리핑 : 파일을 여러조각으로 나누어 동시에 분리된 디스크 드라이브에 보냄
- RAID : 8개의 RAID드라이브 제어기는 1개블록을 8개로나눔,
각 기록은 8번동안 각 드라이브에 기록되고, 판독명령도 동일
- RAM 디스크 : 물리적인 디스크보다 훨씬 빨리 접근
- 디스크 캐쉬 : 디스크로부터 페이지를 담도록 구성된 RAM의 일부분