SSAFY CS 스터디: 이취컴 Chapter 2-3 정리
Chapter 02 컴퓨터 구조 - 3 CPU
p.66~89
레지스터
CPU 안에 있는 임시 저장장치
프로그램 카운터 (PC)
메모리에서 다음으로 읽어들일 명령어 주소를 저장하는 레지스터
일반적으로 1씩 증가하여, 프로그램을 순차적으로 읽어들이게 된다.
조건문이나 리턴문을 만나면, 비순차적으로 임의의 값이 되기도 한다.
IP라고 부르기도 해용
PC를 명령어 포인터(Instruction Pointer)라고 부르는 CPU도 있다(!)
명령어 레지스터
메모리에서 방금 읽어들인 명령어를 저장하는 레지스터
CPU의 제어장치가 이곳의 명령어를 해석해서 ALU로 연산할지 다른 부품으로 제어 신호를 보낼지 결정
범용 레지스터
다양하고 일반적으로 사용할 수 있는 레지스터
데이터, 명령어, 주소 저장 가능
플래그 레지스터
연산 결과 또는 CPU 상태 관련 플래그를 저장하는 레지스터
플래그: 명령어 처리 과정에서 반드시 참조해야 할 상태 정보를 의미하는 비트
- 부호 플래그: 연산 결과의 부호. 1이면 음수
- 제로 플래그: 연산 결과가 0인지의 여부. 1이면 0
- 캐리 플래그: 연산 결과에 올림, 빌림수 발생 여부. 1이면 발생
- 오버플로우 플래그: 오버플로우 발생 여부. 1이면 발생
- 인터럽트 플래그: 인터럽트 가능 여부. 1이면 가능
- 슈퍼바이저 플래그: 커널 모드/사용자 모드 여부. 1이면 커널 모드
스택 포인터
메모리 내 스택 영역의 최상단 주소를 가리키는 레지스터
인터럽트
CPU의 작업을 방해하는 신호
인터럽트는 임의로 발생시키거나, 잘못된 프로그램으로 발생하기도 한다.
효율적인 입출력을 위해 사용되기도 한다.
폴링: 작업 완료 여부를 주기적으로 계속 확인하는 방법. 인터럽트와 대비되는 개념.
1️⃣ 동기 인터럽트
- CPU에 의해 발생하는 인터럽트
- 프로그램 오류와 같은 예외적인 상황에서 발생 👉 예외라고 도 부르는 이유
- 폴트, 트랩, 중단, 소프트웨어 인터럽트(시스템 콜)가 이에 해당
폴트와 트랩의 차이
CPU가 인터럽트 실행 후 복귀했을 때,
예외가 발생한 명령어부터 실행하는지(폴트), 아니면
그 다음 명령어부터 실행하는지(트랩)에 따라 폴트와 트랩으로 구분된다.
- 페이지 폴트: 명령어 실행을 위해 필요한 데이터가 보조기억장치에 있어서 CPU가 폴트를 발생시키고, 데이터를 메모리로 가져온 후 예외가 발생한 명령어부터 재실행
- 브레이크 포인트: 디버깅에서 사용. 트랩의 대표적인 예시
- 중단(Abort): 프로그램을 강제 중단해야 할 급의 심각한 오류 상황 시 발생
2️⃣ 비동기 인터럽트
- 입출력장치에 의해 발생하는 인터럽트. 장치의 작업 알림 역할을 함
- 하드웨어 인터럽트라고도 함.