본문 바로가기
CS/프로그래밍언어론

메모리에 적재된 프로그램의 기계어 명령어 하나를 컴퓨터의 CPU가 수행하는 과정

by Renechoi 2023. 10. 9.

컴퓨터 구조

  • cpu와 메모리, 저장장치 등이 BUS로 연결
  • 다양한 입출력 장치도 BUS에 연결될 수 있음

기본적으로 컴퓨터에는 cpu, mem, hdd 등의 저장장치 등이 있다. 그 외의 부가 적인 저장장치등이 있다.

내부에 BUS라는 것이 존재해서, BUS를 통해서 데이터를 주고 받을 수 있다.

데이터들이 BUS를 통해서 메모리로 올라오고 CPU가 메모리의 내용을 작업 한다.

컴퓨터 동작 원리

  • 전원: 운영체제 적재(저장장치 -> 메모리) -> 수행
  • CPU는 인출-해석-실행 주기를 반복하여 메모리의 명령어를 실행

컴퓨터를 켰을 때 -> 제일 먼저 저장장치에 있던 운영체제가 메모리에 올라온다. 사용자가 컴퓨터를 쓸 수 있는 환경을 만들어줌.

그 명령어들을 cpu가 처리하는데 세 가지 단계로 처리한다.

-> 인출
-> 해석
-> 실행

인출 단계에서는 메모리에 있는 특정 명령어를 가져옴. 그걸 가져와서 해석하고, 실행함.
그게 끝나면 다시 인출.
이 과정을 주기적으로 반복함.

사용자가 특정 프로그램을 동작시키려고 명령을 하면, 운영체제에서 A라는 프로그램을 동작시키려고 하는 것을 인지하고 메모리로 올림.

Cpu가 A라는 프로그램의 명령어들을 하나씩 인출하여 처리함.

이때 CPU가 이해하고 수행하는 명령어를 기계어라고 함. -> 이진수 형태의 명령어로 사람이 이해하기 매우 난해.

그래서 어셈블리어라는 것을 사용 => 기계어에 거의 일대일 대응하는 것으로서 cpu에 종속적임.

고급 프로그래밍 언어

  • 특정 기계에 종속적이지 않고 추상화가 잘 되어 있음

  • CPU가 알아듣는 기계어로 표현해주어야 함 -> 최종적으로 동작을 시키기 위해서는

  • 목적 프로그램 : 변형된 프로그래밍 언어 -> 컴퓨터 하드웨어가 수행할 수 있는 프로그램

  • 기본적으로 소스 프로그램으로 작성을 하고, 컴파일러를 통해 목적프로그램으로 번역을 함. 이때 또 다른 방법은 인터프리터를 통해서 명령어를 하나씩 처리해줄 수 있다는 것. 따라서 크게 봤을 때 컴파일러와 인터프리터 두 가지 방법이 있다.

인터프리터

  • 명령어를 하나씩 가져옴
  • 프로그래밍 언어로 작성된 고 수준의 명령을 해석하여 수햏ㅇ하는 프로그램
  • cpu의 인출-해석-실행 주기를 흉내냄

컴파일러

  • 프로그램을 cpu가 수행할 수 있는 형태로 바꾸어서 cpu가 실행
  • 인터프리터가 하는 해석을 미리 모두 수행(->효율적)
  • 상용 프로그램은 컴파일 방식으로 번역한 후 판매

하이브리드 구현

  • 인터프리터 방식과 컴파일러 방식을 조합한 방식
  • 중간코드까지 컴파일한 후 인터프리터를 통해 해석
  • 가상기계라고 불리는 중간 코드로 통 번역을 하고, 인터프리터 방식으로 하드웨어에게 실행하도록 함
  • 가상기계 : 거의 기계어 비슷하게 만들어져 있음
  • JAVA 가상 머신
반응형