운영체제(Operating System)
운영체제(Operating System, OS)는 하드웨어뿐만 아니라 모든 소프트웨어를 관리하는 컴퓨터 시스템 소프트웨어로서 실행 관리자라고 정의할 수 있다. 운영체제는 누가 시스템을 어떻게 사용할 수 있는지를 관리하므로 컴퓨터 시스템을 관리하는 보스(Boss)라고 할 수 있다. 최근에는 가상화 기술의 발전에 따라서 실제 하드웨어가 아닌 가상 머신 위에서 실행되기도 한다. 운영체제는 체계적으로 작업의 순서를 정하고 중앙처리장치(CPU), 주기억장치 등 여러 하드웨어 시스템에 이를 할당하는 아주 복잡한 명령을 내리고, 프로그램의 실행 및 접근, 메모리 및 모니터 저장장치의 제어, 응용 프로그램의 구동, 명령 해석과 같은 어려운 작업까지 수행하도록 CPU에 지시한다. 또 여러 사용자가 동시에 작업을 수행할 때에 작업의 우선순위를 정하여 시간과 자원을 효율적으로 할당함으로써 네트워크상에서 다른 컴퓨터와 상호작용 하는 일을 관리하기도 한다. 입출력 같은 하드웨어 기능의 경우, 운영 체제는 응용 프로그램과 하드웨어 사이에서 중재자 역할을 수행한다. 정리하자면 운영체제는 컴퓨터 자원을 관리하며 하드웨어를 제어함으로써 컴퓨터의 사용을 편리하게 해 주는 역할을 한다. 응용 프로그램의 실행을 도와주는 것을 통해서 사용자와 하드웨어 사이를 매개하는 역할을 하는 소프트웨어라고 할 수 있다.
운영 체제의 구성
운영체제는 많은 부분으로 이루어지는데, 가장 중요한 요소 중 하나가 커널이다. 커널은 사용자들이 일반적으로 보지 못하는 낮은 수준의 프로세스를 제어한다. 메모리의 사용량이나 실행할 프로세스, 장치를 통해서 어떤 정보를 주고받을지 등을 제어한다. 사용자 인터페이스(User Interface)는 사용자가 직접 프로그램을 제어하고 사용할 수 있도록 도와주는 기능이다. 아이콘과 배경화면을 가진 그래픽이나 명령 줄을 이용해서 기능한다. 전자의 경우는 컴퓨터 소프트웨어에 무지한 사용자조차도 이용할 수 있게끔 쉽고 효율적으로 사용할 수 있도록 구성되어 대부분의 사용자가 이를 사용하고 후자는 컴퓨터 언어에 대한 지식이 있어야 사용할 수 있다. 비슷한 기능으로 API(Application Programming Interface)가 있는데, 이것은 응용 프로그램이 다른 프로그램과 상호작용하도록 하는 서비스와 소스 코드들이 한데 모여서 라이브러리를 형성하는 것으로, 운영 체제 그 자체라고도 볼 수 있다. 운영 체제에 따라 구성요소들 가운데 대부분이 실질적인 부분으로 취급되지 않을 수도 있는데 예를 들면 수많은 버전의 리눅스는 사용자 인터페이스를 운영체제의 일부로 여기지 않지만 윈도우는 이를 실질적인 부분으로 취급한다.
운영체제의 종류
운영체제의 종류에는 분산 운영 체제, 판형 운영 체제, 임베디드 운영 체제, 실시간 운영 체제 등이 있다. 이것들을 순서대로 살펴보자. 분산 운영체제는 서로 구별된 컴퓨터를 관리하면서 마치 이를 하나의 컴퓨터인 것처럼 보이게 만들어 준다. 서로의 네트워크들이 연결된 컴퓨터들이 개발되면서 이러한 운영 체제가 활성화되었다. 분산되는 연산이 최소 하나 이상의 컴퓨터에서 수행되므로 하나의 그룹에 속하는 컴퓨터들이 협업을 할 때 분산 시스템을 형성하게 된다. 판형 운영 체제에서 판형이란 하나의 가상 머신 이미지를 운영체제로 만드는 것을 가리킨다. 실행중인 여러 개의 가상 머신을 위한 도구로 이미지들을 저장한다. 이 기법은 주로 가상화에 사용되며 대형 서버 웨어하우스 환경에서 흔히 볼 수 있다. 임베디드 운영 체제는 임베디드 컴퓨터 시스템에서 사용될 수 있도록 설계되었다. 매우 크기가 작고 극히 효율적으로 설계되어있는데, 제한된 자원으로 동작하므로 작은 기계에 작동하도록 설계되어 있다. 실시간 운영 체제는 짧은 시간 내에 특정한 데이터의 처리를 실행하는 운영체제이다. 실시간 운영체제는 싱글 태스킹일 수도 있고 멀티 태스킹일 수도 있는데 멀티 태스킹의 경우는 특수한 알고리즘을 사용하여 이벤트의 처리를 보증한다. 실시간 운영체제는 모든 시스템 중에서 가장 빠른 응답 시간을 보이며, 결괏값이 현재의 영향을 받으며 데이터의 처리가 아주 빠르고 반환시간이 중요한 작업에 적합하다.
'소프트웨어 공학' 카테고리의 다른 글
객체 지향 프로그래밍(Object Oriented Programming, OOP)의 개념과 특징 (0) | 2021.11.22 |
---|---|
소프트웨어 설계 시 요구사항의 개념 및 특징 (0) | 2021.11.21 |
관계형 데이터베이스의 제약 조건 (0) | 2021.11.19 |
데이터 모델의 구성요소 : 개체, 속성, 관계 (0) | 2021.11.19 |
관계 대수의 개념과 연산자 및 관계 해석 (0) | 2021.11.19 |
댓글