가상 운영체제와 가상 머신 및 운영체계가 일 하는 법

심채운·2022년 8월 10일
0

cs

목록 보기
4/15

운영체제란?

  • 운영체제는 프로그램이다. 운영체제는 그저 하나의 간단한 프로그램이고, 그런 프로그램과 같은 종류의 프로그래밍 언어로 작성되며 대부분 C나 C++로 구현된다. 초기 운영체제는 크기가 작았는데, 메모리도 더 작고 작업이 더 단순했기 때문이다. 초창기의 운영체제는 한 번에 한개의 프로그램만 실행했으므로 스와핑이 제한적으로 이루어졌다. 할당할 메모리도 100KB 미만이였다. 지금은 운영체제가 매우 크고 복잡해 메모리가 MB나 GB 단위이다. 그만큼 다양하고 복잡한 일을 처리하기 때문이다.
  • 많은 운영체제의 조상 격인 유닉스 운영체제 6판은 1975년에 두 명이 작성했고 C와 어셈블리 언어 9,000행으로 이루어져 있었다. 오늘날 리눅스는 1천만 행이 넘고, 수십 년간 수천 명이 작업한 결과물이다. 최신 컴퓨터는 한결 더 정교하고, 훨씬 복잡한 환경에서 훨씬 더 많은 장치를 다루기 때문이다. 운영체제가 어떤 구성 요소를 포함해야 하는지에 대한 관점도 유닉스 시절과 지금은 차이가 있다.

  • 운영체제는 단지 간단한 프로그램이므로 우리가 직접 작성할 수도 있다. 실제로 리눅스는 핀란드 대학생이었던 리누스 토르발스가 1991년에 유닉스를 자신만의 버전으로 만들기로 결심하면서 시작됐고, 그는 인터넷에 10,000행이 조금 안되는 초안을 게시했다. 그 후 리눅스는 소프트웨어 산업에서 막대한 영향력을 가진 운영체제가 되었다.

  • 하드웨어 개발 시 원래 의도했던 것과는 다른 운영체제를 실행하기도 한다. ex) 윈도우를 사용하려고 했던 컴퓨터에서 리눅스를 실행 이처럼 디스크에 몇개의 운영체제를 저장해 두고 컴퓨터를 켤 때마다 어느 것을 실행할지 결정할 수 있다. 이 '멀티부트'기능은 애플에서도 '부트캠프'라는 이름으로 지원하는데, 맥이 맥OS대신 윈도우를 실행하면서 시스템을 시작할 수 있도록 한다. 심지어 다른 운영체제의 관리하에 어떤 운영체제를 가상 운영체제로 실행할 수도 있다. VM웨어, 버추얼박스,오픈소스인 젠 같은 가상 운영체제 프로그램은 호스트 운영체제(ex: 맥os)에서 어떤 운영체제(윈도우, 리눅스)를 게스트 운영체제로 실행할 수 있게 해준다. 호스트는 게스트가 생성하는 요청 중 파일 시스템 접근이나 네트워크 접근 등 운영체제 권한이 필요한 요청을 가로챈다. 호스트는 작업을 수행한 다음 게스트로 되돌아간다. 호스트와 게스트가 둘 다 같은 하드웨어에 맞게 컴파일 되면 게스트 운영체제는 대개 하드웨어가 낼 수 있는 최고 속도로 실행이된다.

    호스트 운영체제에서 가상 운영체제가 어떻게 실행되는지 보여주는 도식화이다. 게스트 운영체제는 호스트 운영체제 입장에서 보면 보통의 애플리케이션이다.

가상 머신 Virtual Machine

컴퓨터인 것처럼 작동하는 프로그램을 가상 머신이라고 한다. 소프트웨어로만 존재하지만 마치 하드웨어인 것처럼 작동 방식을 모방하는 프로그램이다.

가상 머신의 예시

  • 자바 스크립트 프로그램을 해석하기 위한 가상 머신
  • 자바 프로그램용 가상 머신
  • 안드로이드용 가상 머신

가상머신이 사용되는 이유는 물리적 장비를 만드는 것보다 프로그램을 작성해서 배포하는 것이 더 쉽고 유연하기 때문이다.

클라우드 컴퓨팅 Cloud Computing

  • 클라우드 컴퓨팅은 가상 머신에 의존한다.
  • 저장 공간과 네트워크 대역폭이 출분한 물리적 컴퓨터를 대량으로 보유하고, 그 자원을 이용하여 이용자에게 컴퓨팅 성능을 제공한다.
  • 아마존 웹 서비스Amazon Web Service, 즉 AWS는 최대 클라우드 컴퓨팅 제공 업체이다.
    - 마이크로소프트 애저Microsoft Azure와 구글 클라우드 플랫폼Google Cloud Platform이 그 뒤를 잇는다.
  • 이러한 업체들 모두 고객의 작업량 변화에 맞게 서비스의 성능과 용량을 늘리거나 줄여 제공한다.
  • 개별 사용자가 사용 규모를 즉각 확대하거나 축소할 수 있을 만큼 충분한 컴퓨팅 자원을 보유하고 있기에 가능하다.
  • 대표적인 예로 넷플릭스 같은 대형 업체를 비롯해서 많은 회사가 자체 서버를 운영하는 것보다 클라우드 컴퓨팅을 활용하는데, 서비스의 규모가 클수록 클라우드 컴퓨팅을 이용하는 것이 경제적, 적응성, HR 필요성 감소 등에 유리하기 때문이다.

프로세서란?

  • 컴퓨터가 켜졌을 떄 영구 기억 장치에 저장된 약간의 명령어를 실행해서 작동을 시작하도록 구성되어 있다.
    - 플래시 메모리에서 읽은 멸령어는 최종적으로 유용한 작업을 하기에 충분한 코드가 로드될 때까지 더욱더 많은 명령어를 읽는다.
    - 이 과정을 부트스트래핑bootstrapping이라고 불렀는데, 지금은 부팅booting이라고 한다.

  • 부팅 과정에는 메모리와 다른 구성 요소를 점검해서 올바르게 작동하는지 확인하는 절차가 포함된다.

  • 운영체제는 일단 실행되면 간단한 작업 사이클을 집중적으로 수행하는데, 실행할 준비가 됐거나 관심이 필요한 각 애플리케이션에 차례로 통제권을 준다.

  • 프로세서가 이 프로세스 각각에 차례로 관심을 갖고 처리하게 하고, 필요에 따라 프로세스 간에 초점을 전환한다.

  • 각 프로그램은 짧은 시간조각을 할당 받는데, 시간 조각은 프로그램이 시스템 서비스를 요천하거나 프로그램에 할당된 시간이 다 되면 끝난다.

  • 운영체제는 각 이벤트에 대해 필요한 어떤 일이든 수행하며, 보통은 그런 이벤트가 발생했다는 사실을 해당 이벤트를 처리해야 하는 애플리케이션에 전달한다.

    • 예를 들어 사용자가 메뉴에서 종료를 선택하거나 닫기 버튼을 클랙해서 애플리케이션을 종료하면 OS는 애플리케이션에 곧 끝나야 된다고 통보해서 애플리케이션이 남은 일을 정리할 기회를 준다.
    • 그러고 나서 OS는 프로그램이 사용하던 모든 자원을 회수하고, 화면에 창이 노출될 다른 애플리케이션에 창을 다시 그려야 한다고 알려준다.

시스템 콜

  • 운영체제는 하드웨어와 다른 소프트웨어 간의 인터페이스를 제공한다.
    OS는 애플리케이션이 구축될 수 있는 플랫폼platform을 제공한다.
    추상화의 또 다른 예로, 구현상 들쑥날쑥한 부분이나 관련 없는 세부 사항을 감추는 인터페이스 또는 외관을 제공한다.
  • OS는 이러한 서비스를 표준화된 방식 또는 합의된 방식으로 이용할 수 있게 하고, 애플리케이션은 운영체제의 특정 부분에 통제권을 넘겨주는 특별한 명령어를 실행함으로써 서비스를 요청한다.
    OS에 서비스를 요청하는 이 진입점을 시스템 콜system call이라고 하며, 시스템 콜의 세부 명세에서 그 운영체제가 무엇인지를 규정한다.

    디바이스 드라이버

  • 운영체계와 프린터나 마우스 같은 특정 종류의 하드웨어 장치 간에 가교 역할을 하는 코드
  • 드라이버 코드는 특정 장치가 어떤 일을 하도록 하는 방법을 자세히 알고 있다.
  • 디바이스 드라이버는 특정 장치의 즉이한 속성에서 시스템의 나머지 부분을 분리한다.
  • 라이버 인터페이스는 OS가 서로 다른 장치에 균일한 방식으로 접근하도록해서 장치를 전환하기 쉽게 해준다.
  • 제로는 OS가 추상적이거나 이상화된 장치에 포괄적인 요청을 하고, 드라이버가 특정 장치에 맞게 요청을 구체적으로 구현한다.
  • 용 OS는 많은 디바이스 드라이버가 있다.
  • 팅 시에 시스템에 현재 가용 장치에 필요한 드라이버를 불러오는 작업도 이루어진다.
  • 로운 장치가 갑자기 연결되는 일도 흔한데, 보통은 새로운 드라이버를 찾을 필요가 없다.

위 그림은 디바이스 드라이버, 운영체제, 시스템 콜, 애플리케이션 간의 관계를 보여준다.

다양한 디지털 장치와 OS

  • 기술 발달 덕분에 장치들은 전반적으로 앞에서 살펴봤던 범용 컴퓨터와 비슷한 모습을 띠고 있다.
    • 성능이 좋은 프로세서와 용량이 큰 메모리가 내장되어 있고, 카메라 렌즈와 디스플레이 같은 주변 장치가 여러 개 달려있다.
  • 사용환경이 특수한 경우가 아니라면 자신만의 전용 시스템을 개발하거나 값비싼 상용 제품의 라이선스를 얻는 것보다 리눅스에서 불필요한 부분을 뺀 버전을 사용하는 편이 더 쉽고 저렴하다.
    • 별도의 OS를 만들기보다는 범용 OS를 사용하는 방식이 더 타당하다.

리눅스의 장점

  • 견고하다.
  • 개조하기 용이하다.
  • 이식 가능하다
  • 무료이다.

리눅스의 단점

  • GPL 같은 라이센스에 따라 결과물 코드 일부를 공개해야 한다.
profile
불가능, 그것은 사실이 아니라 하나의 의견일 뿐이다. - 무하마드 알리

0개의 댓글