컴퓨터는 크게 하드웨어와 소프트웨어로 나눌 수 있다.
소프트웨어는 다시 운영체제와 그 위에 설치되는 응용 프로그램으로 나뉜다.
운영체제는 커널(Kernel)과 시스템 프로그램으로 구분된다.
커널이란?
커널은 OS의 핵심 요소로 컴퓨터 하드웨어와 프로세스의 보안, 자원 관리, 하드웨어 추상화 등
중요한 역할을 수행한다.
특히 자원 관리를 위해 CPU 스케줄링, 메모리 관리, 입출력 관리, 파일 시스템 관리를 담당한다.
운영체제는 사용자가 시스템의 중요 자원에 쉽게 접근하지 못하도록 커널 모드와 사용자 모드로 모드를 나눈다.
사용자 모드에서는 커널 모드의 자원에 접근할 수 없게 제한을 둔다.
사용자 모드에서 실행된 프로세스가 자원에 접근하기 위해서는 시스템 콜을 호출해 커널에 요청 해야 한다.
커널 모드
프로세스는 프로세스의 생성이나 하드웨어의 조작 등 커널의 도움이 필요한 경우 시스템 콜을 통해 커널에 처리를 요청한다.
•
커널의 도움이 필요한 경우
◦
프로세스 생성 및 삭제
◦
메모리 확보 및 해제
◦
파일 조작
◦
장치 관리
오른쪽 그림의 순차적인 동작은 다음과 같다.
1.
프로세스는 사용자 모드로 실행되다가 커널에 처리가 필요한 경우 시스템 콜을 호출한다.
2.
CPU에서는 인터럽트 이벤트가 발생하고 CPU가 사용자 모드에서 커널 모드로 변경되며 요청한 내용을 처리하기 위해 커널이 동작한다.
•
Interrupt Event : 인터럽트는 커널과 통신하는 방식 중 하나로써 Event가 발생했을 대 그 신호에 의해 Event를 처리하는 방식이다.
또 다른 방법으로는 주기적인 간격마다 Event 발생 유무를 확인하는 방식인 폴링 방식이 있다.
3.
요청한 내용 처리가 끝나면 커널 내의 시스템 콜 처리가 종료되고 다시 사용자 모드로 돌아가 프로세스의 동작을 계속해서 진행한다.