가상 머신
운영체제의 하위 개념인 가상 머신은 주 운영체제 위에 소프트웨어 형식으로 올라가는 또 하나의 컴퓨팅 시스템이다. 주 운영체제와 가상 운영체제 사이의 통신을 어떤 방식으로 하느냐에 따라서 Hypervisor 형식과 컨테이너로 나눠진다.

Hypervisor
- Type 1 Hypervisor
컴퓨터 하드웨어 바로 위에 올라가는 운영체제다. 하드웨어 위에 호스트 운영체제 없이 연결되기 때문에 Type 2보다 빠르고 보안에 강하다는 장점이 있다. 클라우드 서비스에 주로 이용한다.
- Type 2 Hypervisor
컴퓨터 하드웨어 위에 호스트 운영체제가 있고 그 위로 올라가는 하이버바이저이다. 가상 머신에서 동작하는 게스트 OS의 명령을 호스트 OS로 전달해주는 역할을 한다. 다른 소프트웨어처럼 하이퍼바이저가 동작해 설정이 쉽다는 장점이 있지만 그만큼 느리다.
Container
컨테이너는 하이퍼바이저처럼 호스트 OS 위에 다른 OS가 돌아가는 환경을 만들어주는 것이 아니라 하나의 OS 위에 독자적인 컴퓨터 환경을 만들어주는 방법이다. 한 OS위에 독립적인 유저 환경을 만드는 것이다. 많이 사용하는 예로 Docker와 Kubernetes가 있다.

운영체제는 보통 user mode와 kernel mode로 나눠진다. user mode는 우리가 사용하는 소프트웨어 동작하는 환경이다. 사용자가 직접 환경을 설정하고 사용할 수 있다. 반면 kernel mode는 컴퓨터 자원을 사용하기 위한 명령어들이 오가는 공간으로 운영체제가 관리하며 사용자에게 보이지 않는다.
컨테이너는 kernel mode 위에 여러 개의 독립적인 유저 공간이다. 각 컨테이너는 보통의 컴퓨터처럼 자신만의 파일 시스템, 프로세스 식별자, 네트워크 ID를 가진다. 각각의 컨테이너들은 하나의 OS위에서 동작한다.
컨테이너와 여러 개의 사용자 계정의 공통점과 차이점
컨테이너와 사용자 계정 모두 하나의 OS kernel을 사용한다는 점은 같다. 다만 컨테이너는 하나의 OS를 사용함에도 특정 기술을 통해 독립된 환경을 구축하기에 격리가 강하다. 파일 시스템, 네트워크를 다른 소프트웨어와 아예 분리한다. 사용자 계정도 하나의 OS를 이용하지만 격리가 약하다. 사용자 계정은 파일 시스템이 어느 정도 겹쳐 있다. 그리고 OS에서 온 하나의 네트워크를 사용한다.
'Computer Science' 카테고리의 다른 글
| 비동기 프로그래밍 (0) | 2025.01.21 |
|---|---|
| ANSI C grammar Lex Specification (0) | 2024.05.08 |