是否有一種基於內核檢測的方法來測量內核在啓動期間轉移到用戶空間的時間?我可以使用printk的時間信息,但我不確定在哪裏放置此printk,以便觀察內核何時轉移到用戶空間。從啓動到用戶空間測量Linux內核所需的時間
3
A
回答
5
start_kernel()
由體系結構特定代碼(arch/architecture_type)調用。內核加載後,它調用第一個用戶空間進程,/sbin/init(或更近期發行版的systemd)init_post()
這兩個函數都在init/main.c中定義,其中。
您可能想要閱讀此blog以瞭解啓動過程的詳細說明。
0
創建自己的init,可以登錄到/dev/kmsg
立即
一個簡單的替代與printk
黑客內核代碼是使用以下初始化:
#include <stdio.h>
#include <unistd.h>
int main(void) {
FILE *fp;
fp = fopen("/dev/kmsg", "w");
fputs("hello init\n", fp);
fclose(fp);
while (1)
sleep(0xFFFFFFFF);
}
,並使用內核命令行參數:
init=/path/to/myinit printk.devkmsg=on printk.time=y
現在就在開機結束後, init啓動,我們看到一則消息:
[<timestamp>] hello init
這是不是100%準確的,你會失去一些CPU週期爲fopen
,但我不認爲它會很大關係。
最小的可重複設置來測試它:
相關問題
- 1. Linux內核空間和用戶空間
- 2. Linux內核:從內核空間調用用戶空間的回調函數
- 3. linux內核和用戶地址空間
- 4. 從用戶級空間訪問內核空間中的變量
- 5. 從LKM /內核空間啓動Android Activity
- 6. 從插座讀而不從內核空間到用戶空間
- 7. Linux內核 - 從用戶空間停止正在運行的內核定時器
- 8. 從用戶空間到內核空間的memcpy
- 9. Linux用戶空間和內核空間調度
- 10. 如何回調從用戶空間保持到內核空間
- 11. 從內核空間傳遞地址到用戶空間
- 12. 從內核空間繞過數據包到用戶空間
- 13. 將數據從內核空間複製到用戶空間
- 14. 內核空間和用戶空間的時間差
- 15. 如何從Linux內核訪問用戶空間內存?
- 16. Linux的跨定時內核和用戶空間
- 17. 從內核空間關閉(嵌入)linux
- 18. Linux設備驅動程序:從內核複製字符串到用戶空間
- 19. 內核啓動和內核執行之間的時間
- 20. WIndows驅動程序從用戶空間複製到內核空間
- 21. 何時將數據從內核空間讀取到用戶空間?
- 22. 如何從Linux內核空間獲取用戶名
- 23. 如何將Linux內核緩衝區映射到用戶空間?
- 24. Linux ioctl命令在用戶空間和內核空間之間變化
- 25. MMAP只需要內核緩衝區的頁到用戶空間
- 26. 用戶空間vs內核空間驅動程序
- 27. 如何從用戶空間訪問內核空間?
- 28. 從內核空間訪問用戶空間 - get_user_pages
- 29. 從內核空間執行用戶空間函數
- 30. 測量Linux內核中函數的執行時間
你是什麼意思,到底是什麼?系統上有許多線程,一些在內核空間,一些在用戶空間,許多從一個到另一個過渡,然後隨着時間的推移......如果你的意思是「我的代碼什麼時候開始運行」,爲什麼不把它放在你的代碼的開始? – Nemo
正好我的意思是,內核中的切換到用戶空間的地方......我無法識別這樣的位置,如果有的話。 – TheLoneJoker