-
운영체제(OS) - 8. 대용량 저장장치(디스크관리)Computer Basis/OS 2020. 11. 16. 00:31
1. 디스크의 구조
디스크는 논리블록(logical block)단위로 데이터를 저장하며,
입출력 역시 논리블록 단위로 전송한다.
논리블록에 접근하기 위해서는
블록의 인덱스 번호를 디스크에 전달해야한다.
디스크 컨트롤러는 인덱스를 가지고
해당 논리블록 물리적위치에 접근하여 입출력 작업을 수행한다.
논리블록의 물리적 위치를 섹터(sector)라 칭하며,
1:1 매핑관계이다.
디스크는 다수의 마그네틱 원판으로 구성되며
원판은 다수의 트랙(track), 트랙은 다수의 섹터(sector)로 구성된다.
상대적 위치가 동일한 트랙들의 집합을
실린더(cylinder)라 칭한다.
섹터 0은 최외곽 실린더의
1번째 트랙에 있는 1번째 섹터이다.
디스크에 데이터 읽기/쓰기를 위해
암(arm)이 해당섹터가 위치한 실린더로 이동한 후
원판이 회전하여 지정된 섹터위치에 도달한다.
출처 : http://www.cs.jhu.edu/~yairamir/cs418/os8/sld019.htm
2. 디스크의 스케줄링
디스크의 접근시간
(=탐색시간+회전지연시간+전송시간)
# Positioning time
(=random-access time)
(=seek time+rotational latency)
# 탐색시간
(seek time)
디스크 헤드를
해당 실린더로 이동시키는데 걸리는 시간
# 회전지연시간
(rotational latency)
해당 섹터에
헤드가 도달하기 까지 걸리는시간
# 전송시간
(transfer time)
해당 섹터 도달 후,
데이터를 섹터에 읽고 쓰는데 소요되는 시간
# 디스크 스케줄링
(=입출력 효율 최대화, 디스크 입출력 접근시간 최소화)
회전지연시간과 전송시간은
상대적으로 작은수치
(+ OS가 컨트롤하기 힘든부분)
즉, 탐색시간을 줄이기 위해
헤드의 움직임(이동거리)을
최소화하는 것이 디스크 스케줄링
다수의 섹터들에 대한 입출력 요청을
어떠한 순서로 처리할 것인지
결정하는 메커니즘
# FCFS
(First Come, First Served)
그냥 딱봐도 비효율적.
설명 생략
# SSTF
(Shortest Seek Time First)
헤드의 현재위치로부터
가까운 위치부터 처리
Starvation 발생 가능
# SCAN 알고리즘
헤드가
안쪽 끝과 바깥쪽 끝을 오가며
그 경로에 존재하는 요청을 처리하는 방식
엘리베이터 운행과 같은방식으로,
Elevator Schelduling Algorithm 이라고도 부른다.
양쪽 끝 실린더는
가운데 구역 실린더에 비해
접근 주기가 1/2 이므로 아직 문제점이 남아있음
# C-SCAN 알고리즘
(Circular-SCAN)
SCAN과 같은 방식이나,
출발점 -> 도착점 이동후,
입출력 요청을 처리하지않고
다시 출발점으로 복귀하는 방식이다.
SCAN의 문제점 해결가능
(어느 위치여도 균일한 탐색시간)
But, 헤드의 이동거리는
SCAN에 비해 조금 길어진다
# LOOK 알고리즘
SCAN과 같은 방식이나,
한쪽 방향으로 이동하다가
그 방향에 더 이상 대기중인 요청이 없으면
헤드의 이동방향을 즉시 반대로 바꾸는 방식이다.
# C-LOOK 알고리즘
LOOK과 유사하나,
한쪽 방향으로 이동할때만 요청을 처리
C-SCAN과는 다르게
항상 0번 실린더로 돌아가지 않고,
요청이 존재하는 가장 낮은 실린더 번호까지만 이동하여
서비스 진행
SCAN, C-SCAN, LOOK, C-LOOK 이
FCFS나 SSTF에 비해 더 효율적인 것으로 알려져 있다.
3. 다중 디스크 환경에서의 스케줄링
# 다중 디스크 환경
시스템의 성능과 신뢰성을 향상시키기 위해
여러 디스크에 동일한 정보를 중복 저장하는 방식
(에러에도 지속적인 서비스 가능)
# 다중 디스크 스케줄링
같은 데이터를 가진 여러개의 디스크 중
어느 디스크에서 요청을 처리할지 결정하는 매커니즘
보통 많은 요청을 동시에 처리할 수 있는
확장성(scalability) 있는 서비스가 목표이므로, 모든 디스크에
요청이 골고루 분배되도록 부하균형(load balancing)을 이루도록 해야한다.
전력절감 측면에서는,
부하편향 기법을 고려할 필요가 있다.
(사용자가 많지 않을 경우)
4. 디스크의 저전력 관리
# 전력소모를 기준으로 나눈
디스크의 상태
1. 활동(active) : 디스크 회전o, 데이터 입출력 o
2. 공회전(idle) : 디스크 회전o, 데이터 입출력 x
3. 준비(standby) : 디스크 회전x, 인터페이스 활성화 o
4. 휴면(sleep) : 디스크 회전x, 인터페이스 활성화 x
# 비활성화 기법
디스크 회전 x 인 상태를 비활성 상태라 하며,
요청이 없을 경우 디스크를 정지시켜 비활성 상태로 두는 것이
전력절감에 효과적이다.
그러나, 비활성상태에서 다시 활성상태로 돌아가려면
전력과 시간이 더 소요 되기에, 후속요청까지의 시간간격이
일정 시간이상일 경우에만, 회전을 정지시키는 것이 효과적일 것이다.
비활성화 시점을 결정하는 방법
1. 시간기반(timeout based) : 일정 시간이상 디스크가 공회전 상태
2. 예측기반(prediction based) : 과거 요청으로 다음 공회전 구간 예측
3. 확률기반(stochastic based) : 디바이스 상태변경 간격을 확률분포모델을 통해 예측
# 회전속도(RPM) 조절 기법
멀티미디어와 같은 순차적 데이터 접근으로
주기성과 규칙성을 띄는 경우, 예측이 비교적 정확하게 가능하여
회전속도를 조절하여 전력절감을 얻을 수 있다.
# 디스크 데이터 배치 기법
빈 공간 상태가 많은 디스크에 중복데이터를 복제하여
빠른 응답시간과 전력소모량 절감을 얻는 FS2 파일시스템이 있음
나머지 복제본엔 주소테이블에 invalidation 연산만을 수행하여
쓰기연산의 효율성도 높였다. (2005년)
# 버퍼캐싱 및 사전인출 기법
디스크가 저전력 모드일때,
입출력처리를 최대한 지연시켰다가
정상 전력모드로 돌아왔을때,
사전인출(prefetching)을 공격적으로 함으로써
상태변화횟수를 최소화하여 전력소모를 줄이는 기법
# 쓰기전략을 통한 저전력 기법
(writing strategy)
비활성상태에서 쓰기를 하지않고,
활성상태로 돌아왔을때 쓰는 방식
(write-back with eager updates)
728x90'Computer Basis > OS' 카테고리의 다른 글
운영체제(OS) - 9. Distributed System (분산시스템) (0) 2020.12.07 운영체제(OS) - 7. 가상메모리 (0) 2020.11.14 운영체제(OS) 기본지식 - 4. DMA(Direct Memory Access) 와 PIO(Program Input/Output) (0) 2020.10.11 운영체제(OS) 기본지식 - 5. System Generation(SYSGEN) & System Boot (0) 2020.10.11 운영체제(OS) 기본지식 - 3. 주소체계 32BIT 컴퓨터 & 64BIT 컴퓨터 (0) 2020.10.09