개발_기록용

[컴퓨터 밑바닥의 비밀 내용 정리] 1.2 인터프리터(가상머신) 본문

Computer Science

[컴퓨터 밑바닥의 비밀 내용 정리] 1.2 인터프리터(가상머신)

나폴나폴 2025. 2. 4. 12:48
728x90

0. 들어가며


  • 굉장히 감명깊게 읽었던 [컴퓨터 밑바닥의 비밀] 책의 내용을 돌아보기 위해 정리글을 작성한다.
  • 전공자로 어느정도 안다고 생각한 내용들에서도 부족한 부분이 보여 책을 다시 읽어보며 정리하고자 한다.

https://link.coupang.com/a/cdaqFv

 

컴퓨터 밑바닥의 비밀:컴퓨터 시스템의 본질을 알면 코드의 실마리가 보인다 - 보안과 해킹 | 쿠

쿠팡에서 4.3 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 3 제품도 바로 쿠팡에서 확인할 수 있습니다.

www.coupang.com

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

(본문 소개 링크로 도서 구입 시 일정액의 수수료를 제공받습니다.)


1. 주제

“세상에는 다양한 CPU가 있는데,
A형식의 CPU에서 생성된 기계 명령어를 B형식의 CPU에서는 실행할 수 없다”

: 이것은 마치 x86 플랫폼용으로 생성한 실행파일을
ARM 플랫폼에서 직접 실행할 방법이 없는 것과 같다.

프로그래머가 작성한 코드가 가능한 한 많은 플랫폼에서 실행되려면 어떻게 해야할까?
: CPU에는 가지각색의 유형이 있고, 이는 하드웨어 제조사가 설계한 것이라 바꿀 수 없다.


2. 인터프리터(가상머신)의 탄생

CPU는 기계 명령어를 실행하는 존재이니 우리도 직접 표준 명령어 집합을 정의해서
CPU의 기계 명령어 실행 과정을 모방하는 프로그램을 작성하여 사용할 수도 있다.

: 즉, 각양각색의 CPU마다 상응하는 시뮬레이션 프로그램을 준비하면
우리의 코드를 직접 서로 다른 플랫폼에서 실행할 수 있다.

=> 이런 CPU 시뮬레이션 프로그램의 이름이 바로 ‘가상머신’이고,
이 가상머신에는 ‘인터프리터’ 라는 별칭도 붙어있다.

인터프리터가 실행코드를 해석하는 과정.

책에서는 예시로 위와 같이 설명했다.
세상에 새 형식 CPU와 개 형식 CPU, 그리고 소 형식 CPU가 있다고 가정하자.

우리가 작성한 코드는 if-else문을 포함한 코드이고,
이 내용이 모든 CPU에서 동일하게 돌아가도록 하고싶다.

그러면, 다음과 과정을 거치면 된다.

  • 미리 실행할 표준 명령어 집합을 정의한다.
  • 각 CPU의 인터프리터들은 이 표준 명령어 집합을 통해 변경된 우리의 코드 내용을 확인한다.
  • 각 CPU의 기계 명령어 실행과정을 인터프리터들이 모방하여 코드 내용을 실행한다.


이 아이디어를 바탕으로 C/C++, 파이썬, 자바 등 프로그래밍 언어가 생겨나게 되었다.

세상의 모든 프로그래밍 언어는 특정 구문에 따라 작성됩니다.
컴파일러는 언어 구문에 따라 코드 구문을 분석하여 구문트리로 만들고
이 구문 트리를 C/C++언어처럼 기계 명령어로 번역하여 CPU에 넘기거나
자바처럼 바이트코드로(byte code)로 변환한 후 가상머신으로 넘겨 실행합니다.
반응형
Comments