คำตอบสั้น ๆ
PR เป็นระดับความสำคัญ ยิ่งประชาสัมพันธ์มีความสำคัญน้อยกว่ากระบวนการก็จะยิ่งสูงขึ้น
PR คำนวณดังนี้:
- สำหรับกระบวนการปกติ: PR = 20 + NI (NI ดีและอยู่ในช่วงตั้งแต่ -20 ถึง 19)
- สำหรับกระบวนการตามเวลาจริง: PR = - 1 - real_time_priority
(real_time_priority มีช่วงตั้งแต่ 1 ถึง 99)
คำตอบยาว ๆ
กระบวนการมี 2 ประเภทกระบวนการปกติและแบบเรียลไทม์
สำหรับกระบวนการปกติ (และเฉพาะกระบวนการเหล่านั้น) จะใช้ Nice เป็นดังนี้:
ดี
ระดับ "ความดี" จะอยู่ที่ -20 ถึง 19 ในขณะที่ -20 เป็นลำดับความสำคัญสูงสุดและ 19 เป็นลำดับความสำคัญต่ำสุด ระดับความสำคัญจะถูกคำนวณดังนี้:
PR = 20 + NI
ที่ NI เป็นระดับที่ดีและ PR คือระดับความสำคัญ อย่างที่เราเห็นจริง ๆ แล้ว -20 แมปกับ 0 ในขณะที่ 19 แผนที่ถึง 39
ตามค่าดีฟอลต์แล้วค่า nice ของโปรแกรมคือ 0 แต่เป็นไปได้ที่ผู้ใช้รูทจะเรียกใช้โปรแกรมด้วยค่า nice ที่ระบุโดยใช้คำสั่งต่อไปนี้:
nice -n <nice_value> ./myProgram
ตามเวลาจริง
เราสามารถไปได้ไกลกว่านี้ ลำดับความสำคัญที่ดีจะใช้จริงสำหรับโปรแกรมผู้ใช้ ในขณะที่ลำดับความสำคัญโดยรวมของ UNIX / LINUX มีช่วงของค่า 140 ค่าที่ดีช่วยให้กระบวนการแมปไปยังส่วนสุดท้ายของช่วง (จาก 100 ถึง 139) สมการนี้จะทิ้งค่าตั้งแต่ 0 ถึง 99 ไม่สามารถเข้าถึงซึ่งจะสอดคล้องกับระดับ PR เชิงลบ (จาก -100 ถึง -1) เพื่อให้สามารถเข้าถึงค่าเหล่านั้นกระบวนการควรระบุว่า "เรียลไทม์"
มี 5 นโยบายการกำหนดเวลาในสภาพแวดล้อม LINUX ที่สามารถแสดงผลได้ด้วยคำสั่งต่อไปนี้:
chrt -m
ซึ่งจะแสดงรายการต่อไปนี้:
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
กระบวนการจัดตารางเวลาสามารถแบ่งออกเป็น 2 กลุ่มคือนโยบายการตั้งเวลาปกติ (1 ถึง 3) และนโยบายการตั้งเวลาแบบเรียลไทม์ (4 และ 5) กระบวนการตามเวลาจริงจะมีลำดับความสำคัญสูงกว่ากระบวนการปกติเสมอ กระบวนการแบบเรียลไทม์สามารถเรียกใช้โดยใช้คำสั่งต่อไปนี้ (ตัวอย่างคือวิธีประกาศนโยบาย SCHED_RR):
chrt --rr <priority between 1-99> ./myProgram
ในการรับค่า PR สำหรับกระบวนการเรียลไทม์จะใช้สมการต่อไปนี้:
PR = -1 - rt_prior
โดยที่ rt_prior สอดคล้องกับลำดับความสำคัญระหว่าง 1 ถึง 99 ด้วยเหตุนี้กระบวนการที่จะมีลำดับความสำคัญสูงกว่ากระบวนการอื่นจะเป็นสิ่งที่เรียกว่ามีหมายเลข 99
เป็นสิ่งสำคัญที่จะต้องทราบว่าสำหรับกระบวนการแบบเรียลไทม์จะไม่มีการใช้ค่า nice
หากต้องการดู "niceness" และค่า PR ปัจจุบันของกระบวนการสามารถดำเนินการคำสั่งต่อไปนี้:
top
ซึ่งแสดงผลลัพธ์ต่อไปนี้:
ในรูปที่ค่า PR และ NI จะปรากฏขึ้น มันเป็นการดีที่จะทราบกระบวนการที่มีค่า PR -51 ที่สอดคล้องกับค่าเรียลไทม์ นอกจากนี้ยังมีบางกระบวนการที่ค่า PR ระบุไว้ว่า "rt" ค่านี้สอดคล้องกับค่า PR ของ -100
niceness
สามารถใช้เพื่อให้ความสำคัญเชิงลบเพื่อให้งานที่niceness
ได้รับจากทางของงานลำดับความสำคัญสูง? (เช่นมันเป็นnice
และให้ทรัพยากรการเข้าถึงอื่น ๆ หรือไม่หรือเพียงแค่ทำให้ฉันสับสนได้อย่างไร