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