운영체제는 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어이다.
컴퓨터의 자원(키보드, 네트워크카드, 사운드 카드 등)은 한정적이다. 운영체제를 통해 적당한 순서로 자원을 배분하고 적절한 시점에 자원을 회수하여 다른 응용프로그램들에게 나누어주는 역할을 진행해야한다.
미숙 및 악의성으로 인한 자원 손해를 막아야한다.
운영체제는 하드웨어 인터페이스가 자동으로 설치되게 함으로써 하드웨어의 종류에 상관없이 사용가능하게 해줘야한다.
과거에는 마우스없이 키보드만 사용했기 때문에 여러모로 불편했음
이런 불편함을 해소하고자 GUI가 제공되었고, 현재는 터치스크린과 같은 기술을 통해 편리한 인터페이스를 제공해준다. 즉 사용자가 운영체제를 더 편리하게 사용하도록 지원하기 해줘야한다.
운영제제는 컴퓨터자원을 효율적으로 관리하는 것이다. 한정적인 같은 자원을 사용하여 더많은 작업량을 처리하거나, 같은 작업량을 처리하는 데 보다 적은 자원을 사용하는 것이다.
운영체제는 사용자의 안정적인 작업을 위해 보안을 제공해줘야한다. 즉 사용자와 응용프로그램의 안전 문제와 하드웨어적인 보안 문제를 처리할 수 있어야하며, 시스템에 문제가 발생했을 때 이전으로 복구하는 결함 포용(fault tolerant) 기능을 수행해야한다.
운영체제는 다양한 시스템 자원을 추가하거나 제거하기가 편리해야한다. 즉 하드웨어의 종류에 상관없이 꽂으면 바로 실행할 수 있는 플러그 앤드 플레이 기능이 제공해야한다. 또한, 앞으로 개발될 하드웨어도 제약없이 사용할 수 있도록 확장성을 보장하려면 사용자의 편리성뿐만 아니라 하드웨어 제작자의 편리성도 고려해야한다.
사용자가 편리하게 작업할 수 있는 환경을 제공하는 것이 운영체제의 목표이다. 동시에 자원의 낭비요소도 응용프로그램의 개발을 방해하기에 막아야한다.
커널은 프로세스 관리, 메모리 관리 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것
자동차의 엔진과 같다고 보면된다. 자동차의 종류는 다양하지만 엔진에 따라 성능이 좌우되는데 이와 마찬가지로 OS의 성능은 커널이 좌우한다.
자동차에서 핸들,브레이크 등 자동차를 조작하는데 필요한 부분의 역할처럼 커널에 사용자의 명령을 전달하고 실행결과를 사용자에게 알려주는 역할을 하느 장치를 인터페이스라 한다.
시스템호출은 커널이 자신을 보호하기위해 만든 인터페이스이다. 커널은 중요하기에 사용자나 응용프로그램으로부터 직접 접근을 금지한다. 따라서 자원을 이용하려면 시스템 호출이라는 인터페이스를 통해 접근해야한다.
커널과 하드웨어의 인터페이스는 드라이버가 담당한다. 컴퓨터 하드웨어와 상관없이 운영체제가 사용가능하도록 환경을 제공하기위해선 각 하드웨어에 맞는 프로그램을 직접 개발해야한다. 하지만 이는 매우 어려운 부분이다.
커널은 입출력의 기본적인 부분만 제작하고, 하드웨어의 특성을 반영한 소프트웨어를 하드웨어 제작자에게 받아 커널이 실행될 때 함께 실행되도록한다. 이때 하드웨어 제작가 만든 소프트웨어를 디바이스 드라이버라고 부른다. (마우스나 키보드같은 복잡하지않은 디바이스 드라이버는 커널에 다 포함되어있음)
핵심 기능 | 설명 |
---|---|
프로세스 관리 | 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다. |
메모리 관리 | 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다. |
파일 시스템 관리 | 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다. |
입출력 관리 | 필요한 입력과 출력 서비스를 제공한다. |
프로세스 간 통신 관리 | 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다. |
초창기의 운영체제 구조로 핵심기능을 구현하는 모듈들이 구분없이 하나로 구성되어있다.
ex) MS-DOS, VMS, 초기의 유닉스
단일형 구조 커널이 발전된 형태 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층간의 통신을 통해 운영체제를 구현하는 방식이다.
Ex) 마이크로소프트의 윈도우 등
계층형에서 발전된 형태 다양한 하드웨어와 사용자의 요구를 수용하기 위해 계속 계층과 기능을 추가했다. 이로인해 너무 방대해진 커널을 해결하고자 등장한 방식이다.
마이크로 구조 커널의 운영체제는 프로세스 관리,메모리관리, 프로세스 간 통신관리 등 가장 기본적인 기능만 제공한다. 각 모듈은 세분화되어서 존재하고 모듈 간의 정보 교환은 프로세스 간 통신을 이용하여 이루어진다.
ex) ios, Mac os