하드웨어와 응용프로그램의 중간역할을 하고
응용프로그램에게 CPU, I/O, Memory 같은 하드웨어 자원을 할당하는 역할을 하는 것이
OS (운영체제) 이며 이를 사용하는 많은 이유중 하나는
위와 같은 컴퓨터 자원들을 효율적으로 관리하기 위해서이다.
여러가지 이유들이 있다. 한정적인 자원을 응용프로그램이 아무런 제약 없이
조작하면 프로세스의 데이터가 훼손 되어 제대로 작동하지 못한다.
그래서 응용프로그램들이 하드웨어 자원에 접근하기 위해서
각각의 OS 에서는 하드웨어와 응용프로그램간의 인터페이스 역할을 하는 KERNEL 을 제공한다.
응용프로그램이 하드웨어자원을 사용하기 위해
몇가지 알아야할 것들이 있다.
어플리케이션이 실행 될 때의 CPU MODE 이다.
커널 영역의 코드가 실행되는 Cpu mode 이다.
CPU 에서는 위의 2가지 모드를 구별하여
하드웨어자원을 제한적으로 사용할 수 있도록 구성하였다.
응용프로그램이 하드웨어 자원을 사용하기 위해서
User Mode
에서 Kernel Mode
로의 전환이 필요한데
여기에 System Call
이 있다.
응용프로그램이 커널에서 제공하는 서비스를 요청하는 인터페이스를 말한다.
이처럼 User Mode 와 Kernel Mode 의 전환은 비용적인 문제와
Thread 설정할 때 고려해야할 것 중 하나이다.