preemption

    5熱度

    1回答

    我有一小部分確定性工作,只需要十三條機器指令即可完成。因爲第一條指令需要一個自制的信號量(spinlock)並且最後一條指令釋放它,所以我可以安全地使用其他內核上運行的所有其他線程,因爲它們試圖獲取並提供相同的信號量。 當某個線程在完成其「臨界區」之前中斷了一個持有信號量的線程時,會出現問題。最糟糕的情況是中斷會在握住信號量的同時殺死線程,或者可能會發生通常競爭信號量的線程之一分支出代碼,這些代碼

    0熱度

    1回答

    我試圖讓一個進程不可搶佔。我已將計劃程序策略更改爲SCHED_FIFO,並將設置爲99.只要進程啓動,在沒有IO中斷的情況下,我是否有保證該進程不會被其他進程搶佔? rtprio = 99是最高優先級還是還有一些優先級較高的內核進程?最後,我怎麼知道一個進程在執行過程中是否被搶佔?

    1熱度

    1回答

    我想開發一個程序來限制函數的執行時間。在下面的代碼中,我有一個名爲Inc的函數,它執行了很多迭代(由無限循環模擬)。每次迭代的第一部分都很長,然後是第二部分,應該很快。 我不介意在代碼的第一部分搶佔執行,但我想避免在第二部分執行寫操作時發生報警。 我的第一個想法是在進入「安全區域」之前關閉鬧鐘,以節省剩餘時間。然後在退出後,我會用保存的時間設置鬧鐘。我不知道如何實現這一點。有人能幫助我嗎?替代方法

    5熱度

    2回答

    我已經編寫了測試程序來測試出SCHED_FIFO。我知道SCHED_FIFO不能被SCHED_OTHER線程搶佔。但我無法解釋同一程序多次運行時獲得的結果。 /* Includes */ #include <unistd.h> /* Symbolic Constants */ #include <sys/types.h> /* Primitive System Data Types */

    10熱度

    1回答

    時當在內核空間的過程中拿着spin_lock,進程不能被搶佔,由於下列任一條件: 當進程的時間片變用盡 當中斷髮生時 然而,該方法可以產生該處理器的高優先級過程變得可運行 如果塊,睡眠s,或明確地致電schedule()。我的理解是否正確? 當在內核空間中的過程被保持mutex_lock,可以在過程被搶佔由於列爲1,2和3在上述條件

    6熱度

    2回答

    我已經寫了一段代碼,其中一個數據: unsigned char buf[4096]; // data in chunks of size 4k unsigned counter[256]; 我添加了I/P數據爲每3個連續的字節,並存儲所述ANS。 ex:temp [4096]; temp [0] = buf [0] + buf [1] + buf [2]; ...直到4096 然後從臨時的使

    9熱度

    4回答

    想知道調度程序如何被調用,以便它可以切換任務。因爲即使它的搶佔式調度或循環調度 - 調度程序應該進入圖片來執行任何類型的任務切換。假設低優先級任務具有無限循環 - 調度程序何時干預並切換到更高優先級的任務? 查詢結果: 1.誰調用調度程序? [在VxWorks中] 2.如果定期調用它 - 該機制如何實現? 在此先感謝。 --Ashwin

    1熱度

    3回答

    我需要找出是否一個用戶進程是有史以來某種程度上搶佔,我明白我們在preempt.h和sched.c中的鉤子,允許我們定義preempt_notifiers這又會調用sched_in和每當一個進程被重新安排或搶佔時,sched_out函數。 但我仍然無法找到我怎麼可以附加一個通知到特定的過程或PID在用戶空間,然後以某種方式登錄,如果這一具體過程是有史以來捷足先登。我假設我必須編寫一個模塊來做到這一