|
題一:
uboot是怎么傳參給內核的?
思考過(guò)后,再到下方尋找答案
題二:
linux怎么進(jìn)行內存管理?
思考過(guò)后,再到下方尋找答案
題三:
請簡(jiǎn)單說(shuō)說(shuō)進(jìn)程和線(xiàn)程的區別。
思考過(guò)后,再到下方尋找答案
題一答案:
簡(jiǎn)單的講,uboot利用函數指針及傳參規范,它將
R0: 0x0
R1: 機器號
R2: 參數地址
三個(gè)參數傳遞給內核。
其中,R2寄存器傳遞的是一個(gè)指針,這個(gè)指針指向一個(gè)TAG區域。
題二答案:
早期計算機中,由于應用程序比較小,可以直接在物理內存中運行,但現在計算機里面程序那么多又那么大,所以就需要對內存進(jìn)行管理。
1、對內存的分配和管理,也就是平時(shí)應用層malloc和內核層vmalloc、kmalloc之類(lèi)的內存申請的管理。
2、虛擬內存和物理內存之間的轉換。
題三答案:
簡(jiǎn)單的來(lái)說(shuō),一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線(xiàn)程。
第一點(diǎn)、進(jìn)程有自己的獨立地址空間,每啟動(dòng)一個(gè)進(jìn)程,系統就會(huì )為它分配地址空間,建立數據表來(lái)維護代碼段、堆棧段和數據段,這種操作非常昂貴。而線(xiàn)程是共享進(jìn)程中的數據的,使用相同的地址空間,因此CPU切換一個(gè)線(xiàn)程的花費遠比進(jìn)程要小很多,同時(shí)創(chuàng )建一個(gè)線(xiàn)程的開(kāi)銷(xiāo)也比進(jìn)程要小很多。
但這樣帶來(lái)的缺點(diǎn)就是,多線(xiàn)程程序只要有一個(gè)線(xiàn)程掛掉了,那么整個(gè)進(jìn)程也就掛掉了,而進(jìn)程則不會(huì )影響另外一個(gè)進(jìn)程,它有自己的獨立地址空間。
第二點(diǎn)、線(xiàn)程之間的通信更方便,同一進(jìn)程下的線(xiàn)程共享全局變量、靜態(tài)變量等數據,而進(jìn)程之間的通信需要以通信的方式(IPC)進(jìn)行。
以下課程可免費試聽(tīng)C語(yǔ)言、電子、PCB、STM32、Linux、FPGA、Python、安卓等。
想學(xué)習的你和我聯(lián)系預約就可以免費聽(tīng)課了。宋工Q35--24-65--90-88 Tel/WX:173--17--95--19--08
|
|