我想知道是否有辦法阻止內核空間的用戶空間任務?內核中是否有這個功能?我試圖尋找,但迄今爲止沒有發現任何明顯的跡象。是否可以阻止來自內核空間的任務?
回答
在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. 是否可以阻止來自CSS的「外部」請求?
- 2. 來自內核空間的IOCTL
- 3. 是否可以阻止傳出短信?
- 4. 檢查是否可以從linux內核空間訪問內存地址
- 5. 是否可以限制Parallel.ForEach的內核?
- 6. 我是否可以阻止來電打開屏幕?
- 7. 是否術語「用戶空間」和「內核空間」指的是物理內存?
- 8. 是否可以阻止java.util.logging導致內存泄漏?
- 9. 是否可以等待來自父線程以外的線程的任務?
- 10. 缺陷是否可以鎖定,以防止創建任務?
- 11. 是否可以在.net核心中重定向來自中間件的請求
- 12. Google地圖是否因任何原因阻止來自IP的請求?
- 13. .htaccess中的內容可以阻止cron
- 14. 任務是阻止如果使用未來像
- 15. 是否可以阻止/刪除由dojo.require聲明的任何緩存腳本?
- 16. 是否可以使用gdb和qemu同時調試linux用戶空間程序和內核空間?
- 17. 如何在內核任務之間共享數據? (具有內核/內核任務的遊戲引擎)
- 18. 是否可以在任務需求中的同一名稱空間中使用多個任務的縮寫?
- 19. 是否可以將來自SQLalchemy的PhoneNumberType存儲爲空?
- 20. 如何檢查任務線程是否被阻止
- 21. 「實時」約束是否阻止使用任務調度程序?
- 22. 阻止啓動任務
- 23. 是否可以轉發聲明名稱空間內的typedef?
- 24. JavaScript:是否可以獲取當前名稱空間的內容?
- 25. linux內核的內核地址空間的佈局是什麼?
- 26. 內核線程在內核地址空間中的任意讀取是否會引起恐慌?
- 27. 是否可以使用ant ftp任務複製空目錄
- 28. a.out內核空間
- 29. 是否可以輪詢任務完成?
- 30. 是否可以繼承Luigi任務?
這是什麼意思? –
停止執行,以便稍後恢復。 –