파일처리

[파일처리] 하드디스크의 구조 - 디스크 액세스 비용

서노리 2022. 4. 13. 01:28
반응형

하드디스크에 데이터를 읽거나 쓰는 행위를 디스크 액세스(Disk Access)라고 한다.

디스크 액세스 비용

  • Seek time
    - Arm이 데이터가 있는 실린더로 이동하는 시간

  • Rotational Delay
    - Head 밑에 데이터가 있는 섹터가 위치하도록 Platter가 회전하는 시간

  • Transfer time
    - 데이터의 총 길이만큼 Platter가 회전하면서 데이터를 읽고 쓰는 시간
    - Transfer time = (총 전송 데이터 크기) / (한 트랙의 크기) * rotation time


 

디스크 액세스 비용 = Seek time + Rotational Delay + Transfer time

 

디스크 액세스 시간 계산

아래와 같은 스펙을 가진 하드디스크가 있을 때 256바이트 짜리 레코드 34000개가 들어있는 파일 8704KB 를 읽는데 시간이 얼마나 걸리는가?

Average seek time = 8ms
Spindle speed = 10000rpm
Average rotational delay = 3ms
Transfer one track = 6ms
Bytes per sector = 512
Sectors per track = 170
1 cluster = 8 sectors

 

먼저 데이터를 저장하는데 필요한 트랙의 수를 알아야 한다.

트랙의 수 = (전체 데이터 크기) / (트랙의 크기)
          = 8704000 / (512 * 170)
          = 8704000 / 87040
          = 100

 

최소 100개의 트랙이 데이터를 저장하는데 필요하다.

 

1. 순차 탐색(Sequential Search)

순차 탐색 시간 = (트랙의 수) * (트랙 당 시간)
        = 100 * (Seek time + Rotational time + Transfer time for one track)
        = 100 * (8 + 3 + Transfer time for one track)
        = 100 * (8 + 3 + 6)
        = 100 * 17
        = 1700 ms
        = 1.7 초

 

2. 랜덤 액세스(Random Access)

랜덤 탐색 시간 = (클러스터 당 시간) * (데이터 조회 횟수)
        = 11.28 * 34000
        = 383520 ms
        = 383.520 초

(클러스터 당 시간) = Seek time + Rotational time + Transfer time for one cluster
        = 8 + 3 + 0.28
        = 11.28

(Transfer time for one cluster) = (클러스터 크기) / (트랙 크기) * Rotation time( = Transfer time for one track)
        = (512 * 8) / (512 * 170) * 6ms
        = 0.28 ms

 

※ 순차 탐색과 랜덤 액세스 비용이 차이나는 이유

OS와 디스크 사이에는 클러스터 단위로 데이터를 주고받는다. 따라서 순차 탐색의 경우에는 데이터가 연속적으로 존재하므로 클러스터 안에 존재하는 데이터를 한 번의 I/O로 처리할 수 있지만 랜덤 액세스의 경우에는 데이터가 서로 다른 클러스터에 있을 경우 최악의 경우 데이터의 개수만큼의 I/O가 발생할 수 있다.

 

데이터 읽기 / 쓰기의 과정

1. 사용자 프로그램에서 read() / write()를 호출하면 OS는 파일 매니저에게 명령을 전달한다.

2. 파일매니저는 logical 파일에 대응하는 물리적 파일의 상태, 권한 등을 검사하여 문제가 없다면 다음의 과정을 수행한다.

3. 파일매니저는 램의 I/O 버퍼에 해당 데이터가 있는지 찾아보고 있다면 바로 리턴, 없다면 다음의 과정을 수행한다.

4. 파일매니저는 FAT를 탐색하며 사용자가 원하는 레코드가 몇 번 클러스터에 저장되어 있는지 찾고 해당 클러스터를 I/O 버퍼로 가져온다.

5. 파일 매니저는 I/O 프로세서에게 지정한 클러스터를 읽거나 쓰라고 명령한다.

6. I/O 프로세서는 파일매니저로부터 클러스터에 대한 정보와 명령을 받아 디스크 컨트롤러에게 전달한다.

7. 디스크 컨트롤러는 데이터를 하드디스크에 직접 읽거나 쓴다. (seek, rotation, transfer)

 


 

반응형