[CS, TIL] 230923 입출력(I/O) 관리

CountryGirl·2023년 9월 23일
0

TIL

목록 보기
72/80

💾 입출력(I/O) 관리

컴퓨터 시스템에서 데이터의 입력과 출력을 효율적으로 처리하는 과정을 포함
사용자와 시스템 간의 상호 작용 및 데이터 교환을 관리하는 데 핵심 역할

  • 성능 최적화
    • I/O 연산을 최대한 빠르게 ➡️ 시스템 응답 시간 향상 / 사용 경험 향상
  • 안정성 및 신뢰성
    • 데이터 무결성을 보장
    • 장애 상황에서 데이터 손실을 최소하는 방법 고려
  • 자원 활용
    • I/O 자원(ex. Disk, Network)을 효율적으로 활용 ➡️ 시스템 자원 관리 개선

📌 중요성

  • 대기 시간: 비효율적인 I/O 작업은 사용자 및 응용 프로그램의 대기 시간을 증가
  • 시스템 부담: 높은 I/O 부하는 시스템 리소스를 과다하게 소모하고 다른 작업을 방해할 수 O
  • 데이터 손실: I/O 관리 오류는 데이터 손실 또는 손상을 초래할 수 O

📌 동기 및 비동기 I/O

동기 I/O: CPU실행은 I/O가 진행되는 동안 대기
비동기 I/O: CPU실행과 동시에 I/O진행



📌 관리 기술 및 기법

  • 디바이스 드라이버 관리

    디바이스 드라이버
    : 하드웨어 디바이스를 컨트롤하기 위한 소프트웨어 모듈

    • 운영 체제와 하드웨어 간의 통신을 담당
    • 특정 하드웨어와 상호작용
      ex) 그래픽 카드, 네트워크 어댑터, 저장 장치 드라이버 등..
    • 디바이스는 디바이스 드라이버 간의 인터페이스처럼 작동
  • 버퍼링

    I/O 버퍼
    : 데이터를 메모리 버퍼에 일시적으로 저장하는 기술 ➡️ I/O 작업 효율성 향상

    • 데이터가 메모리 버퍼에 저장되면, 응용 프로그램은 버퍼에서 데이터를 읽거나 데이터를 버퍼에 쓸 수 O

      ➡️ 디스크 액세스와 네트워크 트래픽 최소화
      ➡️ I/O 작업을 병렬로 처리
  • 캐싱

    캐시 메모리
    : 자주 액세스되는 데이터를 빠르게 읽고 쓰기 위해 메모리에 저장하는 기술

    • 데이터를 디스크나 원격 서버에서 가져오는 대신 메모리 캐시에서 데이터를 검색 ➡️ 응답시간 少
  • 스케줄링

    I/O 스케줄링
    : 다수의 I/O 요청을 효율적으로 처리하기 위한 스케줄링 알고리즘

    • 이벤트 발생을 대기하면서 다른 작업을 수행하는 방식
    • 시스템은 이벤트 발생 시그널을 대기하고 있다가 이벤트가 발생하면 처리
    • 이벤트가 발생하지 않을 때 CPU 자원을 낭비하지 않을 수 O / 이벤트 발생 시까지 대기해야 하므로 대기 시간 발생
      ex) CFQ (Completely Fair Queuing), NOOP (No-op) 등..
  • 인터럽트 처리

    • 하드웨어 이벤트와 I/O 요청을 처리하기 위한 인터럽트 처리 루틴을 구현하고 관리
    • 하드웨어 장치 및 I/O 요청에 대한 응답 관리



📌 인터럽트 & 폴링

인터럽트 (Interrupt)

하드웨어나 소프트웨어 이벤트가 발생할 때 시스템에 신호를 보내 시스템이 해당 이벤트에 즉각적으로 반응하는 방식

  • 이벤트 기반: 이벤트 발생 시에만 처리
  • 비동기적: 이벤트가 발생하면 시스템은 해당 이벤트를 처리하고 다른 작업을 수행할 때까지 대기 X
  • 시스템 리소스 절약: 이벤트가 발생하지 않을 때 리소스 절약

폴링

주기적으로 특정 이벤트가 발생했는지 확인하는 방식

  • 주기적인 확인: 시스템이 일정 시간 간격으로 디바이스나 리소스르 확인해 이벤트 발생 여부를 확인
  • 지속적인 검사: 이벤트가 발생하지 않더라도 계속해서 폴링 수행
  • 비동기적: 이벤트 발생 여부를 확인하고 이벤트가 발생하면 처리

간단하고 예측 가능한 방법이지만, 리소스를 지속적으로 확인하면서 CPU 시간을 낭비하고 지연시간이 발생할 수 O

profile
💻🌾시골소녀의 엉망징창 개발 성장일지🌾💻 (2023.05.23 ~)

0개의 댓글