본문으로 건너뛰기

이중 모드에 대해서 설명해주세요.

운영체제는 사용자가 실행하는 응용 프로그램이 하드웨어에 직접 접근하는 것을 방지하여 자원을 보호한다. 응용 프로그램이 자원에 접근하기 위해서는 운영체제에 도움을 요청해야 한다.

응용 프로그램의 요청을 받은 운영체제는 대신 자원에 접근하여 요청한 작업을 수행한다.

이러한 운영체제의 문지기 역할은 이중 모드로써 구현된다. 이중 모드란 CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식이다. CPU는 명령어를 사용자 모드로써 실행할 수 있고, 커널 모드로써 실행할 수 있다.

사용자 모드는 운영체제 서비스를 제공받을 수 없는 실행모드이다. 즉, 커널 영역의 코드를 실행할 수 없는 모드이다. 일반적인 응용 프로그램은 기본적으로 사용자 모드로 실행된다. 사용자 모드로 실행 중인 CPU는 입출력 명령어와 같이 하드웨어 자원에 접근하는 명령어를 실행할 수 없다. 그래서 사용자 모드로 실행되는 응용 프로그램은 자원에 접근할 수 없다.

반면 커널 모드는 운영체제 서비스를 제공받을 수 있는 실행 모드이다. 즉, 커널 영역의 코드를 실행할 수 있는 모드이다. CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있다.

CPU가 사용자 모드로 실행 중인지, 커널 모드로 실행 중인지는 플래그 레지스터 속 슈퍼바이저 플래그를 보면 알 수 있다. 슈퍼바이저 플래그가 1이면 커널모드로 실행 중임을 의미하고, 0이면 사용자 모드로 실행 중임을 의미한다.

Reference