OS - I/O Systems

Bomin Seo·2022년 8월 8일
0

I/O Operation

  • I/O 명령어를 통하여 I/O요청을 처리한다.
  • I/O Controller를 통하여 I/O 요청을 처리하며 Controller에는 IR과 DR 레지스터가 있다.
    • IR : Controller가 수행할 명령어를 저장하는 레지스터 (삽입된 매개 변수를 통해 명령어 실행)
    • DR : 명령어를 수행하기 위한 데이터를 저장하는 레지스터 (CPU가 매개 변수 삽입)

Direct I/O (INTEL 계열에서 사용)

  • Memory addresses와 I/O Addresses가 별도로 존재한다.
  • Memory와 I/O 명령어도 별도로 존재한다.
    • MEMR (Load), MEMW(Store)
    • IOR(IN, 데이터를 읽는다), IOW(OUT, 데이터를 쓴다)
  • Memory bus와 I/O bus가 별도로 존재한다.

Memory-mapped I/O (ARM 계열에서 사용, 모바일 기기에서 주로 사용)

  • Memory addresses와 I/O Addresses, Memory 명령어와 I/O 명령어를 구분하지 않는다.
    • MEMR (Load), MEMW(Store)
  • Memory를 read/write하는 주소에 I/O와 Memory가 사용하는 주소를 구분한다.
  • 구현하기 쉽고, CPU와 보드도 작게 사용하기 때문에 모바일 환경에서 사용한다.

A Typical PC Bus Structure

I/O Method

Programmed I/O

  • I/O 작업의 결과물이 작은 경우 I/O Controller가 CPU 레지스터에 직접 전달하는 방법
  • CPU가 I/O Controller에게 I/O 요청을 전달하고 작업의 완료 여부를 Polling 방식을 통해 확인한다
  • Interrupt를 사용하지 않으며, 주기적으로 polling을 통해 I/O 수행 여부를 확인하거나 대기해야 하기 때문에 CPU 효율이 낮은 방법

DMA (Direct Memory Access)

  • Disk에서 작업 완료 후 memory에 직접 접근하는 방법

I/O Device Controller (host adapter)

  • I/O 기기들은 Mechanical component와 Electronic component(Device Controller)를 가진다.

I/O Performance of Storage and Network Latency

Kernel I/O Structure

  • Device Driver : device controller를 구동시키는 소프트웨어, interrupt handler를 포함한다.
    • Device별로 존재하는 I/O Software, - - interrupt handler와 상호 작용하는 각각의 I/O 장치에 특화된 코드를 가지고 있다.
    • 운영체제와의 interface 표준이 존재하기 때문에 운영체제에 맞춰 작성해야 한다.

Life Cycle of An I/O Request

Intercomputer Communications

Controller의 작업

  • CPU로부터 받은 명령대로 I/O 장치들을 제어하거나 I/O 장치에서 발생한 이벤트를 처리하고 CPU에 알려주는 작업을 한다.
  • Bit stream을 bytes의 블록들로 변환한다
  • 필요할 때 error correction을 수행한다.
  • 메인 메모리를 사용 가능하게 한다.

Goals of I/O Software

Device independence

  • Programs can access any I/O device without specifying device in advance

Uniform naming

  • Name of a file or device should simply be a string or an integer

Error handling

  • Handle as close to the hardware as possible

Synchronous vs. asynchronous

  • blocked transfers vs. interrupt-driven

Buffering

  • Data coming off a device cannot be stored in final destination

Sharable vs. dedicated devices

  • Disks vs. tape drives
  • Unsharable devices introduce problems such as deadlocks

Interrupt handlers

  • Critical한 짧은 부분을 처리하는 action과 그 외의 Noncritical한 부분을 처리하는 action으로 나뉜다.

  • 운영체제에서 처리하는 부분이 있다

    • Bottom half (Linux)

Buffering

  • CPU보다 I/O 장치의 속도가 느리기 때문에 I/O 장치에서 들어온 데이터를 한 곳에 모아두고 CPU가 사용한다.
    • 데이터를 일시적으로 저장하는 공간 : Buffer

Unbuffered

Buffered in user space

Buffered in the kernel space

Double buffering in the kernel

  • 성능 면에서는 애플리케이션이 직접 하는 것이 더 우수하지만, 일반적으로 I/O 장치는 Kernel에서 관리하기 때문에 (c)와 (d) 경우가 더 많이 사용된다.

Spooling

  • 일반적인 I/O 장치는 Buffer를 통하여 메모리에서 작업을 하지만, printer와 같은 장치들은 너무 느리고, 다루어야 할 데이터가 매우 많아 메모리를 사용하면 메모리 부족이 발생하기 때문에, 파일의 형태로 처리한다.
  • Printer를 예시로 들면 printer가 매우 느리기 때문에 애플리케이션에서 printer로 내보낼 제어어와 데이터 전체를 하나의 파일로 미리 만들고 kernel에서는 printer의 속도에 맞추어 천천히 내보내는 방식.

I/O Systems Layers

profile
KHU, SWCON

0개의 댓글