일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Java
- 자료구조
- 운영체제
- C
- Heap
- JPA
- 자바
- design pattern
- react
- 네트워크
- Galera Cluster
- 백준
- 디자인 패턴
- MSA
- 컴퓨터구조
- spring webflux
- JavaScript
- OS
- Proxy
- Algorithm
- Kafka
- 알고리즘
- 파이썬
- mongoDB
- redis
- Data Structure
- IT
- Spring
- c언어
- MySQL
Archives
- Today
- Total
시냅스
입출력 시스템, I/O System 본문
입출력 시스템, I/O System
- Web, File 수정, Youtube 시청, game 등 컴퓨터는 입출력 작업을 주로 한다.
- PCI 버스로 모든 Device 와 연결한다.
메모리 맵드 입출력 Memory-mapped I/O
- 모든 컨트롤러는 레지스터(제어용 또는 데이터용)를 가지고 있고, 레지스터를 프로세서의 주소 공간으로 사상한다.
- CPU는 물리 메모리에 사상된 장치-제어 레지스터를 읽고 쓸 때 표준 데이터 전송 명령을 사용함으로써 입출력 요청을 수행하게 된다.
- 입출력 장치 컨트롤러는 보통 4개의 레지스터로 구성되어 있다.
- 입력 레지스터 : 입력을 얻기 위해 읽기를 수행한다.
- 출력 레지스터 : 출력하기 위해 쓰기를 수행한다.
- 상태 레지스터 : 현재 명령이 완료되었는지, 입력 레지스터로부터 한 바이트를 읽어도 되는지, 오류가 있었는지 등을 알려준다.
- 제어 레지스터 : 주변 장치에 입출력 명령을 내리거나 장치의 모드를 변경하기 위해 쓰기를 수행하는 대상이다.
I/O type
Polling (Busy wait)
- busy bit를 통해 자신의 상태를 나타낸다.
- bit가 소거(비트를 설정 -> 1 비트를 소거 -> 0) 될 때 까지 상태 레지스터를 읽는다.
interrupts
- wait - signal -> cpu 받음 -> 인터럽트 핸들러가 처리 -> 재개
- 인터럽트 기법은 보통 주소라고 하는 정수를 통해 인터럽트 벡터 테이블의 오프셋으로 사용한다.
DMA
- CPU 대신 자신이 직접 버스를 통해 DMA 명령 블록을 액세스하여 입출력을 수행한다.
- 장치 드라이버가 Drive2데이터를 주소 "x"에 있는 버퍼로 전송하라고 지시받는다.
- 장치 드라이버가 드라이브 컨트롤러에게 "c" 바이트를 주소 "x"에 있는 버퍼로 전송하라고 지시한다.
- 드라이브 컨트롤러가 DMA 전송을 시작한다.
- DMA 컨트롤러가 바이트를 "x"로 전송한다.
- c=0이 되면 DMA는 전송 완료를 알리기 위해 CPU에게 인터럽트를 건다.
Blocking vs Nonblocking vs Async
- Synchronous
- 작업 요청을 했을 때 요청의 결과값을 직접 받는 것이다.
- 호출한 함수가 작업 완료를 신경 쓴다.
- Asynchronous
- 작업 요청을 했을 때 요청의 결과값을 간접적으로 받는 것이다.
- 요청의 결과값과 return 값이 다를 수 있다.
- 호출된 함수(callback 함수)가 작업 완료를 신경쓴다.
- e.g. 이메일로 물어보고 메일 송신을 완료(return)했지만 답은 언제 올지 모른다.
- blocking
- 요청한 작업을 마칠 때까지 계속 대기한다.
- return 값을 받아야 끝난다.
- 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하게 만드는 것.
- e.g. 전화를 받을 때까지 계속 대기 후 답을 얻는다.
- non-blocking
- 요청한 작업을 즉시 마칠 수 없다면 바로 return한다.
- 결과가 완료 되었는지 지속적으로 확인한다.
- 호출된 함수가 바로 return해서 호출한 함수에게 제어권을 넘겨주고 호출한 함수가 다른 일을 할 수 있게 기회를 주는 것.
- e.g. 전화를 했는데 받지 않아서 계속 반복 전화하다가 어느 순간 받아서 답을 얻는다.
'운영체제' 카테고리의 다른 글
파일 시스템 구현, Implementing File-Systems (0) | 2022.07.03 |
---|---|
파일 시스템 인터페이스, File-System Interface (0) | 2022.06.16 |
대용량 저장장치 구조, Mass-Storage Structure (0) | 2022.06.06 |
가상 메모리, Virtual Memory (0) | 2022.05.24 |
페이징과 스와핑, Main Memory (0) | 2022.05.20 |
Comments