大家好,我對Linux中的任務有一些疑問,我知道當前處於TASK_RUNNING
狀態的所有任務都處於名爲runqueue
的數據結構中,但是等待某個事件的任務(非TASK_RUNNING的狀態,例如一個正在等待鍵盤輸入的例子)。我是否還有其他數據結構用於這些任務或僅有一般的list of tasks
?在此先感謝您的任何解釋哪裏的內核存儲進程沒有運行?
6
A
回答
2
TASK_INTERRUPTIBLE
或TASK_UNINTERRUPTIBLE
狀態中的進程會進一步細分爲不同的類,其中每個類都對應於特定的事件。在這種狀態下,進程狀態不能提供足夠的信息來快速檢索進程描述符,因此使用另一個名爲wait_queue
的進程列表。 Wait_queue實現對事件的條件等待。等待特定事件的進程被放置在正確的等待隊列中。
等待隊列被實現爲循環列表,其元素包括指向進程 描述符的指針。一個等待隊列列表中的每個元素的類型wait_queue的:
struct wait_queue {
struct task_struct * task;
struct wait_queue * next;
};
0
等待隊列用於使過程等待到發生特定事件 - 諸如來自鍵盤等待輸入。
相關問題
- 1. Linux內核:進程頁表在哪裏?
- 2. 哪裏Git進程存儲文件
- 3. 運行時在哪裏存儲密碼?
- 4. 有沒有辦法從運行的ruby進程轉儲內存中的對象?
- 5. 哪裏存儲圖像沒有覆蓋?
- 6. 我在哪裏存儲用於長時間運行的子進程的PID?
- 7. sidekiq進程在哪裏運行?
- 8. 從Runtime.getRuntime()。exec(command)運行的外部進程從哪裏獲取內存?
- 9. Linux中內核時間在哪裏存儲?
- 10. 哪裏phantomjs核心轉儲
- 11. 從哪裏開始linux內核編程?
- 12. 更新哪裏存在刪除行哪裏沒有
- 13. 哪裏是內部存儲,手機存儲和外部存儲
- 14. 哪裏df.cache()存儲
- 15. joomfish在哪裏存儲翻譯內容?
- 16. PhoneGap - Angularjs - 在哪裏存儲內容?
- 17. Firefox在哪裏存儲sessionStorage內容
- 18. 所有Android源代碼都存儲在哪裏?內存?閃?
- 19. 轉儲內存的進程
- 20. 運行ng服務時存儲的文件在哪裏?
- 21. SDL中的核心轉儲,在哪裏?
- 22. 哪裏使存儲緩存?
- 23. 用於運行進程的堆內存
- 24. 進程從內核分配內存塊
- 25. Docker容器內運行的程序的二進制文件在哪裏?
- 26. 哪裏存儲命令行參數?
- 27. EF6:在哪裏創建存儲過程?
- 28. 存儲庫遠程URL在哪裏?
- 29. MySQL在哪裏放置存儲過程?
- 30. 從Linux進程分配的堆棧內存在哪裏?