2013-06-25 3 views
1

즉, syscallint <kernel-interrupt-number>의 차이점은 무엇입니까?syscall 명령의 목적은 무엇입니까?

내가 생각할 수있는 유일한 명백한 이유는 인터럽트 번호가 운영 체제에 따라 다르며 새롭고 독특한 명령을 사용하는 것이 더 일관성을 부여한다는 것입니다. 그러나 시스템 호출 번호와 인수는 운영 체제에 따라 다르므로 일관성의 향상은 실제로 적습니다.

아마도 인터럽트를 인터셉트하려면 커널에 더 많은 작업이 필요합니까? (따라서 syscall을 사용하면 성능이 향상됩니다.)

답변

1

올바른 경로에 있습니다. syscall 교육의 동기는 주로 성과입니다. 이 in AMD's "SYSCALL and SYSRET Instruction Specification"에 대해 자세히 알아볼 수 있습니다. 문서로부터

일부 발췌 :

운영 체제에 대한 호출, 전송 게이트 디스크립터를 통해 OS로 제어 애플리케이션 개시 (태스크 인터럽트, 트랩, 또는 게이트) 호출한다. 제어 전송은 CALL 명령 또는 소프트웨어 인터럽트를 사용하여 수행됩니다. 이러한 컨트롤 게이트를 설정하는 것은(나중에 RET 또는 IRET 명령을 통해 복귀하는 것뿐만 아니라)은 세그먼트 화 관련 오버 헤드에 의해 느려지므로 입니다.
....
SYSCALL 및 SYSRET은 메모리 모델이 있고 세그먼트가없는 운영 체제에서 시스템 호출 및 복귀 지연 시간이 낮은 에 사용되는 명령어입니다. 이러한 지침에는 참조 횟수를 줄임으로써 최적화되어 참조 번호가 줄어들어 호출 또는 반환이 인 경우 현재 CALL/RET 명령 방법과 비교했을 때 이 내부 클럭 사이클의 1/4보다 작게 나타납니다. .

관련 문제