일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 알고리즘
- matrix
- 대상파일
- vector
- 선형대수학
- 정보처리기사 2025 1회 실기 벼락치기
- 재배치
- 백준
- 정처기 실기 공부법
- 벡터
- linear algebra
- eigenvalue
- unity
- 구문트리
- 스레드전용저장소
- Rust
- 다익스트라
- 정처기 실기 벼락치기
- 정보처리기사 실기 벼락치기
- 코드포스
- rust 스터디
- 다이나믹 프로그래밍
- 정처기 공부법
- 컴퓨터밑바닥의비밀
- c++
- 행렬
- 컴파일러
- 링커
- CS정리
- column space
- Today
- Total
개발_기록용
[컴퓨터 밑바닥의 비밀 내용 정리] 1.2 인터프리터(가상머신) 본문
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)로 변환한 후 가상머신으로 넘겨 실행합니다.
'Computer Science' 카테고리의 다른 글
[컴퓨터 밑바닥의 비밀 내용정리] 1.5 정적 라이브러리와 정적 링크 (2) | 2025.02.07 |
---|---|
[컴퓨터 밑바닥의 비밀 내용정리] 1.4 링커의 일하는 방식 (0) | 2025.02.07 |
[컴퓨터 밑바닥의 비밀 내용정리] 1.3 컴파일러의 동작원리 (0) | 2025.02.07 |
[컴퓨터 밑바닥의 비밀 내용 정리] 1.1 구문 트리 (0) | 2025.02.03 |
[2024 정보처리기사 3회 필기] 1주일 벼락치기 합격 후기 (1) | 2024.07.07 |