728x90
반응형
출처 : https://www.youtube.com/watch?v=CtOggyroUeA&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=43
이번 시간에는 I/O Mechanism과 I/O Service를 알아본다.
I/O Mechanism은 프로세서와 device가 서로 어떻게 데이터를 주고 받는지에 대한 메커니즘을 배운다.
I/O service는 운영체제가 입출력을 어떻게 효율적으로 동작시켜서 성능을 향상시킬 수 있는가를 배운다.
I/O System (HW)
- 프로세서가 필요한 정보를 요청하면 입출력 장치가 데이터를 읽거나 전송하는 것을 Input, Output이라고 한다.
- 입출력 장치는 메인 메모리에 있는 데이터를 출력하거나 아니면 메인 메모리에 요청받은 데이터를 적재한다.
- 프로세서는 메인 메모리에 있는 데이터를 사용하거나 메인 메모리에 요청 메시지를 담는다.
- 즉, 필요한 데이터는 메인 메모리에 적재되어야 한다.
I/O Mechanisms
프로세서와 입출력 장치 사이에 데이터를 주고받는 방식은 2가지가 존재한다.
- Processor controlled memory access : 프로세서가 제어하는 메모리 접근 (프로세서가 관리)
- Polling (Programmed I/O)
- Interrupt
- Direct Memory Access (DMA) : 프로세서가 관리하지 않음
Processor controlled memory access - Polling (Programmed I/O)
- Processor가 주기적으로 I/O 장치의 상태 확인
- 모든 I/O 장치를 순환하면 확인
- 전송 준비 및 전송 상태 등
- 장점
- 간단함. 프로세서(cpu)가 I/O 장치를 순환하면서 주고받을 I/O data가 있으면 주고받고, 아니면 넘어가면 됨
- I/O 장치가 빠르고, 데이터 전송이 잦은 경우 효율적
- 단점
- Processor의 부담이 큼
- Polling overhead (I/O device가 느린 경우)
- Processor의 부담이 큼
Processor controlled memory access - Interrupt
- I/O 장치가 작업을 완료한 후, 자신의 상태를 Processor에게 전달
- Interrupt 발생 시, Processor는 데이터 전송 수행
- 장점
- Pooling 대비 low overhead
- 불규칙적인 요청 처리에 적합
- 단점
- Interrupt handling overhead (인터럽트가 계속 발생할 때 생기는 overhead)
작업 관리자에서 인터럽트 요청을 볼 수 있다.
Direct Memory Access (DMA)
- Processor controlled memory access 방법
- 프로세서가 모든 데이터 전송을 처리해야 함
- High overhead for the processor. 프로세서에게 고정적으로 해야할 일이 할당되어있어서 overhead가 큼
- 프로세서가 모든 데이터 전송을 처리해야 함
- Direct Memory Access
- I/O 장치와 메모리 사이의 데이터 전송을 프로세서 개입 없이 수행 -> 프로세서의 overhead 감소
- Processor는 데이터 전송의 시작 / 종료만 관여 -> Processor의 overhead 감소
- 프로세서가 전송 방향, 전송 바이트 수, 데이터 블록의 메모리 주소 등을 DMA 제어기에 보낸다.(직접 I/O 장치에게 명령을 내리지 않음, DMA 제어기에게 보냄)
- DMA 제어기는 디스크 제어기에게 데이터를 메인 메모리로 전송하라고 요청한다.
- 디스크 제어기가 메인 메모리에 데이터를 전송한다.
- 데이터 전송을 완료하면 디스크 제어기는 DMA 제어기에 완료 메시지를 전달한다.
- DMA 제어기가 프로세서에 인터럽트 신호(작업을 완료했음)를 보낸다.
다음은 I/O Service of OS. 즉, OS가 I/O 성능을 높이기 위해 어떤 서포트를 해줄 수 있는지에 대해 알아본다.
I/O Services of OS
커널 아래의 커널 입출력 서브시스템이 I/O service를 제공한다. 이 I/O service는 무엇이 있는지 알아보자.
I/O Services of OS
- I/O Scheduling
- 여러 입출력 장치로부터 입력이 들어올 때, 입출력 요청들에 대한 처리 순서 결정
- 시스템의 전반적 성능 향상
- Process의 요구에 대한 공평한 처리
- Disk I/O scheduling 등
- 여러 입출력 장치로부터 입력이 들어올 때, 입출력 요청들에 대한 처리 순서 결정
- Error handling
- 입출력 중 발생하는 오류 처리
- disk access fail, network communication error 등
- I/O device information managements. OS는 I/O device에 대한 정보를 관리해준다.
- Buffering
- I/O 장치와 Program 사이에 전송되는 데이터를 Buffer에 임시 저장
- 입출력 장치가 1초에 100개의 데이터를 전송하고 디스크가 1초에 10개의 데이터를 저장할 수 있다고 해보자. 그러면 매초 90개의 데이터가 유실이 되버릴 것이다. 이를 방지하고자, 임시로 데이터들을 저장할 수 있는 공간을 만들었는데 이것이 buffer이다.
- 전송 속도 (or 처리 단위) 차이 문제 해결하기 위한 기법을 buffering이라고 한다.
- Caching
- 자주 사용하는 데이터를 미리 복사해 둠
- Cache hit 시 I/O를 생략할 수 있음
- Spooling
- 한 I/O 장치에 여러 program이 요청을 보낼 시, 출력이 섞이지 않도록 하는 기법 (프린터에 여러 문서를 출력하게 만들 때를 생각하면 이해하기 쉬움)
- 각 Program에 대응하는 disk file에 기록 (spooling). 기록된 파일을 spool이라고 함
- Spooling이 완료되면, spool을 한 번에 하나씩 I/O 장치로 전송
- 한 I/O 장치에 여러 program이 요청을 보낼 시, 출력이 섞이지 않도록 하는 기법 (프린터에 여러 문서를 출력하게 만들 때를 생각하면 이해하기 쉬움)
728x90
반응형
'Study > 운영체제' 카테고리의 다른 글
운영체제 12. 입출력 시스템 & 디스크 관리 (3) - RAID Architecture (0) | 2023.12.10 |
---|---|
운영체제 12. 입출력 시스템 & 디스크 관리 (2) - Disk Scheduling (1) | 2023.12.10 |
운영체제 11. 파일 시스템 (5) - File System Implementation (1) | 2023.12.09 |
운영체제 11. 파일 시스템 (4) - File Protection (0) | 2023.12.09 |
운영체제 11. 파일 시스템 (3) - Directory Structure (0) | 2023.12.08 |