我想知道是否有辦法阻止內核空間的用戶空間任務?內核中是否有這個功能?我試圖尋找,但迄今爲止沒有發現任何明顯的跡象。是否可以阻止來自內核空間的任務?
回答
在UP中,這很簡單:將任務的狀態設置爲TASK_INTERRUPTIBLE
,並調用schedule()
。稍後可以通過將其狀態設置爲TASK_RUNNING
來「恢復」它。
在SMP中,您必須確保任務未在另一個CPU上運行。
好吧,在SMP中,我必須首先檢查它是否在CPU上運行,如果是,是否有辦法中斷任務,或者是否必須等待時間片完成? –
您不必等待:您可以通過smp_call_function()使用處理器間中斷(IPI)(但請注意有關限制,請參閱http://lxr.linux.no/linux+v3.0.4/kernel /smp.c#L573) – Mircea
看到這個:
http://lxr.linux.no/linux+v3.0.4/include/linux/sched.h#L242
250/*
251 * This serializes "schedule()" and also protects
252 * the run-queue from deletions/modifications (but
253 * _adding_ to the beginning of the run-queue has
254 * a separate lock).
255 */
256extern rwlock_t tasklist_lock;
257extern spinlock_t mmlist_lock;
258
所以我們我們知道這個鎖用於同步訪問更新調度結構。要更改任務運行狀態,尋找一個例子:
http://lxr.linux.no/linux+v3.0.4/kernel/signal.c#L1812
1769 read_lock(&tasklist_lock);
1809 __set_current_state(TASK_RUNNING);
1810 if (clear_code)
1811 current->exit_code = 0;
1812 read_unlock(&tasklist_lock
ü只需要鎖定/解鎖tasklist_lock,並設置狀態。
- 1. 是否可以阻止來自現有DLL的消息框?
- 2. 來自內核空間的IOCTL
- 3. 是否可以阻止Redis pubsub?
- 4. 是否可以阻止git pull/fetches?
- 5. 是否可以阻止傳出短信?
- 6. 檢查是否可以從linux內核空間訪問內存地址
- 7. 是否可以限制Parallel.ForEach的內核?
- 8. 我是否可以阻止來電打開屏幕?
- 9. 是否術語「用戶空間」和「內核空間」指的是物理內存?
- 10. 是否可以阻止java.util.logging導致內存泄漏?
- 11. 阻止與任務?
- 12. WinRT:阻止任務
- 13. 是否可以等待來自父線程以外的線程的任務?
- 14. 缺陷是否可以鎖定,以防止創建任務?
- 15. 是否可以控制CPU內核?
- 16. 是否可以在.net核心中重定向來自中間件的請求
- 17. 是否可以確定是否從SecureStream讀取將被阻止?
- 18. 對於arm Linux,用戶空間中的線程是否可以訪問內核空間的虛擬地址?
- 19. Google地圖是否因任何原因阻止來自IP的請求?
- 20. .htaccess中的內容可以阻止cron
- 21. 當設備內存不足時,是否可以阻止應用程序終止?
- 22. 可以選擇被內核模塊不間斷地阻塞嗎?
- 23. 是否可以編寫TFS查詢來獲取任務的實際時間?
- 24. 是否可以阻止/刪除由dojo.require聲明的任何緩存腳本?
- 25. 任務是阻止如果使用未來像
- 26. 是否可以使用gdb和qemu同時調試linux用戶空間程序和內核空間?
- 27. 是否可以在任務需求中的同一名稱空間中使用多個任務的縮寫?
- 28. 如何在內核任務之間共享數據? (具有內核/內核任務的遊戲引擎)
- 29. 是否可以將來自SQLalchemy的PhoneNumberType存儲爲空?
- 30. 如何檢查任務線程是否被阻止
這是什麼意思? –
停止執行,以便稍後恢復。 –