본문 바로가기
Study/CS

02-5 보조기억장치와 입출력 장치

by dailycoding777 2025. 2. 5.

보조 기억장치

오늘날 보조기억장치는 크게 2가지다.

  • 하드 디스크 드라이브
  • 플래시 메모리 기반 저장장치

하드디스크

요약: 플래터가 회전하면 헤드가 데이터를 읽고 쓰고, 스핀들은 이걸 빠르게 돌려줌!

  • 스핀들(Spindle) → 플래터를 고속 회전시켜 데이터 접근 속도를 높임.
  • 플래터(Platter) → 데이터가 저장되는 디스크(자기디스크)로, 여러 장이 쌓여 있음.
  • 헤드(Head) → 플래터 표면에서 데이터를 읽고 쓰는 역할을 함.

플래시 메모리

전기적인 방식으로 데이터를 읽고 쓰는 반도체 기반의 저장장치 ( USB 메모리, SD카드,SSD )

얘네 역할은 2가지임

  • 전원이 꺼져도 데이터를 안전하게 보관
  • CPU가 필요로 하는 정보를 조금이라도 빠른 성능으로 메모리에 전달

→ 얘네(데이터)들을 빠르고 안전하게 다루는 방법?!

RAID다.


🔥 RAID (Redundant Array of Independent/Inexpensive Disks)란?

RAID는 여러 개의 디스크를 묶어 속도, 안정성, 용량을 최적화하는 기술이다. (HDD,SSD로 구상 가능)

➡ 데이터를 빠르게 저장하거나, 고장 시 복구할 수 있도록 설계된 다양한 RAID 레벨이 있다.


🎯 RAID의 주요 목적

  1. 속도 향상 (Performance Boost) → 여러 디스크에서 데이터를 동시에 읽고 쓰기
  2. 데이터 보호 (Redundancy) → 디스크 하나가 고장 나도 복구 가능
  3. 대용량 스토리지 구성 → 여러 디스크를 하나처럼 사용

🚀 주요 RAID 레벨 종류

RAID 레벨 특징 장점 단점

RAID 0 (스트라이핑, Striping) 데이터를 여러 디스크에 나눠 저장 속도 가장 빠름 🚀 디스크 하나라도 고장 나면 데이터 손실 😨
RAID 1 (미러링, Mirroring) 동일한 데이터를 두 개 이상의 디스크에 복사 안정성 최강 💾 용량 비효율적 (디스크 절반만 사용 가능)
RAID 4 (전용 패리티, Dedicated Parity) 데이터를 나눠 저장 + 패리티(오류 복구용 데이터)는 한 디스크에 저장 데이터 복구 가능 패리티 디스크가 병목(bottleneck)이 됨
RAID 5 (패리티 분산, Distributed Parity) 데이터를 나눠 저장 + 패리티를 여러 디스크에 분산 속도+안정성 밸런스 좋음 ⚖️ 최소 3개 디스크 필요, 쓰기 성능 다소 낮음
RAID 6 (이중 패리티, Double Parity) RAID 5보다 더 강력한 보호 (디스크 2개까지 고장 허용) 보안성 최강 🔥 최소 4개 디스크 필요, 속도 다소 낮음
RAID 10 (RAID 1+0, 스트라이핑 + 미러링) RAID 0 + RAID 1 조합 (빠르고 안전함) 속도+보안 최고 🚀💾 디스크 절반만 사용 가능 (비효율적)

🎯 RAID 4 vs RAID 5

항목 RAID 4 RAID 5

패리티 저장 방식 한 개의 전용 패리티 디스크 사용 모든 디스크에 패리티를 분산
속도 읽기 속도 빠름, 쓰기는 병목 발생 읽기·쓰기 균형 좋음
복구 가능성 디스크 1개 고장 시 복구 가능 디스크 1개 고장 시 복구 가능
단점 패리티 디스크가 병목이 됨 패리티 연산이 많아 쓰기 속도 다소 느림
추천 용도 읽기 작업이 많은 환경 속도+보안 밸런스가 필요한 환경

요약

  • RAID 4 → 전용 패리티 디스크가 있어서 쓰기 병목 발생 가능
  • RAID 5 → 패리티를 분산시켜 속도와 안정성 균형 좋음

💡 어떤 RAID를 써야 할까?

속도 최우선RAID 0

데이터 안전성 최우선RAID 1, RAID 5, RAID 6

속도+보안 둘 다RAID 10

읽기 성능 위주, 단순한 데이터 보호RAID 4


🔥 한 줄 요약

  • RAID 0 → 빠름, 하지만 고장 나면 끝
  • RAID 1 → 백업 강력하지만 용량 비효율
  • RAID 4 → 패리티 전용 디스크 사용, 쓰기 병목 가능
  • RAID 5 → 패리티 분산, 속도와 안정성 밸런스 좋음
  • RAID 6 → 디스크 2개까지 고장 허용 (안정성 최고)
  • RAID 10 → 속도+안전성 최상급, 하지만 비효율적

레이드를 혼합할 수도 있다. (Nested RAID)

  • RAID0 , RAID1 = RAID10
  • RAID0, RAID5 = RAID50

🔥 입출력 기법 & 인터럽트 처리 요약

장치 컨트롤러 & 장치 드라이버

  • 장치 컨트롤러(Device Controller) → CPU와 입출력장치 간 통신을 담당하는 하드웨어
  • 장치 드라이버(Device Driver) → 운영체제(OS)가 장치 컨트롤러와 소통할 수 있도록 돕는 소프트웨어
  • 입출력장치는 CPU와 직접 연결되지 않고 컨트롤러를 통해 작동함.
  • OS가 기본적으로 제공하는 드라이버가 있지만, 특정 장치는 별도로 설치해야 함.

1.  입출력 기법 3가지

입출력 방식 설명 장점 단점

프로그램 입출력 (Programmed I/O) CPU가 직접 장치를 지속적으로 확인하면서 데이터 전송 - 구현이 단순하고 하드웨어 요구사항이 적음 - CPU가 계속 바빠서 다른 작업 수행 불가 (비효율적)
인터럽트 기반 입출력 (Interrupt I/O) 입출력 장치가 작업 완료 시 CPU에 인터럽트를 발생시켜 알림 - CPU가 다른 작업을 수행할 수 있어 효율적- CPU의 불필요한 대기 시간 감소 - 인터럽트 발생 시 오버헤드(부하)가 증가할 수 있음
DMA (Direct Memory Access) 입출력 CPU 개입 없이 장치 컨트롤러가 직접 메모리와 데이터 교환 - CPU의 부담 감소- 대용량 데이터 전송에 최적화됨 - DMA 컨트롤러가 필요하여 하드웨어 복잡성 증가

요약

  • Polling → 단순하지만 CPU 낭비 심함 ❌
  • Interrupt → 효율적이지만 인터럽트 오버헤드 발생 ⚖️
  • DMA → CPU 부담을 줄이고 대용량 데이터 전송에 적합 🚀

➡ 속도와 효율성을 고려하면 일반적으로 DMA 방식이 가장 선호됨! 😆🔥

정리

  • 장치 컨트롤러 = CPU와 장치 연결하는 하드웨어 중개자
  • 장치 드라이버 = 컨트롤러와 OS를 연결하는 소프트웨어
  • 입출력 방식: Polling(비효율) → Interrupt(효율적) → DMA(고속 최적화)

2. 다중 인터럽트 (Multiple Interrupts)

  • 여러 개의 인터럽트가 동시에 발생할 때 우선순위를 정해 처리하는 방식
  • 처리 방법
    1. 순차 처리 → 발생한 순서대로 인터럽트를 처리
    2. 우선순위 처리 → 더 중요한 인터럽트가 들어오면 먼저 처리 후 기존 작업 재개
  • NMI(Non-Maskable Interrupt) → 무조건 처리해야 하는 인터럽트 (예: 하드웨어 오류)

3. DMA (Direct Memory Access)

  • CPU를 거치지 않고 입출력장치와 메모리 간 데이터를 직접 주고받는 방식
  • 작동 과정
    1. CPU가 DMA 컨트롤러에게 입출력 작업 명령
    2. DMA 컨트롤러가 직접 데이터 전송
    3. 완료 후 CPU에 인터럽트 발생 (작업 완료 알림)

사이클 스틸링 (Cycle Stealing)

  • CPU가 메모리 버스를 사용할 때 DMA 컨트롤러가 틈틈이 버스를 사용하여 데이터를 전송

4. PIC (Programmable Interrupt Controller)

  • 여러 입출력장치에서 발생하는 인터럽트의 우선순위를 관리하는 하드웨어
  • 장치마다 IRQ (Interrupt Request) 번호가 있어 특정 장치의 인터럽트를 관리

5. PCIe (Peripheral Component Interconnect Express)

  • 입출력 버스(PCI)의 발전된 형태, GPU, SSD, 네트워크 카드 연결 시 사용
  • 버전별 속도 차이 (레인당 최대 속도)
    • PCIe 3.0985MB/s
    • PCIe 4.01.969GB/s
    • PCIe 5.03.94GB/s
    • PCIe 6.07.56GB/s
    • PCIe 7.015.13GB/s

PCIe x1, x4, x8, x16 → 레인 수가 많을수록 속도가 증가


🔥 최종 요약

  • Polling I/O → CPU가 직접 확인 (비효율적)
  • Interrupt I/O → 작업 완료 시 CPU에 알림 (효율적)
  • DMA I/O → CPU 없이 장치가 직접 메모리와 데이터 교환 (고속 최적화)
  • 다중 인터럽트 → 인터럽트 우선순위 처리
  • PIC → 인터럽트 우선순위 관리하는 하드웨어
  • PCIe → 최신 고속 입출력 버스 (SSD, GPU, 네트워크 카드 연결)

🔥 속도와 효율성을 고려하면 DMA 방식이 가장 선호됨!

'Study > CS' 카테고리의 다른 글

03-2 프로세스와 스레드  (1) 2025.02.12
03-1 운영체제 큰그림  (0) 2025.02.12
02-4 메모리  (0) 2025.02.05
02-3 CPU  (0) 2025.02.05
02.컴퓨터 구조  (2) 2025.01.22