Chapter 12: I/O Systems

공부하자·2022년 11월 28일
0

운영체제

목록 보기
9/12

Overview

  • I/O management is a major component of operating system design and operation
    • Important aspect of computer operation
    • I/O devices vary greatly
    • Various methods to control them
    • Performance management
    • New types of devices frequent
  • Ports, busses, device controllers connect to various devices
  • Device drivers encapsulate device details
    • Present uniform device-access interface to I/O subsystem
  • I/O 관리는 운영 체제 설계 및 운영의 주요 구성 요소이다.
    • 컴퓨터 작동의 중요한 측면
    • I/O 장치가 매우 다양함
    • 이들을 제어하기 위한 다양한 방법
    • 성과관리
    • 새로운 유형의 장치가 자주 사용됨
  • 포트, 버스, 장치 컨트롤러가 다양한 장치에 연결된다.
  • 장치 드라이버는 장치 세부 정보를 캡슐화한다.
    • I/O 하위 시스템에 균일한 장치 액세스 인터페이스 제공

I/O Hardware

  • Incredible variety of I/O devices
    • Storage
    • Transmission
    • Human-interface
  • Common concepts – signals from I/O devices interface with computer
    • Port – connection point for device
    • Bus - daisy chain or shared direct access
      • PCI bus common in PCs and servers, PCI Express (PCIe)
      • expansion bus connects relatively slow devices
      • Serial-attached SCSI (SAS) common disk interface
    • Controller (host adapter) – electronics that operate port, bus, device
      • Sometimes integrated
      • Sometimes separate circuit board (host adapter)
      • Contains processor, microcode, private memory, bus controller, etc
        • Some talk to per-device controller with bus controller, microcode, memory, etc
  • 다양한 I/O 장치
    • 저장소
    • 변속기
    • 휴먼 인터페이스
  • 일반적인 개념 – I/O 장치의 신호가 컴퓨터와 인터페이스합니다.
    • 포트 – 장치의 연결 지점
    • 버스 - 데이지 체인 또는 공유 직접 액세스
      • PC 및 서버에 공통된 PCI 버스, PCI Express(PCIe)
      • 확장 버스는 비교적 느린 장치를 연결함
      • SAS(Serial Attached SCSI) 공통 디스크 인터페이스
    • 컨트롤러(호스트 어댑터) – 포트, 버스, 장치를 작동하는 전자 장치
      • 때때로 통합됨
      • 때때로 별도의 회로 보드(호스트 어댑터)
      • 프로세서, 마이크로코드, 개인 메모리, 버스 컨트롤러 등을 포함함
        • 일부는 버스 컨트롤러, 마이크로코드, 메모리 등을 사용하여 장치별 컨트롤러와 통신함

A Typical PC Bus Structure

I/O Hardware (Cont.)

  • Fibre channel (FC) is complex controller, usually separate circuit board (host-bus adapter, HBA) plugging into bus
  • I/O instructions control devices
  • Devices usually have registers where device driver places commands, addresses, and data to write, or read data from registers after command execution
    • Data-in register, data-out register, status register, control register
    • Typically 1-4 bytes, or FIFO buffer
  • Devices have addresses, used by
    • Direct I/O instructions
    • Memory-mapped I/O
      • Device data and command registers mapped to processor address space
      • Especially for large address spaces (graphics)
  • 파이버 채널(FC)은 복잡한 컨트롤러로, 일반적으로 버스에 연결되는 별도의 회로 보드(호스트 버스 어댑터, HBA)이다.
  • I/O 명령 제어 장치
  • 장치는 일반적으로 장치 드라이버가 명령, 주소 및 데이터를 기록하거나 명령 실행 후 레지스터에서 데이터를 읽을 수 있는 레지스터를 갖는다.
    • 데이터 입력 레지스터, 데이터 출력 레지스터, 상태 레지스터, 제어 레지스터
    • 일반적으로 1-4바이트 또는 FIFO 버퍼
  • 장치에 주소가 있으며 다음에서 사용됩니다.
    • 직접 I/O 지침
    • 메모리 매핑 I/O
      • 프로세서 주소 공간에 매핑된 장치 데이터 및 명령 레지스터
      • 특히 주소 공간이 큰 경우(그래픽)

Device I/O Port Locations on PCs (partial)

Polling

  • For each byte of I/O
      1. Read busy bit from status register until 0
      1. Host sets read or write bit and if write copies data into data-out register
      1. Host sets command-ready bit
      1. Controller sets busy bit, executes transfer
      1. Controller clears busy bit, error bit, command-ready bit when transfer done
  • Step 1 is busy-wait cycle to wait for I/O from device
    • Reasonable if device is fast
    • But inefficient if device slow
    • CPU switches to other tasks?
      • But if miss a cycle data overwritten / lost
  • I/O의 각 바이트에 대해
      1. 상태 레지스터에서 사용 중인 비트를 0까지 읽는다.
      1. 호스트가 읽기 또는 쓰기 비트를 설정하고 쓰기가 데이터를 데이터 출력 레지스터에 복사하는 경우
      1. 호스트가 명령 준비 비트를 설정한다.
      1. 컨트롤러가 사용 중인 비트를 설정하고 전송을 실행한다.
      1. 전송이 완료되면 컨트롤러가 사용 중인 비트, 오류 비트, 명령 준비 비트를 지운다.
  • 1단계는 디바이스의 I/O를 대기하는 대기 사이클이다.
    • 장치가 빠른 경우 합리적이다.
    • 그러나 장치 속도가 느리면 비효율적이다.
    • CPU를 다른 작업으로 전환할 것인가?
      • 그러나 사이클 데이터가 누락된 경우 덮어쓰기/손실됨

Interrupts

  • Polling can happen in 3 instruction cycles
    • Read status, logical-and to extract status bit, branch if not zero
    • How to be more efficient if non-zero infrequently?
  • CPU Interrupt-request line triggered by I/O device
    • Checked by processor after each instruction
  • Interrupt handler receives interrupts
    • Maskable to ignore or delay some interrupts
  • Interrupt vector to dispatch interrupt to correct handler
    • Context switch at start and end
    • Based on priority
    • Some nonmaskable
    • Interrupt chaining if more than one device at same interrupt number
  • 폴링은 3개의 명령 사이클에서 발생할 수 있다.
    • 상태 읽기, 논리적 - 및 상태 비트 추출, 0이 아닌 경우 분기
    • 0이 아닌 경우에 자주 더 효율적인 방법은 무엇일까?
  • I/O 디바이스에 의해 트리거된 CPU 인터럽트 요청 라인
    • 각 instruction 후 프로세서에서 확인
  • 인터럽트 핸들러가 인터럽트를 수신함
    • 일부 인터럽트를 무시하거나 지연하도록 마스킹 가능
  • 인터럽트 벡터를 사용하여 올바른 핸들러에 인터럽트를 디스패치한다.
    • 시작 및 종료 시 컨텍스트 스위치
    • 우선순위 기준
    • 마스크할 수 없는 일부
    • 동일한 인터럽트 번호에 둘 이상의 디바이스가 있는 경우 인터럽트 체인

Interrupt-Driven I/O Cycle

Interrupts (Cont.)

  • Interrupt mechanism also used for exceptions
    • Terminate process, crash system due to hardware error
  • Page fault executes when memory access error
  • System call executes via trap to trigger kernel to execute request
  • Multi-CPU systems can process interrupts concurrently
    • If operating system designed to handle it
  • Used for time-sensitive processing, frequent, must be fast
  • 인터럽트 메커니즘은 예외에도 사용된다.
    • 프로세스 종료, 하드웨어 오류로 인한 시스템 충돌
  • 메모리 액세스 오류 시 페이지 장애가 실행된다.
  • 시스템 호출이 트랩을 통해 실행되어 커널이 요청을 실행하도록 트리거한다.
  • 다중 CPU 시스템이 인터럽트를 동시에 처리할 수 있다.
    • 운영 체제가 이를 처리하도록 설계된 경우
  • 시간에 민감한 처리에 사용되며, 자주 사용되며, 속도가 빨라야 한다.

Latency

  • Stressing interrupt management because even single-user systems manage hundreds or interrupts per second and servers hundreds of thousands
  • For example, a quiet macOS desktop generated 23,000 interrupts over 10 seconds
  • 단일 사용자 시스템에서도 초당 수백 개 또는 수십만 개의 인터럽트를 관리하고 서버를 관리하기 때문에 인터럽트 관리를 강조한다.
  • 예를 들어, 조용한 macOS 데스크톱에서 10초 동안 23,000번의 인터럽트가 발생했다.

Intel Pentium Processor Event-Vector Table

Direct Memory Access

  • Used to avoid programmed I/O (one byte at a time) for large data movement
  • Requires DMA controller
  • Bypasses CPU to transfer data directly between I/O device and memory
  • OS writes DMA command block into memory
    • Source and destination addresses
    • Read or write mode
    • Count of bytes
    • Writes location of command block to DMA controller
    • Bus mastering of DMA controller – grabs bus from CPU
      • Cycle stealing from CPU but still much more efficient
    • When done, interrupts to signal completion
  • Version that is aware of virtual addresses can be even more efficient - DVMA
  • 대규모 데이터 이동을 위해 프로그래밍된 I/O(한 번에 1바이트)를 방지하는 데 사용된다.
  • DMA 컨트롤러가 필요하다.
  • CPU를 우회하여 I/O 장치와 메모리 간에 직접 데이터 전송
  • OS가 메모리에 DMA 명령 블록 쓰기
    • 소스 및 대상 주소
    • 읽기 또는 쓰기 모드
    • 바이트 수
    • 명령 블록의 위치를 DMA 컨트롤러에 기록
    • DMA 컨트롤러의 버스 마스터링 – CPU에서 버스를 가져옵니다.
      • CPU에서 사이클 도용을 수행하면서도 훨씬 효율적임
    • 완료되면 완료 신호가 중단된다.
  • 가상 주소를 인식하는 버전이 훨씬 더 효율적일 수 있다. - DVMA

Six Step Process to Perform DMA Transfer

Application I/O Interface

  • I/O system calls encapsulate device behaviors in generic classes
  • Device-driver layer hides differences among I/O controllers from kernel
  • New devices talking already-implemented protocols need no extra work
  • Each OS has its own I/O subsystem structures and device driver frameworks
  • Devices vary in many dimensions
    • Character-stream or block
    • Sequential or random-access
    • Synchronous or asynchronous (or both)
    • Sharable or dedicated
    • Speed of operation
    • read-write, read only, or write only
  • I/O 시스템 호출이 일반 클래스에서 장치 동작을 캡슐화한다.
  • 디바이스 드라이버 계층은 커널과 I/O 컨트롤러 간의 차이를 숨긴다.
  • 이미 구현된 프로토콜을 사용하는 새로운 장치는 추가 작업이 필요 없다.
  • 각 OS에는 고유한 I/O 하위 시스템 구조와 장치 드라이버 프레임워크가 있다.
  • 장치는 다양한 차원에서 다양하다.
    • 문자 스트림 또는 블록
    • 순차 또는 랜덤 액세스
    • 동기식 또는 비동기식(또는 둘 다)
    • 공유 가능 또는 전용
    • 작동 속도
    • 읽기-쓰기, 읽기 전용 또는 쓰기 전용

A Kernel I/O Structure

Characteristics of I/O Devices

  • Subtleties of devices handled by device drivers
  • Broadly I/O devices can be grouped by the OS into
    • Block I/O
    • Character I/O (Stream)
    • Memory-mapped file access
    • Network sockets
  • For direct manipulation of I/O device specific characteristics, usually an escape / back door
    • Unix ioctl() call to send arbitrary bits to a device control register and data to device data register
  • UNIX and Linux use tuple of “major” and “minor” device numbers to identify type and instance of devices (here major 8 and minors 0-4)
    % ls –l /dev/sda*
  • 장치 드라이버가 처리하는 장치의 세부 정보
  • 광범위한 I/O 장치는 OS별로 다음과 같이 그룹화할 수 있다.
    • I/O 차단
    • 문자 I/O(스트림)
    • 메모리 매핑 파일 액세스
    • 네트워크 소켓
  • I/O 장치 고유의 특성(일반적으로 탈출/백도어)을 직접 조작하기 위해
    • 임의 비트를 장치 제어 레지스터로 보내고 데이터를 장치 데이터 레지스터로 보내기 위한 Unix ioctl() 호출
  • UNIX 및 Linux는 장치 유형과 인스턴스를 식별하기 위해 "주요" 및 "마이너" 장치 번호의 튜플을 사용한다(여기서 주 8 및 주 0-4).

Block and Character Devices

  • Block devices include disk drives
    • Commands include read, write, seek
    • Raw I/O, direct I/O, or file-system access
    • Memory-mapped file access possible
      • File mapped to virtual memory and clusters brought via demand paging
    • DMA
  • Character devices include keyboards, mice, serial ports
    • Commands include get(), put()
    • Libraries layered on top allow line editing
  • 블록 장치에는 Disk 드라이브가 포함된다.
    • 명령에는 읽기, 쓰기, 찾기가 포함된다.
    • 원시 I/O, 직접 I/O 또는 파일 시스템 액세스
    • 메모리 매핑 파일 액세스 가능
      • 요구 페이징을 통해 가져온 가상 메모리 및 클러스터에 매핑된 파일
    • DMA
  • 문자 장치에는 키보드, 마우스, 직렬 포트가 포함
    • 명령에는 get(), put()이 포함됨
    • 맨 위에 계층화된 라이브러리로 줄 편집 가능

Network Devices

  • Varying enough from block and character to have own interface
  • Linux, Unix, Windows and many others include socket interface
    • Separates network protocol from network operation
    • SIncludes select() functionality
  • Approaches vary widely (pipes, FIFOs, streams, queues, mailboxes)
  • 블록 및 문자에 따라 고유한 인터페이스를 가질 수 있을 정도로 다양함
  • Linux, Unix, Windows 및 기타 많은 제품에 소켓 인터페이스가 포함
    • 네트워크 프로토콜과 네트워크 작동을 분리함
    • SIN에 select() 기능 포함
  • 접근 방식은 매우 다양하다(파이프, FIFO, 스트림, 대기열, 우편함).

Clocks and Timers

  • Provide current time, elapsed time, timer
  • Normal resolution about 1/60 second
  • Some systems provide higher-resolution timers
  • Programmable interval timer used for timings, periodic interrupts
  • ioctl() (on UNIX) covers odd aspects of I/O such as clocks and timers
  • 현재 시간, 경과 시간, 타이머 제공
  • 정상 분해능 약 1/60초
  • 일부 시스템은 고해상도 타이머를 제공한다.
  • 타이밍, 주기적 인터럽트에 사용되는 프로그래밍 가능한 인터벌 타이머
  • ioctl()(UNIX의 경우)은 클럭 및 타이머와 같은 I/O의 이상한 측면을 포함한다.

Nonblocking and Asynchronous I/O

  • Blocking - process suspended until I/O completed
    • Easy to use and understand
    • Insufficient for some needs
  • Nonblocking - I/O call returns as much as available
    • User interface, data copy (buffered I/O)
    • Implemented via multi-threading
    • Returns quickly with count of bytes read or written
    • select() to find if data ready then read() or write() to transfer
  • Asynchronous - process runs while I/O executes
    • Difficult to use
    • I/O subsystem signals process
  • 차단 - I/O가 완료될 때까지 프로세스가 중단됨
    • 사용 및 이해가 용이함
    • 일부 요구사항에 대해 충분하지 않음
  • 논블로킹 - I/O 호출이 가능한 만큼 반환됨
    • 사용자 인터페이스, 데이터 복사(버퍼된 I/O)
    • 멀티스레딩을 통해 구현
    • 읽거나 쓴 바이트 수와 함께 빠르게 반환된다.
    • 데이터가 준비되었는지 여부를 확인하려면 select()한 다음 전송하려면 read() or write()해라.
  • 비동기 - I/O가 실행되는 동안 프로세스가 실행됨
    • 사용하기 어렵다
    • I/O 하위 시스템 신호 프로세스

Two I/O Methods

Vectored I/O

  • Vectored I/O allows one system call to perform multiple I/O operations
  • For example, Unix readve() accepts a vector of multiple buffers to read into or write from
  • This scatter-gather method better than multiple individual I/O calls
    • Decreases context switching and system call overhead
    • Some versions provide atomicity
      • Avoid for example worry about multiple threads changing data as reads / writes occurring
  • 벡터링된 I/O를 통해 하나의 시스템 호출이 여러 I/O 작업을 수행할 수 있다.
  • 예를 들어, 유닉스 readve()는 읽거나 쓸 여러 버퍼의 벡터를 받아들인다.
  • 이 분산 수집 방법은 여러 개의 개별 I/O 호출보다 우수하다.
    • 컨텍스트 전환 및 시스템 호출 오버헤드 감소
    • 일부 버전은 원자성을 제공한다.
      • 예를 들어 읽기/쓰기가 발생할 때 여러 스레드가 데이터를 변경하는 것에 대한 걱정을 방지한다.

Kernel I/O Subsystem

  • Scheduling
    • Some I/O request ordering via per-device queue
    • Some OSs try fairness
    • Some implement Quality Of Service (i.e. IPQOS)
  • Buffering - store data in memory while transferring between devices
    • To cope with device speed mismatch
    • To cope with device transfer size mismatch
    • To maintain “copy semantics”
    • Double buffering – two copies of the data
      • Kernel and user
      • Varying sizes
      • Full / being processed and not-full / being used
      • Copy-on-write can be used for efficiency in some cases
  • 스케줄링
    • 디바이스별 대기열을 통해 일부 I/O 요청 주문
    • 일부 OS는 공정성을 추구한다.
    • 일부는 서비스 품질(즉, IPQOS)을 구현한다.
  • 버퍼링 - 장치 간에 전송하는 동안 메모리에 데이터 저장
    • 장치 속도 불일치에 대처하기 위해
    • 장치 전송 크기 불일치를 해결하려면
    • "의미론 복사"를 유지하려면
    • 이중 버퍼링 – 데이터 복사본 2개
      • 커널 및 사용자
      • 다양한 크기
      • 전체/처리 중이며 전체/사용 중이 아님
      • 경우에 따라 쓰기 복사를 효율성을 위해 사용할 수 있다.

Device-status Table

Common PC and Data-center I/O devices and Interface Speeds

Kernel I/O Subsystem

  • Caching - faster device holding copy of data
    • Always just a copy
    • Key to performance
    • Sometimes combined with buffering
  • Spooling - hold output for a device
    • If device can serve only one request at a time
    • i.e., Printing
  • Device reservation - provides exclusive access to a device
    • System calls for allocation and de-allocation
    • Watch out for deadlock
  • 캐싱 - 데이터 복사본을 보관하는 더 빠른 장치
    • 항상 복사본일 뿐이다.
    • 성능의 핵심
    • 때때로 버퍼링과 결합된다.
  • 스풀링 - 장치의 출력 유지
    • 장치가 한 번에 하나의 요청만 처리할 수 있는 경우
    • 즉, 인쇄
  • 장치 예약 - 장치에 대한 독점 액세스를 제공한다.
    • 시스템에서 할당 및 할당 해제를 요청
    • 교착 상태를 조심해라.

Error Handling

  • OS can recover from disk read, device unavailable, transient write failures
    • Retry a read or write, for example
    • Some systems more advanced – Solaris FMA, AIX
      • Track error frequencies, stop using device with increasing frequency of retry-able errors
  • Most return an error number or code when I/O request fails
  • System error logs hold problem reports
  • OS가 디스크 읽기, 디바이스 사용 불가, 일시적 쓰기 오류로부터 복구 가능
    • 예를 들어 읽기 또는 쓰기 재시도
    • 일부 고급 시스템 – Solaris FMA, AIX
      • 오류 빈도 추적, 재시도 가능한 오류 빈도가 증가하는 장치 사용 중지
  • 대부분의 I/O 요청이 실패할 경우 오류 번호 또는 코드를 반환한다.
  • 시스템 오류 로그에 문제 보고서가 저장된다.

I/O Protection

  • User process may accidentally or purposefully attempt to disrupt normal operation via illegal I/O instructions
    • All I/O instructions defined to be privileged
    • I/O must be performed via system calls
      • Memory-mapped and I/O port memory locations must be protected too
  • 사용자 프로세스가 잘못된 I/O 지침을 통해 실수로 또는 의도적으로 정상 작동을 방해하려고 시도할 수 있다.
    • 권한이 부여되도록 정의된 모든 I/O 지침
    • 시스템 호출을 통해 I/O를 수행해야 함
      • 메모리 매핑 및 I/O 포트 메모리 위치도 보호해야 함

Use of a System Call to Perform I/O

Kernel Data Structures

  • Kernel keeps state info for I/O components, including open file tables, network connections, character device state
  • Many, many complex data structures to track buffers, memory allocation, “dirty” blocks
  • Some use object-oriented methods and message passing to implement I/O
    • Windows uses message passing
      • Message with I/O information passed from user mode into kernel
      • Message modified as it flows through to device driver and back to process
      • Pros / cons?

UNIX I/O Kernel Structure

Power Management

  • Not strictly domain of I/O, but much is I/O related
  • Computers and devices use electricity, generate heat, frequently require cooling
  • OSes can help manage and improve use
    • Cloud computing environments move virtual machines between servers
      • Can end up evacuating whole systems and shutting them down
  • Mobile computing has power management as first class OS aspect
  • I/O의 엄격한 영역은 아니지만 I/O와 관련된 부분이 많다.
  • 컴퓨터와 장치는 전기를 사용하고, 열을 발생시키며, 자주 냉각을 필요로 한다.
  • OS는 사용 관리 및 개선에 도움이 된다.
    • 클라우드 컴퓨팅 환경이 서버 간에 가상 머신 이동
      • 결국 전체 시스템을 제거하고 종료할 수 있음
  • 모바일 컴퓨팅에는 최고 수준의 OS 측면으로 전원 관리 기능이 있다.

  • For example, Android implements
    • Component-level power management
      • Understands relationship between components
      • Build device tree representing physical device topology
      • System bus -> I/O subsystem -> {flash, USB storage}
      • Device driver tracks state of device, whether in use
      • Unused component – turn it off
      • All devices in tree branch unused – turn off branch
    • Wake locks – like other locks but prevent sleep of device when lock is held
    • Power collapse – put a device into very deep sleep
      • Marginal power use
      • Only awake enough to respond to external stimuli (button press, incoming call)
  • Modern systems use advanced configuration and power interface (ACPI) firmware providing code that runs as routines called by kernel for device discovery, management, error and power management
  • 예를 들어, Android는
    • 구성 요소 수준의 전원 관리
      • 구성 요소 간의 관계 이해
      • 물리적 디바이스 토폴로지를 나타내는 디바이스 트리 빌드
      • 시스템 버스 -> I/O 하위 시스템 -> {flash, USB 스토리지}
      • 장치 드라이버는 사용 중인지 여부에 관계없이 장치의 상태를 추적한다.
      • 사용하지 않는 구성 요소 – 전원 끄기
      • 트리 분기의 모든 장치 사용 안 함 – 분기 끄기
    • 웨이크 잠금 – 다른 잠금 장치와 마찬가지로 작동하지만 잠금이 유지될 때 장치의 절전 모드를 방지한다.
    • 정전 – 기기를 매우 깊은 절전 모드로 전환
      • 한계 전력 사용량
      • 외부 자극(버튼 누르기, 걸려오는 전화)에 반응할 정도로만 깨어 있어야 한다.
  • 최신 시스템은 ACPI(고급 구성 및 전원 인터페이스) 펌웨어를 사용하여 장치 검색, 관리, 오류 및 전원 관리를 위해 커널에서 호출하는 루틴으로 실행되는 코드를 제공한다.

Kernel I/O System Summary

  • In summary, the I/O subsystem coordinates an extensive collection of services that are available to applications and to other parts of the kernel
    • Management of the name space for files and devices
    • Access control to files and devices
    • Operation control (for example, a modem cannot seek())
    • File-system space allocation
    • Device allocation
    • Buffering, caching, and spooling
    • I/O scheduling
    • Device-status monitoring, error handling, and failure recovery
    • Device-driver configuration and initialization
    • Power management of I/O devices
  • The upper levels of the I/O subsystem access devices via the uniform interface provided by the device drivers
  • 요약하면, I/O 하위 시스템은 애플리케이션과 커널의 다른 부분에서 사용할 수 있는 광범위한 서비스 모음을 조정한다.
    • 파일 및 장치의 이름 공간 관리
    • 파일 및 장치에 대한 액세스 제어
    • 작동 제어(예: 모뎀이 검색할 수 없음())
    • 파일 시스템 공간 할당
    • 장치 할당
    • 버퍼링, 캐싱 및 스풀링
    • I/O 스케줄링
    • 장치 상태 모니터링, 오류 처리 및 장애 복구
    • 장치 드라이버 구성 및 초기화
    • I/O 장치의 전원 관리
  • 장치 드라이버에서 제공하는 균일한 인터페이스를 통해 I/O 하위 시스템 액세스 장치의 상위 레벨

Transforming I/O Requests to Hardware Operations

  • Consider reading a file from disk for a process:
    • Determine device holding file
    • Translate name to device representation
    • Physically read data from disk into buffer
    • Make data available to requesting process
    • Return control to process
  • 프로세스를 위해 디스크에서 파일 읽기를 고려해 보십시오.
    • 장치 보유 파일 결정
    • 이름을 장치 표현으로 변환
    • 디스크에서 버퍼로 물리적으로 데이터 읽기
    • 요청 프로세스에 데이터 사용 가능
    • 프로세스에 대한 제어 권한 반환

Life Cycle of An I/O Request

STREAMS

  • STREAM – a full-duplex communication channel between a user-level process and a device in Unix System V and beyond
  • A STREAM consists of:
    • STREAM head interfaces with the user process
    • driver end interfaces with the device
    • zero or more STREAM modules between them
  • Each module contains a read queue and a write queue
  • Message passing is used to communicate between queues
    • Flow control option to indicate available or busy
  • Asynchronous internally, synchronous where user process communicates with stream head
  • STREAM – 사용자 레벨 프로세스와 Unix System V 및 그 이후의 장치 간의 전이중 통신 채널
  • 스트림은 다음으로 구성된다.
    • 사용자 프로세스와의 STREAM 헤드 인터페이스
    • 장치와의 드라이버 끝 인터페이스
    • 0개 이상의 스트림 모듈 사이
  • 각 모듈에는 읽기 대기열과 쓰기 대기열이 있다.
  • 메시지 전달은 대기열 간 통신에 사용된다.
    • 사용 가능 여부를 나타내는 흐름 제어 옵션
  • 사용자 프로세스가 스트림 헤드와 통신하는 내부 비동기식, 동기식

The STREAMS Sturcture

Performance

  • I/O a major factor in system performance:
    • Demands CPU to execute device driver, kernel I/O code
    • Context switches due to interrupts
    • Data copying
    • Network traffic especially stressful
  • I/O는 시스템 성능의 주요 요소입니다.
    • CPU가 디바이스 드라이버, 커널 I/O 코드를 실행하도록 요구한다.
    • 인터럽트로 인한 컨텍스트 전환
    • 데이터 복사
    • 특히 스트레스가 많은 네트워크 트래픽

Intercomputer Communications

Improving Performance

  • Reduce number of context switches
  • Reduce data copying
  • Reduce interrupts by using large transfers, smart controllers, polling
  • Use DMA
  • Use smarter hardware devices
  • Balance CPU, memory, bus, and I/O performance for highest throughput
  • Move user-mode processes / daemons to kernel threads
  • 컨텍스트 스위치 수 감소
  • 데이터 복사 감소
  • 대용량 전송, 스마트 컨트롤러, 폴링을 사용하여 인터럽트 감소
  • DMA 사용
  • 더 스마트한 하드웨어 장치 사용
  • 최고의 처리량을 위해 CPU, 메모리, 버스 및 I/O 성능 균형 조정
  • 사용자 모드 프로세스/데몬을 커널 스레드로 이동

Device-Functionality Progression

I/O Performance of Storage (and Network Latency)

profile
아주대학교 수업 기록

0개의 댓글