Post

09 OS - 입출력 시스템과 디스크관리

09 OS - 입출력 시스템과 디스크관리

01. 입출력 시스템 관리

1. 입출력 시스템/입출력 모듈/입출력장치

  • 입출력 장치 (I/O Device)
    • 가장 말단의 실제 물리적 장치
    • 사용자와 실제로 데이터를 주고받는 대상
    • 키보드, 마우스, 프린터, 디스크, 네트워크 카드
    • 데이터를 물리적으로 입력받거나 출력하는 하드웨어
  • 입출력 모듈 (I/O Module)
    • CPU ↔ I/O 장치 사이의 중계자
    • 하드웨어이면서, 디바이스 컨트롤러(controller)가 이 역할을 수행
    • 느린 장치 ↔ 빠른 CPU 간 속도 차이, 포맷 차이 해결
    • CPU 대신 장치와 직접 통신 / 데이터 버퍼링 / 인터럽트 요청 / 제어 신호 변환
    • CPU ↔ (입출력 모듈) ↔ 디스크, 프린터 등
  • 입출력 시스템 (I/O System)
    • 운영체제(OS) 내의 소프트웨어 계층
    • 입출력 요청 처리 전반을 관리
    • 커널 안의 서브시스템: 입출력 서브시스템 (I/O Subsystem)
    • 응용프로세스의 입출력 호출 관리 (read(), write() 등) / 장치 드라이버 호출
    • 버퍼링, 캐싱, 스풀링 등 고급 I/O 기능 처리 / 장치 독립성 보장

2. 흐름

  • 유저가 파일을 저장하려고 할 때:
    1
    2
    3
    4
    5
    
    응용프로그램이 write() 시스템콜
     → OS의 입출력 시스템(I/O subsystem)이 요청 처리
     → 적절한 장치 드라이버 호출
     → 입출력 모듈이 명령 전송 및 데이터 중계
     → 실제 디스크(입출력 장치)에 데이터 기록
    

3. 프로세서 역할에 따른 입출력 방법

  • 프로세서 제어입출력(프로그램 제어 입출력, 인터럽트 기반 입출력)
항목프로그램 제어 입출력 (Polling)인터럽트 기반 입출력
통신 방식CPU가 반복 확인 (Polling)장치가 인터럽트 발생
CPU 개입지속적으로 장치 상태 확인필요할 때만 응답
효율성CPU 낭비 큼 (Busy-Waiting)CPU 효율적 (비동기 처리)
복잡성구현 쉬움인터럽트 핸들링 필요 (복잡)
응답 시간빠름 (바로 감지 가능)장치가 늦게 인터럽트 보내면 지연될 수 있음
사용 예시임베디드, 단순 키 입력, 센서 읽기키보드, 마우스, NIC, 디스크 등
  • 흐름
    1. CPU가: “이 데이터를 디스크에 저장해줘”라고 OS에게 요청
    2. OS는 디스크 드라이버를 통해 디스크 컨트롤러에 요청 전송
    3. 디스크는:
      • 플래터 회전 중인지 확인
      • 트랙/섹터 위치에 읽기/쓰기 헤드가 도달했는지 확인
      • 버퍼가 비어 있는지 확인
    4. 이 조건이 충족되면: 디스크 컨트롤러가 “준비됨” 상태 플래그 설정
    5. CPU에서 확인
      • 인터럽트 기반 입출력 : 인터럽트를 발생시켜 CPU에게 알림
      • 프로그램 제어 입출력 : CPU가 디스크 컨트롤러의 상태 레지스터를 계속 확인함 → 폴링(Polling)
    6. 최종적으로 CPU가 메모리 / 디스크에 입력을 진행함.
  • DMA(Direct Memory Access) 입출력
    • CPU를 거치지 않고 입출력 장치 ↔ 메모리 간에 직접 데이터 전송이 가능하도록 설계된 하드웨어 장치
    • 즉, DMA 컨트롤러와 협력해서 데이터 전송을 자동으로 처리할 수 있는 장치
    • CPU가 직접 데이터를 읽거나 쓰지 않고, DMA 컨트롤러가 입출력 장치와 메모리 사이에서 직접 데이터 전송을 수행.
    • CPU는 DMA에게 작업을 요청(명령)하고, 전송이 끝나면 DMA가 CPU에게 인터럽트로 완료를 알리는 역할.
    • 흐름
      • CPU가 DMA 컨트롤러에 입출력 작업과 메모리 주소, 데이터 크기를 설정
      • DMA 컨트롤러가 입출력 장치와 직접 데이터 전송 시작
      • 입출력 장치는 DMA 컨트롤러와 통신하며 데이터를 전송 또는 수신
      • 데이터 전송 완료 시 DMA 컨트롤러가 CPU에 인터럽트 발생 알림
      • CPU는 후속 작업 수행
  • 입출력 채널
    • 입출력 채널은 컴퓨터 시스템에서 입출력 장치와 메모리 사이의 데이터 전송을 전담하는 독립적인 하드웨어 장치.
    • 일종의 작은 입출력 전용 프로세서를 의미함.
    구분입출력 채널DMA
    기능입출력 전체 작업 제어 (명령 처리 포함)데이터 전송만 수행
    독립성독립적인 입출력 프로세서 수준하드웨어 데이터 전송 장치
    명령 처리가능불가능 (명령어 처리 안 함)
    복잡한 입출력 지원여러 장치 및 복잡한 작업 가능단순한 데이터 이동 중심
    • 흐름
      • CPU가 입출력 채널에 입출력 명령 전송
      • 입출력 채널이 장치와 직접 통신하며 입출력 작업 수행
      • 작업 완료 시 CPU에 인터럽트 신호 전달
      • CPU는 후속 처리 진행
    • 종류
    채널 종류특징동작 방식용도 및 대상 장치
    셀렉터 채널- 한 번에 한 개 장치와 전용 통신- 한 장치 독점 연결 및 처리- 고속, 대용량 입출력 장치 (예: 디스크)
    멀티플렉서 채널- 여러 장치를 동시에 관리- 시간 분할 방식으로 다수 장치 처리- 저속 다수 입출력 장치 (예: 키보드, 프린터)
    블록 멀티플렉서 채널- 셀렉터와 멀티플렉서 장점 결합- 대용량은 독점, 소량은 시간 분할- 혼합 환경(고속 + 저속 장치 혼재)

4. 커널 입출력 서브시스템

  • 커널 입출력 서브시스템(I/O Subsystem in Kernel)은 운영체제 커널 내부에서 입출력을 효율적으로 관리하고 추상화하는 계층
  • 하드웨어 장치와 사용자 프로그램 사이에서 중재자 역할을 하며, 여러 가지 성능, 보안, 안정성을 보장하는 구조로 구성
  • 입출력 관련 서비스
기능명설명목적 / 효과예시
I/O 스케줄링다수의 I/O 요청 중 처리 순서를 결정디스크 헤드 이동 최소화, 처리 효율성 향상FCFS, SSTF, SCAN, C-SCAN
버퍼링 (Buffering)I/O 시 데이터를 RAM에 임시 저장하여 CPU와 장치 간 속도차 보완CPU가 기다리지 않고 작업 가능 (비동기 처리)네트워크 송수신 버퍼, 키보드 입력 버퍼
캐싱 (Caching)자주 사용하는 데이터를 메모리에 저장하여 빠르게 접근속도 향상, 장치 접근 횟수 감소페이지 캐시, 디스크 블록 캐시
스풀링 (Spooling)I/O 요청을 디스크에 저장해두고 순차적으로 장치에 전달느린 장치 사용 시 사용자 대기 시간 감소프린터 출력 대기열
오류 처리입출력 중 발생하는 오류를 감지하고 복구 또는 무시시스템 안정성 유지, 데이터 보호패리티 검사, 재시도, 오류 로그 기록
자료 관리저장 장치 내 데이터의 구조 및 메타데이터 관리파일 시스템, 데이터 위치 추적, 보안FAT, NTFS, ext4 등

02. 디스크의 구조와 스케줄링

1. HDD/SSD

비교 항목HDDSSD
동작 방식자기 디스크 회전 + 기계식 헤드전자 회로 기반 플래시 메모리
속도느림 (물리적 제한)빠름 (랜덤 액세스 강점)
내구성충격에 약함상대적으로 강함
수명오랫동안 사용 가능 (쓰기 제한 적음)쓰기 횟수 제한 있음
가격GB당 저렴상대적으로 비쌈

2. 전체 흐름

  • 사용자 프로세스가 read() 요청
  • 파일 시스템 → 블록 I/O 계층 → I/O 큐 등록
  • 디스크 스케줄러가 큐를 정렬해서 최적 순서 결정
  • 디바이스 드라이버가 디스크 컨트롤러에 명령 전달
  • 디스크 컨트롤러가 DMA 명령 발행
  • DMA 엔진이 디스크에서 메모리로 직접 데이터 전송
  • CPU는 인터럽트로 완료 통보 받음 → 사용자에게 결과 전달

3. 디스크

  • 디스크 플래터(Platter): 금속 재질의 원반으로, 자성을 띠는 물질로 코팅되어 있음
  • 읽기/쓰기 헤드(Head): 플래터 위를 움직이며 데이터를 자성 형태로 기록하거나 읽음
  • 회전: 디스크는 고속으로 회전하며, 헤드는 트랙 위를 따라 이동함
  • 자기적 저장:
    • 0 또는 1을 표현하기 위해 플래터에 자성을 다르게 인가
    • 예: N극 → 0, S극 → 1 (추상적 표현)

4. 디스크 스케줄링 알고리즘

알고리즘명간단 설명특징 및 장점
선입선처리 (FCFS)요청이 도착한 순서대로 처리하는 방식으로, 별도의 최적화 없이 단순히 큐에 쌓인 순서대로 I/O 작업을 수행함구현이 매우 간단하며 공정성을 보장하지만, 비효율적일 수 있음
최소 탐색 시간 우선 (SSTF)현재 헤드 위치에서 가장 가까운 디스크 요청을 우선 처리하여 헤드 이동 거리를 최소화함으로써 평균 대기 시간을 줄임헤드 이동 거리가 적어져 성능 향상 가능하지만, 특정 요청이 무한정 지연될 위험 있음
스캔 (SCAN)헤드가 한 방향으로 끝까지 이동하면서 그 방향의 모든 요청을 처리하고, 다시 반대 방향으로 이동하며 요청을 처리함헤드 이동이 균등하게 분배되어 스타베이션(기아 현상)을 줄임
순환 스캔 (C-SCAN)스캔과 유사하지만 헤드가 한 방향으로만 이동하고 끝에 도달하면 빠르게 처음 위치로 돌아가 다시 한 방향으로 이동하며 처리함요청에 대해 공평한 서비스 제공하고, 반응 시간 예측이 쉬움
룩 (LOOK)스캔과 유사하지만 헤드가 디스크 끝까지 가지 않고 마지막 요청 위치까지만 이동하여 불필요한 이동을 줄임헤드 이동 최적화로 효율성 증가
최소 지연시간 우선요청들 중 가장 빨리 완료될 수 있는 요청을 우선 처리해 전체 응답 시간을 최적화하려는 전략응답 시간을 단축할 수 있으나, 구현이 복잡하고 특정 요청이 지연될 수 있음
최소 위치 설정 시간 우선헤드 이동 시간과 디스크 회전 시간을 모두 고려해 가장 빠르게 처리 가능한 요청을 선택하는 복합 최적화 방식실제 하드웨어 특성을 반영해 최적의 성능을 내도록 설계됨

03. RAID

1. RAID

  • 운영체제로 여러대의 물리적 디스크를 하나의 논리적 디스크로 인식하는 기술
  • 데이터 보호 (중복 저장으로 장애 대비), 성능 향상 (병렬 처리로 속도 개선)

2. RAID 계층

RAID 레벨구성 방식데이터 저장 방식장점단점최소 디스크 수
RAID 0스트라이핑 (분산 저장)데이터를 여러 디스크에 나누어 저장읽기/쓰기 속도 향상, 구현 단순데이터 중복 없음, 하나라도 고장 시 전체 데이터 손실2
RAID 1미러링 (복제)동일 데이터를 두 개 이상의 디스크에 복제높은 데이터 안정성, 빠른 복구 가능저장 용량 효율 50%, 비용 증가2
RAID 2비트 수준 스트라이핑 + ECC비트 단위 분산 저장, 해밍코드 등 ECC 사용뛰어난 오류 검출 및 복구 능력복잡하고 비효율적, 현재 거의 사용 안 함다수
RAID 3바이트 수준 스트라이핑 + 단일 패리티바이트 단위 분산 저장, 패리티 1개 디스크에 집중연속 데이터 전송 속도 높음단일 패리티 디스크가 병목 발생 가능3 이상
RAID 4블록 수준 스트라이핑 + 단일 패리티블록 단위 분산 저장, 패리티 1개 디스크에 집중읽기 성능 우수쓰기 시 패리티 업데이트로 성능 저하3 이상
RAID 5블록 수준 스트라이핑 + 분산 패리티블록 단위 분산 저장, 패리티도 여러 디스크에 분산장애 허용, 용량과 안정성의 균형쓰기 성능 저하, 최소 3개 디스크 필요3 이상
RAID 6블록 수준 스트라이핑 + 이중 분산 패리티RAID 5에 추가 패리티 1개 더 분산2개 디스크 장애 허용, 높은 안정성RAID 5보다 더 큰 쓰기 성능 저하, 최소 4개 디스크 필요4 이상
RAID 0+1스트라이핑 후 미러링RAID 0 스트라이핑한 두 세트를 미러링성능과 안정성 모두 우수디스크 4개 이상 필요, 비용 높음4
RAID 10미러링 후 스트라이핑RAID 1 미러링한 세트를 RAID 0으로 스트라이핑RAID 0+1과 유사하지만 장애 허용 범위가 더 넓음디스크 4개 이상 필요, 비용 높음4
  • 스트라이핑(Stripping): 데이터를 여러 디스크에 나누어 저장해 속도를 높임
  • 미러링(Mirroring): 같은 데이터를 두 개 이상의 디스크에 복제해 데이터 안전성 확보
  • 패리티(Parity): 오류 검출/복구용 데이터, 장애 시 복원에 사용됨
This post is licensed under CC BY 4.0 by the author.