OpenBSD에서 스레드 우선순위를 사용하는 방법을 설명할 수 있는 사람이 있습니까?
MAN 페이지에는 이 문제에 대한 정보가 거의 없으며 명확한 이해가 제공되지 않습니다. 특히:
sched_get_priority_min/max
범위를 지정하십시오. OpenBSD 6.3 amd64가 있고 범위는 0-31
.
처음 생성된 프로세스 스레드에 대한 기본 우선순위 정책/수준이 표시되면 다음이 표시됩니다 (SCHED_OTHER, 0)
. 0
가장 낮은 경우 유휴 스레드를 어떻게 지정합니까 ? 아니면 우선순위가 보통보다 낮은가요? 난 그냥증가하다우선순위? 시스템 스레드의 우선순위는 무엇입니까? 아이디어에 따르면 기본 우선순위는 이어야 합니다 normal
.
매뉴얼 페이지에는 pthread_setschedparam()
"스레드의 스케줄링 정책은 SCHED_FIFO
(선입 선출) 또는 SCHED_RR
(라운드 로빈)이 될 수 있습니다"라고 나와 있습니다. 왜 안 돼 SCHED_OTHER
? 첫 번째 기본 스레드에는이것정책.
이러한 우선순위는 실시간인가요, 아니면 정상인가요?
누구든지 분명히 할 수 있습니까?
Windows에서는 우선순위를 설정할 수 idle
있으며 시스템에 다른 작업이 없을 때만 스레드가 예약되는 것을 볼 수 있습니다. 내가 설정할 수 time_critical
있으며 해당 스레드는 거의 모든 프로세서 시간을 갖습니다.
OpenBSD에서 이러한 작업을 해결하는 방법은 무엇입니까? Windows 우선 순위와 유사한 것은 무엇입니까: idle
, lowest
, below_normal
, normal
, above_normal
, highest
, time_critical
?
정책을 선택하는 방법은 무엇입니까? FIFO
, OTHER
또는 RR
? 우선순위가 동일한 경우 처리 시간을 부여한다는 점에서 이러한 정책은 동일합니까?
MAN 페이지에는 답변되지 않은 질문이 많이 있습니다.
답변1
unistd.h
OpenBSD 에서는 둘 다_POSIX_PRIORITY_SCHEDULING
그리고_POSIX_THREAD_PRIORITY_SCHEDULING
로 설정하면 -1
프로세스 예약 및 스레드 실행 예약 옵션이 지원되지 않음(런타임도 지원되지 않음)을 나타냅니다.sysconf
기능보여주다).
이는 OpenBSD 구현이 설정된 우선순위에 따른 스케줄링을 지원하지 않으므로 모든 설정된 우선순위가 pthread_setschedparam
의미가 없음을 의미합니다. 사실 출처는pthread_setschedparam
EINVAL
우선순위 기반 일정 정책을 반환해야 하는지 여부에 대한 의문이 제기됩니다.
따라서 첫 번째 질문에 대답하자면 현재 OpenBSD에서는 스레드 우선 순위가 지원되지 않기 때문에 사용할 수 없습니다.