ฉันได้เรียนรู้แนวคิดการตั้งเวลา ปัจจุบันความเข้าใจของฉันอยู่ในขณะนี้ดังต่อไปนี้
- มีกระบวนการแบบเรียลไทม์และกระบวนการแบบเรียลไทม์
- กระบวนการเวลาจริงไม่แสวงหาสามารถมี
nice
ค่าลำดับความสำคัญของพวกเขาในช่วงของ-20ไป20 ค่าบวกที่สูงกว่าแสดงว่ากระบวนการมีลำดับความสำคัญต่ำกว่า - กระบวนการเวลาจริงจะมีค่าความดีระบุว่าเป็น
-
ตามที่อธิบายไว้ในคำตอบนี้ที่นี่ นี่เป็นส่วนใหญ่เนื่องจากกระบวนการเรียลไทม์มีลำดับความสำคัญสูงกว่ากระบวนการที่ไม่ใช่เรียลไทม์และค่าความดีจะไม่นำมาใช้กับพวกเขา - ตอนนี้ฉันสามารถใช้
chrt
เพื่อดูคุณสมบัติเรียลไทม์ของกระบวนการ
สำหรับกระบวนการเรียลไทม์การchrt
ส่งออกให้เป็น
chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99
อย่างที่เราเห็นสำหรับโพรเซส5ลำดับความสำคัญคือ 99 ซึ่งสูงที่สุด นอกจากนี้นโยบายการตั้งเวลาคือSCHED_FIFO
ตอนนี้สำหรับกระบวนการที่ไม่ใช่แบบเรียลไทม์chrt
จะให้เอาต์พุตเป็น
chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0
ในฐานะที่เราสามารถดูกระบวนการ22383ลำดับความสำคัญคือ 0 SCHED_OTHER
และนโยบายการจัดตารางเวลาคือ
คำถาม
- เป็นไปได้หรือไม่ที่ฉันจะทำให้กระบวนการใด ๆ เป็นกระบวนการตามเวลาจริง
- เป็นไปได้หรือไม่ที่ฉันจะตั้งอัลกอริทึมการจัดตารางเวลาอื่น
SCHED_OTHER
ที่ไม่ใช่กระบวนการเรียลไทม์? จากที่นี่ฉันเห็นด้วยว่าฉันสามารถแก้ไขแอตทริบิวต์สำหรับกระบวนการที่กำลังทำงานอยู่ได้เช่น
chrt -p prio pid
นอกจากนี้ฉันเห็น
chrt -m
ให้ฉันรายการอัลกอริทึมการตั้งเวลา คำสั่งให้ผลลัพธ์เป็นฉันSCHED_OTHER min/max priority : 0/0 SCHED_FIFO min/max priority : 1/99 SCHED_RR min/max priority : 1/99 SCHED_BATCH min/max priority : 0/0 SCHED_IDLE min/max priority : 0/0
ตอนนี้ตามที่แนะนำข้างต้นถ้าฉันตั้ง
chrt -p 55 22383
อัลกอริทึมที่จะใช้?