Device drivers 장치는 세부 정보를 캡슐화한다 → I/O 하위 시스템에 균일한 장치 엑세스 인터페이스를 제공한다.
컴퓨터 시스템은 I/O 디바이스와 CPU를 동시에 실행한다.
CPU <> Memory : Read,Write
CPU<> I/O Input, Output
H/W register
레지스터 : 회로 안에 있는 아주 작은 저장공간
- 명령어 레지스터
- 상태 레지스터
- 데이터 레지스터(buffer) : 일반 데이터가 저장되는 레지스터
system bus
컴퓨터의 구성요소를 서로 연결하고 데이터를 전달하는 데에 사용하는 경로이다.
- 주소버스
- 메모리의 주소나 I/O Unit의 포트번호 전달
- 데이터버스
- 데이터 전달
- 제어버스
- 제어 신호 전달
(1) CPU ↔ Memory : Load and Store
(2) CPU ↔ I/O Unit : Input and Output, interrupt
(3) Memory ↔ I/O Unit : CPU를 이용하지 않고 DMA를 통해 직접 통신한다.
I/O 메모리 매핑하는 방식 두가지
- Memory mapped I/O
- 모두 메모리 영역
- 메모리의 일부 주소를 메모리로 사용하지 않고 I/O에 할당한다.
- I/O 주소와 메모리주소가 오버랩되지 않는다.
- 하드웨어 구성이 간단하지만 주소나 데이터버스를 많이 사용하게 된다.
- I/O-mapped I/O
- I/O를 별도 주소에 할당한다.
- 메모리에 대한 접근과 I/O에 대한 접근이 다른 것으로 간주된다
- 입출력 요청인지 메모리접근요청인지에 대한 line이 하나 더 필요하다
- 오버랩O 별도의 회로설계가 필요하여 하드웨어 구성이 복잡
polling
- 여론조사! 계속해서 물어보는 것이다.
- data register가 비어야 busybit 이 바뀐다.(1→0)
- 나노단위로 물어보고 가끔 ready 상태가 됨 → 비효율적임
Interrupts handling ISR vs interrupt handler
- I/O 인터럽트 : I/O 디바이스가 CPU한테 작업이 끝났음을 알림 제어신호를 통해 인터럽트 요청을 보내 CPU에게 입출력 작업을 요청
→ CPU는 작업을 잠시 멈춤
→Interrupt service routine
→ Interrupt handler
인터럽트 요청 : 입출력 준비를 마친 I/O Unit이 CPU에 입출력 작업의 시작을 요청
인터럽트 확인 : CPU가 입출력 동작을 수행할 것을 입출력 장치에 통보
Interrupt Service Routine(ISR)
디바이스가 많고 라인은 하나임
이번에 인터럽트 요청한 입출력 장치를 찾는 것
Interrupt handler
디바이스마다 핸들러가 있다.
DMA (메모리 직접 접근)구조
- Block transfer : 대용량의 데이터를 블록 단위로 전송한다.
- DMA Controller(하드웨어 자원)가 필요하다
- 입출력장치와 메모리가 CPU를 사용하지 않고 직접 데이터를 교환할 수 있도록 하는 구조
- 블럭 단위로 한번씩 interrupt 한다.
- DMA 제어기는 CPU를 대신하여 주소 버스와 제어 버스에 신호를 전달
- DMA 제어기는 통신 시작 전 CPU에 버스 사용에 대한 허가를 받아야 한다.
입출력 모델
- Blocking I/O vs Nonblocking I/O
- I/O가 끝날 때 까지 기다리냐 안기다리냐
- Synchronous vs Asynchronous I/O
- 작업이 순차적으로 처리되는 것을 보장하는지 아닌
→ Synchronous Blocking과 Asynchronous Non-blocking이 가장 빈번하게 발생한다.
시스템 콜이 I/O 어떻게 동작시키는지
- 유저 프로그램이 운영체제에 입출력 동작을 요청한다
- system call을 호출하여 trap(s/w intterupt, 모드 전)을 발생시킨다.
- 운영체제에서 입출력을 처리한다.
- 시스템콜에 의해 흐름제어가 입출력을 호출한 프로세스로 돌아간다.
usermode → mode bit 1 / kernel mode → mode bit 0
'CS지식 > 운영체제' 카테고리의 다른 글
운영체제 : File-System (0) | 2023.09.23 |
---|---|
운영체제 : Mass-Storage Interface (0) | 2023.09.23 |
운영체제 : 가상 메모리 (Virtual Memory) (0) | 2023.09.23 |
운영체제 : Main Memory (0) | 2023.09.23 |
운영체제 : Deadlocks (1) | 2023.09.23 |