CS 스터디
챕터34: 가상 운영체제와 가상 머신
챕터35: 운영체제가 일하는법
가상 운영체제와 가상머신
가상머신이란?
가상 머신(Virtual Machine, VM)은 물리적 하드웨어 시스템에 구축되어 자체 CPU, 메모리, 네트워크 인터페이스 및 스토리지를 갖추고 가상 컴퓨터 시스템으로 작동하는 가상 환경입니다.
가상 머신은 크게 시스템 가상 머신과 프로세스 가상 머신 두 가지로 나뉜다.
시스템 가상 머신은 실제 기계를 대체해서 제공하며, 전체 운영체제를 실행하기 위한 기능들을 제공한다.
시스템 가상 머신은 여러 운영 체제를 쓰는 환경은 운영 체제가
완벽히 고립된 채로 같은 컴퓨터에서 존재할 수 있다. 예를들어 Oracle VM이 있다
프로세스 가상 머신은 플랫폼에 독립적인 환경에서 컴퓨터 프로그램을 실행하기 위해 고안되었다.
프로그래밍 언어의 하드웨어 추상화를 위해 사용된다. 자바(JVM JAVA virtual Machine)를 예로 들 수 있다.
가상 머신을 사용하는 목적과 이유
1.하나의 컴퓨터로 서로 다른 두 개 이상의 운영체제를 실행하고자 할 때
Ex) 연구, 공부, 생산성의 목적으로 사용하고있다
2.하나의 컴퓨터 자원을 여러 사용자에게 나누어 주는 상황에서 상호 간섭을 없애고 싶을 때
Ex) 클라우드 등에서 사용하는 가상머신이 있다.
3.컴퓨터의 다른 부분에 영향을 주지 않는 독립 환경을 만들고 싶을 때
Ex)악성 코드를 분석 할 때 감염을 방지하기 위해 사용한다.
운영체제가 일하는 법

운영체제의 구조
멀티 프로그래밍(Multiprogramming)

멀티 프로그래밍은 여러 작업들이 동시에 메모리에 올라갑니다.
그리고 앞의 작업이 CPU를 사용하지 않을 때 CPU는 대기상태에 들어갑니다.
대기상태에 들어간 CPU는 다른 작업에서 사용할 수 있습니다.
이러한 방식은 전의 방식보다 유연성을 제공하며 효율성을 높입니다.
반대로 I/O가 대기 상태에 들어갈 때 I/O가 필요한 작업에게 그 자원을 할당해 줍니다.
하지만 멀티프로그래밍에도 단점이 있습니다. 작업들마다 자원의 사용에 시간 차이가 생기는 것입니다.
예를들어 먼저 온 작업이 CPU나 I/O를 사용하고 있을 시 다른 작업은 해당 자원을 사용하지 못하는 것입니다.
그럼 CPU나 I/O 중 한 자원은 대기를 하면서 자원의 낭비가 일어나는 것입니다.
이러한 낭비는 효율성을 떨어뜨리게 됩니다.
멀티 테스킹(Multitasking)

멀티 테스킹은 멀티 프로그래밍의 확장입니다.
각각 작업에 시간을 부여하고 CPU 작업을 하다가 그 시간이 지나가면 다른 작업에게 CPU 자원을 할당해줍니다.
주어진 시간을 두고 번갈아가면서 자원을 사용하는 것입니다.
이렇게 하게되면 시간 지연으로 인한 낭비를 줄일 수 있습니다.
주어진 시간은 굉장히 짧으며 빈번한 Switching이 발생합니다.
시스템 콜(System Call)

사용자 프로그램이 작동하다가 운영체제에게 어떠한 요청을 하는 것을 시스템 콜(System Call)이라고 합니다. 즉, 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것입니다.
Timer
두번째 방법으로 Timer가 있습니다.
Timer는 무한 루프나 자원의 독점을 막는 역할을 해냅니다.
Timer는 특정 시간이 지나면 Interrupt를 발생시킵니다.
운영체제는 Timer가 끝난 작업을 이 Interrupt를 통해 종료시키고 실행 되기 전 Scheduling 작업 전에 Timer를 작동시킵니다.
Interrupt

프로그램을 실행하는 도중,
예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 즉시 중단하고,
발생된 상황을 우선 처리한 후 실행 중이던 작업으로 복귀하여 계속 처리 하는 것.
'TIL' 카테고리의 다른 글
[TIL]20220610 (0) | 2022.06.10 |
---|---|
[TIL]20220609 (0) | 2022.06.09 |
[TIL]20220607 (0) | 2022.06.07 |
[TIL]20220606 (0) | 2022.06.06 |
[TIL]20220605 (0) | 2022.06.05 |