seo78200.log
로그인
seo78200.log
로그인
OS - I/O Systems
Bomin Seo
·
2022년 8월 8일
팔로우
0
운영체제
0
I/O Operation
I/O Method
I/O Device Controller (host adapter)
Goals of I/O Software
Interrupt handlers
Buffering
Spooling
I/O Systems Layers
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개의 댓글
댓글 작성
관련 채용 정보
더즌(dozn)
시스템개발2팀 백엔드(JAVA) 개발자
더즌은 고객의 다양한 니즈를 충족시키는 Total B2B Service Provider로, 펌뱅킹, 가상계좌 등 결제 서비스를 제공합니다. Java, Spring Framework에 기반한 API 개발 업무와 함께 더즌만의 특별한 복지를 경험해보세요!
바이오리서치에이아이
웹 백엔드 엔지니어 (신입가능)
제약바이오 분야의 혁신을 이끄는 바이오리서치에이아이에서, 자연어 처리 기술을 활용한 글로벌 웹 서비스 개발에 참여할 웹 백엔드 엔지니어를 찾습니다. Spring Framework, Kotlin, Java에 대한 이해가 필요하며, 빠르게 성장하는 스타트업 환경에서 역동적인 커뮤니케이션을 경험할 수 있습니다.
아정네트웍스
[아정당] 백엔드 개발자 (2년이상)
대국민 소확행 실현하는 아정당에서 CRM 및 플랫폼 개발에 참여해보세요! 매출 3배 성장의 로켓과 함께 최고의 복지와 성장을 누릴 기회를 놓치지 마세요!