입출력 시스템과 디스크 관리

Previous Next

들어가기 전에

computer_system



여기서 잠깐!

Device driver : 각 장치별 처리 루틴 (소프트웨어)

Device Controller : 각 장치를 제어하는 일종의 작은 CPU (하드웨어)



입출력 시스템

컴퓨터는 필수 장치(CPU, 메모리)와 주변장치(입출력장치, 저장장치)로 구성되고,

주변장치는 데이터 전송 속도에 따라 저속 주변장치고속 주변장치로 구분된다.



각 장치는 메인 보드에 있는 버스로 연결되고, 버스는 여러 개의 버스를 묶어서 사용하는데 그 통로를 채널이라고 한다.

여러 채널을 효율적으로 사용하기 위해 전송 속도가 비슷한 장치끼리 묶어서 채널을 할당한다.


입출력 버스의 구조

폴링 방식(초기 구조)

img

초기에는 모든 장치가 하나의 버스로 연결되고, CPU가 작업을 진행하다가 입출력 명령을 만나면 직접 입출력 장치에서 데이터를 가져왔는데 이를 폴링(polling) 방식이라고 한다.

  • 폴링 방식: 하드웨어 상태를 수시로 체크하여 명령을 받을 수 있는지 확인

  • 단점 : 주변 장치는 CPU와 메모리보다 매우 느리기 때문에 폴링 방식을 사용하면 CPU 대기 시간이 길어져 작업의 속도가 매우 느려진다.


입출력 제어기를 사용한 구조 (Device Controller)

IO

모든 입출력을 입출력 제어기(I/O Controller)에 맡기는 구조

  • 입출력 제어기는 2개의 채널로 나뉜다.
    • 메인버스는 고속으로 작동하는 CPU와 메모리를,
    • 입출력 버스는 주변장치가 사용한다.



입출력 처리 방식 (빠른 순서순)

채널에 의한 I/O


버퍼링

buffer


스풀링 (Spooling)


직접 메모리 접근 (DMA)에 의한 I/O

IO2

[ 실행 순서 ]


인터럽트 처리에 의한 I/O


인터럽트란?


프로그램에 의한 I/O




디스크 관리


하드 디스크 구조

buffer

하드디스크는 스핀들(spindle)이라는 원통 축에 여러 개의 플래터(platter)가 달려있는 구조이다.


여기서 잠깐!

디스크의 내부, 물리적으로는 Sector 가 가장 작은 단위지만,

디스크의 외부, 논리적으로는 Block 이 가장 작은 단위로 사용된다.



디스크의 데이터 전송 시간
  • 각속도 일정 방식의 회전 : 일정한 시간 동안 이동한 각도가 같다.

img

​ 하드디스크의 플래터는 항상 일정한 속도로 회전하여 바깥쪽 트랙의 속도가 안쪽 트랙의 속도보다 훨씬 빠르다.


  • 데이터 전송 시간 = 탐색 시간 + 회전 지연 시간 + 전송 시간

img

  • 탐색 시간: 헤드가 특정 섹터의 트랙까지 이동하는데 걸리는 시간
  • 회전 지연 시간: 플래터가 회전하여 원하는 섹터를 만날 때 까지 걸리는 시간
  • 전송 시간: 헤드가 섹터에 있는 데이터를 읽어 전송하는 시간




Disk Management


Physical Formatting (Low-level)


Partitioning


Logical Formatting


Booting




디스크 스케줄링

img


디스크 스케줄링 종류

FCFS 디스크 스케줄링

  • 가장 단순한 디스크 스케줄링 방식으로, 요청이 들어온 트랙 순서대로 서비스

  • 15 -> 8 -> 17 -> 11 -> 3 -> 23 -> 19 -> 14 -> 20 (이동 거리 65)


SSTF(Shortest Seek Time First) 디스크 스케줄링

  • 현재 헤드가 있는 위치에서 가장 가까운 트랙부터 서비스
  • 만약 다음에 서비스할 두 트랙의 거리가 같다면 먼저 요청받는 트랙을 서비스

  • 15 -> 14 -> 17 -> 19 -> 20 -> 23 -> 11 -> 8 -> 5 (이동 거리 31)
  • 효율성은 좋지만 아사 현상을 일으킬 수 있음. 헤드가 중간에 위치하면 가장 안쪽이나 바깥쪽에 갈 확률이 적어짐


블록 SSTF 스케줄링
  • 블록 단위로 트랙을 관리하여 멀리 있는 트랙도 몇 번만 양보하면 서비스 받을 수 있음(에이징 적용)
  • 공평성 위배를 어느 정도 해결한 방법

  • 15 -> 17 -> 8 -> 11 -> 3 -> 23 -> 20 -> 19 -> 15 (이동 거리 51)
  • FCFS 보다 성능이 좋지 않음


SCAN 디스크 스케줄링

  • disk arm이 디스크 한 쪽 끝에서 다른 쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리하는 방식
  • 가장 많이 사용되는 기법 중 하나

  • 15 -> 14 -> 11 -> 8 -> 3 -> 0 -> 17 -> 19 -> 20 -> 23 (이동 거리 38)
  • 디스크 헤드 이동거리 측면에서 효율적이다.
  • SSTF 보다 성능이 조금 떨어지지만 FCFS 보다 성능이 좋음
  • 실린더 위치에 따라 대기 시간이 다르다는 문제점
  • 동일한 트랙의 요청이 연속적으로 발생되면 헤드가 더 이상 나아가지 못해 바깥쪽 트랙이 아사 현상을 겪는 문제 발생


C-SCAN 디스크 스케줄링

  • 헤드가 한 쪽 끝에서 다른 쪽 끝으로 이동하며 길목에 있는 모든 요청을 처리
  • 다른 쪽 끝에 도달하면 요청을 처리하지 않고 바로 출발점으로 이동한다.

  • 15 -> 14 -> 11 -> 8 -> 3 -> 0 -> (작업없이 이동) -> 24 -> 23 -> 20 -> 19 -> 17 (이동 거리 46)
  • SCAN 보다 균일한 대기 시간을 제공함
  • 그러나 작업 없이 헤드를 이동하여 매우 비효율적


LOOK 디스크 스케줄링

  • 더 이상 서비스할 트랙이 없으면 헤드가 끝가지 가지 않고 중간에서 방향을 바꿈

  • 15 -> 14 -> 11 -> 8 -> 3 -> 17 -> 19 -> 20 -> 23 (이동 거리 35)


C-LOOK 디스크 스케줄링

  • C-SCAN의 LOOK 버전

  • 15 -> 14 -> 11 -> 8 -> 3 -> (작업없이 이동) -> 23 -> 20 -> 19 -> 17(이동 거리 38)



RAID(Redundant Array of Inexpensive/Independent Disk)

RAID 종류

RAID 0(스트라이핑)

raid0

  • 같은 규격의 디스크를 병렬로 연결하여 여러 개의 데이터를 여러 디스크에 동시에 저장하거나 가져올 수 있음
  • 데이터를 여러 갈래로 찢어서 저장하기 때문에 스트라이핑이라고 부름
  • N개의 디스크로 구성된 RAID 0은 1개의 디스크로 구성된 시스템보다 약 N배 빠름
  • 장애 발생 시 복구하는 기능이 없음
  • 따라서 속도는 증가하지만 안정성은 낮아짐


RAID 1(미러링)

raid1

  • 같은 데이터를 2개의 디스크에 저장(백업 디스크 활용)
  • 같은 크기의 데이터를 최소 2개 이상 필요로 하며 짝수 개의 디스크로 구성
  • 장애 발생시 미러링된 디스크를 활용하여 데이터를 복구할 수 있음
  • 그러나 비용이 증가하고 같은 내용을 두 번 저장하기 때문에 속도가 느려짐


RAID 2

raid2

  • 오류 교정 코드(ECC)를 따로 관리하여 오류가 발생하면 디스크를 복구
  • 비트별로 만들어진 오류 교정 코드는 별도의 디스크에 따로 보관하고 있다가 장애 발생시 이 코드를 이용
  • n개의 디스크에 대해 오류 교정 코드를 저장하기 위한 n-1개의 추가 디스크 필요
  • 오류 교정 코드를 계산하는데 시간을 소비
  • 잘 사용되지 않음


RAID 3

raid3

  • 오류 검출 코드인 패리티를 사용하여 데이터를 복구.
  • 섹터 단위로 데이터를 나누어 저장 짝수 패리티(1의 총수를 짝수로) 혹은 홀수 패리티(1의 총수를 홀수로)를 사용하여 장애가 난 비트를 추정
  • 4개의 디스크당 1개 정도의 추가 디스크 필요
  • 패리티 비트를 구성하는 데 많은 시간이 소비(데이터를 읽거나 쓸 때 패리티 비트를 구성하기 위해 모든 디스크가 동시에 동작해야 함)


RAID 4

raid4

  • RAID 3와 같은 방식이지만 블록 단위로 데이터를 나누어 저장
  • 데이터가 저장되는 디스크와 패리티 비트가 저장되는 디스크만 동작한다는 것이 장점
  • 패리티 비트를 추가하기 위한 계산량 많음. 그러나 추가되는 디스크 양 적음.


RAID 5

raid5

  • 패리티비트를 여러 디스크에 분산하여 구성
  • 병목 현상 완화
  • 패리티 비트가 있는 디스크가 고장나도 복구 가능. 한 디스크에 장애 발생 시 다른 디스크에 있는 패리티 비트 이용해 복구


RAID 6

raid6

  • RAID 5와 같은 방식이지만 패리티 비트가 2개
  • RAID 5와 달리 디스크 2개가 동시에 장애가 발생했을 때도 복구 가능
  • 패리티 비트를 2개씩 운영해서 부담이 커짐


RAID 10

raid10

  • 미러링 기능을 가진 RAID 1과 빠른 데이터 전송이 가능한 RAID 0을 결합한 형태
  • RAID 01과 달리 일부 디스크만 중단하여 복구 가능


RAID 50 or 60

raid50

  • RAID 5 또는 6으로 묶은 두 쌍을 다시 RAID 0으로 묶어 사용


사용 목적



Reference