我正在學習調度程序,並且只是爲了理解數據結構的組織方式而進行各種攻擊。現在我試圖瞭解調度程序的運行隊列是如何組織的。所以給定一個過程,我想我可以找到它的運行隊列。但我只是想遍歷所有正在運行的隊列。我怎樣才能做到這一點?如何訪問系統中的所有正在運行的隊列?
回答
糾正我,如果我錯了。 每個處理器只有一個隊列(它被組織爲雙鏈表)用於運行進程。但系統上可能有更多的進程。一個任務可以從一個處理器開始,然後調度程序切換上下文,或者該任務進入睡眠狀態並遷移到另一個處理器並在那裏完成其工作。
爲了看到處理器上的任務,可以在簡單內核模塊中使用for_each宏。
你幾乎是正確的,有兩個運行隊列前CPU(一個工作,一個用於過期的任務)。無論如何,你的意思是哪個'for_each'?有很多。例如, –
。 如果您在函數「static int thread(void * data)」中查看https://github.com/0xDen/unptrace/blob/master/unptrace.c,您可能會看到循環 - ** list_for_each **宏用於迭代任務。 – 0xDen
我想過這個。這種方法給了我任務,而不是運行隊列,它也給我所有不能運行的任務,這些任務不屬於運行隊列。另外,如何知道在我運行模塊時是否有另一個運行隊列(偶然)空了? –
- 1. 正在運行的系統
- 2. 試圖訪問系統正在運行的進程
- 3. 關於隊列系統的問題
- 4. 如何在用戶訪問系統時默認運行
- 5. 團隊系統Web訪問權限
- 6. 團隊系統Web訪問ADFS SSO
- 7. 如何在運行系統中顯示gui中的列表
- 8. 列出ThreadPoolTaskExecutor中的所有正在運行/排隊的線程
- 9. jQuery的隊列,如何創建通知系統隊列
- 10. 如何訪問使用ASP.NET在UNIX操作系統中運行的數據庫
- 11. Dokku/Docker,如何在運行容器的文件系統中訪問文件?
- 12. 做一個變量訪問所有正在運行的程序
- 13. Pthread隊列系統
- 14. 隊列系統php
- 15. 如何從RoleEntryPoint訪問在WebRole上運行的所有站點
- 16. Laravel一次運行所有隊列
- 17. 如何訪問iOS上所有正在運行的應用程序的統計信息?
- 18. 如何獲取有關係統中所有正在運行的活動的信息?
- 19. 通緝:所有在Raspberry Pi上運行的操作系統操作系統?
- 20. 作爲系統無法訪問的Windows服務正在運行C:\ users \
- 21. 如何在帶有rvm的系統中使用rinari運行capistrano?
- 22. 如何更新VSTS 2008團隊系統Web訪問到VSTS 2010
- 23. 系統中控制訪問的正確命令執行
- 24. 如何使用Swing訪問字體系列的所有字體
- 25. 消息系統中的表對隊列
- 26. 如何列出所有正在運行的CLR實例
- 27. 如何列出所有正在運行的mongod進程?
- 28. 訪問消息隊列系統被拒絕
- 29. 如何從Linux內核空間訪問系統中的所有管道
- 30. 如何在選擇它們後訪問所有行的列值?
你試過使用init_task來追蹤runqueue嗎? –
不,我會怎麼做?跟蹤是什麼意思? –
在linux內核中有一個變量名稱init_task,它基本上是runqueue鏈接列表的頭部。使用這個頭,嘗試遍歷runqueue。你還使用哪個內核版本? –