原创 讀Kernel感悟-Linux內核啓動-鏈接腳本

文章來源:http://www.top-e.org/jiaoshi/class/ 一般來說,用戶是不需要關心section的具體位置的。在用戶態,內核會解析elf可執行文件的各個section,然後把它映射到虛擬地址空間。然而,在內核啓

原创 讀Kernel感悟-Linux內核啓動-setup輔助程序

文章來源:http://www.top-e.org/jiaoshi/class/   我們發現,在起點與終點之間,還有幾個中轉站。最近的一站叫作MBR。BIOS,帶你到MBR後,說:“對不起,只能送你到這裏了。” 那其它幾個中轉站是什麼呢

原创 Android連載之:第三章第二節:Android用戶界面

  3.2 Android用戶界面 這個章節描述怎麼實現一個基本的Android界面。它涉及構建屏幕基本元素,怎麼在xml(定義文件)內定義屏幕、用你的代碼生成、在不同任務你需要操作你的用戶接口。Android生成屏幕有三種方式:xml

原创 讀核感悟-kbuild系統-make bzImage的過程

文章來源:http://www.top-e.org/jiaoshi/class/   從以上例子中可以看到,內核的編譯系統kbuild是個很龐大的系統。但是,它所使用的make和我們平時用的make是一模一樣的。kbuild只是通過預定義

原创 讀Kernel感悟-Linux內核啓動-開啓頁面映射

文章來源:http://www.top-e.org/jiaoshi/class/   在setup的幫助下,我們順利地從16位實地址模式過渡到32位段式尋址的保護模式。又在arch/i386/boot/compressed/head.S的

原创 Linux常見使用方法

  1.修改linux啓動方式(文本方式或xwindow方式) vi /etc/inittab,找到id:x:initdefault:一行,x=3爲

原创 讀Kernel感悟-僞裝現場-內核線程

文章來源:http://www.top-e.org/jiaoshi/class/ 衆所周知,內核中創建一個內核線程是通過kernel_thread實現的。聲明如下: int kernel_thread(int (*fn)(void *),

原创 Android核心模塊及相關技術

  Android作爲一個移動設備的平臺,其軟件層次結構包括了一個操作系統(OS),中間件(MiddleWare)和應用程序(Application)。根據Android的軟件框圖,其軟件層次結構自下而上分爲以下幾個層次:     第一

原创 讀Kernel感悟-Linux內核啓動-從hello world說起

內核是從哪裏開始執行的呢?幾乎任何一本Linux內核源代碼分析的書都會給出詳細的答案。不過,我試圖從一個不同的角度(一個初學者的角度)來敘述,而不是一上來就給出答案。從熟悉的事物入手,慢慢接近陌生的事物,這是比較常見的思路。既然都是二進制

原创 讀Kernel感悟-kbuild系統-內核模塊的編譯

Linux內核是一種單體內核,但是通過動態加載模塊的方式,使它的開發非常靈活方便。那麼,它是如何編譯內核的呢?我們可以通過分析它的Makefile入手。以下是一個簡單的hello內核模塊的Makefile. ifneq ($(KERNEL

原创 讀Kernel感悟-僞裝現場-系統調用參數

文章來源:http://www.top-e.org/jiaoshi/class/ 內核支配了整個計算機的硬件資源,好像一位獨裁者,高高在上。他有時候必須像法官一樣公正,有時候則必須像狐狸一樣狡猾。僞裝現場就是他的拿手好戲。 系統調用是很

原创 讀Kernel感悟-Linux內核啓動-BIOS

文章來源:http://www.top-e.org/jiaoshi/html/?196.html   “真羅嗦,直接告訴我Linux下用glibc庫編譯出來的C程序真正的入口地址是_start()不就行了麼?”臭雞蛋撲面而來。 嗯,我說了

原创 讀Kernel感悟-Linux內核啓動-內核的生成

這段時間在看《Linux內核源代碼情景分析》,順便寫了一些感悟。讀內核源代碼是一件很有意思的事。它像一條線,把操作系統,編譯原理,C語言,數據結構與算法,計算機體系結構等等計算機的基礎課程串起來。         我看內核源代碼是用lxr

原创 Linux內核中EXPORT_SYMBOL的用法

文章來源:http://www.top-e.org/jiaoshi/class/ EXPORT_SYMBOL標籤內定義的函數對全部內核代碼公開,不用修改內核代碼就可以在內核模塊中直接調用。還可以手工修改內核源代碼來導出另外的函數,用於重新

原创 讀Kernel感悟-僞裝現場-fork()系統調用

文章來源:http://www.top-e.org/jiaoshi/class/ 不僅進入系統調用時要僞裝現場,fork系統調用時返回時也需要僞裝現場。因爲是“無中生有”。 例如在fork創建新進程時,系統要保證新進程與舊進程一樣,從相