seo78200.log
로그인
seo78200.log
로그인
OS - I/O Systems
Bomin Seo
·
2022년 8월 8일
팔로우
0
운영체제
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
Bomin Seo
KHU, SWCON
팔로우
이전 포스트
OS - Mass-Storage Structure
다음 포스트
OS - File System Interface
0개의 댓글
댓글 작성