讀書筆記2013 2 Linux核心設計與實現A

2022-03-15 02:28:36 字數 1446 閱讀 8862

讀書筆記2013-2 linux核心設計與實現a

這本書不是想linux原始碼剖析那樣一行行分析linux源**的書,而是從linux歷史,linux哲學,linux設計原理和原則,計算機硬體相關知識,編譯安裝核心實戰等多方面多角度講述和linux相關的方方面面。從中學到的更多的不單核心的源**,而是linux的哲學。建議所有從事linux相關工作的猿都要讀一下,讀完之後,很多東西都變得容易理解,知其然,知其所以然。

如果沒有讀過《深入理解計算機》類似的圖書,建議和《深入理解計算機》一起閱讀。

有條件的話建議閱讀英文版。

from the beginning to chapter "the linux scheduling implementation"

1. 有名的unix哲學--do one thing and do it well.

因為unix系統建立程序所需時間很短,並且unix提供簡單且健壯的ipc(程序間通訊手段),所以設計unix時可以設計乙個個實現單一功能的小程式,並且很方便的將他們組合起來實現很強大的功能,大大提高了程式的通用性和復用性。

mmu是乙個專門用於管理記憶體的硬體,負責完成虛擬記憶體和物理記憶體間的轉換。通常,它被設計為cpu的一部分,但它也可以以獨立硬體的形式出現。

除了管理虛擬記憶體外,mmu還負責記憶體保護,為每個程序分配單獨的程序空間,cpu快取記憶體控制,bus匯流排仲裁以及儲存體轉換(尤其在8位系統上)等工作。

通過加引數-j來使用多執行緒來並行編譯核心。一般為乙個cpu配兩個作業任務,所以如果你的伺服器的cpu是16核的,則可以指定-j32

程序就是執行中的程式。但不僅僅指程式的源**,還包括開啟的檔案、接收到的訊號、處理器狀態、記憶體位址空間、執行中的執行緒、全域性變數等。

執行緒是處理器排程的最小單位。linux使用一種獨特的方式來實現執行緒:執行緒與程序沒有明顯區別,執行緒就是一種特殊的程序--它們能夠與其他程序共享如位址空間等資源。

對程序來說,有兩個虛擬化:虛擬記憶體和虛擬處理器。通過程序排程機制,為每個程序分配獨立的虛擬記憶體和虛擬儲存器,所以從程序的角度來看,它們都任務自己獨佔整個機器。

系統用process identification (pid)來標識每個程序。pid其實就是一int型的數字,為了向後相容,這個數字最大是2的32,768(15次方),這個值記錄在裡,編譯時可以修改。這個值的大小限制著能夠同時執行的程序的個數。儘管這個值對於普通desktop來說,足夠用了,但對於大的伺服器來說,可能不夠用。這種情況時管理員可以通過/proc/sys/kernel/pid_max。

在核心中,通常是通過乙個指向儲存任務資訊的結構體task_struct的指標來獲取任務資訊。

由於x86系統的計算機只有很少的暫存器,所以與大多數體系結構的計算機直接把一些資訊存到不同的暫存器裡不同,x86系統的計算機將這些資訊存到棧裡面。

程序的狀態只可能是下面5種中的一種

處在task_uninterruptible狀態的程序拒絕接受訊號,所以無法被殺死

Linux讀書筆記

type echo unset set export 環境變數 home shell histsize mail path lang random ps1 影響結果的語系變數 locale 變數鍵盤讀取 陣列與申明 read array declare 與檔案系統及程式的限制關係 ulimit 變數...

Linux讀書筆記(1)

作業系統的作用 作業系統的功能就是溝通使用者與硬體之間的訊息傳遞。也就是使用者面對作業系統 而作業系統 操作的是硬體 作業系統包含的內容 作業系統分為兩個東西 核心 和一對核心提供的工具 核心是用來掌管硬體的 如果核心不認識硬體那麼這個硬體就無法被呼叫 kernel kernel 管理事項有 1.s...

linux讀書筆記4

函式和引數 f f 1 2 cmd ls cm dif eq 0 代 表返回值 then echo cmd executed successfully else echo cmd terminated unsuccessfully fi 將命令序列的輸出讀入變數 將多個檔案的輸出組合起來 ls ca...