저는 대기 시간이 짧은 애플리케이션 개발을 하고 있으며 isocpu를 사용하고 스레드 선호도를 설정하여 (들어오지 못하게 하다? ) 중요한 스레드 중에 컨텍스트 전환을 수행합니다. 하지만 내 중요한 스레드가 여전히 어떤 다른 유형의 중단을 받을 수 있는지 잘 모르겠습니다.
x86 CPU 아키텍처에 대해서는 많이 알고 있지만 인터럽트/컨텍스트 스위치, 다양한 유형 등에 대해서는 잘 모릅니다. 사용시 getrusage
표시자치그리고눈에 띄지 않는컨텍스트 스위치?
커널 우회도 사용되므로 네트워크 카드는 데이터를 사용자 수준 버퍼에 직접 기록하므로 이 질문에 대한 몇 가지 가능한 답변이 배제될 수 있습니다.
답변1
/proc/interrupts
각 CPU가 어떤 하드웨어를 처리하는지 확인하세요 . 모든 프로세스와 모든 인터럽트가 다른 CPU 코어를 사용하도록 구성되지 않은 경우 시스템은 모든 CPU에 대한 모든 작업과 인터럽트의 균형을 맞추려고 시도합니다. 또한 마더보드 펌웨어가 일부 "하드웨어"를 구현할 수 있습니다.SMI 인터럽트는 운영 체제 제어 없이 최소한 일부 CPU 코어를 인터럽트할 수 있습니다..
자발적인 컨텍스트 전환은 ),open()
/프로그램이 운영 체제(예:malloc()
brk()
sleep()
중단될 수 있는 실시간 우선순위로 실행되는 프로세스 목록:
동일한 코어에서 실행되는 실시간 우선순위가 더 높은 기타 실시간 작업.
인터럽트 핸들러는 동일한 CPU 코어에 바인딩됩니다.
국립경영연구소
스타 라이스
작업이 일반 사용자 모드 프로세스로 실행되는 경우 동일한 CPU에서 실행 중인 다른 프로세스(우선순위가 낮은 프로세스 포함)가 프로세스를 중단할 수 있습니다.