← 질문 목록
#165깊이 0
사용자 모드에서 커널 모드로 진입하는 이유는 무엇인가?
운영체제기초
사용자 프로그램이 하드웨어에 직접 접근하여 시스템을 파괴하는 것을 막기 위해서다.
| 모드 | 누가 도는가 | 권한 |
|---|---|---|
| 사용자 모드 | 프로세스 | 제한된 권한으로 실행 |
| 커널 모드 | 운영체제 | 모든 하드웨어 권한 보유 |
위 구조처럼 권한을 분리하여 하드웨어 제어권을 독점한다. 프로그램이 허락받지 않은 메모리나 장치를 직접 건드리면 CPU가 예외를 일으키고 커널이 그것을 처리한다. 권한을 얻는 것이 아니라 붙잡히는 것이다.
시스템 콜은 프로그램이 스스로 커널에 일을 맡기는 통로다. 다만 유일한 통로는 아니다. 하드웨어 인터럽트와 예외도 커널 모드로 넘긴다. 운영체제가 미리 정해놓은 인터페이스로 요청을 보내고, 커널이 요청의 정당성을 검사한 후 대신 수행한다.
이 과정에는 모드를 바꾸고 상태를 갈무리하는 비용이 든다. 다른 프로세스로 넘어가지 않으면 컨텍스트 스위칭은 아니다. 시스템 콜에는 모드 전환 비용이 붙으므로 호출 횟수를 줄여야 한다.