Dolphins의 HelloWorld
폴링과 인터럽트 본문
폴링(polling)
폴링 방식은 CPU가 직접 입출력 장치에서 데이터를 가져오거나 내보내는 방식이다.
이 때 CPU는 입출력 장치의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 데이터를 처리하며
CPU가 명령어 해석과 실행이라는 본래 역할 외에 모든 입출력까지 관여해야 하기 때문에 작업 효율은
떨어진다.
인터럽트(Interrupt)
인터럽트 방식은 입출력 장치가 자신들이 필요할 때마다 CPU에게 인터럽트 신호를 전송하여 그 때 그 때 사용하는
방식이다. 이는 CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 시스템의 효율을 높일 수 있다.
또한 데이터의 입출력이 이루어지는 동안 CPU가 다른 작업을 할 수 있다.
다시 정리해보면 인터럽트는 주변장치의 입출력 요구나 하드웨어의 이상 현상을 CPU에 알려주는 역할을 하는
신호이고 각 장치에는 IRQ라는 고유의 인터럽트 번호가 부여되어 있다.
인터럽트가 발생하면 CPU는 IRQ를 보고 어떤 장치에서 인터럽트가 발생했는지 파악하게 된다.
인터럽트의 종류로는 3가지가 있는데 먼저 입출력장치로부터 오는 인터럽트 뿐만 아니라 전원 이상이나
기계적인 오류 때문에 발생하는 인터럽트를 포함하는 외부 인터럽트
두번째로 프로세스의 잘못이나 예상치 못한 문제 때문에 발생하는 내부 인터럽트
마지막으로 사용자가 직접 발생시키는 인터럽트인 시그널이 있다.
인터럽트가 발생했을 때의 동작을 간단하게 정리하자면
1. 인터럽트가 발생할 때 현재 CPU의 각종 레지스터와 상태를 저장해야한다. CPU는 수행하던 프로그램을 중지하고
인터럽트 신호에 맞는 일을 한 후 다시 원래 프로그램으로 돌아가야 하며 이를 위해 인터럽트가 발생하는 순간
CPU의 정보를 스택에 저장해야 한다.
2. 인터럽트 핸틀링을 위해 ISR(Interrupt Service Routine)을 수행한다.
3. 다시 원래 수행하던 프로그램으로 돌아가 정상적으로 동작하도록 한다.
'전공지식 정리 > 운영체제와 컴퓨터구조' 카테고리의 다른 글
캐싱, 버퍼링 (0) | 2019.07.30 |
---|---|
커널이란? (0) | 2019.07.30 |
운영체제의 유형별 특징 (0) | 2019.07.26 |
폰노이만 구조 (0) | 2019.07.26 |
p2p시스템과 클라이언트 서버 방식 (0) | 2019.07.26 |