2014-09-19 1 views
0

CPU는 커널 모드 (완전 권한) 또는 사용자 모드 일 수 있습니다. 커널은 커널 모드가 필요하고 응용 프로그램은 사용자 모드에서 실행해야합니다. 그러나 CPU가 한 번에 두 가지 모드로 어떻게 될 수 있습니까?커널/사용자 모드의 CPU

답변

1

프로세서는 일반적으로 프로세서가 주어진 시간에 어떤 모드인지 나타내는 모드 플래그를 포함합니다. 그 깃발은 반드시 전체적으로 많이 할 필요는 없습니다. 간단한 구현에서 플래그는 프로세서가 메모리 매핑을 변경할 수 있는지 여부 만 제어 할 수 있습니다. 프로세서는 단순히 사용자 모드로 전환하는 명령 및 커널 모드로 동시에 전환하여 특정 주소로 점프하는 명령을 포함합니다.

커널이 위의 주소에 자신의 코드를 저장하고 문제의 주소가 쓰기 금지되어 있도록 메모리 맵을 전환하면 사용자 코드는 커널에 요청을 어딘가에 저장하여 수행하도록 요청할 수 있습니다 "커널 모드로 전환 및 점프"명령을 호출합니다. 그런 다음 커널 코드는 개인 메모리 영역을 활성화하고 사용자 모드 코드에 의해 저장된 요청을 검사하고 요청에 따라 작동하고 개인 메모리 영역을 비활성화하며 사용자 모드로 다시 전환하고 실행중인 사용자 모드 코드로 돌아갈 수 있습니다.

+2

supercat의 답변 외에도 CPU는 한 번에 두 가지 모드가 아닙니다. 사용자 모드 코드를 실행 중이거나 동일한 논리 코어에서 커널 모드 코드를 실행 중입니다. – tangrs

+0

@tangrs : 주어진 실행 컨텍스트는 하나의 모드에만 있습니다. CPU가 핸들 실행 컨텍스트를 동시에 처리 할 수있는 경우 (예 : 다중 코어 사용 또는 단일 코어에서의 하이퍼 스레딩) 논리적으로 분리 된 CPU 부분은 부품이 다른 모드에있는 동안 한 모드에있을 수 있습니다. – supercat

+0

supercat & tangrs, 주제를 명확히 해 주셔서 감사합니다. – Mark