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