What Operating Systems Do
운영 체제가 하는 일
운영 체제, 영어로 Operating System에는
우리가 익히 아는 윈도우와 맥OS, 리눅스와 같이
컴퓨터 시스템이 동작하는 방법을 관리하는,
특히 컴퓨터의 메모리가 어떻게 사용되는지와 어떻게 다른 프로그램들이 같이 동작하도록 하는지를 관리하는 프로그램의 집합이다.
(a set of programs that control the way a computer system works, especially how its memory is used and how different programs work together, 출처 : 캠브릿지 영어사전)
운영 체제가 하는 일은 사용자의 관점과 시스템의 관점에서 나뉠 수가 있는데
사용자의 관점으로는 운영체제는 사용자의 편리(easy of use)를 위한 기능을 하며
사용자가 일반적인 컴퓨터를 쓸 때면 사용자가 자원 관리나 오류에 대한 것들을 신경 쓸 필요가 없게
‘알아서 잘’ 돌아가야 한다.
사용자는 워크스테이션 같이 개인의 자원을 쓸 수도 있지만 주로 서버들에 연결되어 공유되는 자원을 사용하기도 한다.
이 역시 사용자의 멘탈을 위해 ‘알아서 잘’ 돌아가게 해야하는 것은 운영체제의 몫이다.
휴대용 컴퓨터들은 매우 작아서 (스마트 워치, 스마트폰 등)
이 크기에 걸맞는 배터리 수명과 일반 컴퓨터보다는 떨어지는 자원을 갖기도 한다.
특정 컴퓨터들은 사용자 인터페이스가 없거나 있더라도 버튼이 몇 개 없다거나 하는 아주 최소의 것만을 가지고 있다.
감지나 경보 등을 위한 기능을 가진 임베디드 컴퓨터나 자동차 안의 컴퓨터 (온도, 연료 제어 등을 위한)를 예로 들 수 있다.
위 컴퓨터들은 사용자의 개입이 없이 돌아간다.
계속해서 시스템의 관점으로 보자면
운영 체제는 자원의 할당자로서 역할을 한다.
여기서 자원이라는 것은 컴퓨터가 가지고 있는 CPU와 메모리를 말한다.
어떤 일을 하려면(process) 위 두 가지의 것들을 사용해야 하는데 (CPU에게는 일을 시키고 메모리는 일부 공간을 차지하여)
컴퓨터로 하는 일은 많고 자원은 한정적이니
프로세스들의 요구가 충돌하게 되면 운영 체제가 나서 효율적이고(efficient) 공정하게(fair) 중재에 나서
누가 자원을 사용하게 될 것인지를 정한다.(decide resource use)
또한 운영 체제는 제어 프로그램으로서
오류와 부적절한 컴퓨터 사용을 예방하는 프로그램을 실행할 수 있다.
즉 운영 체제는 이를 위하여 입출력 연산에도 깊이 관여하게 된다.
운영 체제의 정의
운영 체제를 한 마디로 정의하는 것은 쉬운 일이 아니다.
왜냐하면 현재 운영 체제마다 제공하는 기능들이 차이가 있기 때문이다.
어디서부터 어디까지를 운영 체제라고 불러야 할 지 어렵기 때문에
이전의 운영 체제의 기능들의 공통점인 ‘입출력 기능’과 ‘자원 제어’를 생각하여
기기가 나오자마자 설치되어 있는 프로그램을 운영 체제라 생각할 수 있지만
윈도우 같은 경우에 여기에 있는 메모장 같은 프로그램도 운영 체제라 보긴 어렵다.
컴퓨터에서 항상 돌아가는 프로그램을 ‘커널(kernel)’이라고 하고
운영 체제에 딸려있긴 하지만 항상 돌아가지는 않는 프로그램을 시스템 프로그램이라고 한다.
나머지 프로그램은 응용 프로그램이라고 한다.
운영 체제라고 하면 앞으로 이 커널을 지칭하게 된다.
운영 체제는 사용자와 하드웨어의 중간 역할을 하며
이를 통한 운영 체제의 최종적인 목표는
사용자가 프로그램을 실행하고, 이 과정에서 생기는 문제점들을 해결하는 것을 쉽게 하고
컴퓨터 시스템을 사용하는 것을 편리하게 하는 것,
효율적인 방법으로 컴퓨터의 하드웨어를 사용하는 것이다.