CPU 모드

위키백과, 우리 모두의 백과사전.

CPU 모드, 프로세서 모드, CPU 상태, CPU 권한 수준은 실행 중인 특정 프로세스에서 수행할 수 있는 작업의 유형과 범위에 제한을 두는 일부 컴퓨터 아키텍처의 중앙 처리 장치에 대한 작동 모드이다. 이 설계를 통해 운영 체제는 응용 소프트웨어보다 더 많은 권한으로 실행될 수 있다.

이상적으로는 신뢰도가 높은 커널 코드만 무제한 모드에서 실행할 수 있다. 그 밖의 모든 것(운영 체제의 감독되지 않는 부분 포함)은 제한된 모드에서 실행되며 시스템 호출(인터럽트를 통해)을 사용하여 커널이 대신 시스템을 손상시키거나 손상시킬 수 있는 모든 작업을 수행하도록 요청해야 한다. 다른 프로그램(또는 컴퓨팅 시스템 자체)을 변경하거나 손상시키는 신뢰할 수 없는 프로그램이다.

그러나 실제로 시스템 호출은 시간이 걸리고 컴퓨팅 시스템의 성능을 저하시킬 수 있으므로 시스템 설계자가 시간이 중요한 일부 소프트웨어(특히 장치 드라이버)가 전체 커널 권한으로 실행되도록 허용하는 것은 드문 일이 아니다.

여러 모드를 구현할 수 있으므로 하이퍼바이저가 그 아래에서 여러 운영 체제 감독자를 실행할 수 있다. 이는 현재 사용 가능한 많은 가상 머신 시스템의 기본 설계이다.

모드 종류[편집]

제한되지 않은 모드(unrestricted mode)는 종종 "커널 모드"라고 불리지만 다른 명칭도 많이 있다(마스터 모드, 감독자 모드, 특권 모드 등). 제한된 모드(restricted mode)는 일반적으로 "사용자 모드"라고 하지만 다른 이름(슬레이브 모드, 문제 상태 등)으로도 알려져 있다.

커널
커널 모드에서 CPU는 아키텍처에서 허용하는 모든 작업을 수행할 수 있다. 모든 명령이 실행될 수 있고, 입출력 작업이 시작될 수 있으며, 메모리 영역에 액세스할 수 있다. 다른 CPU 모드에서는 하드웨어에 의해 CPU 작업에 대한 특정 제한이 적용된다. 일반적으로 특정 명령(특히 시스템의 전역 상태를 변경할 수 있는 입출력 작업 포함)이 허용되지 않으며 일부 메모리 영역에 액세스할 수 없다. CPU의 사용자 모드 기능은 일반적으로 이러한 명령의 하위 집합이다. 커널 모드에서 사용할 수 있지만 기본이 아닌 아키텍처의 하드웨어 에뮬레이션과 같은 일부 경우에는 표준 커널 모드에서 사용할 수 있는 것과 크게 다를 수 있다.
사용자
일부 CPU 아키텍처는 종종 권한 계층을 사용하여 여러 사용자 모드를 지원한다. 이러한 아키텍처는 종종 링 기반 보안을 갖추고 있다고 하며, 권한 계층은 커널 모드를 중심으로 한 동심 링 집합과 유사하다. 멀틱스 하드웨어는 링 보안의 첫 번째 중요한 구현이었지만 인텔 80286 보호 모드 및 IA-64를 포함하여 다른 많은 하드웨어 플랫폼도 유사한 라인을 따라 설계되었다.

모드 보호는 CPU 하드웨어 자체를 넘어서는 리소스로 확장될 수 있다. 하드웨어 레지스터는 CPU의 현재 작동 모드를 추적하지만 추가 가상 메모리 레지스터, 페이지 테이블 항목 및 기타 데이터는 다른 리소스에 대한 모드 식별자를 추적할 수 있다. 예를 들어, CPU는 CPU 자체의 상태 워드에 표시된 대로 링 0에서 작동할 수 있지만 메모리에 대한 모든 액세스는 액세스 대상 가상 메모리 세그먼트에 대한 별도의 링 번호에 대해 추가로 검증될 수 있다. 대상이 되는 실제 페이지(있는 경우)의 링 번호에 대해 이는 PSP 휴대용 시스템에서 입증되었다.

포펙과 골드버그의 가상화 요구를 충족하는 하드웨어를 사용하면 가상 머신을 효율적으로 지원하는 소프트웨어 작성이 훨씬 간단해진다. 이러한 시스템은 감독자 모드에서 실행되고 있다고 믿지만 실제로는 사용자 모드에서 실행되는 소프트웨어를 실행할 수 있다.