운영체제가 프로그램이라고 말했던 것에 주목해 보자. 운영체제는 앞에서 살펴본 수 합산하기 같은 간단한 프로그램과 마찬가지로 그저 하나의 프로그램이고, 그런 프로그램과 같은 종류의 프로그래밍 언어로 작성되며 대부분 C나 C++로 구현된다. 초기 운영체제는 크기가 작았는데, 메모리도 더 작고 작업이 더 단순했기 때문이다. 초창기의 운영체제는 한 번에 한 개의 프로그램만 실행했으므로 스와핑이 제한적으로 이루어졌다. 게다가 할당할 메모리도 100KB 미만으로 많지 않았다
다뤄야 할 외부 장치도 적었고, 오늘날처럼 종류가 다양하지 않았다. 지금은 운영체제가 매우 크고 복잡한데(코드가 수백만 행 이상이다), 그만큼 다양하고 복잡한 일을 처리하기 때문이다.
비교해 보자면, 많은 운영체제의 조상 격인 유닉스 운영체제) 1975년에 두 명이 작성했고 C와 어셈블리 언어 9,000행으로 이루어져 이 었다. 오늘날 리눅스는 1천만 행이 훨씬 넘고, 수십 년간 수천 명이 작업한 결과물이다. 윈도우 10은 정확한 규모가 공개된 적은 없지만 5천만 행 정도로 추측된다. 어쨌든 이 수치를 일대일로 직접 비교할 수는 없다. 최신 컴퓨터는 한결 더 정교하고, 훨씬 복잡한 환경에서 훨씬 더 많은 장치를 다루기 때문이다. 운영체제가 어떤 구성 요소를 포함해야 하는지에 대 한 관점도 유닉스 시절과 지금은 차이가 있다.
운영체제는 단지 프로그램이므로 이론상으로는 여러분이 직접 작성할 수 있다. 실제로 리눅스는 핀란드 대학생이었던 리누스 토르발스(Linus Torvalds)가 1991년에 유닉스를 자신만의 버전으로 밑바닥부터 새로 만들기로 결심하면서부터 시작됐다. 그는 인터넷에 10,000행이 조금 안 되는 초안을 게시했고, 다른 이들에게 써보고 도움을 달라고 요청했다. 그때 이후로 리눅스는 소프트웨어 산업에서 막대한 영향력을 가진 운영체제가 되었 고, 많은 대형 기업과 수많은 중소기업에서 사용되고 있다. 앞에서 언급한 것처럼 리눅스는 오픈소스이므로 누구든 사용하고 기여한다. 오늘날에는 수많은 리눅스 기여자가 있고, 그 중심에 전업 개발자들이 있다. 토르발스는 여전히 전반적인 통제권을 유지하고 있으며 기술적 결정의 최상권자이다
하드웨어 개발 시 원래 의도했던 것과는 다른 운영체제를 실행하기도 하다. 윈도우를 사용하려고 했던 컴퓨터에서 리눅스를 실행하는 것이 좋은 예다. 디스크에 몇 개의 운영체제를 저장해 두고 컴퓨터를 켤 때마다 어느 것을 실행할지 결정할 수 있다. 이 '멀티 부트(multiple boot)' 기능은 애플에서도 부트 캠프(Boot Camp)라는 이름으로 지원하는데, 맥이 맥OS 대신 윈도우를 실행하면서 시스템을 시작할 수 있도록 한다. 심지어 다른 운영체제의 관리하에 어떤 운영체제를 가상 운영체제 (virtual operating system)로 실행할 수도 있다. VM웨어(VMware), 버추얼박스(virtualBox), 오픈소스인 젠(xen) 같은 가상 운영체제 프로그램은 호스트 운영체제(가령 맥 OS)에서 어떤 운영체제(윈도우나 리눅스)를 게스트 운영체제로 실행할 수 있게 해 준다. 호스트는 게스트가 생성하는 요청 중 파일 시스템 접근이나 네트워크 접근 등 운영체제 권한이 필요한 요청을 가로챈다. 호스트는 작업을 수행한 다음 게스트로 되돌아간다. 호스트와 게스트가 둘 다 같은 하드웨어에 맞게 컴파일되면 게스트 운영체제는 대개 하드웨어가 낼 수 있는 최고 속도로 실행되고, 거의 실제 컴퓨터상에서 직접 실행되듯 반응하는 것처럼 느껴진다.
가상 운영체제에 관해 몇 가지 흥미로운 소유권 문제가 존재한다. 만약 회사가 한 대의 물리적 컴퓨터로 많은 수의 가상 윈도우 인스턴스를 실행한다면, 회사는 마이크로소프트에서 몇 개의 윈도우 라이선스를 구매해야 할까? 법적인 문제를 무시하면 한 개만 구입해도 실행 가능하지만, 마이크로소프트의 윈도우 라이선스는 비용을 내지 않고 합법적으로 실행할 수
있는 가상 인스턴스 사본의 총개수를 제한하고 있다. '가상'이라는 단어가 사용되는 또 다른 사례를 잠깐 살펴보자. 진짜 컴퓨터든 모형 컴퓨터 같은 상상의 컴퓨터든 간에, 컴퓨터인 것처럼 작동하는 프로그램을 흔히 가상 머신 virtual machine이라고 한다. 즉, 이 컴퓨터는 소프트웨어로만 존재하지만 마치 하드웨어인 것처럼 그 작동 방식을 모방하는 프로그램이다.
이런 가상 머신은 흔하다. 브라우저에는 자바스크립트 프로그램을 해석하기 위한 한 개의 가상 머신이 있고, 자바 프로그램용으로 별도의 가상 머신이 있기도 하다. 안드로이드폰에도 자바 가상 머신이 있다. 가상 머신 이 사용되는 이유는 물리적 장비를 만들어서 출하하는 것보다 프로그램을 작성해서 배포하는 것이 더 쉽고 더 유연하기 때문이다.
클라우드 컴퓨팅은 가상 머신에 의존한다. 클라우드 서비스 제공 업체는 저장 공간과 네트워크 대역폭이 충분한 물리적 컴퓨터를 대량으로 보유하고 있고, 이런 자원을 이용해 고객에게 컴퓨팅 성능을 제공한다. 고객들은 몇 개의 가상 머신을 사용하는데, 이 가상 머신은 그보다 더 적은 수의 물리적 컴퓨터의 지원을 받는다. 멀티코어 프로세서가 이런 종류의 작업에 적합하다.
아마존 웹 서비스(Amazon Web Services), 즉 AWS는 최대 클라우드 컴퓨팅 제 공 업체이며, 마이크로소프트 애저(Microsoft Azure)와 구글 클라우드 플랫폼(Google Cloud Platform)이 그 뒤를 잇는다. AWS는 특히 성공적인데 아마존 영업 이익의 절반 이상을 차지한다. 이들은 모두 고객의 작업량 변화에 맞게 서비스의 성능과 용량을 늘리거나 줄여 제공한다. 개별 사용자가 사용 규모를 즉각 확대하거나 축소할 수 있을 만큼 충분한 컴퓨팅 자원을 보유하고 있기에 가능한 일이다. 넷플릭스 같은 대형 업체를 비롯해서 많은 회사가 자체 서버를 운영하는 것보다 클라우드 컴퓨팅을 활용하는 것이 비용 면에서 더 효율적이라고 여긴다. 규모의 경제, 작업량 변화에 대한 높은 적응성, 내부 직원의 필요성 감소 덕분이다
'IT 지식' 카테고리의 다른 글
파일 시스템과 블록 (0) | 2022.08.31 |
---|---|
운영체제가 일하는 법 (0) | 2022.08.30 |
컴퓨터를 작동하게 만드는 운영체제 (1) | 2022.08.23 |
기술 표준의 중요성과 자유로운 소프트웨어 오픈소스 (0) | 2022.08.21 |
구글 같은 서비스는 어떻게 개발할까? (0) | 2022.08.21 |