PromleeBlog
sitemapaboutMe

posting thumbnail
입출력 시스템의 작동 원리 - 하루 10분 운영체제 12일차
How I/O Systems Work - 10 Minutes of OS Day 12

📅

🚀

들어가기 전에🔗

컴퓨터는 입력 장치(마우스, 키보드)와 출력 장치(모니터, 프린터) 없이는 제대로 동작할 수 없습니다. 이 장치들과 운영체제 사이에서 정보를 주고받는 것이 바로
입출력 시스템(I/O System)
입니다.
이번 글에서는 입출력 하드웨어의 구조부터, 운영체제가 이를 어떻게 다루고 관리하는지까지, 하나하나 예시와 함께 쉽게 풀어보겠습니다.

🚀

입출력 하드웨어란?🔗

입출력 하드웨어란, 컴퓨터 외부와 소통하는 모든 장치를 말합니다. 대표적으로는 다음과 같습니다:
이 장치들은 모두 운영체제와
컨트롤러(controller)
를 통해 연결됩니다. 컨트롤러는 장치의 실제 동작을 제어하며, CPU와 메모리 사이에서 데이터를 주고받는 중간 관리자 역할을 합니다.
data flow
data flow

🚀

커널의 입출력 서브시스템🔗

운영체제의 커널은 각 입출력 장치를 직접 다루지 않고,
드라이버(driver)
입출력 서브시스템
을 통해 간접적으로 관리합니다.

구성 요소🔗

  1. 디바이스 드라이버
    : 특정 하드웨어를 제어하는 프로그램 (예: 프린터 드라이버)
  2. 버퍼링과 캐싱
    : 빠른 데이터 처리를 위해 메모리에 저장하고 정리함
  3. 인터럽트 처리
    : 장치가 작업을 끝냈다는 신호를 CPU에 전달
  4. DMA (Direct Memory Access)
    : CPU 없이도 장치와 메모리 사이에서 직접 데이터 전송 가능

예시 흐름🔗

사용자가 프린터로 문서를 인쇄하면

🚀

응용 프로그램과 I/O 인터페이스🔗

응용 프로그램은 입출력을 직접 다루지 않고, 운영체제에 요청합니다. 이 요청은
시스템 콜(System Call)
형태로 전달됩니다.
read(), write(), open(), close() 등이 대표적인 시스템 콜입니다.
운영체제는 이 요청을 받아 적절한 드라이버에 전달하고, 결과를 다시 프로그램에 돌려줍니다. 덕분에 개발자는 장치의 세부 구조를 몰라도 I/O 작업을 수행할 수 있습니다.

🚀

STREAMS란?🔗

UNIX 계열 시스템에서는
STREAMS
라는 구조를 사용하여 입출력 흐름을 구성합니다.
마치 수도관에 여러 필터를 연결하듯, 입출력 처리 흐름을 유연하게 구성할 수 있습니다.

🚀

입출력과 성능🔗

입출력은 시스템 전체 속도에 큰 영향을 줍니다. 다음과 같은 기법들이 성능 향상에 사용됩니다:

입출력 스케줄링 계층 예시🔗

운영체제는 입출력 요청을 효과적으로 처리하기 위해 다양한 계층의 큐를 사용합니다:
  1. 요청 큐(Request Queue)
    : 디바이스 드라이버 앞에서 대기 중인 요청들
  2. 스케줄링 알고리즘
    : FIFO, SSTF, LOOK, C-LOOK 등 디스크 관련 알고리즘 사용
  3. 병합(Merging)
    : 인접한 요청을 묶어 처리 속도 향상
이러한 기법들은 시스템 자원을 효율적으로 사용하게 만들어 줍니다.

🚀

요약🔗

이번 글에서는 입출력 하드웨어의 기본 구조와 운영체제가 이를 어떻게 제어하는지에 대해 살펴보았습니다. 시스템 콜, 드라이버, DMA, STREAMS 같은 개념이 실제로 어떻게 연결되는지를 이미지처럼 떠올릴 수 있도록 이해하는 것이 중요합니다.
다음 글에서는
파일 시스템 인터페이스
에 대해 살펴보겠습니다.

참고🔗