📖
Mini's Today I Learned
  • Today I Learned
  • 💻Computer Science
    • 🧱Computer Science
      • Computer Architecture
    • 🦕OperatingSystem
      • System Structure
      • 01. 운영체제 역할
      • 02. History로 이해하는 운영체제
      • 03. 운영체제 구조
      • 04. 프로세스 스케쥴링
      • 05. 스케쥴링 알고리즘
      • 06. 프로세스 상태와 스케쥴러
      • 07. 인터럽트
      • 08. 프로세스와 컨텍스트 스위칭
      • 09. 프로세스간 커뮤니케이션(IPC 기법)
      • 10. Thread(스레드)
      • 11. 가상메모리 (Virtual Memory System)
      • 12. 파일시스템 이해
      • 13. 부팅의 이해
      • 14. 가상머신(Virtual Machine)
  • 📈Database
    • MySQL CLI (Frequently used)
    • 1-Tier, 2Tier, 3Tier
    • Basic SQL
    • Built in function
    • Sub Query
    • View
    • Stored Program
    • index
    • Normalization(정규화)
    • Transaction
    • Transaction
  • 🌐 Network
    • 🔌 TCP&IP Basic
      • 01 TCP/IP 맛보기
      • 02 TCP/IP 개요
      • 03 통신 서비스와 프로토콜
      • 04 애플리케이션 계층
      • 05 트렌스포트 계층
      • 06 네트워크계층
      • 07 데이터 계층과 물리계층
      • 08 라우팅
      • 09 보안
      • 10 HTTP 프로토콜
    • 🐿️HTTP 완벽 가이드 요약
      • 1. HTTP: 웹의 기초
      • 2. URL 과 리소스
      • 3. HTTP Message
      • 4. Connection Management
      • 5. Overview of web server architectures
      • 6. Proxies
      • 7.Caching
      • 8. Integration Points: Gateways, Tunnels, and Relays
      • 9. Web Robots
      • 10. HTTP/2.0
      • 11. Client Identification and Cookies
      • 12. Basic Authentication
      • 13. Digest Authentication
      • 14. Secure HTTP
      • 15. Entities and Encodings
      • 16. Internationalization
      • 17. Content Negotiation and Transcoding
      • 18. Web Hosting
  • 🏴Language
    • ☕JAVA
      • Comparable vs Comparator
  • 🛠️ Framework
  • 🧩Design Pattern
    • 객체 지향 설계 원칙 (SOLID)
    • Design Pattern 개요
    • Template method
    • Singleton
  • 🐥FrontEnd
    • HTML&CSS
      • 01 Intro
      • 02 HTML Basic
      • 03 Content Section
      • 04 Block and Inline Elements
      • 05 Text Contents
      • 06 Inline Elements
      • 07 Multi Media
      • 08 Table&Form&etc
      • 09 Global Attribute & etc
      • 10 css basic
      • 11 css config
      • 12 css unit
      • 13 Box Model
      • 14 Font & Text
      • 15 Float(띄움) & Position
      • 16 Background
      • 17 Transitions & Transforms
      • 18 Animation & Multi Columns(다단)
      • 19 Flex
      • 20 Grid
    • Sass(SCSS)
    • TypeScript
    • Webpack Introduction
      • 웹팩의 기본 구조
      • CommonJS
      • ESM
      • WebpackConfig
        • 1. Handlebars
        • 2. Caching
        • 3. Minification & Mangling
        • 4. Mode(Development mode & Production Mode)
        • 5. 이미지 파일 모듈로 다루어보기(file-loader)
        • 6. 이미지 파일 모듈로 다루어보기(url-loader)
        • 7. SASS Loader
        • 8. Post CSS
        • 9. BLOWSERS LIST
        • 10. Stylelint
        • 11. Babel
      • Webpack-Practice
    • ETC
      • GIT
      • MarkDown
Powered by GitBook
On this page

Was this helpful?

  1. Computer Science
  2. 🦕OperatingSystem

14. 가상머신(Virtual Machine)

  • 하나의 하드웨어(CPU, Memory등) 에 다수의 운영체제를 설치하고, 개별 컴퓨터처럼 동작하도록 하는 프로그램

  • 구분 기준에 따라 타입이 나뉨

    • virtual Machine type1(native 또는 bare metal)

      • 하이퍼 바이저(또는 VMM): 운영체제와 응용프로그램을 물리적 하드웨어에서 분리하는 프로세스

      • 하이퍼 바이저(또는 VMM) 라고 하는 소프트웨어가 HW에서 직접 구동

        • Xen, KVM

    • virtual Machine type2

      • 하이퍼 바이저(또는 VMM)라고 하는 소프트웨어가 HostOS 상위에 설치

        • VMWare, Parallels Desktop(Mac)

    • 전가상화(Full Virtualiztion)

      • 각 가상 머신이 하이퍼 바이저(VMM)를 통해 하드웨어와 통신

        • 하이퍼바이저가 마치 하드웨어 인것처럼 동작하므로, 가상머신의 OS는 자신이 가상머신인 상태인지를 모름.

    • 반가상화

      • 각 가상 머신에서 직접 하드웨어와 통신

        • 각 가상 머신에 설치되는 OS는 가상머신인 경우 이를 인지하고, 각 명령에 하이퍼 바이저 명령을 추가해서 하드웨어와 통신

          최근 H/W 성능 개선으로 전가상화 기술 선호

  • VMWare:

    • 대중적인 가상 머신 프로그램

    • 컴퓨터 구조, 시스템프로그래밍 할 때, VMware위에 Linux 설치해서 진행했음.

  • KVM

    • AWS(아마존 클라우드 컴퓨팅 서비스 등)에서 사용

    • Intel-VT등 가상화 기능을 가진 CPU에서는 VMX root/ VMX non-root 모드 존재

    • 각 모드별로 protection ring 0~3 지원

    • 가상화 기능을 사용하지 않을 시 VMX root 모드 사용

    • KVM은 각 가상 시스템에 대응하는 KVM프로세스 실행, KVM모듈을 통해 vCPU 사용

    • KVM 프로세스 기반 게스트 커널 ( VMX non-root/RING 0), QEMU 장치 에뮬레이터가 로드됨

    • 게스트 커널 위에서 실행되는 응용프로그램은 VMX non-root/RING3 사용

    • 게스트 커널이 물리적 HW 자원이 필요하면 VM exit 발생, KVM 모듈에서 해당 요청 처리

    • 일반 HW 자원은 QEMU장치 에뮬레이터에서 처리

      • QEMU 장치 에뮬레이터는 VMX root/ RING3 를 통해, 호스트 커널에 요청후, 해당 데이터는 공유 메모리를 통해 KVM게스트 커널과 공유

  • Docker(가상머신 vs Docker)

    • 가상머신은 컴퓨터 하드웨어를 가상화(하드웨어 전체 추상화)

      • 하이퍼 바이저 사용, 추가 OS 필요 등 성능 저하 이슈 존재

    • Docker는 운영체제 레벨에서 별도로 분리된 실행환경을 제공(커널 추상화)

      • 마치 리눅스 처음 설치했을 때와 유사한 실행환경을 만들어주는 리눅스 컨테이너 기술기반

      • 리눅스 컨테이너 기술이므로 macOS나 windows에 설치할 경우, 가상머신 기반 제공

  • 가상 머신 정리

    • Bare-Metal(type1)방식이 가장 성능이 좋음

      • 하드웨어에 직접 엑세스 하기 때문

      • AWS (클라우드 컴퓨팅) 환경 에서도 Bare-Metal 기반이 가장 머신 기술 활용(KVM)

    • Docker는 경량 이미지로 실행환경을 통째로 백업, 실행이 가능(실무에 많이 사용)

      • Data Engineering 에서 Docker로 시스템 환경 설정 + 프로그램을 한번에 배포

      • 예: 프로그램 업데이트 => Docker 이미지 작성 => Jenkins로 배치잡 생성 및 실행(AWS EC2 재생성 및 Docker 이미지 설치 및 실행)

Java Virtual Machine

  • 가상머신과는 다른 목적(응용프로그램 레벨에서 가상화)

  • Java 컴파일러는 CPU dependency를 가지지 않는 bytecode를 생성

  • 이 파일을 Java Virtual Machine에서 실행

  • 각 운영체제를 위한 Java Virtual Machine 프로그램 존재.

Previous13. 부팅의 이해NextDatabase

Last updated 4 years ago

Was this helpful?

💻