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
- Read busy bit from status register until 0
- Host sets read or write bit and if write copies data into data-out register
- Host sets command-ready bit
- Controller sets busy bit, executes transfer
- 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의 각 바이트에 대해
- 상태 레지스터에서 사용 중인 비트를 0까지 읽는다.
- 호스트가 읽기 또는 쓰기 비트를 설정하고 쓰기가 데이터를 데이터 출력 레지스터에 복사하는 경우
- 호스트가 명령 준비 비트를 설정한다.
- 컨트롤러가 사용 중인 비트를 설정하고 전송을 실행한다.
- 전송이 완료되면 컨트롤러가 사용 중인 비트, 오류 비트, 명령 준비 비트를 지운다.
- 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
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 포트 메모리 위치도 보호해야 함
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 하위 시스템 액세스 장치의 상위 레벨
- 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
- 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
- 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