하드디스크에 데이터를 읽거나 쓰는 행위를 디스크 액세스(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)
'파일처리' 카테고리의 다른 글
[파일처리] Record Structure 보충 / 활용 (0) | 2022.04.24 |
---|---|
[파일처리] 파일 구조 - Field Structure / Record Structure (0) | 2022.04.24 |
[파일처리] SSD - 플래시 메모리(Flash memory) (0) | 2022.04.13 |
[파일처리] 하드디스크(Hard Disk)의 구조 (0) | 2022.04.11 |
[파일처리] 파일처리 개요 (0) | 2022.04.11 |