728x90

CPU가 명령어를 가져와 실행하는 과정

  1. 명령어 인출
  2. 명령어 실행
  3. 다음 명령어 인출

명령어를 가져오는 기준 : Program Counter (PC)

  • PC는 CPU내부의 레지스터 중 하나로, 프로그램이 메모리에 저장된 여러 명령어들 중 어디부터 실행해야 할지를 알려주는 '위치 표시기'라고 할 수 있음
  • PC는 현재 실행 중이거나 다음에 실행할 명령어가 메모리의 어느 위치에 있는지를 가리킴
  • CPU가 명령어를 인출한 후, PC는 다음 명령어의 주소를 가리키도록 자동으로 증가함
  • 프로그램이 조건에 따라 다른 명령어로 이동해야 할 때(예: if 문, for 문에서의 점프), PC의 값을 변경하여 새로운 위치로 이동하게 함

최초의 PC 레지스터 값은 어떻게 설정될까?

  1. 컴파일 과정
    • 코드가 작성된 후, 컴파일러는 이 코드를 기계 명령어(바이너리 코드)로 변환하여 실행 파일을 생성함
    • 이 실행 파일에는 프로그램의 명령어와 데이터를 포함하고 있으며, 디스크에 저장됨
  2. 프로그램 실행 요청
    • 사용자가 프로그램을 실행하면, 운영 체제가 이 요청을 처리함
  3. 프로그램의 메모리 로드
    • 운영 체제는 실행 파일을 디스크에서 읽어 들여, 메모리(RAM)의 특정 위치에 로드함
    • 이 과정에서 프로그램의 코드와 데이터가 메모리에 배치됨
    • 특히, 프로그램의 시작 지점(엔트리 포인트)이 메모리의 특정 주소에 할당됨
  4. 프로그램 카운터(PC) 설정
    • 운영 체제는 프로그램을 메모리에 로드한 후, 프로그램의 엔트리 포인트 주소(즉, 첫 번째 명령어가 위치한 주소)를 PC 레지스터에 설정함
    • 이 엔트리 포인트 주소는 실행 파일의 헤더에 정의되어 있음
  5. 프로그램 실행 시작
    • PC 레지스터가 프로그램의 첫 번째 명령어를 가리키게 되면, CPU는 이 명령어를 인출(fetch)하여 실행(decode & execute)함
    • 이후, PC는 자동으로 다음 명령어의 주소를 가리키도록 업데이트되며, 프로그램이 순차적으로 실행됨
728x90

'Computer Science' 카테고리의 다른 글

멀티태스킹과 프로세스 관리  (0) 2024.08.14
메모리 단편화  (0) 2024.08.14
운영체제의 역할과 필요성  (0) 2024.08.08
정적 라이브러리와 동적 라이브러리  (3) 2024.07.24
링커의 심벌해석 대상  (3) 2024.07.24

+ Recent posts