[개념정리/운영체제] CPU와 인터럽트
CPU
CPU란 산술 논리 연산 장치, 제어 장치, 레지스터로 구성되어 있는 장치이다.
인터럽트에 의해 메모리에 존재하는 명령어를 해석하여 실행하는 일꾼이다.
산술 논리 연산 장치
산술 논리 연산 장치는 ALU(Artihmetic and Logical Unit)라고도 하며,
덧셈, 뺄셈, 나눗셈 등 산술연산과 논리연산을 수행하는 장치다.
제어 장치
제어 장치(control unit, CU)는 프로세스의 조작을 지시하며,
명령어들을 읽고 해석하여 데이터 처리 순서를 결정한다.
레지스터
CPU 안에 있는 작고 매우 빠른 임시 기억 장치
CPU의 처리 과정은 아래와 같이 정리할 수 있다.
- 제어장치가 메모리에 있던 일을 레지스터에 올림
- 제어장치가 ALU에게 레지스터에 있는 값을 읽고 계산하라고 명령
- 제어장치가 레지스터에게 레지스터에 있는 일을 메모리로 옮기라고 명령
인터럽트(interrupt)
인터럽트란 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것을 말하며,
산술 연산 오류 (e.g., 0으로 숫자를 나누기), 프로세스 오류 등에 의해서도 발생한다.
오류 뿐만 아니라, 키보드, 마우스 등 IO 디바이스를 사용하는 경우,
또는 우선순위가 높은 프로세스의 발생에 의해서도 발생한다.
CPU는 메모리에 있는 명령어(instruction)을 순차적으로 실행하는데,
인터럽트가 발생되면
점프하여 인터럽트 핸들러 함수가 모여 있는 인터럽트 벡터로 가
인터럽트 핸들러 함수(ISR, Interrupt Service Routine)가 실행되어 특정 명령어를 실행한다.
이후 인터럽트가 종료되면 다시 순차적으로 작업이 실행된다.
종류
하드웨어 인터럽트
IO 디바이스 등 하드웨어에서 발생하는 인터럽트이다.
예를 들어, 마우스를 기반으로 버튼을 클릭할 때,
혹은 디스크에서 파일 읽기/쓰기 작업이 완료되었을 때 발동한다.
소프트웨어 인터럽트
트랩(trap)이라고도 한다.
프로세스 오류, 프로세스의 종료/시작 등을 기반으로
프로세스에서 발생하는 인터럽트이다.
하드웨어 인터럽트보다 우선순위가 높다.
참고: inflearn 강의 'CS 지식의 정석 - 큰돌'