꾸준하게 기록하기
article thumbnail
Published 2022. 2. 24. 16:25
가상 머신의 이해 CS/운영체제

 

1. 가상 머신

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

 

 

Virtual Machine Type1 (native 또는 bare metal)

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

- 하이퍼바이저 또는 버추얼 머신 모니터(VMM)라고 하는 소프트웨어가 Hardware에서 직접 구동

   ex. Xen, KVM

 

Virtual Machine Type2

- 하이퍼바이저 또는 버추얼 머신 모니터 (VMM)라고 하는 소프트웨어가 Host OS 상위에 설치

  ex. VMWare, Parallels Desktop(Mac)

 

2. 전 가상화 / 반 가상화

전가상화 : 각 가상머신이 하이퍼바이저를 통해서 하드웨어와 통신

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

 OS가 하드웨어에 요청하면 VMM은 변환시켜서 하드웨어에 전달

 

반가상화 : 각 가상머신에서 직접 하드웨어와 통신

- 각 가상머신에 설치되는 OS는 가상 머신인 경우 이를 인지하고 각 명령에 하이퍼바이저 명령을 추가해서

하드웨어와 통신

 

VMWare : 대중적인 가상머신 프로그램(Type2)

KVM : AWS 등에서 사용(Type1)

또 다른 가상 머신 : Docker 

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

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

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

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

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

 

 

가상 머신 정리

  • Bare-Metal 방식이 가장 성능이 좋음
    • 하드웨어 직접 엑세스하기 때문
    • AWS(클라우드 컴퓨팅) 환경도 Bare-Metal 기반 가상 머신 기술 활용(KVM)
  • Docker는 경량 이미지로 실행환경을 통쨰로 백업, 실행 가능(실무에 많이 사용됨)
    • Data Engineering에서 Docker로 시스템 환경 설정 + 프로그램을 한번에 배포
    • 예: 프로그램 업데이트 → Docker 이미지 작성 → Jenkins로 배치잡 생성 및 실행 (AWS EC2 재생성 및 Docker 이미지 설치, 실행)→ Docker가 많이 쓰이는 이유는 가상환경때문이 아니라 실행환경을 통째로 백업할 수 있기 때문이다.

 

Java Virtual Machine

 

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

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

- 이 파일을 Java Virtual Machine에서 실행함

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

728x90

'CS > 운영체제' 카테고리의 다른 글

부팅의 이해  (0) 2022.02.24
파일시스템의 이해  (0) 2022.02.24
페이지 교체 알고리즘  (0) 2022.02.24
가상 메모리 개념 - 페이징 시스템  (0) 2022.02.24
가상 메모리 개념  (0) 2022.02.24
profile

꾸준하게 기록하기

@:_:

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!