728x90
CPU가 명령어를 가져와 실행하는 과정
- 명령어 인출
- 명령어 실행
- 다음 명령어 인출
명령어를 가져오는 기준 : Program Counter (PC)
- PC는 CPU내부의 레지스터 중 하나로, 프로그램이 메모리에 저장된 여러 명령어들 중 어디부터 실행해야 할지를 알려주는 '위치 표시기'라고 할 수 있음
- PC는 현재 실행 중이거나 다음에 실행할 명령어가 메모리의 어느 위치에 있는지를 가리킴
- CPU가 명령어를 인출한 후, PC는 다음 명령어의 주소를 가리키도록 자동으로 증가함
- 프로그램이 조건에 따라 다른 명령어로 이동해야 할 때(예: if 문, for 문에서의 점프), PC의 값을 변경하여 새로운 위치로 이동하게 함
최초의 PC 레지스터 값은 어떻게 설정될까?
- 컴파일 과정
- 코드가 작성된 후, 컴파일러는 이 코드를 기계 명령어(바이너리 코드)로 변환하여 실행 파일을 생성함
- 이 실행 파일에는 프로그램의 명령어와 데이터를 포함하고 있으며, 디스크에 저장됨
- 프로그램 실행 요청
- 사용자가 프로그램을 실행하면, 운영 체제가 이 요청을 처리함
- 프로그램의 메모리 로드
- 운영 체제는 실행 파일을 디스크에서 읽어 들여, 메모리(RAM)의 특정 위치에 로드함
- 이 과정에서 프로그램의 코드와 데이터가 메모리에 배치됨
- 특히, 프로그램의 시작 지점(엔트리 포인트)이 메모리의 특정 주소에 할당됨
- 프로그램 카운터(PC) 설정
- 운영 체제는 프로그램을 메모리에 로드한 후, 프로그램의 엔트리 포인트 주소(즉, 첫 번째 명령어가 위치한 주소)를 PC 레지스터에 설정함
- 이 엔트리 포인트 주소는 실행 파일의 헤더에 정의되어 있음
- 프로그램 실행 시작
- PC 레지스터가 프로그램의 첫 번째 명령어를 가리키게 되면, CPU는 이 명령어를 인출(fetch)하여 실행(decode & execute)함
- 이후, PC는 자동으로 다음 명령어의 주소를 가리키도록 업데이트되며, 프로그램이 순차적으로 실행됨
728x90
'Computer Science' 카테고리의 다른 글
널널한 개발자의 네트워크 기초 이론 (0) | 2025.01.13 |
---|---|
멀티태스킹과 프로세스 관리 (0) | 2024.08.14 |
메모리 단편화 (0) | 2024.08.14 |
운영체제의 역할과 필요성 (0) | 2024.08.08 |
정적 라이브러리와 동적 라이브러리 (3) | 2024.07.24 |