운영체제 12. 입출력 시스템 & 디스크 관리 (1) - I/O System

728x90
반응형

출처 : https://www.youtube.com/watch?v=CtOggyroUeA&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=43

 

 

 

이번 시간에는 I/O Mechanism과 I/O Service를 알아본다.

 

I/O Mechanism은 프로세서와 device가 서로 어떻게 데이터를 주고 받는지에 대한 메커니즘을 배운다.

I/O service는 운영체제가 입출력을 어떻게 효율적으로 동작시켜서 성능을 향상시킬 수 있는가를 배운다.

 

 

I/O System (HW)

 

  • 프로세서가 필요한 정보를 요청하면 입출력 장치가 데이터를 읽거나 전송하는 것을 Input, Output이라고 한다.
  • 입출력 장치는 메인 메모리에 있는 데이터를 출력하거나 아니면 메인 메모리에 요청받은 데이터를 적재한다.
  • 프로세서는 메인 메모리에 있는 데이터를 사용하거나 메인 메모리에 요청 메시지를 담는다.
  • 즉, 필요한 데이터는 메인 메모리에 적재되어야 한다.

 

 

I/O Mechanisms

 

프로세서와 입출력 장치 사이에 데이터를 주고받는 방식은 2가지가 존재한다.

  • Processor controlled memory access : 프로세서가 제어하는 메모리 접근 (프로세서가 관리) 
    • Polling (Programmed I/O)
    • Interrupt
  • Direct Memory Access (DMA) : 프로세서가 관리하지 않음

 

 

Processor controlled memory access - Polling (Programmed I/O)

 

  • Processor가 주기적으로 I/O 장치의 상태 확인
    • 모든 I/O 장치를 순환하면 확인
    • 전송 준비 및 전송 상태 등
  • 장점
    • 간단함. 프로세서(cpu)가 I/O 장치를 순환하면서 주고받을 I/O data가 있으면 주고받고, 아니면 넘어가면 됨
    • I/O 장치가 빠르고, 데이터 전송이 잦은 경우 효율적
  • 단점
    • Processor의 부담이 큼
      • Polling overhead (I/O device가 느린 경우)

 

 

Processor controlled memory access - Interrupt

 

  • I/O 장치가 작업을 완료한 후, 자신의 상태를 Processor에게 전달
    • Interrupt 발생 시, Processor는 데이터 전송 수행
  • 장점
    • Pooling 대비 low overhead
    • 불규칙적인 요청 처리에 적합
  • 단점
    • Interrupt handling overhead (인터럽트가 계속 발생할 때 생기는 overhead)

 

 

작업 관리자에서 인터럽트 요청을 볼 수 있다.

 

 

Direct Memory Access (DMA)

 

  • Processor controlled memory access 방법
    • 프로세서가 모든 데이터 전송을 처리해야 함
      • High overhead for the processor. 프로세서에게 고정적으로 해야할 일이 할당되어있어서 overhead가 큼
  • Direct Memory Access
    • I/O 장치와 메모리 사이의 데이터 전송을 프로세서 개입 없이 수행 -> 프로세서의 overhead 감소

 

 

  • Processor는 데이터 전송의 시작 / 종료만 관여 -> Processor의 overhead 감소

 

  1. 프로세서가 전송 방향, 전송 바이트 수, 데이터 블록의 메모리 주소 등을 DMA 제어기에 보낸다.(직접 I/O 장치에게 명령을 내리지 않음, DMA 제어기에게 보냄)
  2. DMA 제어기는 디스크 제어기에게 데이터를 메인 메모리로 전송하라고 요청한다.
  3. 디스크 제어기가 메인 메모리에 데이터를 전송한다.
  4. 데이터 전송을 완료하면 디스크 제어기는 DMA 제어기에 완료 메시지를 전달한다.
  5. DMA 제어기가 프로세서에 인터럽트 신호(작업을 완료했음)를 보낸다.

 

 

다음은 I/O Service of OS. 즉, OS가 I/O 성능을 높이기 위해 어떤 서포트를 해줄 수 있는지에 대해 알아본다.

 

 

I/O Services of OS

 

커널 아래의 커널 입출력 서브시스템이 I/O service를 제공한다. 이 I/O service는 무엇이 있는지 알아보자.

 

 

I/O Services of OS

 

  • I/O Scheduling
    • 여러 입출력 장치로부터 입력이 들어올 때, 입출력 요청들에 대한 처리 순서 결정
      • 시스템의 전반적 성능 향상
      • Process의 요구에 대한 공평한 처리
    • Disk I/O scheduling 등
  • Error handling
    • 입출력 중 발생하는 오류 처리
    • disk access fail, network communication error 등
  • I/O device information managements. OS는 I/O device에 대한 정보를 관리해준다.

 

 

  • Buffering
    • I/O 장치와 Program 사이에 전송되는 데이터를 Buffer에 임시 저장
    • 입출력 장치가 1초에 100개의 데이터를 전송하고 디스크가 1초에 10개의 데이터를 저장할 수 있다고 해보자. 그러면 매초 90개의 데이터가 유실이 되버릴 것이다. 이를 방지하고자, 임시로 데이터들을 저장할 수 있는 공간을 만들었는데 이것이 buffer이다.
    • 전송 속도 (or 처리 단위) 차이 문제 해결하기 위한 기법을 buffering이라고 한다.

 

 

  • Caching
    • 자주 사용하는 데이터를 미리 복사해 둠
    • Cache hit 시 I/O를 생략할 수 있음

 

  • Spooling
    • 한 I/O 장치에 여러 program이 요청을 보낼 시, 출력이 섞이지 않도록 하는 기법 (프린터에 여러 문서를 출력하게 만들 때를 생각하면 이해하기 쉬움)
      • 각 Program에 대응하는 disk file에 기록 (spooling). 기록된 파일을 spool이라고 함
      • Spooling이 완료되면, spool을 한 번에 하나씩 I/O 장치로 전송

 

 

 

 

728x90
반응형