가상 운영체제와 가상머신 그리고 일하는 법!
소프트웨어 34, 가상 운영체제와 가상 머신
운영체제는 컴퓨터와 사용자의 연결통로가 되어주는 하나의 프로그램이고, 그런 프로그램과 같은 종류의 프로그래밍 언어로 작성되며 대부분 C나 C++로 구현된다. 지금은 운영체제가 매우 크고 복잡한데 (코드가 수백만 행 이상), 그만큼 다양하고 복잡한 일을 처리하기 때문입니다.
운영체제는 단지 프로그램이므로 이론상으로는 여러분이 직접 작성할 수 있다. 실제로 리눅스는 핀란드 대학생이었던 리누스 토르발스(Linus Tor-valds)가 1991년에 유닉스를 자신만의 버전으로 밑바닥부터 새로 만들기로 결심하면서부터 시작 됐다. 그는 인터넷에서 10,000행이 조금 안되는 초안을 게시했고, 다른 이들에게 써보고 도움을 달라고 요청했다. 그때 이후 리눅스는 소프트웨어 산업에서 막대한 영향력을 가진 운영체제가 되었고, 많은 대형 기업과 수많은 중소기업에서 사용되고 있다. 앞에서 언급한것처럼 리눅스는 오픈소스이므로 누구든 사용하고 기여한다.
'멀티 부트(multiple boot)' 기능은 애플에서도 부트 캠프라는 이름으로 지원하는데, 맥이 맥OS대신 윈도우를 실행하면서 시스템을 시작할 수 있도록 한다.
심지어 다른 운영체제의 관리하에 어떤 운영체제를 가상 운영체제(virtual operating system)로 실행할 수도 있다.
VM웨어, 버추얼박스, 오픈소스인 젠(xen) 같은 가상 운영체제 프로그램은 호스트 운영체제(가령 맥OS)에서 어떤 운영체제(윈도우나 리눅스)를 게스트 운영체제로 실행할 수 있게 해준다.
'가상'이라는 단어가 사용되는 또 다른 사례를 잠깐 살펴보자면, 컴퓨터인 것처럼 작동하는 프로그램을 흔히 가상 머신(virtual machine)이라고 한다. 즉, 소프트웨어로만 존재하지만 마치 하드웨어인 것처럼 그 작동 방식을 모방하는 프로그램이다.
브라우저에는 자바 스크립트를 해석하기 위한 한 개의 가상머신이 있고, 자바용 그리고 안드로이드폰에도 자바 가상머신이 있다. 가상머신이 사용되는 이유는 하드웨어를 만드는것 보다 프로그램을 작성해서 배포하는 것이 더 쉽고 유연하기 때문이다.
여기서 클라우드 컴퓨팅은 가상 머신에 의존한다. 클라우드 서비스 제공 업체는 저장 공간과 네트워크 대역폭이 충분한 컴퓨터를 대량으로 보유하고 있고, 이런 자원을 이용해 고객에게 컴퓨팅 성능을 제공한다. 대표적인 업체로는 AWS, Azure, Google Colud이 있으며 넷플릭스 같은 대형 업체들이 많이 이용하는데 자체 서버를 운영하는 것보다 클라우드 컴퓨팅을 활용하는 것이 비용적으로 더 효율적이라고 여기는데 이유로는 규모의 경제, 작업량 변화에 대한 높은 적응성, 내부 직원의 필요성 감소 덕분이다.
소프트웨어 35, 운영체제가 일하는 법
프로세서는 컴퓨터가 켜졌을 때 영구 기억 장치에 저장된 약간의 명령어를 실행해서 작동을 시작하도록 구성되어 있다. 이렇게 컴퓨터가 작동을 시작하는 과정은 원래 '자력으로 해낸다 (pulling oneself up by one's bootstraps'라는 오래된 표현에서 나온 '부트스트래핑(bootstrapping)'에서 지금은 그냥 '부팅(booting)'이라고 한다. ex) 컴퓨터 멈추면 재부팅해봐~
부팅 과정에서 웹 서핑을 하거나 음악재생, 메일 확인 등 각 프로그램은 짧은 시간 조각(time slice)을 할당 받는데, 시간 조각은 프로그램이 시스템 서비스를 요청하거나 프로그램에 할당된 시간이 다 되면 끝난다.
사용자가 메뉴에서 [파일] > [종료]를 선택하거나 인터넷 창을 닫으면 운영체제는 애플리케이션(App)에 곧 끝나야 된다고 통보해서 앱이 남은 일을 정리할 기회를 준다. 예를 들면, '파일을 저장하시겠습니까?'라고 묻는 식이다. 그러고 나서 운영체제는 프로그램이 사용하던 모든 자원을 회수하고, 화면에 창이 노출될 다른 앱에 창을 다시 그려야 한다고 알려 준다.
시스템 콜
운영체제는 요청에 포함된 어떤 일이든 처리하고, 통제권과 처리 결과를 앱에게 돌려준다. 운영체제에 서비스를 요청하는 이 진입점을 시스템 콜(system call)이라고 하며, 시스템 콜의 세부 명세에서 그 운영체제가 무엇인지를 규정한다. 최신 운영체제에는 보통 수백 개의 시스템 콜이 있다.
디바이스 드라이버
범용 운영체제에는 많은 디바이스 드라이버가 있다. 예를 들면 윈도우는 소비자들이 사용할 다양한 장치(usb,키보드,마우스 등등) 드라이버들을 설치한 상태로 출하하고, 모든 장치 제조사는 새로 나왔거나 업데이트된 드라이버를 다운로드 할 수 있도록 웹사이트를 관리한다.
다양한 디지털 장치와 운영체제
현재 기술발달 덕분에 디지털카메라를 '렌즈가 달린 컴퓨터'라고도 불리며 사진 찍는 기능 이외에도 녹화, 와이파이로 컴퓨터 전송을 할 정도로 범용 컴퓨터와 비슷한 모습을 띠고 있다. 사물인터넷(IOT)도 동일하다.
이런 추세가 계속되면서 별도의 운영체제를 만들기보다는 범용 운영체제를 사용하는 방식이 더 타당하다.
대표적인 리눅스는 견고하고, 개조하기 용이하고, 이식 가능하고, 무료이기 때문이다 단점은 GPL 같은 라이선스*에 따라 결과물 코드 일부를 공개해야 될 수도 있다는 점이다.
*GPL 라이선스
GNU 일반 공중 사용 허가서 (GNU General Public License, GNU GPL 또는 GPL )는
자유 소프트웨어 재단에서 만든 자유 소프트웨어 라이선스로,
소프트웨어의 실행, 연구, 공유, 수정의 자유를 최종 사용자에게 보장한다.
이미지자료