[CS] 동기식 입출력과 비동기식 입출력에 대한 나름의 이해

2023. 10. 17. 23:43CS

동기식 입출력은 유저 프로세스가 입출력 결과를 받고 나서 그다음 할일을 수행하는 방식이다.

비동기식 입출력은 유저 프로세스가 입출력 요청만 주고 다음 할일을 수행하다가 입출력 결과를 받는 식이다.

동기식 입출력의 구현 방식은 두 가지인데 하나는 CPU가 입출력 작업이 끝날때 까지 기다리는 것이다. 하지만 이렇게 되면 CPU가 낭비가 된다. 또한 매시점 하나의 입출력만 가능하므로 I/O 관점에서도 손해이다. (이건 솔직히 이해가 잘안된다)

두 번째는 CPU가 입출력 작업이 진행중인 프로세스는 넘기는 것이다. 이렇게 되면 CPU가 낭비되지 않고 여러개의 입출력도 가능해진다. 왜냐하면 다른 프로세스도 입출력 요청을 하면 역시 CPU 권한이 뺏기기 떄문이다.

비동기식 입출력은 입출력이 끝나길 기다리지 않고 즉시 유저 프로세스에게 제어가 넘어간다.

 

Reference


https://core.ewha.ac.kr/publicview/C0101020140314151238067290?vmode=f