본문 바로가기

CS

가상 운영체제와 가상 머신

운영체제

운영체제는 단지 프로그래밍이기 때문에 이론상으로 직접 작성할 수 있음.
리눅스 또한 핀란드 대학생이었던 리누스 토르발스가 밑바닥부터 새로 만들기를 결심하면서 시작했는데, 초기에는 10,000행도 안되는 작은 단위의 프로그램이었지만 프로그래머들간의 협업으로 인해서 막대한 영향력을 가진 운영체제가 되었음.

하드웨어를 개발할 때 의도한 운영체제가 아닌 다른 운영체제를 설치하여 사용하는 많은 사례가 있는데, 예를 들어 윈도우에 최적화하여 설계된 컴퓨터지만, 리눅스를 설치하여 사용할 수 있다.
또는 디스크에 몇개의 운영체제를 저장해두고 컴퓨터를 켤때마다 선택할 수 있는데 이 기능을 멀티부트라고 하며 애플은 부트캠프라는 이름으로 지원함.

VM

 

VM

심지어 다른 운영체제의 관리 하에 가상운영체제를 설치하여 사용할 수도 있습니다. VM 웨어, 버추얼박스, 오픈소스인 젠과 같은 가상 운영체제가 대표적을 있다.

 


이 프로그램들은 메인 운영체제인 호스트 운영체제에서 다른 운영체제를 게스트 운영체제로 실행할 수 있도록 해주고,


호스트는 게스트가 실행하는 요청 중 파일접근시스템이나 네트워크 접근 등 근본적인 운영체제 접근 권한은 실행되지 않도록 가로채고, 호스트운영체제에서 처리 후 게스트로 돌아감.
게스트 운영체제는 호스트 운영체제의 입장에서 보면 보통의 애플리케이션과 같아 보인다.

 

AWS

클라우드 컴퓨팅은 가상머신에 의존하는데 AWS가 대표적인 예.
AWS는 고객의 작업량 변화에 맞게 서비스 성능과 용량을 줄여서 제공하여 특히 성공적이며, 비용면에서도 효율적이기 때문에 넷플릭스같은 대형 업체를 비록해서 많은 회사가 자체 서버를 운영하는 것 보다 클라우드 컴퓨팅 활용.

 

- 운영체제의 일 -

프로세서는 컴퓨터가 켜졌을 때 기억장치에 저장된 약간의 명령어를 실행해서 작동을 시작하도록 요청하며, 이후 플래시 메모리에 저장된 명령어로 컴퓨터가 유용한 작업을 할 수 있는 코드가 로드될 때까지 작동함.
= 컴퓨터가 작동을 시작하는 과정 : 부팅( <=> 재시작 : 리부팅)

부팅과정에서는 컴퓨터 구성요소가 잘 작동하는지 확인하고 외부 디바이스(마우스/키보드 등등)를 점검함.



운영체제는 일단 실행되면 간단한 작업 사이클을 집중적으로 수행하며, 실행할 애플리케이션에 각 권한을 순차적으로 줌.

동시다발적인 작업을 할 때 운영체제는 할당된 순서대로 처리 하고 필요에 따라 프로세스간에 초점을 전환함.

각 프로그램은 짧은 시간조각을 할당받는데, 시간조각은 프로그램이 시스템 서비스를 요청할 때 할당받고 프로그램에 할당된 시간이 끝나야 끝이 남.

운영체제는 이벤트에 반응한다.  운영체제는 각 이벤트에 대해 필요한 어떤 일을 수행하며 이벤트가 발생했다는 사실을 해당 이벤트를 처리하는 애플리케이션에 전달함.

사용자가 애플리케이션 종료 요청을 하면 운영체제는 애플리케이션이 남은 일을 정리할 수 있게 해주고,  후 운영체제는 프로그램이 사용하던 모든 자원을 회수하고 화면에 노출 될 다른 애플리케이션에게 화면에 창을 그려야한다고 요청함.

시스템콜

운영체제는 하드웨어와 다른 소프트웨어간의 인터페이스를 제공하며, 애플리케이션이 구축될 수 있는 플렛폼을 제공.

운영체제는 요청에 포함된 어떤 일이든 처리하고 통제권의 결과를 애플리케이션에 돌려주고,

운영체제에 서비스를 요청하는 이 진입점을 시스템콜이라고 하며 시스템 콜의 세부 명세에서 그 운영체제가 무엇인지를 규정한함.즉 운영체제에 애플리케이션 실행해라임.

 

디바이스 드라이버

운영체제와 특정 종류의 하드웨어(마우스/키보드/프린터 등등) 장치간에 가교역할(*분리되어있는 일을 서로 이어주는 역할)을 하는 코드.

어떤 장치의 공통된 기능은 운영체제 내부에 드라이버 인터페이스가 설치되어있어서 자동으로 인식하고,

윈도우는 소비자들이 사용할 가능성이 있는 매우 다양한 장치를 위한 드라이버를 이미 설치한 상태로 출하함.

그러나 범용적으로 사용하는 기능이 아닌, 특정 장치의 특정 기능을 사용하기 위해서는 제품의 제조사가 운영체제가 인식하기 쉽도록 일부 프로그래밍 된 드라이버를 제공해야 함.

 

프린터를 예로들어 일반적으로 프린터를 출력하는 것은 어느 프린터나 적용되는 공통적인 기능이지만, 특정 프린터는 컬러인쇄, 양면인쇄, 지원되는 종이의 크기 등등 특정 기능을 제공할 수 있다. 이럴 경우 운영체제에 요청을 할 때 그 프린터가 수행할 수 있도록 적합한 형태로 변환을 해줘야함.

 

다양한 디지털 장치와 운영체제


전자부품이 꾸준히 저렴해지고 작아지면서 장치 하나에 더 많은 하드웨어를 넣을 수 있게 되어 장치의 처리 성능과 메모리 용량이 상당히 높아졌다.

기술 발달 덕분에 장치들은 전반적으로 앞에서 살펴봤던 범용 컴퓨터와 비슷한 모습을 가지게 되었고, 이런 추세가 계속 된다면 별도의 운영체제를 만들기 보다는 범용 운영체제를 사용하는 방식이 더 타당합니다.

새로운 소프트웨어를 개발하고 비싼 라이센스를 얻는 것 보다 리눅스에서 불필요한 부분을 뺀 버전을 사용하는 것이 쉽고 저렴함.

다만, 라이센스 에 따라 결과물 코드 일부를 공개해야될 수 있다는 단점이 있어 장치에 포함된 지적 재산권의 보호 논쟁이 있을 수 있어 킨들(전자책)과 티보(비디오녹화기)를 비롯한 많은 장치로 적절히 대처할 수 있는 것 같다.

'CS' 카테고리의 다른 글

자바스크립트, 파이썬  (0) 2022.08.16
운영체제  (0) 2022.08.15
자유로운 소프트 웨어  (0) 2022.08.10
기술 표준의 중요성  (0) 2022.08.10
작문과 비슷한 프로그래밍  (0) 2022.08.08