내 Linux 커널이 시스템 호출에 SYSENTER / SYSEXIT를 사용하고 있는지 어떻게 확인할 수 있나요?

내 Linux 커널이 시스템 호출에 SYSENTER / SYSEXIT를 사용하고 있는지 어떻게 확인할 수 있나요?

내 Linux 커널이 sysenter/sysexit 명령을 사용하여 사용자 공간에서 시스템 호출을 시작하고 종료하는지 확인하려고 합니다.

내가 실행 중인 커널은 "2.6.31.12-174.2.3.fc12.x86_64"입니다.

어떤 아이디어가 있나요?

중.

답변1

sysenter/sysexit는 커널보다 CPU에 더 많이 의존합니다. Linux는 2.5일 초반부터 이를 활용해 왔습니다. Linux는 실행 중인 CPU 유형에 따라 SYSENTER, SYSCALL 또는 레거시 int 80 방법을 선택합니다.

실제로 사용되고 있는지 어떻게 확인할 수 있는지 잘 모르겠습니다. 나는 Systemtap이나 LTT가 충분히 낮은 수준을 볼 것이라고 생각하지 않습니다. 어쩌면 커널을 계측하고 vDSO 코드에 일부 추적점을 추가할 수도 있습니다.

답변2

내가 생각할 수 있는 유일한 제안은Linux 추적 툴킷커널 덤프를 생성하고 시스템 호출을 자세히 살펴봅니다.

답변3

다음을 살펴보는 것을 고려해 볼 수도 있습니다.시스템탭. 이를 통해 시스템 호출을 포함하여 원하는 이벤트가 발생할 때마다 작업을 트리거하는 스크립트를 작성할 수 있어야 합니다.

관련 정보