linux 0.11 內核完全註釋V3.0學習筆記(一)

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/songze_lee/article/details/78447372

linux 0.11 內核完全註釋V3.0學習筆記(一)

第1章 概述

1.1 Linux的誕生和發展

Linux操作系統是UNIX操作系統的一種克隆系統,誕生於1991年10月5日(第一次對外公佈時間),Linux操作系統的誕生、發展和成長過程依賴以下5大支柱:UNIX操作系統、MINIX操作系統、GNU計劃、POSIX標準和Internet網絡。目前Linux內核版本已經開發到4.13.11穩定版本,獲取kernel源碼可從Linux官方網站下載https://www.kernel.org,通過https://www.kernel.org/pub/linux/kernel/選擇相應版本下載,也可通過git獲取源碼git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git獲取源碼後可切換到相應版本分支上。

1.1.1 UNIX操作系統

UNIX操作系統是美國貝爾實驗室Ken.Thompson和Denis Ritchie在DEC PDP-7小型計算機開發的一個分時操作系統。1969年夏Ken.Thompso在PDP-7使用BCPL(基本組合編程語言)一個月開發出了UNIX操作系統的原型,後經Denis Ritchie於1972年用移植性很強的C語言改寫,使得UNIX系統在院校得到了推廣。

1.1.2 MINIX操作系統

MINIX是一種基於微內核架構的類UNIX計算機操作系統,由Andrew S. Tanenbaum發明。MINIX最初發佈於1987年,開放全部源代碼給大學教學和研究工作。同時提供了用C語言和彙編語言編寫的系統源代碼。

1.1.3 GNU計劃

GNU計劃和自由軟件基金會FSF(the Free Software Foundation)是由Richard M.Stallman於1984年一手創辦的,旨在開發一個類UNIX並且是自由軟件的完整操作系統。GNU是“GNU’s Not UNIX”的遞歸縮寫。到90年代初,GNU項目已經開發初許多高質量的免費代碼。其中包括有名的emacs編輯系統、bash shell程序、gcc系列編輯程序、gdb調試程序等,這些軟件爲Linux操作系統的開發創造了一個合適的環境。

1.1.4 POSIX標準

POSIX表示可移植操作系統接口(Portable Operating System Interface of UNIX,縮寫爲 POSIX )POSIX標準定義了操作系統應該爲應用程序提供的接口標準,是IEEE爲要在各種UNIX操作系統上運行的軟件而定義的一系列API標準的總稱,其正式稱呼爲IEEE 1003,而國際標準名稱爲ISO/IEC 9945。
POSIX標準意在期望獲得源代碼級別的軟件可移植性。換句話說,爲一個POSIX兼容的操作系統編寫的程序,應該可以在任何其它的POSIX操作系統(即使是來自另一個廠商)上編譯執行。
1991~1993年間,POSIX標準的制定正處在最後投票敲定的時候,也是Linux剛剛起步的時候,這個UNIX標準爲Linux提供了極爲重要的信息,使得Linux能夠在標準的指導下進行開發,並能與絕大UNIX操作系統兼容。在最初的Linux內核源代碼中(0.01版、0.11版)就已經爲Linux系統與POSIX標準的兼容做好了準備工作。

1.1.5 Linux操作系統的誕生

這裏寫圖片描述

1.1.6 Linux操作系統版本的變遷

這裏寫圖片描述

1.1.7 Linux名稱的由來

Linux操作系統剛開始並沒有稱作Linux,Linus給他的操作系統取名FREAX,怪誕的、怪物、異想天開的意思。在他將新的操作系統放到ftp.funet.fi服務器上時,管理員Ari Lemke很不喜歡這個名稱,他認爲是Linus的操作系統就取諧音Linux作爲操作系統的目錄吧,於是這個名稱就這個流傳下來。

1.1.8 早期Linux系統開發的主要貢獻者

Thedore Ts’o(Ted Ts’o):Linux操作系統剛剛問世,懷着極大的熱情爲linux的發展提供了maillist,linux 0.10版添加了虛擬盤驅動程序ramdisk.c和內核內存分配程序kmalloc.c,最大貢獻之一是提出並實現了ext2文件系統,該文件系統現已成爲Linux文件系統標準,後面又推出了ext3文件系統,該系統大大提高了文件系統的穩定性和訪問效率。
Alan Cox:Linux系統上TCP/IP網絡代碼的最早使用人之一,2001年負責維護linux內核2.4.x的代碼。
Michael K.johnson:著名的linux文檔計劃的發起者之一。
Linux如今飛速發展,有着衆多高手做出極大的貢獻,具體名單可在Linux內核中的CREDITS文件查看,按字母列出了做出貢獻的名單列表。

1.2 內容綜述

Linux-0.11版本在1991年12月8日發佈,發佈時包含以下文件:
bootimgage.Z –具有美國鍵盤代碼的壓縮啓動映像文件;
bootimgage是引導啓動image文件,其中主要包含磁盤引導扇區代碼,操作系統加載程序和內核執行代碼。
rootimage.Z –用於向內核提供最基本支持的根文件系統,其中包括配置文件和命令執行程序。
as86.tar.Z –16位彙編鏈接程序軟件包。
linux-0.11.tar.Z –linux 0.11內核源代碼。
INSTALL-0.11 –linux 0.11系統簡單安裝說明文檔。
Linux 0.11內核源代碼結構列表如下:
這裏寫圖片描述
本書各個章節介紹:
- 第2章:基於傳統微機系統組成框圖,主要介紹Linux內核運行之上的IBM PC/AT386微機的組成部分和介紹各大組成部分的功能和相互聯繫。
- 第3章:介紹Linux內核使用的編程語言、主要是閱讀linux0.11源碼所需的彙編語言和GNU C語言中的內嵌擴展知識。
- 第4章:80X86 CPU的體系結構以及保護模式下編程基礎知識,主要包括:80X86基礎知識、保護模式內存管理、中斷和異常處理、任務管理及一個簡單的內核示例。
- 第5章:內核體系結構及中斷機制、系統調用和進程控制、堆棧等。
- 第6章:引導啓動程序BOOTSECT.s、SETUP.s、HEAD.s。
- 第7章:初始化程序 main.c 。
- 第8章:kernel目錄中所有程序,最重要部分進程調度函數schedule()、sleep()和有關係統調用程序。
- 第9章:kernel/blk_drv/目錄下塊設備驅動程序(磁盤、軟盤)。
- 第10章:kernel/char_drv/目錄下字符設備驅動程序(串行、鍵盤、顯示器)
- 第11章:kernel/math/目錄下數學協處理器仿真程序。
- 第12章:fs/文件系統程序,可參考書籍Andrew S.Tanenbaum。 《操作系統設計與實現》有關MINIX文件系統章節。
- 第13章:內存管理程序。
- 第14章:所有頭文件的詳細說明。
- 第15章:lib下所有文件。
- 第16章:tools/build.c,僅用於將內核的 磁盤引導程序塊和其他主要內核模塊連接成一個完整的內核映像。
- 第17章:實驗環境和使用方法。

Linus開發linux主要參考3本書籍
- M.J.Bach 《UNIX操作系統設計》該書描述了UNIX System V內核的工作原理和數據結構
- John H Crawford 《Programming the 80386》是講解80X86下保護模式編程方法的好書
- Andrew S.Tanenbaum 《操作系統設計與實現》使用了該書中描述的MINIX文件系統1.0版本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章