ฉันได้เรียนรู้แนวคิดการตั้งเวลา ปัจจุบันความเข้าใจของฉันอยู่ในขณะนี้ดังต่อไปนี้
- มีกระบวนการแบบเรียลไทม์และกระบวนการแบบเรียลไทม์
- กระบวนการเวลาจริงไม่แสวงหาสามารถมี
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อัลกอริทึมที่จะใช้?