3. 디스크

김동웅·2021년 9월 14일
0

File_structrue In C,C++

목록 보기
3/11

디스크의 구성

❗❗ - 필요한 공간과 용량 측정

디스크 용량 = 실린더 수 * ⭕ 실린더 용량

⭕실린더 용량 = 실린더당 트랙 수 * ✅트랙 용량

✅트랙 용량 = 트랙당 섹터수 * 섹터당 바이트 수

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개 필요하다.

- 섹터로 구성된 트랙

  • 클러스터 : 고정된 몇개의 연속하는 섹터의 집합
    파일 관리기 : 파일의 논리적 부분을 물리적 위치로 대응사카눈 욕할 ( 파일을 일련의 클러스터들로 간주)
  • 단편화
    : 섹터 내에 레코드를 구성하는 두가지 방식
  1. Store only one record per sector
    ( 1섹터 1레코드 저장)
    • 장점 : 모든레코드가 단지 한섹터에 접근하여 검색 가능
      (빠르다)
    • 단점 : 각 섹터의 사용되지 않는 부분이 증가, 내부단편화
      (낭비되는 공간존재)
  2. 두개의 섹터에 한개의 레코드를 겹쳐서 저장
    • 장점 : 내부 단편화로인한 공간낭비 x
    • 단점 : 둘 이상의 섹터에 접근해야 검색가능

- 블록으로 구성된 트랙

  • 사용자가 정할 수 있는 블록으로 구성

  • 블러킹 계수
    (데이터 블록에 들어있는 레코드의 개수) : 정수

  • 블럭 구성
    1.특별한 정보를 포함하는 데이터 서브 블럭(meta data)

  1. 계수 서브블럭 : 데이터 블럭 내에 있는 바이트 수
  • 섹터 대신 블록을 사용
    - 장점 : 융통성
    • 단점 : 프로그래머/시스템이 데이터 구성에 부가적 작업 필요

- 디스크 정보 오버헤드

  1. 블록과 섹터 모두는 디스크 정보 오버헤드 공간 요구
    오버헤드 는 사전 포매팅에서 저장되는 정보

ex)

  • 트랙당 20,000바이트
  • 서브블럭과 블럭간 갭에 사용되는 공간이 블록마다 각각 300바이트(오버헤드)
  • 디스크에 100바이트의 레코드로 이루어진 파일을 저장하려고한다.
  • 블럭킹 계수가 10, 60일때 트랙 마다 몇개의 레코드가 저장될까?
  1. 블럭킹 계수 10일때
    ( 데이터블럭 = 블럭킹 계수 * 파일용량 = 10 X 100바이트 = 1000바이트 )

    트랙당 블록의 수 = 20000/(1000+300) = 15.83 = 15개
    
    트랙당 15개의 블록, 즉 15*10개의 레코드 저장가능
  2. 블럭킹 계수 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)

에서 하나의 섹터를 전송하는 시간은?
전송시간 : (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

디스크로 인한 병목현상 해결방안

  1. 스트리핑 : 파일을 여러조각으로 나누어 동시에 분리된 디스크 드라이브에 보냄
  1. RAID : 8개의 RAID드라이브 제어기는 1개블록을 8개로나눔,
    각 기록은 8번동안 각 드라이브에 기록되고, 판독명령도 동일
  2. RAM 디스크 : 물리적인 디스크보다 훨씬 빨리 접근
  3. 디스크 캐쉬 : 디스크로부터 페이지를 담도록 구성된 RAM의 일부분

0개의 댓글

관련 채용 정보