입출력 시스템과 저장장치

메론보이·2024년 5월 10일
0

운영체제

목록 보기
10/11
post-thumbnail

학습목표

  • 입출력 버스의 구조를 파악한다
  • 입출력 과정에서 직접 메모리 접근,인터럽트,버퍼링이 어떻게 적용되는지 알아본다
  • 디스크 저장장치의 종류, 각 장치의 구조, 데이터 전송 시간을 알아본다
  • 디스크 스케줄링 기법을 이해하고 각각의 장단점을 파악한다
  • RAID의 필요성을 이해하고 구성 방식에 따른 종류를 알아본다

입출력 시스템

개요

  • 입출력 시스템(I/O system)은 컴퓨터 시스템에서 매우 중요한 부분입니다. 사용자와 컴퓨터 사이의 정보 교환을 가능하게 하며, 컴퓨터가 외부 세계와 상호 작용할 수 있도록 해줍니다.
  • 이 시스템은 데이터를 입력받아 처리하고, 그 결과를 출력하는 과정을 총칭합니다.

배경

  • 초기 컴퓨터 시스템에서는 데이터 처리가 주된 목적이었습니다. 하지만, 사용자와의 상호 작용이나 외부 장치와의 통신이 필요해짐에 따라, 효율적으로 데이터를 주고받을 수 있는 시스템의 필요성이 대두되었습니다.

정의 및 개념

  • 입출력 시스템은 컴퓨터와 외부 세계 사이의 데이터 교환을 관리하는 하드웨어와 소프트웨어의 집합입니다.
  • 이 시스템은 입력 장치를 통해 데이터를 받아들이고, 처리된 결과를 출력 장치를 통해 사용자나 다른 시스템에 전달합니다.

필요성

  • 사용자 인터페이스: 사용자가 시스템과 상호작용할 수 있게 해줍니다.
  • 데이터 교환: 외부 장치나 다른 컴퓨터 시스템과 데이터를 교환할 수 있습니다.
  • 효율성: 데이터를 빠르고 정확하게 처리하고 전달합니다.

언제 사용하는지

  • 사용자 입력이 필요할 때 (키보드, 마우스 등)
  • 처리 결과를 사용자에게 보여줄 때 (모니터, 프린터 등)
  • 외부 장치와 데이터를 주고받을 때 (USB, 네트워크 등)

어떻게 사용하는지 및 작동 방식

  • 입출력 시스템은 인터럽트 기반, 폴링, DMA(Direct Memory Access) 등의 방식으로 작동합니다.
  • 인터럽트 기반 방식에서는 장치가 준비되면 CPU에 신호를 보내 처리를 요청합니다.
  • 폴링 방식에서는 CPU가 주기적으로 장치의 상태를 확인합니다.
  • DMA를 사용하면, CPU의 개입 없이 데이터를 메모리와 장치 사이에서 직접 전송할 수 있습니다.

문제점 및 해결 방안

  • 병목 현상: 입출력 속도가 전체 시스템 성능을 제한할 수 있습니다. 해결 방안으로는 고속 입출력 장치의 사용, 캐싱, 버퍼링 등이 있습니다.
  • 동기화 문제: 여러 프로세스나 스레드가 동시에 입출력 장치를 사용하려 할 때 발생합니다. 세마포어나 뮤텍스 같은 동기화 기법을 사용하여 해결할 수 있습니다.

입출력 버스의 구조

초기

배경 및 문제점

  • 초기에는 주변장치도 많이 없었고 CPU와 메모리의 속도도 빠르지 않아 모든 장치가 하나의 버스로 연결되고, CPU가 작업을 진행하다가 입출력 명령을 만나면 직접 입출력장치에서 데이터를 가져왔다
    이를 폴링 방식이라고한다
  • 문제는 주변장치는 CPU와 메모리보다 매우 느리다
    그렇기때문에 폴링 방식을 적용하여 CPU가 직접 입출력을 하면 입출력이 끝날 때까지 다른 작업을 할 수가 없다.

입출력 제어기를 사용한 구조

배경 및 설명

  • 다양한 주변장치가 생기면서 CPU가 폴링 방식으로 주변장치를 관리하기 어려워져서 모든 입출력을 입출력 제어기(I/O controller)에 맡기는 구조로 바뀌었다.

작동원리

  • 메인버스는 고속으로 작동하는 CPU와 메모리가 사용하고 입출력 버스는 주변장치가 사용한다.
  • CPU에서 입출력 요청이 오면 입출력 제어기는 입출력장치로부터 데이터를 직접 송수신한다.
  • 입출력 제어기를 사용하면 느린 입출력장치로 인해 CPU와 메모리의 작업이 느려지는 것을 막을 수 있어 전체 작업 효율이 향상된다.

입출력 버스의 구조

배경 및 문제상황

  • 입출력 제어기를 사용하면 작업 효율은 높일 수 있지만 저속 주변장치 떄문에 고속 주변장치의 데이터 전송이 느려지는 문제가 있음
  • 그래픽카드와 같은 고속 주변장치는 많은 양의 데이터를 전송함 즉 이러한 고속 주변장치와 저속 주변장치와 입출력 버스를 공유하면 입출력 속도가 현처히 저하됨
  • 이 문제를 해결하기 위해 입출력 버스를 고속 입출력 버스와 저속 입출력 버스로 분리하여 운영

작동원리

  • 고속 입출력 버스에는 고속 주변장치를 연결하고 저속 입출력 버스에는 저속 주변장치를 연결한다
  • 두 버스 사이의 데이터 전송은 채널 선택기가 관리한다
  • 예를들어 고속 입출력 버스에서 데이터를 10번 받으면 저속 입출력 저스에서 데이터를 1번 받는식으로 두 버스의 데이터 전송 속도를 조절한다
  • 그래픽 카드는 입출력 버스로도 감당하기 어려워 입출력 버스에서 분리하고 메인버스에 바로 연결하여 사용중이다

하나의 버스 채널은 주소 버스, 데이터 버스, 제어 버스로 구성된다

주소 버스에는 데이터를 가져올 주소
데이터 버스에는 실제로 송수신되는 데이터
제어 버스에는 명령어의 시작과 종료, 데이터의 이동 방향, 오류 처리, 인터럽트 같은 다양한 신호를 저장한다.

직접 메모리 접근

배경 및 정의

  • 입출력 제어기는 다양한 주변장치의 입출력을 대행하고 여러 채널(데이터가 이동하는 통로)에서 온 데이터를 메모리로 옮기는 역할을 함
  • 메모리는 CPU 명령에 따라 작동하고, 직접 메모리 접근(DMA)은 CPU의 도움 없이도 메모리에 접근할 수 있도록 입출력 제어기에 부여된 권한이다
  • 입출력 제어기에는 직접 메모리 접근을 위한 DMA 제어기가 있음

필요성:

  • 이전에는 데이터 전송이 CPU를 통해 이루어져야 했기 때문에, 큰 데이터를 처리할 때 CPU의 부하가 커지고 시스템의 전반적인 성능이 저하되는 문제가 있었습니다.
  • DMA는 이러한 문제를 해결하기 위해 개발되었습니다.

언제 사용하는지:

  • 대용량 데이터 전송이 필요할 때
  • 고속 데이터 전송이 요구되는 주변장치 사용 시
  • CPU의 부하를 줄이고 시스템 성능을 최적화하고자 할 때

어떻게 사용하는지 및 작동 방식:

  • DMA 컨트롤러가 CPU로부터 전송 명령을 받습니다.
  • DMA 컨트롤러는 메모리와 주변장치 간의 데이터 전송을 직접 관리합니다.
  • 전송이 완료되면, DMA 컨트롤러는 CPU에 전송 완료를 알리는 인터럽트를 보냅니다.

문제점 및 해결 방안:

  • 메모리 접근 충돌: 여러 DMA 장치가 동시에 메모리에 접근하려 할 때 충돌이 발생할 수 있습니다. 이를 해결하기 위해 하드웨어 또는 소프트웨어적으로 우선순위를 관리하거나, 버스 아비트레이션(logic)을 사용하여 접근 권한을 조절합니다.
  • 데이터 일관성: DMA를 통한 데이터 전송 중에 CPU가 동일한 데이터에 접근하려고 하면 데이터 일관성 문제가 발생할 수 있습니다. 이를 해결하기 위해 캐시 일관성 프로토콜과 같은 기술을 사용하여 데이터 일관성을 유지합니다.

사용 예시:

  • 하드 디스크로부터의 대용량 파일 전송: 하드 디스크에서 메모리로 파일을 빠르게 전송할 때 DMA를 사용하여 CPU의 부하를 줄일 수 있습니다.
  • 네트워크 카드: 네트워크 카드에서 수신한 패킷을 메모리로 직접 전송하는 데 DMA를 사용하여 고속으로 데이터를 처리할 수 있습니다.
  • 오디오 및 비디오 스트리밍: 오디오 및 비디오 데이터를 재생할 때, 데이터를 효율적으로 처리하기 위해 DMA를 사용합니다.

인터럽트

개요

  • 인터럽트 개념은 컴퓨터가 더 효율적으로 다양한 작업을 동시에 처리할 수 있도록 하기 위해 도입되었습니다. 초기 컴퓨터 시스템에서는 CPU가 한 작업을 완전히 마친 뒤에야 다음 작업으로 넘어갈 수 있었습니다.
  • 이러한 순차적 처리 방식은 시스템의 반응성과 효율성을 크게 제한했고, 이를 개선하기 위해 인터럽트 시스템이 고안되었습니다.

정의 및 개념:

  • 인터럽트는 컴퓨터 하드웨어나 소프트웨어가 현재 CPU가 수행 중인 작업을 일시 중단시키고, 긴급하거나 특정 조건을 만족하는 작업을 먼저 처리하게 하는 기능입니다.
  • 이를 통해 CPU는 중요한 작업에 빠르게 반응할 수 있습니다.
  • 주변장치의 입출력 요구나 하드웨어의 이상 현상을 CPU에 알려주는 신호

필요성:

  • 인터럽트는 다중 작업 환경에서 특히 중요합니다. 여러 작업을 효율적으로 관리하고, 긴급한 작업에 신속하게 대응해야 하는 시스템에서는 인터럽트가 없이는 높은 성능을 달성하기 어렵습니다.

언제 사용하는지:

  • 인터럽트는 주로 하드웨어 장치로부터 데이터가 준비되었을 때, 타이머가 특정 시간에 도달했을 때, 소프트웨어적으로 특정 조건이 만족됐을 때 등 다양한 상황에서 사용됩니다.

어떻게 사용하는지 및 작동 방식:

  • 인터럽트 요청(IRQ) 발생: 하드웨어 장치나 소프트웨어가 인터럽트를 요청합니다.
  • CPU 중단: CPU는 현재 수행 중인 명령어를 완료한 후 인터럽트 요청을 인식하고 처리를 중단합니다.
  • 인터럽트 서비스 루틴(ISR) 실행: CPU는 인터럽트 요청에 해당하는 서비스 루틴(함수)을 실행합니다.
  • 작업 복귀: ISR 실행이 완료되면, CPU는 중단됐던 작업을 계속 수행합니다.

문제점 및 해결 방법:

  • 인터럽트 시스템의 주요 문제점은 인터럽트 폭풍(interrupt storm)이나 우선순위 관리입니다. 너무 많은 인터럽트 요청이 발생하면 시스템이 제대로 작동하지 않을 수 있습니다.
  • 이를 해결하기 위해 우선순위를 설정하여 중요한 인터럽트부터 처리하고, 인터럽트 요청을 일시적으로 차단하는 기술을 사용할 수 있습니다.

사용 예시:

  • 키보드 입력: 사용자가 키보드를 누를 때마다 인터럽트가 발생하여 CPU가 해당 입력을 처리할 수 있습니다.
  • 네트워크 카드: 네트워크로부터 데이터 패킷이 도착하면 인터럽트가 발생하여 CPU가 데이터를 처리합니다.
  • 타이머: 운영체제가 특정 시간 간격으로 작업을 수행해야 할 때 타이머 인터럽트를 사용할 수 있습니다.

단일 버퍼와 이중 버퍼

단일 버퍼(Single Buffering)

개념과 필요성:

  • 단일 버퍼는 데이터를 임시 저장하는 하나의 메모리 영역을 의미합니다.
  • 데이터 처리 과정에서 데이터를 이 버퍼에 저장하고, 처리기가 이 데이터를 가져가 처리한 후, 다시 데이터를 버퍼에 저장하는 방식으로 작동합니다.
  • 이는 데이터 처리와 전송 과정을 단순화시키고, 데이터가 손실되지 않도록 하는 기본적인 방법입니다.

이중 버퍼(Double Buffering)

개념과 필요성:

  • 이중 버퍼는 두 개의 버퍼를 사용하는 기술로, 하나는 데이터를 읽기 위한 버퍼이고 다른 하나는 쓰기 위한 버퍼입니다.
  • 이를 통해 한 버퍼에서 데이터를 처리하는 동안 다른 버퍼에서는 데이터를 전송하거나 받을 수 있어, 처리 과정이 중단되지 않고 지속될 수 있습니다.
  • 이는 데이터 처리와 전송의 효율성을 높이고, 시스템의 전체적인 성능을 향상시키는 데 필요합니다.

언제 사용하는지:

  • 단일 버퍼: 단순한 데이터 처리 작업이나 데이터 손실의 위험이 낮은 경우에 사용됩니다.
  • 이중 버퍼: 실시간 데이터 처리가 필요하거나, 데이터 전송과 처리가 동시에 이루어져야 할 때 사용됩니다. 예를 들어, 비디오 스트리밍, 게임 그래픽 처리, 실시간 오디오 처리 등이 있습니다.

작동 방식:

  • 단일 버퍼는 데이터를 버퍼에 저장한 후, 처리기가 이를 처리하는 순차적 방식을 따릅니다.
  • 이중 버퍼는 처리기가 한 버퍼의 데이터를 처리하는 동안 다른 버퍼가 데이터를 수신하거나 전송할 수 있도록 합니다. 처리가 완료되면 버퍼 간에 역할이 교환됩니다.

문제점과 해결 방법:

  • 단일 버퍼는 데이터 처리와 전송 사이에 지연이 발생할 수 있습니다. 이는 특히 실시간 처리가 중요한 작업에서 성능 저하를 일으킬 수 있습니다.
  • 이중 버퍼는 더 많은 메모리를 요구하며, 버퍼 간의 동기화 문제가 발생할 수 있습니다. 이러한 문제는 버퍼 관리 알고리즘과 동기화 기술을 통해 해결할 수 있습니다.

사용 예시:

  • 단일 버퍼: 간단한 텍스트 편집기나 소규모 파일 전송에 사용될 수 있습니다.
  • 이중 버퍼: 비디오 게임에서 화면을 부드럽게 전환하기 위해 사용됩니다. 한 버퍼가 화면에 표시되는 동안 다른 버퍼에서는 다음 화면을 준비하여, 사용자는 끊김 없는 화면 전환을 경험할 수 있습니다.

저장장치

종류

하드디스크

배경

  • 대용량 데이터를 영구적으로 저장하기 위한 저장 장치의 필요성에 의해 개발되었습니다.

정의

  • 자성 물질로 코팅된 원형 플래터를 회전시켜 데이터를 저장하고 읽는 저장 장치입니다.

필요성

  • 컴퓨터 시스템에서 대량의 데이터를 영구적으로 저장하고 액세스하기 위해 사용됩니다.

사용 방법

  • 운영 체제와 파일 시스템을 통해 데이터를 저장하고 읽습니다.

작동 방식

  • 플래터를 회전시키고 헤드를 이동시켜 데이터를 저장하고 읽습니다.

데이터 전송 과정

  1. 하드디스크의 특정 섹터에 저장된 데이터를 읽거나 쓰려면 그 섹터가 있는 트랙까지 헤드가 이동해야한다. 이처럼 헤드가 현재 위치에서 특정 트랙까지 이동하는 데 걸리는 시간을 탐색 시간이라고 한다
  2. 특정 트랙까지 이동한 헤드는 플래터가 회전하여 원하는 섹터를 만날 때까지 기다린다. 이처럼 원하는 섹터를 만날 떄까지 회전하는 데 걸리는 시간을 회전 지연 시간이라고 한다.
  3. 헤드는 원하는 섹터에 있는 데이터를 읽어 전송하는데, 이때 걸리는 시간을 전송 시간이라고 한다.

플래터

배경

  • 하드디스크에서 데이터를 저장하기 위한 물리적 매체로 개발되었습니다.

정의

  • 자성 물질로 코팅된 원형 디스크로, 데이터가 저장되는 실제 물리적 공간입니다.

필요성

  • 데이터를 안정적으로 저장하고 회전을 통해 빠른 액세스를 가능하게 합니다.

사용 방법

  • 하드디스크 내부에 여러 개의 플래터가 적층되어 사용됩니다.

작동 방식

  • 플래터가 고속으로 회전하면서 헤드가 플래터 표면에 근접하여 데이터를 저장하고 읽습니다.

섹터와 블록

배경

  • 효율적인 데이터 저장과 관리를 위해 플래터를 작은 단위로 나누는 개념이 도입되었습니다.

정의

  • 섹터는 플래터에서 데이터가 저장되는 최소 물리적 단위이고, 블록은 파일 시스템에서 사용되는 논리적 저장 단위입니다.

필요성

  • 데이터를 작은 단위로 나누어 저장함으로써 효율적인 데이터 관리와 빠른 액세스가 가능해집니다.

사용 방법

  • 운영 체제와 파일 시스템은 섹터와 블록 단위로 데이터를 저장하고 읽습니다.

작동 방식

  • 플래터의 트랙을 따라 섹터가 배치되고, 여러 섹터가 모여 블록을 형성합니다.

트랙과 실린더

배경

  • 플래터 표면을 효율적으로 활용하고 데이터 액세스 속도를 높이기 위해 개발되었습니다.

정의

  • 트랙은 플래터 표면의 동심원 모양의 영역이고, 실린더는 여러 플래터의 같은 반지름 위치에 있는 트랙들의 집합입니다.

필요성

  • 트랙과 실린더를 사용하여 데이터를 체계적으로 저장하고 빠르게 액세스할 수 있습니다.

사용 방법

  • 하드디스크 컨트롤러는 트랙과 실린더 정보를 사용하여 데이터의 위치를 파악하고 액세스합니다.

작동 방식

  • 헤드가 트랙을 따라 이동하며 데이터를 저장하고 읽습니다.

헤드와 플래터

배경

  • 플래터에 데이터를 저장하고 읽기 위한 장치로 개발되었습니다.

정의

  • 자기장을 이용하여 플래터 표면에 데이터를 쓰고 읽는 장치입니다.

필요성

  • 헤드를 통해 데이터를 물리적으로 저장하고 읽을 수 있습니다.

사용 방법

  • 헤드는 플래터 표면에 매우 근접하게 위치하며, 플래터의 회전에 따라 데이터를 저장하고 읽습니다.

작동 방식

  • 쓰기 헤드는 자기장을 이용하여 플래터 표면의 자성을 변화시켜 데이터를 저장하고, 읽기 헤드는 자기장의 변화를 감지하여 데이터를 읽습니다.

전체적인 작동방식

  1. 하드디스크는 플래터가 고속으로 회전하면서, 헤드가 특정 트랙과 섹터에 위치하여 데이터를 읽고 씁니다.

  2. 사용자가 데이터에 접근하려고 하면, 하드디스크의 제어 시스템은 헤드를 해당 데이터가 위치한 트랙과 섹터로 이동시킵니다.

  3. 데이터 읽기 또는 쓰기 작업이 완료되면, 헤드는 다음 작업을 위해 다른 위치로 이동합니다.

SSD

정의 및 개념

  • SSD는 데이터를 저장하기 위해 이동하는 부품이 없는 비휘발성 저장 장치입니다.
  • 전통적인 하드디스크와 달리, SSD는 NAND 기반의 플래시 메모리를 사용하여 데이터를 저장합니다. 이는 전력이 꺼진 후에도 데이터를 유지할 수 있게 해 줍니다.

필요성

  • 속도: SSD는 데이터 접근 시간이 매우 짧고, 읽기/쓰기 속도가 빠릅니다. 이는 시스템의 부팅 시간을 단축시키고, 애플리케이션의 로딩 시간을 줄여줍니다.
  • 내구성: SSD는 이동하는 부품이 없어 충격에 강하고, 더 높은 신뢰성을 제공합니다.
    소음 및 발열 감소: 이동하는 부품이 없기 때문에 소음이 적고, 발열도 더 적습니다.
  • 에너지 효율성: 이동 부품이 없어 에너지 소비가 적습니다.

사용 시기 및 방식

  • SSD는 컴퓨터, 노트북, 서버, 데이터 센터 등 다양한 분야에서 사용됩니다. 특히 시스템의 부팅 속도와 성능을 중요시하는 환경에서 선호됩니다.
  • 또한, 휴대성과 충격에 대한 내구성이 중요한 모바일 장치나 외장 저장 장치에도 널리 사용됩니다.

디스크 스케줄링

배경

  • 디스크의 데이터 전송 시간중에서 탐색 시간(헤드가 현재 위치에서 특정 트랙까지 이동하는 데 걸리는 시간)이 가장 느림
  • 디스크 스케줄링은 트랙의 이동을 최소화하여 탐색 시간을 줄이는 데 목적이 있음

FCFS (First-Come, First-Served) 디스크 스케줄링

배경

  • 가장 간단하고 직관적인 디스크 스케줄링 알고리즘입니다.

정의

  • I/O 요청이 도착한 순서대로 처리하는 알고리즘입니다.

필요성

  • 요청의 공평성을 보장하고 구현이 간단합니다.

사용 방법

  • 요청 큐에 도착한 순서대로 요청을 처리합니다.

장단점

  • 장점: 구현이 쉽고 요청의 공평성을 보장합니다.
  • 단점: 탐색 시간이 길어질 수 있고, 디스크 성능이 저하될 수 있습니다.

작동 방식

  • 현재 헤드 위치와 상관없이 요청 순서에 따라 디스크 액세스를 수행합니다.

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

배경

  • FCFS의 긴 탐색 시간 문제를 해결하기 위해 개발되었습니다.

정의

  • 현재 헤드 위치에서 가장 가까운 요청을 먼저 처리하는 알고리즘입니다.

필요성

  • 탐색 시간을 최소화하여 디스크 성능을 향상시킵니다.

사용 방법

  • 현재 헤드 위치에서 가장 가까운 요청을 선택하여 처리합니다.

장단점

  • 장점: 탐색 시간을 최소화하여 디스크 성능을 향상시킵니다.
  • 단점: 기아 현상이 발생할 수 있습니다.

작동 방식

  • 헤드 이동 거리를 최소화하는 방향으로 요청을 처리합니다.

SCAN 디스크 스케줄링

배경

  • 디스크 헤드의 이동을 최소화하기 위해 개발되었습니다.

정의

  • 헤드가 한 방향으로 이동하면서 요청을 처리하고, 끝에 도달하면 방향을 반대로 바꾸는 알고리즘입니다.

필요성

  • 헤드 이동을 최소화하여 탐색 시간을 줄입니다.

사용 방법

  • 헤드가 한 방향으로 이동하면서 요청을 처리하고, 끝에 도달하면 방향을 반대로 바꿉니다.

장단점

  • 장점: 헤드 이동을 최소화하여 탐색 시간을 줄입니다.
  • 단점: 헤드 이동 방향에 따라 대기 시간이 불균형할 수 있습니다.

작동 방식

  • 엘리베이터 알고리즘이라고도 불리며, 헤드의 이동 방향에 따라 요청을 처리합니다.

C-SCAN (Circular SCAN) 디스크 스케줄링

배경

  • SCAN의 불균형한 대기 시간 문제를 해결하기 위해 개발되었습니다.

정의

  • SCAN과 유사하지만, 헤드가 한 방향으로만 이동하고 끝에 도달하면 시작 위치로 이동하는 알고리즘입니다.

필요성

  • 대기 시간의 균등 분배를 보장합니다.

사용 방법

  • 헤드가 한 방향으로만 이동하고, 끝에 도달하면 시작 위치로 이동합니다.

장단점

  • 장점: 대기 시간의 균등 분배를 보장합니다.
  • 단점: 헤드 이동 거리가 증가할 수 있습니다.

작동 방식

  • 헤드의 이동 방향이 한 방향으로 고정되어 있어 대기 시간이 균등해집니다.

LOOK 디스크 스케줄링

배경

  • SCAN의 불필요한 헤드 이동을 제거하기 위해 개발되었습니다.

정의

  • SCAN과 유사하지만, 요청이 없는 방향으로는 헤드가 이동하지 않는 알고리즘입니다.

필요성

  • 불필요한 헤드 이동을 제거하여 탐색 시간을 줄입니다.

사용 방법

  • 요청이 있는 방향으로만 헤드가 이동하고, 요청이 없으면 방향을 바꿉니다.

장단점

  • 장점: 불필요한 헤드 이동을 제거하여 탐색 시간을 줄입니다.
  • 단점: 헤드 이동 방향에 따라 대기 시간이 불균형할 수 있습니다.

작동 방식

  • 요청이 있는 방향으로만 헤드가 이동하여 불필요한 이동을 제거합니다.

C-LOOK 디스크 스케줄링

배경

  • LOOK의 불균형한 대기 시간 문제를 해결하기 위해 개발되었습니다.

정의

  • LOOK과 유사하지만, 헤드가 한 방향으로만 이동하고 끝에 도달하면 시작 위치로 이동하는 알고리즘입니다.

필요성

  • 대기 시간의 균등 분배를 보장합니다.

사용 방법

  • 헤드가 한 방향으로만 이동하고, 끝에 도달하면 시작 위치로 이동합니다.

장단점

  • 장점: 대기 시간의 균등 분배를 보장합니다.
  • 단점: 헤드 이동 거리가 증가할 수 있습니다.

작동 방식

  • 헤드의 이동 방향이 한 방향으로 고정되어 있어 대기 시간이 균등해집니다.

SLTF (Shortest Latency Time First) 디스크 스케줄링

배경

  • 회전 지연 시간을 최소화하기 위해 개발되었습니다.

정의

  • 현재 헤드 위치에서 가장 빨리 서비스할 수 있는 요청을 먼저 처리하는 알고리즘입니다.

필요성

  • 회전 지연 시간을 최소화하여 디스크 성능을 향상시킵니다.

사용 방법

  • 현재 헤드 위치에서 가장 빨리 도달할 수 있는 섹터의 요청을 선택하여 처리합니다.

장단점

  • 장점: 회전 지연 시간을 최소화하여 디스크 성능을 향상시킵니다.
  • 단점: 구현이 복잡하고 오버헤드가 발생할 수 있습니다.

작동 방식

  • 회전 지연 시간을 고려하여 가장 빠른 요청을 우선적으로 처리합니다.

RAID

정의

  • 자동으로 백업하고 장애가 발생하면 이를 복수하는 시스템
  • 하나의 원본 디스크와 같은 크기의 백업 디스크에 같은 내용을 동시에 저장하고, 한 디스크가 고장 났을 때 다른 디스크를 사용하여 데이터를 복구함

RAID 0

정의 및 개념

  • 병렬로 연결된 여러 개의 디스크에 데이터를 동시에 입출력할 수 있도록 구성
  • A1,A2~A5 라는 5개의 데이터를 저장하는 경우, RAID 0 에서는 5개의 데이터를 동시에 저장
  • 데이터를 여러 갈래로 찢어서 저장하기 때문에 RAID 0을 스트라이핑이라고 부름
  • 이론적으로는 입출력 속도가 5배 빠름
  • 단점으로는 장애 발생 시 복구하는 기능이 없기 때문에 장애가 발생하면 데이터를 잃음
  • 그럼에도 불구하고 입출력이 빨라 기업용 제품, 개인용 컴퓨터 등에 많이 사용

필요성

  • RAID 0은 성능 향상을 위해 사용됩니다. 여러 디스크에 데이터를 분산함으로써 읽기 및 쓰기 속도가 빨라집니다.

구성 원리

  • 데이터는 스트라이프라고 불리는 블록 단위로 나뉘어 각 디스크에 순차적으로 저장됩니다. 이를 통해 여러 디스크가 동시에 데이터를 처리할 수 있어 성능이 향상됩니다.

연산

  • RAID 0에서는 특별한 연산이 사용되지 않습니다. 단순히 데이터를 스트라이프 단위로 나누어 저장합니다.

RAID 1

정의 및 개념

  • 하나의 데이터를 2개의 디스크에 나누어 저장하여 장애 시 백업 디스크로 활용
  • RAID 1은 데이터가 똑같이 여러 디스크에 복사되기 때문에 미러링이라고 함
  • 단점은 저장하는 데이터와 같은 크기의 디스크가 하나 더 필요하기 때문에 비용이 증가
  • 또한 같은 내용을 두 번 저장하기 때문에 속도가 느려질수있음

필요성

  • RAID 1은 데이터의 안정성과 복구를 위해 사용됩니다. 한 디스크에 문제가 발생해도 다른 디스크에 동일한 데이터가 있기 때문에 데이터 손실 위험이 줄어듭니다.

구성 원리

  • 데이터가 입력될 때, 동일한 데이터가 두 개 이상의 디스크에 복제되어 저장됩니다. 이를 통해 하나의 디스크가 실패해도 다른 디스크에서 데이터를 복구할 수 있습니다.

연산

  • RAID 1에서는 특별한 연산이 사용되지 않습니다. 데이터를 복제하여 미러 디스크에 저장하는 것이 전부입니다.

RAID 4

정의 및 개념

  • RAID 1 처럼 완전한 복사본을 만드는 대신 오류를 검출하고 복구하기 위한 정보를 저장한 장치를 두는 구성 방식
  • 이때 '오류를 검출하고 복구하기 위한 정보'를 패리티 비트라고 함
  • 패리티를 저장한 장치를 이용해 다른 장치들의 오류를 검출하고, 오류가 있다면 복구함
  • RAID 4 는 RAID 1보다 적은 하드 디스크로도 데이터를 안전하게 보관 할 수있음

RAID 5

정의 및 개념

  • RAID 4에서는 어떤 새로운 데이터가 저장될 때마다 패리티를 저장하는 디스크에도 데이터를 쓰게되므로 패리티를 저장하는 장치에 병목 현상이 발생한다는 문제가 있음
  • RAID 5는 패리티 정보를 분산하여 저장하는 방식으로 RAID 4의 문제인 병목 현상을 해소함

필요성

  • 데이터의 안정성과 성능을 동시에 향상시키고자 할 때 사용됩니다. 단일 디스크 장애가 발생해도 시스템을 계속 운영할 수 있으며, 데이터 접근 속도도 개선됩니다.

구성 원리

  • 데이터와 패리티 정보를 번갈아 가며 다른 디스크에 저장함으로써, 어떤 한 디스크가 손상되더라도 남은 디스크들의 정보를 통해 데이터를 복구할 수 있습니다.

사용되는 연산

  • XOR 연산이 사용되며, 이는 두 입력이 서로 다를 때 1을, 같을 때 0을 출력하는 논리 연산입니다.

RAID 6

정의 및 개념

  • 기본적으로 RAID 5와 같으나, 서로 다른 두 개의 패리티를 두는 방식
  • RAID 6은 RAID 4 나 RAID 5보다 안전한 구성임
  • 다만 새로운 정보를 저장할 때마다 함께 저장할 패리티가 두 개이므로, 쓰기 속도는 RAID 5보다 느림
  • 따라서 RAID 6은 데이터 저장 속도를 조금 희생하더라도 데이터를 더욱 안전하게 보관하고 싶을 때 사용하는 방식

필요성

  • 더 높은 데이터 안정성이 요구되는 환경에서 사용됩니다. 특히 중요 데이터를 다루는 시스템이나 장애 발생 시 데이터 손실이 치명적인 환경에서 선호됩니다.

구성 원리

  • 데이터와 두 개의 패리티 정보를 스트라이핑 방식으로 분산 저장합니다. 각 패리티는 다른 알고리즘을 사용하여 계산됩니다.

사용되는 연산

  • XOR 연산과 Reed-Solomon 코드 등이 패리티 생성에 사용됩니다.

RAID 1+0

개념과 정의

  • RAID 1+0은 미러링(RAID 1)과 스트라이핑(RAID 0)을 결합한 형태입니다.
  • 데이터를 미러링으로 복제한 후, 이 복제된 데이터 세트를 여러 디스크에 걸쳐 스트라이핑합니다.

필요성

  • 높은 데이터 안정성과 뛰어난 성능을 모두 요구할 때 사용됩니다. RAID 1의 미러링으로 데이터 안정성을, RAID 0의 스트라이핑으로 데이터 접근 속도를 모두 확보할 수 있습니다.

구성 원리

  • 먼저 데이터를 미러링하여 복제하고, 이렇게 복제된 데이터 세트를 스트라이핑합니다.

장점

  • RAID 1+0은 디스크 중 하나가 실패해도 해당 미러 세트 내의 다른 디스크가 계속 작동하기 때문에 높은 내결함성을 제공합니다. 또한, 디스크 교체 후에는 해당 미러만 재구성하면 되므로 복구 시간이 빠릅니다.

적합한 사용 사례

  • 성능과 내결함성이 모두 중요한 데이터베이스 서버, 파일 서버 등에 적합합니다.

사용되는 연산

  • 미러링과 스트라이핑 연산이 사용됩니다.

RAID 0+1

개념과 정의

  • RAID 0+1은 RAID 0의 스트라이핑으로 데이터를 여러 디스크에 분산 저장한 후, 이 전체 세트를 RAID 1의 미러링을 통해 복제합니다.

필요성

  • RAID 1+0과 유사하게 높은 성능과 데이터 안정성을 모두 요구할 때 사용되지만, 디스크 장애 발생 시 복구 과정에서 차이가 있습니다.

구성 원리

  • 먼저 데이터를 스트라이핑하여 여러 디스크에 분산 저장하고, 이렇게 분산된 전체 데이터 세트를 미러링합니다.

장점

  • RAID 0+1 역시 높은 성능을 제공하지만, 한 스트라이프 세트 내의 디스크가 실패하면 전체 스트라이프 세트가 손실될 수 있습니다.

적합한 사용 사례

  • 성능이 중요하지만 RAID 1+0을 구성할 수 없는 경우에 선택할 수 있습니다.

사용되는 연산

  • 스트라이핑과 미러링 연산이 사용됩니다.

RAID 1+0 VS RAID 0+1

  • 일반적으로 RAID 1+0이 RAID 0+1보다 더 선호됩니다.
    RAID 1+0은 디스크 중 하나가 실패해도 시스템이 계속 작동할 수 있으며, 복구 과정이 더 간단하고 빠릅니다.
  • RAID 0+1은 전체 스트라이프 세트 중 하나라도 실패하면, 미러링된 전체 세트를 재구성해야 하므로 복구 시간이 더 오래 걸릴 수 있습니다.

참고

입출력버스구조
저장장치
SSD
디스크 스케줄링
입출력장치
RAID
RAID2
RAID1+0
RAID0+1

0개의 댓글