나는 "좋은" 것이 무엇인지, 그것이 우선순위와 어떻게 연결되는지 알고 있습니다. 그것은 문제가 되지 않습니다.
Linux 우선순위 범위는 0-139입니다. 0-99는 실시간이고 100-139는 사용자 공간입니다. 우선순위에 대한 좋은 매핑:
- -20 → 100
- 0 → 120
- +19 → 139
내가 이해하는 것은 사용자 공간이고 우선 순위는 커널 공간입니다.
그런데 왜 '좋다'라는 개념에 신경을 쓰는 걸까요? 이는 중복된 조치처럼 보입니다. 어떤 상황에서 우선순위에 직접적인 영향을 미치는 것보다 "좋은" 것을 갖는 것이 더 낫습니까?
단지 편의를 위해 존재하는 걸까요, 아니면 기술적인 이유가 있는 걸까요?
답변1
이것나쁘지 않아요(2)시스템 호출이 변경되고 있습니다비교적우선순위(원본에서앞으로해당 시스템 호출). 하지만우선순위 설정(2)바꾸다순수한우선순위.
그래서 내 이해는 nice(x)
( x
아주 작은 숫자, 예를 들어 0에서 9 사이)는 다음과 같다는 것 입니다.원자적으로행위:
// asssume both getpriority & setpriority syscalls are successful
int n = getpriority(PRIO_PROCESS, 0);
n += x;
setpriority(PRIO_PROCESS, 0, n);
여러 프로세스가 동일한 프로세스에서 유사한 작업(예: setpriority(PRIO_PROCESS, somepid, n);
... 호출)을 수행할 수 있으므로원자이를 결합하여 작업을 수행합니다.나쁘지 않아요(2)
그러나 주된 이유는 레거시와 역사(및 이전 버전과의 호환성)입니다. IIRC, 1980년대의 오래된 Unix(예: SunOS3.2)에는 있었지만 nice
없었습니다 setpriority
(그러나 제가 틀렸을 수도 있습니다).