2013-10-24 4 views
-1

클래스에서 prof는 "[어셈블리] 명령은 트랩이 생성되면 사용자 모드이므로 권한 또는 사용자 모드에서 실행 중인지를 알 수 있습니다."지시가 privilleged 또는 사용자 모드에서 실행 중인지 어떻게 알 수 있습니까?

먼저 트랩이 아니라 사용자 모드에서 명령을 실행할 수 없다는 특정 트랩이라고 가정합니다.

둘째, 이것은 매우 비효율적 인 것처럼 보입니다. 전체 명령을 실행하고 트랩이 있는지 확인하십시오. 왜 깃발이 꽂혀 있지 않습니까? 이게 작동하지 않는다면 문제가 있다는 것을 말하는 것이 아닌가요? 그래서 실제로 확인할 방법이 없나요?

답변

0

이것은 플랫폼 (ARM, x86 등)에 따라 다릅니다. ARM에 주로 익숙해 져서 제 답변이 ARM에만 한정되어있을 수도 있지만 최대한 일반적인 것으로 유지했습니다.

일반적으로 CPU는 프로세서 모드를 추적하고 실행되는 동안 각 명령이 검사됩니다. 이것은 하드웨어가 아닌 소프트웨어로 이루어 지므로 효율적인지 여부는 걱정하지 않아도됩니다 (하드웨어 개발자에게 맡긴다).

충분한 권한이 없기 때문에 명령이 하드웨어에 트랩되면 CPU는 일반적으로 권한 모드에서 설정된 위치에서 실행을 시작합니다. 이 설정 위치는 일반적으로 커널에있는 트랩 처리기입니다. 그런 다음 트랩 처리기는 트랩의 원인에 대한 정보를 수집하고 적절하게 처리합니다.

+0

효율성이 중요하지 않다는 것을 하드웨어에서 확인한 것이 무엇입니까? 트랩은 소프트웨어가 아닌가? 비록 당신의 이유가 "걱정하지 않아도"모르겠다하더라도 – Celeritas

+0

트랩 처리기는 소프트웨어로 구현되지만 기본 메커니즘은 여전히 ​​하드웨어에 있습니다. 나는 그것이 소프트웨어 개발자의 통제를 벗어나기 때문에 하드웨어에서 어떻게 구현되는지 걱정하지 않는다고 말합니다. – tangrs