내 ps 출력의 두 실시간 프로세스 중에서 어떤 실시간 프로세스가 Linux에 의해 선점됩니까?

내 ps 출력의 두 실시간 프로세스 중에서 어떤 실시간 프로세스가 Linux에 의해 선점됩니까?

나는 다음으로부터 몇 가지 아이디어를 얻었습니다.https://stackoverflow.com/questions/8887531/which-real-time-priority-is-the-highest-priority-in-linux 커널의 서로 다른 식별자에 할당된 실시간 우선순위 값이 서로 다른(반대) 것을 의미하는 방식에 대해 설명합니다.

하지만 ps 출력의 RTPRIO 열 값에 대한 해석이 여전히 불분명합니다. 값이 높을수록 우선순위가 높아지며, 그 반대도 마찬가지입니다.

특히 다음 ps 출력이 주어지면:큐브/0(RTPRIO=1)은 우선순위가 더 높습니다(즉, 선점될 수 있음).마이그레이션/0(RTPRIO=99) 또는 그 반대입니다.

여기에 이미지 설명을 입력하세요.

답변1

~에 따르면프로그램 제작자:

우선 순위는 예약된 프로세스가 커널 모드에서 하위 프로세스를 기다리는 시간으로, 클록 주기로 측정됩니다. 19(낮은 우선순위)부터 -20(높은 우선순위)까지의 값입니다. 프로세스는 실시간 또는 비실시간 우선순위로 실행될 수 있습니다.

  • 실시간 스케줄링 정책을 실행하는 프로세스의 경우(즉, 스케줄러는 CPU가 다음에 실행할 실행 가능한 프로세스를 결정하는 커널 구성 요소입니다) 각 프로세스에는 관련 스케줄링 정책과 정적 스케줄링 우선순위 sched_priority가 있습니다 sched_setscheduler(). 프로그램은 스케줄링 정책에 대한 지식과 시스템의 모든 프로세스의 정적 우선순위를 기반으로 결정을 내립니다. 이는 음의 스케줄링 우선순위에서 1을 뺀 값, 즉 실제 값에 해당하는 -2에서 -100 사이의 숫자입니다. -시간 우선순위는 1부터 99까지입니다. .
  • 이는 비실시간 스케줄링 정책(즉, getpriority() 호출로 획득되고 which 및 who 표시에 의해 설정된 프로세스, 프로세스 그룹 또는 사용자의 스케줄링 우선순위) 하에서 실행되는 프로세스에 대한 원래의 좋은 값입니다. setpriority() 호출로 얻은 것입니다.) 커널에 표시된 대로입니다. 커널은 nice 값(예: 테이블 NI의 열 ps)을 사용자가 볼 수 있는 nice 범위 -20 ~ 19에 해당하는 0(높음) ~ 39(낮음) 범위의 숫자로 저장합니다.

관련 정보