본문으로 건너뛰기

Introduction to OS

· 약 7분

컴퓨터공학에 흥미가 있는 사람이라면 윈도우와 리눅스가 운영체제(Operating System)라는 것을 알고 있을 것이다. 조금 더 관심있는 사람이라면 운영체제의 예시로 iOS, Android, macOS를 꼽을 수도 있다. 그러나 운영체제에는 어떤 제품이 있고, 어떤 회사가 만드는지에 관심을 가지는 것과 운영체제가 무엇이며 어떻게 작동하는지 배우는 것은 아주 다른 문제이다. 이번 수업에서는 운영체제가 무엇이며 어떤 기능들을 제공하는지 알아볼 것이다.

OS란 무엇일까?

먼저 OS의 정의에 대해 알아보자.

운영체제는 컴퓨터 하드웨어와 소프트웨어 자원을 관리하는 시스템 소프트웨어이다.

그렇다면 하드웨어와 소프트웨어 자원을 관리하는 소프트웨어가 왜 필요할까? 사람들은 왜 운영체제를 만들게 되었을까? 이 질문에 답하기 전에 먼저 컴퓨터 발전의 역사에 대해 살펴보자.

History of OS

운영체제가 없었던 1950년대에는 컴퓨터가 한 번에 하나의 프로그램만 실행할 수 있었다. 당시의 컴퓨터는 매우 단순해서 저장장치에 저장된 단 하나의 프로그램을 실행하고 결과를 출력하면 종료되었다. 그러나 한 번에 하나의 프로그램만을 실행하는 컴퓨터는 매우 불편했다. 많은 사람들이 자신의 프로그램을 컴퓨터로 실행하고 싶어했고, 한 번에 전부 돌릴 수 없기 때문에 예약을 받아 순서대로 실행해주었다. 각 사람은 정해진 시간동안 컴퓨터를 사용할 권리를 얻었고, 예약자는 프로그램을 실행하기 위해 예약 시작 시간에 제때 도착해서 컴퓨터에 프로그램을 입력해주어야 했다.

결국 사람들은 사용자로부터 컴퓨터 사용 예약을 받고 관리하는 소프트웨어를 개발하기로 결심했고, 이러한 결심이 초기 운영체제의 개발을 이끌었다.

Beginning of OS & Problems

초창기의 운영체제는 프로그램 종료 시 예약된 프로그램 중 하나를 실행시켜주는 기능을 가지고 있었다. 새로운 기능 덕분에 사람들은 컴퓨터 예약시간에 맞춰 뛰어오지 않아도 괜찮게 되었다. 컴퓨터를 사용하고 싶은 사람들은 운영체제에 프로그램을 예약해두면 운영체제가 알아서 실행시켜주었다. 그러나 초기 운영체제는 여전히 한 번에 하나의 프로그램만을 실행 가능했다. 이 점에 불만을 가진 사람들이 많았는데, 실행이 매우 빨리 끝나는 작은 프로그램을 실행하기 위해서 아주 긴 시간을 기다려야 했기 때문이었다.

Cocurrency & Resource Allocation

이러한 문제를 해결하기 위해 운영체제는 프로그램들을 번갈아가며 실행하도록 진화하였다. 그리고 컴퓨터 과학자들은 하나의 컴퓨터에 여러 프로그램을 번갈아가며 실행하기 위해서는 한정된 하드웨어 자원을 여러 프로그램에 할당하는 자원 분배 문제를 풀어야 한다는 사실을 깨달았다. 컴퓨터 과학자들은 자원 분배 문제를 해결하기 위해 각 프로그램이 OS에게 자원을 요청하도록 하고, OS가 허락했을 때 자원을 사용하도록 만들었다.

결과적으로 컴퓨터 과학자들은 하나의 컴퓨터에서 효율적으로 여러 프로그램을 실행하기 위해서는 OS가 하드웨어와 소프트웨어 자원을 관리해야한다는 사실을 깨달았으며, OS를 하드웨어와 소프트웨어 자원을 관리하는 시스템 소프트웨어로 정의하였다.

Main Role of OS

운영체제의 가장 중요한 목표는 하드웨어와 소프트웨어 자원을 적절히 관리하여 하나의 컴퓨터에서 여러 프로그램을 동시에 실행하는 것이다. 이를 위해서는 각 프로그램에 컴퓨터 하드웨어 자원을 적절히 할당하여야 한다.

자원 분배의 문제를 해결하기 위해 인터럽트, 버퍼링, 멀티태스킹, 가상 메모리, 파일 시스템 등 다양한 개념이 등장하였다.

이러한 개념을 앞으로 많은 운영체제 수업을 거치면서 하나 하나 배워나갈 것이다.