개요
오퍼레이팅 시스템(Operating System, 약칭:OS)은 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어이다. 최근에는 가상화 기술의 발전에 힘입어 실제 하드웨어가 아닌 하이퍼바이저 위에서 실행되기도 한다. 운영 체제는 실행되는 응용 프로그램들이 메모리와 CPU, 입출력 장치, Network, Disks 등의 자원들을 공평하게 그리고 효과적으로 사용할 수 있도록 만들어 주고, 이들을 추상화하여 파일 시스템 등의 서비스를 제공한다. 또한 멀티태스킹을 지원하는 경우, 여러 개의 응용 프로그램을 실행하고 있는 동안, 운영 체제는 이러한 모든 프로세스들을 스케줄링하여 마치 그들이 동시에 수행되는 것처럼 보이는 효과를 낸다. 운영체제는 user와 HW의 중재자 역활을 한다.
운영체제의 구성 요소
운영체제의 핵심 역활
구현
속도가 중요한 부분에서는 Assembly 언어와, C를 이요하여, 그외의 부분에서는 C++이나 요즘에는 shell scripts (Python)을 이용하기도 한다.
운영체제 종류
일반적인 목적의 운영체제는 매우 큰 프로그램이다. 따라서, OS는 매우 많은 모듈로 이루어져있다. 요즘나오는 많은 운영체제는 읽어들일수 있는 커널들로 이루어져 있다. 아주 중심이 되는 커널이 있고, 모듈들은 커널이 필요로 할때만 읽어들여진다. 예를들어 파일시스템은 계속 붙어있지만, 사용하지 않는 장치의 드라이버는 커널에 합쳐져 있지 않은 상태로 있다. 또한 아래에 나오는 구조들을 적당히 합친 Hybrid System을 구현하여 작동한다.
Simple Structure
MS DOS는 모든레이어에서 운영체제에 접근할 수 있다. MS DOS의 커널은 통짜로 짜여진 코드에서 모든일을 처리했다.
Non Simple Structure (UNIX) Monolitic
유닉스는 시스템 프로그램과 커널로 나누어질 수 있다.
도스에 비하면 굉장히 세분화 되어있고, 나누어져 있지만, 요즘 운영체제와 다르게 상당히 통합되어 있다.
Layered Approach
운영체제게 여러개의 레이어로 나누어져 있고, 레이어 사이의 통신만이 이루어지는 구조를 말한다. 이 구조는 운영체제 구조에 관한 컨셉이다.
Microkernel System Structure
유닉스의 커널의 많은 부분을 사용자로 옮겨놓은 것이다. 이러한 사용자 프로그램의 통신은 message passing으로 구현되어 있다. 확장하기 쉬우며, 신뢰성이 높고, 안전하다는 장점이 있다. 그러나 모노리틱커널에 비하면 메시지를 전달하는 오버헤드로 인하여, 속도가 느리다.