Q. CPU는 한 번에 하나의 프로레스(또는 스레드)만 실행 할까?
A. CPU 내부에는 연산 장치(ALU), 레지스터, 프로그램 카운터(PC) 등이 있는데, 이 하드웨어는 오직 한 줄의 명령어만 처리할 수 있는 구조로 설계, 그래서 CPU는 '한 순간'에 오직 하나의 명령어 실행 흐름만 처리할 수 있다.
Q. 그럼 프로세스/스레드는 한 줄의 명령어로만 메모리에 할당이 되는 형태인가?
A. CPU는 여러 명령어 중 현재 실행할 명령어 한 줄을 선택해서 실행하다는 의미
Q. 그럼 프로세스/스레드는 어떻게 저장이 될까?
프로세스
--------
Code (기계어 명령어 수천/수만 개)
Data
Heap
Stack
Code 영역
---------
0040: LOAD R1, #5
0044: ADD R1, R2
0048: STORE R1, 0x1000
...
(계속)
스레드
------
- 프로세스의 코드 중 어디까지 실행했는지 나타냄
EX) 스레드 A는 0044 실행 중
스레드 B는 00AC 실행 중
- 스레드는 독립된 실행 지점을 갖고 있으며, 그 지점을 가리키는 것이 PC(Program Counter)임
Q. 그런데 왜 동시에 여러 스레드가 실행되는 것처럼 보이는지?
A. 컨텍스트 스위칭을 사용하기 때문에