드디어 말로만 들었던 운영체제 수업을 듣게 되었다...!! CS면접에서 빼먹을 수 없다, 굉장히 중요한 과목이다는 말만 들었을 뿐 무슨 내용을 배우는지 왜 배우는지에 대해서는 알지 못했다. 운영체제가 뭐야? 라고 하면 음.. 윈도우같은거? 뭐.. 안드로이드?라고 하는 수준이었다. 그럼 운영체제는 무엇일까?
운영체제의 정의
운영체제는 응용 프로그램이나 사용자에게 컴퓨터 자원을 사용할 수 있는 인터페이스를 제공하고 그 결과를 돌려주는 시스템 소프트웨어이다. 또한 디바이스의 전원을 켜면 가장 먼저 만나게 되는 소프트웨어이다.
위의 사진에도 나와있듯이 운영체제는 인터페이스와 커널로 이루어져있다. 이 포스트의 제목이 커널과 인터페이스 인 것도 운영체제의 구조 때문이다. 그렇다면 커널은 뭐고 인터페이스는 뭐지?
커널은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것이다.
인터페이스는 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할을 한다.
시스템 호출은 커널이 자신을 보호하기 위해 만든 인터페이스로 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단한다.
드라이버는 커널과 하드웨어의 인터페이스를 담당하며 디바이스 드라이버라고도 불린다. 마우스와 같이 간단한 제품은 드라이버를 커널이 가지고 있으나, 그래픽카드와 같이 복잡한 하드웨어의 경우 제작자가 드라이버를 제공한다.
아 그러면 인터페이스는 커널과 사용자 간의 다리 역할이고 커널이 핵심적인 기능을 하는 것이기 때문에 운영체제의 핵심 기능은 프로세스 관리, 메모리 관리, 저장장치 관리 등이 있겠군!
자원 관리 <-------> 효율성
자원 보호 <-------> 안정성
하드웨어 인터페이스 제공 <-------> 확장성
사용자 인터페이스 제공 <--------> 편리성
커널은 여러가지 형태로 존재하는데 크게 단일형 구조 커널, 계층형 구조 커널, 마이크로 구조 커널로 나뉜다.
단일형 구조 커널
초창기 운영체제 구조이고 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성되어 있다. MS-DOS가 단일형 구조 커널을 가진다.
- 장점
모듈 간의 통신 비용이 줄어들어 효율적인 운영이 가능하다.- 단점
모든 모듈이 하나로 묶여 있기 때문에 버그나 오류를 처리하기가 어렵다.
상호 의존성이 높아 기능상의 작은 결함이 시스템 전체로 확산될 수 있다.
다양한 환경의 시스템에 적용하기 어렵다.
현대의 운영체제는 매우 크고 복잡해 단일형 구조 커널로는 구현하기가 어렵다.
계층형 구조 커널
비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식으로 window와 같은 운영체제에서 사용하는 구조이다.
마이크로 구조 커널
프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 기본적인 기능만 제공하며 커널의 각 모듈은 세분화되어 존재하고 모듈 간의 정보 교환은 프로세스 간 통신을 이용하여 이루어진다. 간단하게 CPU용량이 작은 시스템에 사용하므로 android, ios와 같은 휴대용 디바이스의 운영체제에 많이 사용된다.
이미지 출처 : 쉽게 배우는 운영체제(조성호)