개요

운영체제는 시스템의 하드웨어와 프로그램을 관리하는 관리 프로그램이다. 운영체제에 대한 정의는 다양하며, 쉽게 정의할 수 없을 정도로 많은 종류의 운영체제가 있지만, 운영체제의 기본적인 역활은 불변한다. 많은 정의들은 운영체제를 다음과 같이 정의한다.

운영체제는 시스템 하드웨어와 응용 소프트웨어를 관리하는 플랫폼 레벨의 소프트웨어이다.

운영체제의 핵심적인 역활은 다음과 같다.

  1. 추상화 (Abstraction): 제일 중요한 운영체제의 핵심 역활로서, 복잡한 하드웨어를 추상화를 통해서 간단한 API혹은 Interface로 사용자에게 제공한다.
  2. 분리 (Isolation): 운영체제는 Isolation을 통해서 서로 다른 사용자가 같은 하드웨어를 사용하더라도, 혹은 서로 다른 프로그램이 같은 하드웨어를 사용하더라도 서로에 대한 Isolation을 제공함을써, 안전하게 사용할 수 있도록 한다.
  3. 보호 (Protection): 운영체제는 스스로를 악성 프로그램으로부터 보호한다.
  4. 동시성 (Concurrency): 운영체제는 복수의 프로그램을 동시에 실행시켜서 마치 그들이 동시에 수행되는 것처럼 보이게 한다.

많은 운영체제들은 위의 4가지 특성을 한번에 지니고 있지만, 필수적인 것은 아니다. 예를 들어서 DOS와 같은 경우에는 모든 프로그램이 운영체제와 같은 Isolation-level에서 실행됨으로, Isolation, Protection, Concurrency를 제공하지 않는다. 그러나 현대의 대부분의 Modern OS들은 위의 4가지 기능을 제공한다.

최근에는 가상화 기술의 발전에 힘입어 실제 하드웨어가 아닌 하이퍼바이저 위에서 실행되기도 한다. 운영 체제는 실행되는 응용 프로그램들이 메모리와 CPU, 입출력 장치, Network, Disks 등의 자원들을 공평하게 그리고 효과적으로 사용할 수 있도록 만들어 주고, 이들을 추상화하여 파일 시스템 등의 서비스를 제공한다. 또한 멀티태스킹을 지원하는 경우, 여러 개의 응용 프로그램을 실행하고 있는 동안, 운영 체제는 이러한 모든 프로세스들을 스케줄링하여 마치 그들이 동시에 수행되는 것처럼 보이는 효과를 낸다.

운영체제 시스템 스택

  1. Process Management
  2. Memory Management
  3. Disk and file system
  4. Device dirver
  5. Networking
  6. Security
  7. UI