Câu trả lời ngắn
PR là mức độ ưu tiên. PR càng thấp, mức độ ưu tiên của quy trình sẽ càng cao.
PR được tính như sau:
- đối với các quy trình thông thường: PR = 20 + NI (NI là tốt và nằm trong khoảng từ -20 đến 19)
- đối với các quy trình thời gian thực: PR = - 1 - real_time_p Warriority
(real_time_p Warriority nằm trong khoảng từ 1 đến 99)
Câu trả lời dài
Có 2 loại quy trình, loại bình thường và thời gian thực
Đối với loại bình thường (và chỉ dành cho loại), đẹp được áp dụng như sau:
Đẹp
Thang đo "độ đẹp" đi từ -20 đến 19, trong khi -20 là mức ưu tiên cao nhất và 19 mức ưu tiên thấp nhất. Mức độ ưu tiên được tính như sau:
PR = 20 + NI
Trong đó NI là mức độ tốt đẹp và PR là mức độ ưu tiên. Như chúng ta có thể thấy, -20 thực sự ánh xạ thành 0, trong khi 19 ánh xạ thành 39.
Theo mặc định, giá trị đẹp của chương trình là 0, nhưng người dùng root có thể khởi chạy chương trình với giá trị đẹp được chỉ định bằng cách sử dụng lệnh sau:
nice -n <nice_value> ./myProgram
Thời gian thực
Chúng ta có thể đi xa hơn nữa. Ưu tiên tốt đẹp thực sự được sử dụng cho các chương trình người dùng. Trong khi mức ưu tiên chung của UNIX / LINUX có phạm vi 140 giá trị, giá trị đẹp cho phép quá trình ánh xạ tới phần cuối của phạm vi (từ 100 đến 139). Phương trình này khiến các giá trị từ 0 đến 99 không thể truy cập được, sẽ tương ứng với mức PR âm (từ -100 đến -1). Để có thể truy cập vào các giá trị đó, quy trình phải được nêu là "thời gian thực".
Có 5 chính sách lập lịch trong môi trường LINUX có thể được hiển thị bằng lệnh sau:
chrt -m
Mà sẽ hiển thị danh sách sau đây:
1. SCHED_OTHER the standard round-robin time-sharing policy
2. SCHED_BATCH for "batch" style execution of processes
3. SCHED_IDLE for running very low priority background jobs.
4. SCHED_FIFO a first-in, first-out policy
5. SCHED_RR a round-robin policy
Các quy trình lập lịch có thể được chia thành 2 nhóm, chính sách lập lịch thông thường (1 đến 3) và chính sách lập lịch thời gian thực (4 và 5). Các quy trình thời gian thực sẽ luôn được ưu tiên hơn các quy trình thông thường. Một quy trình thời gian thực có thể được gọi bằng cách sử dụng lệnh sau (Ví dụ là cách khai báo chính sách SCHED_RR):
chrt --rr <priority between 1-99> ./myProgram
Để có được giá trị PR cho quy trình thời gian thực, phương trình sau được áp dụng:
PR = -1 - rt_p Warrior
Trong đó rt_p Warrior tương ứng với mức ưu tiên trong khoảng từ 1 đến 99. Vì lý do đó, quy trình có mức ưu tiên cao hơn các quy trình khác sẽ là quy trình được gọi với số 99.
Điều quan trọng cần lưu ý là đối với các quy trình thời gian thực, giá trị đẹp không được sử dụng.
Để xem "giá trị" hiện tại và giá trị PR của một quy trình, lệnh sau có thể được thực thi:
top
Hiển thị đầu ra sau:
Trong hình, các giá trị PR và NI được hiển thị. Thật tốt khi lưu ý quá trình với giá trị PR -51 tương ứng với giá trị thời gian thực. Ngoài ra còn có một số quy trình có giá trị PR được nêu là "rt". Giá trị này thực sự tương ứng với giá trị PR là -100.
niceness
có thể được sử dụng để ưu tiên tiêu cực để nhiệm vụniceness
thoát khỏi các nhiệm vụ ưu tiên cao? (tức là nó đangnice
và để cho các tài nguyên truy cập khác? Hay điều này chỉ làm tôi bối rối?