1. 程式人生 > >《linux核心完全註釋》的價值

《linux核心完全註釋》的價值


“讀懂一個作業系統原始碼 需要平和的心態、毅力、執著

說說我的經歷吧,我曾經 看完了 APUE《unix環境高階程式設計》  把很多例子也除錯了一遍

書中講到我們如何編寫應用程式時提到的最多的話就是  “核心提供了....” 還有很多程式就是用來探究核心在處理一些問題的時候的行為。

學完的時候,我雖然會用了很多系統呼叫,也知道了linux是如何提供給我們服務的,很明確了我們在系統平臺上面能做出些什麼  但是,越來越強的好奇心讓我感覺到,核心怎麼會有這麼大的能耐,能夠做這麼多事情?

心 裡有了對作業系統如何運作的 強烈好奇心  轉而去看作業系統原理性的書,發現只能給我霧裡看花的感覺,這方面做的好一點的是《作業系統設計與實現》 完整的給了一個minix作業系統的原始碼,大約有6-7萬行程式碼,看了一些,感覺首先那是微核心的,和現在的linux有些不同。

正好趙博的書出來了 帶著強烈的好奇心, 艱苦的去閱讀原始碼,同時弄懂了很多和硬體相關的東西,對保護模式等 也懂了不少(本科時候的組合語言程式實際只講了真實模式下的,沒有保護模式下的)  更關鍵的是知道了 我們常用的系統呼叫 在核心內部是如何實現來提供給我們服務的:),以後自己再開發應用層的軟體,或者是編寫核心模組,對系統有一個清晰明確的瞭解,不再是把unix核心看成 一個大黑洞,看成一些系統呼叫、核心專用系統呼叫、核心符號的集合來提供給我們用了,站在一個全域性的高度上來理解程式、開發除錯和只會用幾個系統呼叫、會 改幾個makefile  理解層次是大不一樣的。

我覺得收穫應該是一個系統工程  把大學時候學的  組合語言   微機原理 與介面、unix程式設計、 作業系統原理 全都串了起來,這些分立的知識是如何在一個實際的系統中得到很好的運用的,大家應該都有這個體會,本科時候上的課之間似乎很多是分立的,講彙編的就是注重 彙編, 作業系統就是注重 原理和排程什麼的(比如訊號量程式設計、哲學家共進晚餐問題)  計算機組成的老師從講了一些計算機的硬體,到底這些知識怎麼組織起來成為一個實用的作業系統讓我們每天happy的在使用的呢? 不知道!  這是我多年困惑的問題,可以說,必須要通讀作業系統原始碼並且理解它,同時把每一部分和本科時候講的一些分立的知識聯絡起來,我們才能對計算機有個深刻的 理解!

我覺得 真正的收穫應該是這些 (當然還有  linus 對於c語言運用的出神入畫的技巧,特別是記憶體管理部分)

把讀懂、除錯linux0.11 看成一個大專案,整合本科時候學過的各種計算機 知識 成為一個巨大的 相互之間耦合緊密的體系  是閱讀、除錯、理解linux0.11原始碼的目的!“

作業系統是個圖狀的體系,而我們人類的認知體系是線性的,因此,要理解一個圖狀的體系,需要多篇,從各個角度進行考察,方能有更深的理解。

相關推薦

linux核心完全註釋》的價值

“讀懂一個作業系統原始碼 需要平和的心態、毅力、執著說說我的經歷吧,我曾經 看完了 APUE《unix環境高階程式設計》  把很多例子也除錯了一遍書中講到我們如何編寫應用程式時提到的最多的話就是  “核心提供了....” 還有很多程式就是用來探究核心在處理一些問題的時候的行為。學完的時候,我雖然會用了很多系統

Linux核心完全註釋Linux核心體系結構(續)

Linux核心完全註釋之Linux核心體系結構(續) 2.6 Linux 核心對記憶體的使用方法 2.8 Linux 核心原始碼的目錄結構 2.9 核心系統與使用者程式的關係 2.10 linux/Makefile 檔案 小結

Linux核心完全註釋之概述

1.1 Linux的誕生與發展 Linux創始人:Linus Toravlds Linux第一版釋出時間:1991年9月 Linux誕生髮展的五大支柱: UNIX作業系統 Ken. Thompson和Dennis Ritchie開發的分時作業系統 MINIX作業系統 A

Linux核心完全註釋 閱讀筆記:3.3、C語言程式

By: Ailson Jack Date: 2018.09.14 本小節給出核心中經常用到的一些gcc擴充語句的說明。 1、C程式編譯和連結          使用gcc編譯器編譯C語言程式時,通常會經過4個處理階段,即預處理階段、編譯階段、彙編階段和連結階段

Linux核心完全註釋 閱讀筆記:3.4、C與彙編程式的相互呼叫

1、C函式呼叫機制          函式呼叫操作包括從一塊程式碼到另一塊程式碼之間的雙向資料傳遞和執行控制轉移。資料傳遞通過函式引數和返回值來進行。另外,我們還需要在進入函式時為函式的區域性變數分配儲存空間,並且在退出函式時收回這部分空間。Intel 80x86 CP

Linux核心完全註釋 閱讀筆記:3.5、Linux 0.11目標檔案格式

為了生成核心程式碼檔案,Linux 0.11使用了兩種編譯器。第一種是彙編編譯器as86和相應的連結程式(或稱為連結器)ld86。它們專門用於編譯和連結,執行在實地址模式下的16位核心引導扇區程式bootsect.s和設定程式setup.s。第二種是GNU的彙編器as

Linux核心完全註釋》筆記(1)

開始看《Linux核心完全註釋》,不侷限於此書,期望將以前不懂或不甚明白的地方弄通。不考慮時間,只培養自己的興趣。能力有限,盡力而為 核心版本:0.11(很老麼?呵呵,書上有為什麼用它的理由) Linux 作業系統是UNIX 作業系統的一個克隆版本,作者Lin

linux 核心完全註釋筆記 1章--2.4章 2006.04.06

       第一章 linux的誕生   1990年 芬蘭 赫爾辛基大學計算機系  20歲的 Linus Benedict Torvalds 通過學習 《MINIX 系統》的原始碼 後決定開發的  linux 系統 包括學習了 M.J.Bach 的《UNIX作業系統設計》

Linux 核心完全註釋》閱讀筆記

在閱讀原始碼之前,有必要對Linux核心的體系結構、原始碼的目錄結構有個巨集觀地瞭解,《Linux核心完全註釋》非常詳細地介紹了這方面的內容,所以 這裡僅僅進行概述性的討論,以便讓所有的筆記構成一個整體。     這裡主要介紹四部分內容。 1. Monolithic ke

Linux核心完全註釋(0.11版)DAY2

fs目錄是檔案系統實現程式的目錄,包含17個C語言程式。這些程式可分為四個部分:高速緩衝區管理、底層檔案操作、檔案資料訪問和檔案高層函式。核心檔案buffer.c是高速緩衝區程式,因為檔案系統資料訪問都需要首先讀取到高速緩衝區。                       

讀書筆記:LINUX核心完全剖析:基於0.12核心

讀書筆記:LINUX核心完全剖析   IBM PC及其相容機主要使用 獨立編址方式,採用獨立的I/O地址空間對控制裝置中的暫存器進行定址和訪問,IBM PC也部分地使用統一編址。對於使用EISA、PCI等匯流排結構的PC,有64KB的I/O地址空間可供使用。在普通Li

紅黑樹原理淺談(附Linux核心原始碼註釋)

引言:紅黑樹(英語:Red–black tree)是一種自平衡二叉查詢樹,是在電腦科學中用到的一種資料結構,典型的用途是實現關聯陣列。它是在1972年由魯道夫·貝爾發明的,他稱之為"對稱二叉B樹",它現代的名字是在Leo J. Guibas和Robert Sedgewick於19

讀書筆記《Linux核心完全剖析:基於0.12核心》——第三章 核心程式語言和環境

3.1 as86彙編器 linux 0.1x系統中使用了兩種彙編器(Assembler)。一種是能產生16位程式碼的as86彙編器,配套ld86連結器;另一種是GNU的彙編器gas(as),使用GNU ld連結器。 編譯器和連結器的原始碼可以從FTP伺服器ftp

linux核心完全解讀(基於0.11核心)》--環境搭建

最近開始閱讀《linux核心完全解讀(基於0.11核心)》,首先是要搭建linux 0.11核心的編譯除錯環境,可以參考下面的文章: http://www.tinylab.org/take-5-minutes-to-build-linux-0-11-experiment-e

select模型linux核心原始碼註釋總結

1、終端使用者空間的系統呼叫會呼叫到sys_select函式 asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __use

linux核心完全剖析》筆記06-記憶體管理

1. 管理的記憶體從哪裡來?(初始化) 744 圖13.5 memory.c第443行 void mem_init(long start_mem, long end_mem) { int i; HIGH_MEMORY = end_me

linux核心完全剖析》筆記04-任務排程

問題: 任務排程在何時發生 任務排程的基本策略是什麼 任務切換時怎麼做到的 1. 隱含的睡眠佇列 建立睡眠等待佇列的原因,是因為有先後順序等待某項資源,然後要按順序喚醒程序,就要依照這裡隱含的佇列順序進行 sche

linux核心完全剖析》筆記01-啟動分析

啟動程式碼分析-《linux 0.12核心完全剖析》筆記 導語: linux 0.12的啟動程式碼能夠給我們分析最新的linux程式碼給予一定的啟示,啟動程式碼雖然只有三個檔案,但是對讀者分析能力的要求比較高,主要是在對組合語言以及x86程式設計體

linux核心完全剖析》筆記02-中斷處理

1. 從硬體故障中斷處理理解 要理解中斷系統從理解一段程式碼開始 no_error_code: xchgl %eax,(%esp) #將eax的內容和esp所指堆疊的內容相交換 pushl %ebx pushl %ecx

Linux核心0.11完全註釋(修正版) --讀書筆記(1)

RTFSC 閱讀0.11核心版本的原因: 適合作業系統初學者的入門學習起點 閱讀早期核心的好處: 簡化的核心程式碼,避免現有核心的複雜性,能夠透徹的說明問題 -- Leland