[동기식 입출력과 비동기식 입출력]
동기식 입출력(Synchronous I/O)
I/O장치까지 직접가서 결과를 보고 온다.
- 보고온 일을 실행하는 것(Sync-read)
- 보고온 일을 실제 적어보고 실행(Sync-write)
I/O요청 후 입출력 작업시 완료된 후에야 제어가 사용자 프로그램에 넘어간다. → 봉쇄상태(Blocked state)
👉 CPU낭비가 있다.
입출력 요청의 동기화를 위해 장치별로 큐(queue)를 두어 요청 순서대로 처리된다.
비동기식 입출력(Asynchronous I/O)
I/O가 시작된 후, 입출력 작업이 끝나기를 가디리지 않고 제어가 사용자 프로그램에 즉시 넘어간다.
[DMA(Direct Memory Access)]
메모리 직접 접근이 가능하다.
CPU에 너무 많은 interrupt 방지한다.
컨트롤러가 CPU에게 인터럽트를 발생시키면 CPU는 컨트롤러의 로컬 버퍼와 메모리 사이에 데이터를 옮겨주는 일을 한다.
모든 메모리 접근 연산이 CPU에서 의해서만 이뤄질 경우 CPU의 업무가 방해 받아 효율성이 떨어지는 문제점이 발생한다.
이러한 비효율성을 극복하기 위해 CPU이외에 메모리 접근이 가능한 장치를 하나 더 두는 겅우가 많은데 이와 같은 장치를 DMA라 한다.
DMA는 로컬 버퍼에서 메모리로 읽어오는 작업을 진행한 후 CPU에게 인터럽트를 발생시켜 해당 작업의 완료를 알려준다.
DMA는 바이트 단위가 아니라 블록이라는 큰 단위로 정보를 메모리로 읽어 온다.
이런 방식으로 CPU에 발생하는 인터럽트의 빈도를 줄여 CPU의 효율성을 높일 수 있게 된다.
[참조]core.ewha.ac.kr/publicview/C0101020140314151238067290?vmode=f
'운영체제' 카테고리의 다른 글
[OS] 쓰레드와 멀티쓰레드 (0) | 2022.08.29 |
---|---|
[OS]시스템구조 - 컴퓨터 계층구조 (0) | 2020.11.22 |
[OS]인터럽트(Interrupt) (0) | 2020.11.17 |
[OS]시스템구조 (0) | 2020.11.15 |
[OS]운영체제 시스템 소개 (0) | 2020.11.14 |