운영 체제

운영 체제(運營 體制, Operating System)는 하드웨어소프트웨어자원을 관리하고, 시스템에서 사용하는 공용 서비스를 제공하는 소프트웨어이다. 또한 시스템 소프트웨어의 일종이다. 약칭은 OS이다.

역할[편집 | 원본 편집]

주된 역할은 물리적 장치인 하드웨어와 논리적 개념인 소프트웨어를 이어주는 것이다.

가상화 기술이 발달한 요즘에는 소프트웨어 위에서 운영체제가 돌아가는 경우도 있다.

기본적으로 시스템 소프트웨어를 포함한 모든 소프트웨어의 코드는 하드웨어 위에서 실행된다. 그러나 소프트웨어 측에서 위키질을 한다던가 하는 특정한 목적으로 입출력이나 메모리 할당과 같은 하드웨어의 기능을 사용하기 위해서는 하드웨어가 인식할 수 있는 특정한 전기적 신호를 보낼 필요가 있다. 물론 개개의 소프트웨어가 직접 전기적 신호를 보낼 수 도 있으나, 복수의 소프트웨어가 동시다발적으로 동작할 경우 상호 간섭으로 인해 예기치 못한 결과(버그)를 내거나, 서로간의 효율을 저하시키는 결과를 낳을 수 있다. 이런 비효율을 제거하고, 하드웨어와 소프트웨어의 커뮤니케이션을 원활히 하는 역할을 담당하는 것이 운영 체제인 것이다.

초기의 컴퓨터들은 [계산기처럼 단순 계산 등 특정한 목적을 위해 만들어졌다. 어느 정도이고 하니, 소프트웨어를 설치하기 위해서는 사용자가 직접 케이블을 옮겨 꽃고 스위치의 전원을 바꿔주어 하드웨어가 목적에 맞게 움직이도록 해주어야 하는 지경이었다.

그러던 것이 폰 노이만내장 프로그램이라는 개념을 발명하면서 운영 체제 역시 본격적으로 발달하기 시작한다. 즉, 최초의 운영 체제란 사람이 수작업으로 케이블을 갈아 끼워 전자적 신호의 방향을 바꿔주던 것을 컴퓨터 내부에서 자체적으로 처리하기 위해 개발된 것이다.

이후 하드웨어와 소프트웨어가 발달함에 따라 운영 체제 역시 점점 더 많은 기능을 필요로 하게 되었고, 이에 따라 런타임 라이브러리, 인터럽트, 병렬 처리와 같은 기능들이 차례로 추가되었다. 또한 운영 체제를 이용하는 측의 편의를 위해 사용자 인터페이스 (User Interface, UI) 및 API (Application Programming Interface) 등도 차례로 추가, 발전하였다.

현대 사회에서 운영 체제의 역할은 매우 커, 컴퓨터는 물론 스마트폰이나 게임기, 자동차엔진이나 TV에 이르기까지 전자 기기를 사용하는 거의 모든 제품에 탑재되어 있다고 해도 과언이 아니다.

목적[편집 | 원본 편집]

운영 체제의 중요한 목적으로는 다음을 들 수 있다.

하드웨어 추상화
각 컴퓨터마다 사용하는 하드웨어에는 크고 작은 차이가 있다. 이러한 차이를 응용 프로그램이 직접 대응하려고 하면 극단적인 경우 세상에 존재하는 컴퓨터 댓수만큼의 변수를 처리할 필요가 있다. 그러한 비효율을 막기 위해 운영 체제가 하드웨어와 응용 프로그램 사이에 끼어 중재해 줌으로서 응용 프로그램 개발의 편의성을 증진시켜 준다.
자원 관리
개개의 컴퓨터에서 사용할 수 있는 자원은 제한되기 마련이다. 그런 제한된 자원 속에서 운영 체제가 자원을 적절히 할당하고 관리, 보호해 줌으로서 인해 다수의 응용 프로그램을 효율적으로 사용할 수 있다.
컴퓨터의 효율적 이용
운영 체제는 제어 프로그램으로서 사용자 프로그램이 사용하는 자원의 이용 순서나 이용 시간을 제어한다. 이를 통해 시스템 전체의 처리율을 향상시켜 컴퓨터를 보다 효율적으로 사용할 수 있게 한다.

대표적인 운영체제[편집 | 원본 편집]

실질적으로는 무척 다양한 수의 운영 체제가 존재하나, 크게 분류하면 다음과 같이 나뉜다고 볼 수 있다.

Microsoft Windows[편집 | 원본 편집]

UNIX-like[편집 | 원본 편집]

Linux[편집 | 원본 편집]

기타[편집 | 원본 편집]

구성 요소[편집 | 원본 편집]

서두에서 언급한 대로, 운영 체제는 하드웨어와 소프트웨어의 자원을 관리함과 동시에 사용자나 응용 소프트웨어에 대해 공용 서비스 (Common Services)를 제공하는 것이 주된 기능이다. 초창기의 운영 체제는 컴퓨터 자체의 하드웨어 및 소프트웨어적 단순함으로 인해 비교적 단순한 구조를 가지고 있었으나, 현대의 운영 체제는 복수의 소프트웨어들로 이루어진 거대한 소프트웨어군(群) 이라 해도 과언이 아니다.

커널[편집 | 원본 편집]

해당 문서 참조

네트워킹[편집 | 원본 편집]

지금 이 항목을 보고 있는 위키러도 그렇겠지만, 현대의 컴퓨터에 있어서 네트워크란 뗄래야 떼어놓을 수 없는 기능이다. 그러나 커널 부분의 설명을 읽은 감이 좋은 위키러라면 눈치챘겠지만, 하드웨어적 구성이 다른 컴퓨터 간에는 기본적으로 물리층 단위에서의 호환성은 없는 것이나 마찬가지다. 이러한 장치 구성이 다른 컴퓨터들을 네트워크로 연결해 주는 것 역시 OS가 가지는 중요한 기능 중 하나이다.

보안[편집 | 원본 편집]

운영 체제는 시스템 보안을 위해 사용자 및 프로그램이 시스템에 액세스 할 수 있는 권한을 설정하고 관리하는 역할을 담당한다. 윈도우즈UAC가 그 대표적인 기능이라 할 수 있다.

인터페이스[편집 | 원본 편집]

사용자 인터페이스[편집 | 원본 편집]

사용자 인터페이스(User Interface), 약칭 UI는 우리가 지금 보고 있는 화면을 뜻한다.

운영 체제는 키보드마우스 등의 입력 장치를 이용해 인간컴퓨터에게 전기적 신호를 보낼 수 있도록 함과 동시에, 모니터, 스피커 등의 출력 장치를 통해 그러한 전기적 신호가 어떤 결과를 가져오는지 시각, 청각 등의 감각으로 인식할 수 있도록 도와준다.

응용 프로그램 프로그래밍 인터페이스[편집 | 원본 편집]

애플리케이션 프로그래밍 인터페이스(Application Programming Interface), 약칭 API.

위에서 거듭 설명했듯, 운영 체제는 사용자 뿐만 아니라 응용 프로그램에게도 하드웨어의 구성이나 시스템의 종류에 구애받지 않고 그 시스템이 가지는 다양한 자원 등을 이용할 수 있도록 배려한다. 인간에 대한 배려가 사용자 인터페이스라고 한다면, 애플리케이션(응용 소프트웨어)에 대한 배려가 바로 API이다.

알기 쉽게 설명하면, 이 문서를 보는 위키니트가 자신의 컴퓨터에서 온라인 게임을 실행하든, PC방에서 실행하든, 혹은 친구집 컴퓨터에서 실행하든, 같은 애플리케이션이라면 해당 애플리케이션이 지원하는 한도 내에서 운영체제의 종류나 버전에 상관없이 동일한 결과를 얻을 수 있을 것이다. 이것을 가능하게 하는 기능들의 모음이 바로 API이다.

API는 OS의 종류 등에 따라[1] 다양한 모델이 있으나, 대부분의 API는 함수, 프로시저(Procedure), 변수, 데이터 구조 등으로 구성되며, 거기에 더해 인터프리터 기능을 보유하고 있는 경우도 있다. 일반적으로 프로그래머 입장에서 사용하기 편한 API일수록 추상화가 잘 되어 있어 블랙박스화되어 있기 마련이다.

API의 종류[편집 | 원본 편집]

실시간 운영 체제[편집 | 원본 편집]

실시간 운영 체제 (Real Time Operating System, RTOS)란 한정된 자원 내에서 실행된 잡 (Job) 이 정해진 기간 내에 수행되어야 하는 특수한 시스템을 위해 만들어진 운영 체제이다.

RTOS를 사용하는 시스템의 예[편집 | 원본 편집]

RTOS을 사용하는 시스템은 다음과 같은 경우를 들 수 있다.

  • 사용할 수 있는 리소스가 제한되는 경우
  • 미션 크리티컬 시스템 (Mission Critical System)[2]

RTOS의 예[4][편집 | 원본 편집]

같이 보기[편집 | 원본 편집]

바깥 고리[편집 | 원본 편집]

각주

  1. 물론 OS에 구애받지 않는 프리 API도 있다.
  2. 그 특성상 초장시간동안 오류 없이 사용할 수 있어야 하는 최중요 시스템
  3. 특히 증권 관련 시스템처럼 1분 1초가 수십 수백억의 손해로 직결되는 시스템
  4. 출처: 한국어 위키백과
Wikipedia-ico-48px.png
이 문서는 한국어 위키백과운영 체제 문서 13874320판에서 분기하였습니다.