9장 디스크 관리 - 운영체제와 정보기술의 원리

이태혁·2020년 11월 1일
0
post-custom-banner

디스크(2차 기억장치, 외부 기억장치, 보조기억장치) 또한 스케쥴링이 필요하다고 합니다.
CPU는 시분할 시스템이기 때문에 현재 어떤 프로세스(혹은 커널)이 CPU 수행권한을 획득하기 위해서 스케줄링이 필요했고
메모리는 공간을 효율적으로 사용하기 위해서 실행에 꼭 필요한 프로세스가 정해진 구간만을 나눠갖았습니다.
디스크는 상대적으로 용량이 크기 때문에 공간을 분할할 필요는 없지만 빨리 데이터를 불러오기 위한 전략이 필요합니다. 이를 디스크 스케줄링이라고 합니다.

디스크의 구조

디스크 = 여러개의 원판
원판 = 여러개의 트랙
트랙 = 여러개의 섹터
실린더 = 서로 다른 원판들에서 같은 위치에 있는 트랙들의 모임

  • 논리 블록(Logical Block): 디스크 외부에서 디스크를 불러들이는 단위(1차원 배열처럼 취급)
    논리 블록은 섹터와 1:1 대응된다.
    섹터 0 : 최외곽 실린더의 첫번째 트렉의 첫 섹터

디스크 스케줄링

  • 접근시간(Access Time) = 탐색시간 + 회전지연시간 + 전송시간

  • 탐색시간(Seek Time)
    헤드가 데이터가 있는 실린더의 위치까지 도달하는 시간

  • 회전지연시간(Rotational Latency)
    헤드가 실린더의 있는 정확한 섹터의 도달하기 위해서 원판이 회전하는 시간

  • 전송시간(Transfer Time)
    데이터를 읽고 쓰는 데 사용되는 실제 시간

  • 접근시간을 최소화 해야되는데 회전지연시간과 전송시간은 걸리는 시간이 미미한데다가 운영체제가 통제하기도 힘듬 => 탐색시간을 줄이자 => 디스크 헤드의 이동시간을 줄이자

디스크 스케줄링 방식

1 FCFS(First Come First Served) 스케줄링

  • 택배를 배달하는데 주소별로 그룹화 하지 않고 먼저 들어온 순서대로 방문하는 방식 -> 매우 비효율
  • 위그림에서 움직인 거리 = 644

2. SSTF(Shortest Seek Time First) 스케줄링

  • 요청 순서를 파악해서 현재 헤드에서 제일 가까운 위치부터 방문하는 방식
  • 단점: 기아현상(Starvation) 발생 = 제일 멀리 있는곳은 영원히 방문 안할 수도 있음
  • 위그림에서 움직인 거리 = 236

3. Scan 알고리즘

  • 버스 운행처럼 좌우 끝을 왔다갔다 하면서 만나는 헤드가 만나는 섹터를 처리하는 방식
  • 단점: 양끝에 위치하는 경우 가운데 위치하는 것보다 평균 접촉 횟수가 절반이다.

4. C-Scan(Circular-Scan) 알고리즘

  • Scan 알고리즘의 단점을 보완 -> 한쪽으로 갈때는 만나면서 다 처리하지만 반대쪽으로 갈때는 하나도 처리하지 않음
  • 장점: 양끝이나 가운데나 평균 처리 횟수가 같음
  • 단점: 반대쪽으로 갈때 하나도 처리하지 않기때문에 Scan 알고리즘에 비해 조금의 시간 소모가 발생함

5. Look, C-Look 알고리즘

  • Look 알고리즘은 Scan 알고리즘의 보완
    가던 방향에서 더이상 처리 해야할 요청이 없으면 방향을 바꾸는 알고리즘
  • C-Look은 C-scan과 Look을 합친 알고리즘

다중 디스크 환경에서의 스케줄링

  • 서버와 같이 신뢰성이 중요한 곳에서는 여러개의 디스크를 써서 데이터를 중복 저장함(백업)
  • 같은 데이터를 갖고 있는 여러개의 디스크 중에서 어떤 디스크에서 접근할것인지 스케줄링할 필요가 있음
    • 탐색시간이 목표
      헤드로부터 데이터까지의 거리가 제일 가까운 디스크를 찾아서 시간을 줄임
    • 부하균형(Load Balancing)이 목표
      여러 디스크를 골고루 사용해서 일부 디스크가 과부하 상태에 걸리지 않도록 분배
    • 전력소모가 목표
      여러개의 디스크를 동시에 돌리는 것은 전력의 큰 소모가 발생하므로 적당한 선을 정해서 최소한의 디스크만 돌리고 나머지는 비활성화 상태에 둠

디스크의 저전력 관리

디스크의 상태

  1. 활동(Active): 헤드가 데이터를 읽거나 쓰고 있는 상태
  2. 공회전(Idle): 디스크가 회전중 but 읽거나 쓰지는 않는 상태
  3. 준비(Standby): 디스크 회전 X, 인터페이스 활성화
  4. 휴면(Sleep): 디스크 회전 X, 인터페이스 비활성화
  • 비활성화(준비 + 휴면) 상태에서 활성화(활동 + 공회전) 상태로 가는데 시간과 전력이 많이 소요돼서 비활성화 상태로 자주 보낸다고 전력이 많이 아껴지는게 아님
    그래서 비활성화로 보내는 여러가지 방법이 연구됨
profile
back-end, cloud, docker, web의 관심이 있는 예비개발자입니다.
post-custom-banner

0개의 댓글