개요
대부분의 입력 및 출력 장치는 CPU보다 훨씬 느리다. 너무 느리기 때문에 입력 장치를 기다리게 만드는 것은 CPU를 낭비하는 것이다.
예를 들어, 키보드로 입력할 수 있는 속도와 CPU가 명령을 실행할 수 있는 속도를 비교해보자.
매우 빠른 타이피스트라도 초당 10자 이상입력할 수 없는 반면, 최신 CPU는 초당 20개 이상의 명령을 실행할 수 있다.
인터럽트
마이크로프로세서(CPU)에서 인터럽트(interrupt), 끼어듦, 또는 가로막기란?
마이크로프로세서가 프로그램을 실행하고 있을 때,
입출력하드웨어 등의 장치에서 예외상황이 발생하여 처리가 필요할 경우 마이크로프로세서에게 알려 처리할 수 있도록하는 것을 말한다.
예를 들어 농구선수는 차례로 슛을 날리고, 두 번째 사람은 홀 아래에서 시계를 지켜보고 있는다.
시계가 1분에 도달하면 시계를 보고 있는 사람이 농구선수에게 소리쳐 알려주도록한다.
이를 통해 농구선수는 폴링에 비해 더 많은 자유투를 시도할 수 있지만 시계를 볼 사람이 필요하다.
유사하게, CPU는 입력 디바이스들을 확인하지 않고 태스크에서 연속적으로 동작할 수 있어 디바이스들 자체가 필요에 따라 이를 인터럽트 할 수 있다.
폴링
하나의 장치(또는 프로그램)가 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치(또는 프로그램)의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식을 말한다.
예를 들어 농구선수가 체육관에서 1분안에 가능한 한 많은 자유투를 시도하도록 요청을 받았는데,
시계를 라커룸에 배치할 시
농구선수는 라커룸에서 시간이 지났는지를 확인 (장치의 레지스터를 읽음) 하고, 그렇지 않은 경우 체육관으로 돌아가서 자유투를 시도하고 또 라커룸에 돌아가 시간을 확인하고 다시 체육관으로 와서 자유투를 던지는 방식과 유사하다.
하여 농구선수는 시계를 확인하는 데 더 많은 시간을 보내게 된다.
(시계를 확인하는 것은 장치의 상태를 파악하는 시간이 되는 것이고 마이크로프로세서의 자원이 낭비된다.)
이 방식은 주로 버스, 멀티포인트 형태와 같이 여러 개의 장치가 동일회선을 사용하는 상황에서 주로 사용된다.
서버의 제어장치(또는 프로그램)는 순차적으로 각 단말 장치(또는 프로그램)에 회선을 사용하기 원하는지를 물어본다.
참고 자료 :
https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8
https://ko.wikipedia.org/wiki/%ED%8F%B4%EB%A7%81_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)
https://cs.calvin.edu/activities/books/rit/chapter2/design/hardware/io/interrupts.htm
'OS' 카테고리의 다른 글
load average (1) | 2023.10.25 |
---|