Virtual Machine (가상 머신)
An abstract computer
with an incredibly complicated instruction set (=Bytecode)
implemented entirely in software

bytecode란?
2024.06.05 - [CE] - [CE] Bytecode (바이트코드)
[CE] Bytecode (바이트코드)
Bytecode (바이트코드)정의:Bytecode는 고수준 프로그래밍 언어로 작성된 source code를 중간 형태로 변환한 code 임.이는 특정 Virtual Machine (VM)에서 실행될 수 있도록 설계됨.가장 대표적인 예로 Java 및 Pyt
ds31x.tistory.com
Virtual Machine 의 특징 (summary).
실제 하드웨어로 구성된 machine(=컴퓨터)와 유사하게 작동하며,
다른 운영 체제나 애플리케이션을 실행 (= bytecode 를 실행)할 수 있는 완전한 컴퓨팅 환경을 제공함.
Virtual machine 은 물리적 자원을 효율적으로 분할하고 관리하면서,
물리적 HW에 독립성을 가지며
각각의 Virtual machine간에 강한 격리성을 가지고 있음.
Virtual Machine을 통해 여러 OS를 하나의 물리적 machine에서 동시에 독립적으로 실행할 수 있으며,
이를 통해 보안과 시스템 관리의 효율성을 크게 향상시킬 수 있음.
Virtual Machine 이 가져야하는 특징.
다음의 5가지 특징이 흔히 언급되는 것이나 독립성과 격리성이 VM의 가장 큰 특징이라고 볼 수 있음.
- 독립성: ***
- 가상 머신은 물리적 하드웨어로부터 독립적으로 작동할 수 있어야 하며,
- 하드웨어의 구체적인 특성에 구애받지 않고 다양한 운영 체제와 애플리케이션을 실행할 수 있음.
- 달리 말하면, 다양한 하드웨어에서 자신의 bytecode를 실행할 수 있어야 함.
- 격리성: ****
- 각 가상 머신은 서로 독립적으로 작동해야 함.
- 이는 특정 가상 머신의 오류나 보안 문제가 같은 물리적 머신 상에서 같이 동작하는 다른 가상 머신이나 호스트 시스템에 영향을 주지 않도록 격리되어야 함을 의미함.
- 효율성:
- 가상 머신은 물리적 자원을 효율적으로 사용하고 관리할 수 있어야 하며,
- 자원 할당과 재배치를 유연하게 처리할 수 있어야 함..
- 관리 용이성:
- 가상 머신은 쉽게 생성, 복제, 이동, 및 삭제가 가능해야 하며,
- 일반적으로 한 곳에서 관리할 수 있는 기능을 제공함.
- 이는 운영 및 유지 보수의 효율성을 높이기 위해서임.
- 보안:
- 가상 머신은 강력한 보안 기능을 제공해야 하며,
- 데이터 보호, 접근 제어, 네트워크 보안 등을 포함한 여러 보안 조치를 지원해야 함.
Container와 VM을 구분하여 보는 경우의 Virtual Machine에 대한 정의는 다음을 참고할 것: https://dsaint31.me/mkdocs_site/CE/ch15/ce15_2_6_container/#virtual-machine-vm
BME
Container and Virtual Machine Container Container는 On-premise 나 cloud 등의 다양한 환경에서 linux 및 windows application을 패키징하고 실행하기 위한 기술. Container는 application을 보다 쉽게 개발, 배포 및 관리할 수
dsaint31.me
VM과 Web Browser
오늘날 Web Browser는 대표적인 VM으로 취급되기도함.
이를 앞서 살펴본 VM의 특징을 Web Browser에 관련하여 살펴보면 다음과 같음.
- 독립성:
- 오늘날 대부분의 Web Browser는 플랫폼 독립적으로 작동함: Cross-Platform
- Windows, macOS, Linux 등 다양한 OS에서 실행될 수 있으며,
- OS에 상관없이 웹 콘텐츠를 일관되게 렌더링하고 실행합니다.
- 격리성:
- 오늘날 대부분의 Web Browser는 각 tab과 extensions(확장 프로그램)들을 별도의 process로 처리함.
- 이는 하나의 tab 또는 extension에서 발생한 문제가 다른 tab이나 전체 Web Browser의 실행에 영향을 주지 않도록 해 줌.
- 더불어 이같은 별도의 process를 통한 격리성은 보안 사고가 다른 세션으로 확산되는 것을 방지할 수 있음.
- 효율성:
- Web Browser 는 자원 할당을 최적화하여 사용자의 경험을 극대화합니다.
- 관리 용이성:
- Web Browser 는 사용자에게 쉬운 interface 를 제공하여 웹 사이트와 앱에 효율적인 접근을 할 수 있도록 해줌.
- 다양한, 즐겨찾기, 확장 프로그램, 설정 등을 사용하여 개인화된 브라우징 경험을 구성하고 관리할 수 있습니다.
- 보안:
- 웹 브라우저는 샌드박스 기술, SSL/TLS 프로토콜, 콘텐츠 보안 정책(CSP) 등 다양한 보안 기능을 제공하여 사용자의 데이터를 보호함.
- 기능들은 사용자가 안전하게 인터넷을 탐색하고 개인 정보를 보호받을 수 있도록 설계됨.
위에서 여러가지 특징을 통해 Web Browser가 VM으로 취급되는 점을 살펴보았지만,
오늘날 Web Browser가 다양한 web application과 bytecode 구현물이 실행되는 platform이라는 점이 바로 Web Browser를 VM 으로 보는 가장 핵심적인 이유가 된다.
(HW로 구성된 컴퓨터에서 다양한 application이 수행되는 것을 대응해서 생각해 볼 것)
Web Assembly도 Web Browser가 VM인 이유에 해당함.
2025.04.21 - [CE] - [CE] WebAssmbly (WASM)
[CE] WebAssmbly (WASM)
WebAssembly 개요WebAssembly(줄여서 WASM)는Web Browser 라는 Virtual Machine 환경에서고성능으로 프로그래밍 소스 코드를 실행할 수 있게 해주는binary format(바이너리 형식)의 bytecode의 일종임. C, C++, Rust, Python
ds31x.tistory.com
Web Browser를 VM으로 보는 관점에 대한 보다 쉬운 내용은 다음을 참고
https://dsaint31.me/mkdocs_site/CE/ch09/ce09_web_browser/#interpreter-vm-web-browser
BME
title: Web Browser tags: - web browser - engine Web Browser 웹브라우저는 가장 널리 사용되는 복잡한 SW 중 하나이면서, 매우 다양한 instruction set을 지원하며 이들을 조합하여 새로운 기능을 추가할 수 있는 일
dsaint31.me
Bytecode와 VM
Bytecode 는
high-level programming language로 작성된 source code를
compile하여 생성된,
machine code보다는 약간 높은 수준의 중간 코드임.
이 bytecode는 특정 H/W 에 종속되지 않고, Virtual Machine(가상머신, VM) 위에서 실행되도록 설계됨.
VM은 이 bytecode를 읽고 해석하여, 실행 가능한 코드로 변환하는 역할을 하는 일종의 interpreter라고 볼 수 있음.
이를 통해, bytecode는 다양한 플랫폼에서 호환되며 실행될 수 있음
VM은 HW에 독립적으로 Bytecode를 실행시킨다는 특징을 가짐.
VM은 Bytecode를 해석하여
Host OS에서 실행가능한 코드로 변경해주는 일종의 interpreter임.
Web Browser에서 VM과 Bytecode의 사용예.
Web Browser 에서의 VM과 Bytecode의 사용의 대표적인 예는 JavaScript의 처리 과정을 들 수 있음.
JavaScript source code (=High-Level programming language source code)는 웹 페이지와 함께 web browser에 로드되며, 해당 web browser가 가지고 있는 JavaScript Engine(=VM)에 의해 실행됨.
오늘날 주요 상용 Web Browser는 JavaScript Engine을 가짐: Google Chrome은 V8 Engine 사용.
다음은 Web browser에서 Java Script가 실행되는 과정을 통해 Web browser를 Bytecode를 실행시키는 VM으로 볼 수 있음을 보여준다.
- 코드 컴파일:
- 사용자의 JavaScript source code는 먼저 Web Browser (정확히는 Web Browser의 JavaScript Engine) 에 의해 bytecode로 컴파일됨.
- 이 bytecode는 원래의 JavaScript souce code보다 실행에 최적화된 형태로 변환된 중간 코드임.
- 가상 머신 실행:
- 컴파일된 bytecode는 Web Browser의 JavaScript Engine의 내부에서 실행됨.
- 이 Engine이 VM의 역할을 하며, bytecode를 해석하여 web browser가 실행되고 있는 해당 플랫폼(=Host os)의 native code로 변환하여 실행시킴.
- 이같은 방식을통해 JavaScript는 Web Browser에서 host platform에 상관없이 독립적으로 실행됨.
- 최적화:
- 최신 JavaScript 엔진은 Just-In-Time (JIT) 컴파일러를 사용하여,
- 런타임에 bytecode를 더욱 효율적으로 native code로 변환함.
- 이는 실행 속도를 향상시키고, 자원 사용을 최적화함.
2025.05.12 - [CE] - [CE] Java Script Engine
[CE] Java Script Engine
JavaScript 엔진:웹 브라우저(Computer)의 두뇌(CPU)JavaScript 엔진은 웹 브라우저의 핵심 구성 요소HTML과 CSS를 담당하는 레이아웃 엔진(렌더링 엔진)과 함께 현대 웹 브라우저의 대표적 기반 요소임.JavaSc
ds31x.tistory.com
Conclusion
VM, Web Browser, 그리고 Bytecode는 서로 연관된 기술들로, 현대 컴퓨팅 환경에서 중요한 역할을 수행함.
- VM:
- VM 은 특정 H/W에 종속되지 않는 독립적인 컴퓨팅 환경을 제공.
- 이를 통해, 다양한 OS를 단일 물리적 컴퓨터(Host)에서 실행할 수 있으며,
- application의 이식성을 높이고, 자원을 효율적으로 관리할 수 있어 대규모 cloud platform을 가능하게 함.
- Web Browser:
- Web Browser는 플랫폼 독립적인 웹 애플리케이션을 실행하는 VM의 역할을 수행.
- HTML, CSS, JavaScript와 같은 웹 표준 기술을 사용하여,
- 사용자에게 동적이고 상호작용적인 웹 경험을 제공하는데 핵심적인 역할을 담당함.
- 이 과정에서, 특히 JavaScript 코드는 실시간으로 bytecode로 컴파일되고 최적화되어 실행됨.
- Bytecode:
- Bytecode는 High-level programming language로 작성된 source code를 컴파일한 중간 형태의 코드
- 특정 가상 머신에서 실행되도록 설계됨.
- Bytecode는 플랫폼 독립적이며, VM을 통해 다양한 OS에서 실행될 수 있음.
결론적으로,
- 이 기술들은 모두 다양한 환경에서 애플리케이션의 이식성과 실행 효율을 개선하며,
- 개발자가 플랫폼에 구애받지 않고 애플리케이션을 개발할 수 있도록 지원함.
이러한 상호 작용은 현대 컴퓨팅 환경에서 Web Browser의 유연성과 확장성을 크게 향상시켜, Web Browser 자체가 하나의 플랫폼이 되도록 기여함.
'CE' 카테고리의 다른 글
| [CE] Bytecode (바이트코드) (2) | 2024.06.05 |
|---|---|
| [CE] Terms: HDD, Partition, Volume, Drive and File System. (0) | 2024.05.15 |
| [CE] Compilation 의 종류 (0) | 2024.01.18 |
| [CE] Syntax of YAML [Simple Version] (0) | 2024.01.07 |
| [Term] YAML (Yet Another Markup Language) (0) | 2024.01.07 |