OpenBSD 스레드 우선순위

OpenBSD 스레드 우선순위

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.hOpenBSD 에서는 둘 다_POSIX_PRIORITY_SCHEDULING그리고_POSIX_THREAD_PRIORITY_SCHEDULING로 설정하면 -1프로세스 예약 및 스레드 실행 예약 옵션이 지원되지 않음(런타임도 지원되지 않음)을 나타냅니다.sysconf기능보여주다).

이는 OpenBSD 구현이 설정된 우선순위에 따른 스케줄링을 지원하지 않으므로 모든 설정된 우선순위가 pthread_setschedparam의미가 없음을 의미합니다. 사실 출처는pthread_setschedparamEINVAL우선순위 기반 일정 정책을 반환해야 하는지 여부에 대한 의문이 제기됩니다.

따라서 첫 번째 질문에 대답하자면 현재 OpenBSD에서는 스레드 우선 순위가 지원되지 않기 때문에 사용할 수 없습니다.

관련 정보