IT 지식

컴퓨터를 작동하게 만드는 운영체제

OIIUOI 2022. 8. 23. 02:39

"프로그래머의 작업은 시인과 마찬가지로 순수한 사고의 산물에 가깝다. 허공에 공기로 성을 쌓고 상상력을 동원하여 자신의 성을 창조해 나간다. 이토록 유연하며 다듬기 쉽고, 웅장한 개념적 구조를 손쉽게 실현할 수 있는 표현 수단은 찾아보기 힘들다."

- 프레더릭 브루스 1975

 

소프트웨어의 두 가지 주요한 유형인 운영체제와 애플리케이션을 살펴보려고 한다. 앞으로 알아보겠지만 운영체제는 컴퓨터 하드웨어를 관리하고 다른 프로그램을 실행할 수 있게 하는 소프트웨어의 기초 구조물이며, 그 위에서 실행되는 프로그램을 애플리케이션이라고 한다.

 집이나 학교, 사무실에서 컴퓨터를 쓸 때 이용할 수 있는 프로그램은 매우 다양하다. 브라우저, 워드 프로세서, 음악과 영화 재생 프로그램, 세무 처리용 소프트웨어, 바이러스 검사 프로그램, 다양한 게임들, 파일을 검색하거나 폴더를 탐색하는 일상적인 작업 도구 등이 있다. 세부 사항이 다르기는 해도 휴대전화에서도 상황은 비슷하다.

 그런 프로그램을 일컫는 전문 용어가 애플리케이션이다. 짐작하건대 프로그램이 컴퓨터를 어떤 작업에 응용하는 것이라는 데서 나온 말인 것 같다. 애플리케이션은 어느 정도는 자립적이고 단일한 작업을 처리하는 데 초점이 맞춰진 프로그램을 뜻하는 표준 용어다. 예전에는 컴퓨터 프로그래머가 사용하던 용어였지만, 아이폰용 애플리케이션을 판매하는 애플의 앱스토어가 순식간에 성공을 거두면서 축약형인 앱은 일상 어휘가 됐다.

 새 컴퓨터나 스마트폰을 살 때 기본 프로그램이 어느 정도는 이미 설치되어 있고, 사용하면서 프로그램을 구매하거나 다운로드하여 추가한다.

 이런 의미에서 앱은 사용자에게 중요하며, 기술적인 관점에서도 몇 가지 흥미로운 특성을 갖는다. 앱에 대해 짧게 이야기하고, 그중 브라우저를 집중적으로 살펴보겠다. 브라우저는 모두에게 익숙한 대표적인 앱이지만 예상외로 운영체제와 비슷한 면도 있으며 아직도 풀리지 않는 의문점이 몇 가지 남아 있다.

 애플리케이션을 사용할 수 있도록 배후에서 작동하는 프로그램인 운영 체제부터 알아보자. 시작하기 전에 거의 모든 컴퓨터, 즉 노트북, 휴대전화, 태블릿, 미디어 재생용 단말기, 스마트워치, 카메라, 기타 다른 기기도 하드웨어를 관리하기 위한 운영체제를 포함하고 있다는 것을 명심하기 바란다.

 1950년대 초에는 애플리케이션과 운영체제 간에 구별이 없었다. 컴퓨터는 한 번에 한 개의 프로그램만 실행할 수 있을 정도로 성능이 제한적이었고, 그 프로그램이 컴퓨터 전체를 점유했다. 실제로 프로그래머들은 자신이 짠 프로그램 한 개를 실행하기 위해 시간대별로 컴퓨터 사용 예약을 해야만 했다(일반 학생이라면 한밤중에나 사용할 수 있었다). 컴퓨터가 더 복잡해짐에 따라, 비전문가가 프로그램을 실행하는 일이 너무 비효율적이라고 느껴져서 전문 운영자에게 맡겨졌고, 운영자는 프로그램을 컴퓨터에 입력하고 결과를 배부했다. 운영체제는 운영자가 이런 작업을 자동화할 수 있도록 돕는 프로그램에서 시작됐다.

 운영체제는 자신이 제어하는 하드웨어가 발전됨에 따라 꾸준히 더 정교해졌다. 하드웨어 성능이 더 좋아지고 복잡해지면서, 운영체제가 하드웨어를 제어하는 데 더 많은 자원을 투입할 수 있게 되었다. 처음으로 널리 사용된 운영체제는 1950년대 후반과 1960년대 초반에 등장했는데, 보통은 하드웨어를 만드는 회사가 이를 같이 제공했고 어셈블리 언어로 작성되어 하드웨어와 강하게 결부되었다. 이렇게 하여 IBM과 더불어 DEC, 데이터 제너럴 같은 작은 회사들이 자사 하드웨어를 위한 자체 운영체제를 제공했다. 앞에서 인용문에 언급한 프레더릭 브룩스는 1965년부터 1978년까지 IBM의 시스템/360 컴퓨터 시리즈와 당시 IBM의 최상위 운영체제인 OS/360 개발을 관리했다. 브룩스는 컴퓨터 아키텍처, 운영체제, 소프트웨어 공학 분야에 기여한 공로로 1999년 튜링상을 받았다.

 운영체제는 또한 학계와 산업계의 연구 대상이었다. MIT가 선구자 역할을 했는데, 1961년에 CTSS라는 운영체제를 만들었다. CTSS는 그 당시 특히 성능이 뛰어났고 업계의 경쟁제품과 달리 사용하기에도 좋았다. 다음으로는 1969년에 벨 연구소에서 일하던 켄 톰프슨과 데니스 리치가 유닉스 운영체제를 만들었다. 그전에 두 사람은 CTSS보다 정교했으나 성공을 거두진 못했던 후속작 멀틱스 개발에 참여했다. 마이크로소프트 제품을 제외하고 오늘날 대부분의 운영 체제는 벨 연구소 유닉스에서 파생되었거나, 유닉스와 호환되지만 독자적으로 개발된 리눅스에서 파생된 것이다. 리치와 톰프슨은 유닉스를 만든 공로로 1983년 튜링상을 공동 수상했다.

 최신 컴퓨터는 실로 복잡한 물건이다. 프로세서, 메모리, 보조 기억 장치, 디스플레이, 네트워크 인터페이스 등 많은 부분을 포함한다. 구성 요소를 효과적으로 사용하려면 다수의 프로그램을 동시에 실행할 수 있어야 한다. 이 중 일부는 무언가 일어나기를 기다리고 있고(웹페이지가 모두 다운로드되기를 기다리기), 어떤 것은 즉각적인 반응을 요구하고(마우스의 움직임을 추적하거나 게임을 할 때 디스플레이 업데이트하기), 또 일부는 다른 프로그램에 지장을 준다(이미 초만원 상태인 메모리에 공간이 필요한 새 프로그램 시작하기). 복잡하기 이를 데 없다.

 이처럼 정교한 곡예를 다루려면 프로그램을 이용해 제어하는 수밖에 없는데, 이는 컴퓨터가 자신의 작동을 돕는 또 다른 사례다. 이런 역할을 하는 프로그램을 운영체제라고 한다. 집이나 사무실에 있는 컴퓨터에서는 마이크로소프트 윈도우가 가장 흔히 사용되는 운영체제이며, 다양한 발전 단계를 거쳐 왔다. 일상