컴퓨터의 다양한 하드웨어가 서로 유기적으로 동작하기 위해 이들을 관리하고 제어하는 프로그램이 필요하다.
컴퓨터와 사용자 사이에 중계 역할을 하는 프로그램이 필요한데, 이러한 역할을 하는 프로그램을 운영체제(OS : Operating System)라고 한다.
[1] 운영체제의 역할
OS는 컴퓨터 하드웨어와 응용 소프트웨어 간에 인터페이스 역할을 하며 CPU, 메모리, 기억장치, 입력장치와 같은 자원을 효율적으로 관리하여 사용자가 컴퓨터를 편리하게 이용할 수 있는 환경을 제공해주는 소프트웨어이다.
하드웨어와 응용 소프트웨어 사이에서 중계자 역할을 하면서, 사용자가 효율적으로 컴퓨터를 사용할 수 있도록 한다.
OS는 사용자와 응용 소프트웨어, 하드웨어 사이에서 사용자가 입력한 명령을 받아들이고, 이를 하드웨어가 이해할 수 있는 형태로 변환하여 전달하는 역할을 수행한다.
컴퓨터의 효율성을 높이기 위해 응용 소프트웨어들이 잘 작동할 수 있는 환경을 제공한다.
이를 위해 OS는 중앙처리장치, 주기억장치, 보조기억장치, 입출력장치와 같은 하드웨어를 관리할 뿐만 아니라 프로세스, 파일 등과 같은 컴퓨터 자원도 효율적으로 제어하고 관리한다.
운영체제의 목적을 아래와 같은 표로 정리해보면,
구분 | 내용 |
처리능력 향상 | 처리능력이란 단위시간 내에 처리할 수 있는 작업량으로, 컴퓨터 시스템 전체의 생산성을 측정하는 단위 |
응답시간 단축 | 사용자가 처리를 요구한 시점부터 결과를 얻을 때까지 걸리는 시간으로 응답시간이 짧을수록 효율적인 것 |
사용 가능도 향상 | 원하는 시간 내에 시스템을 얼마나 빨리 사용할 수 있는지 그 정도를 나타냄 |
신뢰도 향상 | 컴퓨터 시스템이 주어진 환경하에서 원하는 기능을 얼마나 정확하게 수행하는가의 척도 |
[2] 운영체제의 기능
컴퓨터의 자원을 효율적으로 관리하는 것으로, 이를 통해 시스템의 성능을 높일 수 있다.
OS는 각 자원들의 상태를 파악하여 실행되고 있는 프로그램마다 어떤 자원을 언제, 얼마만큼 배분할 것인지를 결정한다.
(1) 사용자 인터페이스(UI : User Interface) :
'서로 다른 두 시스템을 연결해 주는 것'
컴퓨터 분야에서 컴퓨터와 사람을 연결해 주는 것으로, 사용자와 소프트웨어, 하드웨어가 원활한 동작을 수행하라 수 있도록 컴퓨터의 상호작용을 돕는 기능을 말한다.
ex) CLI(Command Line Interface), GUI(Graphical User Interface)
(2) 프로세스 관리
OS는 사용자가 필요로 하는 작업들이 원활하게 동작할 수 있도록 프로세스를 관리한다.
프로세스(process)란 현재 컴퓨터 기억장치상에서 실제로 실행 중인 프로그램의 상태를 말한다.
OS는 컴퓨터의 한정된 자원을 정해진 작업 순서에 따라 순서대로 사용 계획을 세우고 동작할 수 있도록 하며, 사용자 다수가 정해진 시간 동안 충돌과 오류 없이 사용할 수 있도록 권한을 부여한다.
(3) 네트워크 관리
컴퓨터는 데이터를 교환하기 위해 유·무선 통신선과 같은 네트워크에 의해 연결되어 있다.
운영체제는 통신 프로그램과 같은 소프트웨어나 통신장비들과 같은 하드웨어 관리 등 다양한 네트워크를 사용해 다른 컴퓨터와 통신할 수 있도록 지원하는 기능을 한다.
(4) 기억장치 관리
보조기억장치에 저장되어 있는 프로그램을 실행하기 위해서는 주기억장치에 적재해야 하지만, 주기억장치의 용량에는 한계가 있기 때문에,
실행시킬 프로그램의 크기가 주기억장치에 모두 적재하는 것은 불가능하다.
이러한 경우 OS는 프로그램을 실행하는 요청이 있을 때, 주기억장치의 공간을 해당 프로그램에 할당해 주고, 다른 프로그램은 주기억장치의 공간에서 해제시킨다.
이와 같이 OS는 프로그램의 실행 요청에 따라 주기억장치에 프로그램을 할당하거나 하제하는 등의 메모리 관리를 한다.
(5) 입출력장치 관리
OS는 입력장치를 통해 사용자로부터 입력을 받거나 출력장치로 출력 데이터를 내보내는 작업을 제어한다.
사용자가 키보드 버튼을 눌렀을 때, OS는 키보드로부터 눌려진 키에 대한 데이터를 입력받고 해석하여 어떤 키가 눌렸는지 확인한다.
그리고 눌려진 키에 대한 데이터를 현재 실행 중인 프로그램에 전달한다.
해당 프로그램에서는 입력받은 키를 처리하여 사용자에게 적절한 출력결과를 내보낸다.
OS는 이 출력결과를 다시 출력장치로 전달하는 역할을 한다. 즉, 입력장치로부터 입력받은 사용자의 요구를 해석하고, 그 요구에 맞게 입력장치와 출력장치를 구동하여 관련된 작업을 순서에 맞게 처리하는 역할을 한다.
[3] 운영체제의 종류와 특징
(1) DOS(Disk Operating System)
디스크에서 구동되는 시스템이라는 듯을 가진 단일 사용자 단일 태스크의 운영체제를 말한다.
MS-DOS, DR-DOS, PC-DOS 등이 있다.
우리나라에서는 MS-DOS를 많이 썼으며, 우리나라에서 만든 K-DOS도 있다.
DOS는 디스크를 위주로 동작하는데, 디스크에서 파일을 읽어 오거나 저장하는 작업과 이러한 작업을 제어하고 관리하는 작업 등을 수행한다.
(2) OS/2
OS/2는 마이크로소프트사와 IBM이 초기에 제작한 OS이다.
DOS가 단일 사용자 단일 태스크인 반면, OS/2는 단일 사용자용 멀티태스크 OS이다.
즉, 하나의 작업을 수행하고 있으면 실행시킨 작업이 완료되기 전까지 다른 작업을 할 수 있다.
IBM은 마이크로소프트와 공동으로 운영체제 개발을 진행하였는데, DOS가 가지고 있는 단일 태스크의 한계를 벗어나 멀티태스킹이 가능한 운영체제 개발을 목표로 하였으며, 이때 탄생한 운영체제가 OS/2이다.
OS/2가 나오면서 하나의 컴퓨터에서 여러 작업을 동시에 실행시킬 수 있게 되었다. OS/2는 GUI 방식의 사용자 인터페이스 방식으로 화면을 관리하였으며, 폴더라는 개념을 통해 파일을 관리하였다.
그러나, DOS와 호환되지 않아 대중화되지는 못했다.
(3) 윈도우(Windows)
마이크로소프트에서 만든 그래픽 사용자 인터페이스 운영체제
1985년 11월 윈도우 1.0을 발표했고, 이를 통해 DOS의 콘솔창에서 명령어 키보드를 입력하는 대신, 마우스를 이용하여 클릭하기만 해도 원하는 작업을 실행할 수 있게 되었다.
윈도우 1.0은 MS-DOS 파일 관리, 그림판, 메모장, 계산기, 달력, 시계를 비롯한 다양한 프로그램이 함꼐 제공되었고, 이후 여러 버전을 출시하면서 웹 브라우징 기능 지원, 하드웨어 및 소프트웨어를 손쉽게 설치할 수 있도록 도와주는 새로운 플러그 앤 플레이 기능이 기본적으로 제공되었다.
이후, 윈도우 10, 11이 발표되면서 스마트폰, 엑스박스, 태블릿, PC까지 마이크로소프트 운영체제를 사용하는 제품들간의 연동이 용이해졌다.
(4) 유닉스(Unix)
유닉스(Unix)는 1969년에 AT&T의 벨연구소에서 중형 컴퓨터에서 사용하도록 개발한 OS이다.
일반 사용자들이 사용할 수 있는 여러가지 유틸리티가 공개되면서 대중적으로 확산되기 시작하였다.
유닉스의 특징은 다수의 사용자가 다중 작업을 처리할 수 있다는 점이다.
초기 유닉스는 어셈블리어로 개발되었으나, 데니스 리치(Dennis Ritchie)가 C언어를 개발한 후, 다시 C언어로 유닉스를 개발했다.
유닉스는 어셈블리어가 아닌 고급언어로 개발된 최초의 운영체제이다.
어셈블리어로 개발된 프로그램보다 다른 하드웨어에서 실행시키는 것이 수월하게 되었다.
(5) 리눅스(Linux)
1991년 핀란드 헬싱키대학의 대학원생이었던 리누스 토발즈(Linus Benedict Torvalds)가 개발한 운영체제이다.
개인용 데스크탑과 서버의 운영체제로 널리 쓰이고 있으며, 공개된 커널을 기반으로 다양한 유틸리티를 추가하여 여러 종류의 배포판이 존재한다.
리눅스 배포판으로는 데비안, 레드햇, 우분투, 센트 OS 등이 있다.
① 우분투(Ubuntu)
데비안 GNU/리눅스를 기반으로 만들어진 데스크탑 PC환경의 리눅스 배포판.
마크 셔틀워스(Mark Shuttleworth)에 의해 개발
개인용 데스크탑 환경에 최적화 된 리눅스이며, 사용자의 편의를 중점으로 개발
② 페도라(Fedora)
레드햇(Redhat) 리눅스의 배포판으로 개인과 기업의 다양한 컴퓨터 환경에서 사용될 수 있도록 만들어짐.
레드햇사의 지원으로 2003년 레드햇 리눅스가 배포를 중단하면서 개발
이후, 레드햇 리눅스는 레드햇 엔터프라이즈(RHEL : Red Hat Enterprise Linux)라는 기업용 리눅스로 변경됨.
레드햇 엔터프라이즈는 배포 라이선스는 무료이지만, 기업에 기술을 지원하는 것에 대해 비용을 지불해야함.
이에 비해 페도라는 순수한 오픈 라이선스를 따르고, 그래픽 기반의 설치 프로그램과 시스템-환경설정 도구를 이용해 누구나 쉽게 운영체제를 설치할 수 있는 것이 특징
③ 센트 OS
센트 OS(CentOS)는 레드햇 엔터프라이즈 리눅스의 소스를 기반으로 레드햇 상표를 지우고 재컴파일하여 만든 배포판.
레드햇 엔터프라이즈 리눅스와 동일한 제품으로 보기도 하지만, 레드햇에 의해 기술지원을 받을 수 없기 때문에 대부분 커뮤니티를 통해 기술지원을 받음
(6) 맥 OS
애플이 매킨토시용으로 개발한 GUI OS이다.
초기에는 매킨토시에 포함된 이름 없는 OS로 매킨토시 시스템이라고 불렸으나, 1997년 맥 OS 7.6이 출시되면서 맥 OS라는 이름을 가지게 되었다.
(7) 모바일 운영체제
모바일 OS는 휴대폰이나 스마트폰과 같은 모바일 기기에 설치되는 OS이다.
① 윈도우 모바일(Windows Mobile)
마이크로소프트사에서 개발한 모바일 OS로 임베디드용 OS인 윈도우 CE를 기반으로 하고 있다.
모바일 환경에 적합한 새로운 타일 형식의 터치식 사용자 인터페이스를 추가하여 개발되었으며, 윈도우 CE의 기본적인 기능에 휴대전화 기능이 추가되었다.
② iOS
iOS는 애플의 아이폰과 아이패드에 내장되어 있는 유닉스 기반의 모바일 OS이다.
③ 안드로이드(Android)
안드로이드는 구글에서 공개한 모바일 OS이다.
안드로이드는 리눅스를 기반으로 개발되었으며, 다양한 안드로이드 시스템 구성요소에서 사용되는 C/C++ 라이브러리들을 포함하고 있다.
④ 심비안(Symbian OS)
심비안 OS는 심비안에서 개발한 모바일 OS로, 라이브러리, 사용자 인터페이스, 프레임워크, 다양한 도구를 포함하고 있다.
⑤ 블랙베리
리서치 인 모션(RIM : Research In Motion Limited)이 블랙베리 스마트 폰을 위해 만든 모바일 OS이다.
블랙베리는 멀티태스킹을 제공하고, 트랙휠, 트랙볼, 트랙패드, 터치스크린 같은 특화된 입력장치들을 지원한다.
⑥ 타이젠(Tizen)
휴대전화뿐만 아니라 TV, 냉장고와 같은 전자 기기에 탑재하는 것을 목적으로 개발된 오픈 소스 모바일 OS이다.
타이젠은 리눅스 기반의 OS이기 때문에 HTML5 및 C++로 만들어진다.
⑦ 우분투 터치
우분투 터치는 캐노니컬에서 리눅스 기반으로 만들어진 모바일 OS이다.
우분투 터치는 동작 기반의 OS로 하드웨어 버튼 없이 터치만으로 모바일 기기를 작동할 수 있다.
리눅스 기반으로 만들어진 OS이기 때문에 다른 리눅스 기반 OS인 안드로이드 환경에서 개발된 앱도 사용할 수 있다.
(8) 구글 크롬 OS
구글 크롬 OS는 구글에서 제작하였으며, 웹 브라우저인 구글 크롬을 활용한 오픈소스 OS이다.
구글 크롬은 리눅스를 기반으로 한 후, 디스플레이 서버를 올리고 그 위에 구글 크롬을 실행하는 구조이다.
따라서, 사용자 인터페이스는 크롬 웹 브라우저를 사용하는 방식과 비슷하다.
독자적인 OS이기 때문에 윈도우, 리눅스 등 다른 OS에서 사용하는 소프트웨어는 사용할 수 없고, 구글에서 제공하는 구글 크롬용 웹 앱들을 사용할 수 있다.