CPU란?
- CPU는 제어장치, 레지스터, 산술논리연산장치로 구성되어 있는 컴퓨터 장치를 말하며 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석하는 일꾼.
* 제어장치(CU: Control Unit) : 프로세스 조작을 지시하는 CPU의 한 부품
* 레지스터 : 레지스터는 CPU내부의 매우 빠른 임시기억장치를 가르킴. CPU와 직접 연결되어 있어 연산속도가 메모리보다 수십~수백배 빠름. CPU는 자체적 데이터 저장방법이 없으므로, 레지스터 거쳐 데이터 전달
* 산술논리연산장치 : 덧셈, 뺄셈 등 두 숫자의 산술연산과 베타적 논리합, 논리곱은 논리연산을 계산하는 디지털 회로
인터럽트
- 컨트롤러가 장치드라이버에게 작업이 완료됐다는 것을 알리고, CPU에게 이를 처리시키기 위해 CPU를 중지 시키는 것
- 어떤 신호가 들어왔을 때 CPU를 잠시 정지시킴. request_inq()를 통해 인터럽트 핸들러 함수를 등록.
- 인터럽트 종류
* 하드웨어 인터럽트 : 키보드, 마우스 연결등 IO디바이스에서 발생시키는 인터럽트. 운영체제에 시스템콜을 요청(sys.in, sys.out)
* 소프트웨어 인터럽트 : 트랩(trap)이라고 하며 프로세스 오류등으로 프로세스가 시스템콜을 호출할 때 사용(인텔 처리기)
- 인터럽트가 되면 CPU는 하던일을 멈추고 '서비스루틴'을 실행. 끝난후 연산 재개
- 동작과정 (키보드 예시)
(1) 키보드 입력 완료시 인터럽트 신호 발생
(2) CPU에서 인터럽트 전달 받고 CPU 주도권을 인터럽트 핸들러에게 넘김
(3) 인터럽트 핸들러가 데이터 처리
(4) CPU는 인터럽트로 중단된 원래 작업 재개
OS와의 비교
CPU연산과정
1. 메모리에 계산할 값 로드
2. 메모리는 레지스터에 로드
3. 제어장치에서 산술논리연산장치에 레지스트에 값을 계산하라고 명령
4. 계산된 값을 다시 레지스터에서 메모리로 옮김