컴퓨터의 자원을 관리한다. 프로세스가 컴퓨터의 자원(메모리, 파일, CPU 등)을 할 당 받기 위해서는 반드시 운영체제로부터 할당을 받아야한다. 운영체제는 Kernel
과 Shell
로 구성된다.
부팅시 부트로더에 의해 메모리에 적재되어 메모리에 상주하는 운영체제의 핵심이다. 앞으로 설명할 운영체제의 기능의 대부분은 커널에서 실행된다. 운영체제에서 가장 중요한 요소로서 입출력을 관리하고, 소프트웨어로부터의 요청을 받아 필요한 컴퓨터의 자원(디스크, 메모리, H/W)을 할당해주는 역할을 한다.
커널과 반대되는 개념이다. Shell이라는 이름에 맞게 커널의 껍데기 역할을 하여 사용자가 운영체제에 접근하기 위해서는 Shell을 거쳐야한다. Shell은 사용자가 터미널에서 입력한 명령을 해석하고 관리하여 사용자와 커널 사이는 연결하는 역할을 한다.
Shell은 크게 3개의 기능을 가지고 있다.
- 명령어 해석기 기능 : Shell의 가장 기본적인 기능으로서 사용자가 입력한 명령어를 기계어로 해석, 번역하여 커널에 전달하고 커널에서 수행한 결과를 다시 번역하여 사용자에게 전달하는 역할을 한다.
- 프로그래밍 기능 : Shell Script를 작성하여 반복적으로 수행하는 작업을 하나의 프로그램으로 만들 수 있다.
- 사용자 환경 설정 기능 : 파일의 권한 설정, 명령어를 찾아오는 경로 설정 등을 초기화 파일에 저장하여 사용자가 로그인할 때 마다 초기 설정이 반영되도록 할 수 있다.
운영체제
와 그 운영체제를 사용하는 유저
는 컴퓨터의 소프트웨어와 하드웨어의 자원을 공유하기 때문에 악성 프로그램의 경우 컴퓨터 중요 자원 및 핵심 코드에 접근하여 손상시킬 가능성이 있다. 따라서 컴퓨터의 자원을 관리하는 Kernel mode
와 소프트웨어를 실행하는 User mode
로 분리하여 컴퓨터 자원에 대한 적절한 접근만 Kernel Mode
에서 처리한다.
User mode
는 아래와 같이 사용자가 접근할 수 있는 유저 영역을 제한적으로 두고, 프로그램의 자원을 함부로 수정하지 못하게 하는 모드이다.
Kernel mode
는 그에 반해 컴퓨터 자원에 대한 제어권을 가지고 있는 모드로서 유저레벨을 포함한 모든 종류의 명령을 전부 실행할 수 있다. privellege level(권한 수준)
이 높기 때문이다.
따라서 User Mode에서 프로그램의 자원에 접근해야하는 경우 아래의 그림과 같이 User Mode에서 System Call
을 통해 커널에 요청을 하면 Kernel Mode로 넘어가 요청에 대한 작업을 수행한 뒤 다시 User Mode로 돌아오게 된다.
커널이 프로그램의 제어를 갖게 되는 사건이다.
크게 H/W Interrupt
, S/W Interrupt(System Call)
, Exception(예외)
으로 나뉜다.