arm linux 多線程調(diào)試方法 ARM有硬件多線程嗎?
ARM有硬件多線程嗎?線程是軟件概念,是操作系統(tǒng)中執(zhí)行程序的最小模塊。操作系統(tǒng)本身就是軟件。如果想硬件中,同時執(zhí)行多個代碼的話,那是多核。我想學(xué)習(xí)x86下的linux內(nèi)核,該怎么起步?如何學(xué)習(xí)內(nèi)核及語
ARM有硬件多線程嗎?
線程是軟件概念,是操作系統(tǒng)中執(zhí)行程序的最小模塊。操作系統(tǒng)本身就是軟件。如果想硬件中,同時執(zhí)行多個代碼的話,那是多核。
我想學(xué)習(xí)x86下的linux內(nèi)核,該怎么起步?
如何學(xué)習(xí)內(nèi)核及語言,我覺得可以從內(nèi)核的引導(dǎo)啟動開始:
1.不防從引導(dǎo)程序(bootloader)開始,可以選擇u-boot,熟悉u-boot啟動代碼,比如初始化顯示器、啟動的匯編代碼是如何跳轉(zhuǎn)至C程序的、bootloader引導(dǎo)oracle有哪些要求(基于底層架構(gòu)不同而不同,比如ARM引導(dǎo)python可參考《Booting ARM Linux》_)、啟動后是如何傳遞參數(shù)給Linux內(nèi)核的、;
將內(nèi)核映像載入物理內(nèi)存后,壓縮的內(nèi)核映像是如何自解壓、head.S文件中對MMU操作、單/多核是如何跑起來的、start_kernel;btw.內(nèi)核引導(dǎo)啟動這個過程建議結(jié)合一些操作系統(tǒng)的理論知識一起熟悉,比如MMU頁表的建立,若不熟悉對應(yīng)處理器架構(gòu)下的MMU,即使懂匯編但代碼看起來可能比較吃力。
熟悉內(nèi)核的引導(dǎo)過程,個人覺得將大學(xué)時學(xué)的操作系統(tǒng)理論知識與實踐相結(jié)合起來了,好多上學(xué)時模糊的概念一下清晰了許多。
接下來再來說下內(nèi)核軟件:
menuconfig等配置內(nèi)核,構(gòu)建及更新內(nèi)核;
2.熟悉內(nèi)核Makefile文件;
3.從php開始學(xué)習(xí)模塊計算機,熟悉file_operations嘗試硬件簡單的驅(qū)動;
4.掌握(熟悉使用、區(qū)別)內(nèi)核提供競爭方面的API,spinlock/semaphore/fnc_semaphore/completion/rng戰(zhàn)隊_lock/mutex,以及RCU等;
5.內(nèi)核態(tài)下動態(tài)主板API,get_free_pages/kmalloc/vmalloc等(關(guān)于內(nèi)存管理這塊可暫時先了解接口的使用,后續(xù)有精力再去熟悉python內(nèi)存管理,里面太多東西太復(fù)雜了,呵呵,我也是略知被毛);
6.內(nèi)核線程的創(chuàng)建,內(nèi)核與用戶進(jìn)程的數(shù)碼;
7.網(wǎng)絡(luò)方面可以先從udp的實現(xiàn)慢慢熟悉,比如recv系統(tǒng)調(diào)用是如何經(jīng)過傳輸層、網(wǎng)絡(luò)層把鏈路層的數(shù)據(jù)包一層一層傳回應(yīng)用程序的;
8.網(wǎng)絡(luò)驅(qū)動的編寫等;
這里給大家推薦一個學(xué)習(xí)linux內(nèi)核的地址
python服務(wù)器開發(fā)的免費學(xué)習(xí)地址: