linux 核心設計與實現相關

2021-05-22 01:31:56 字數 1420 閱讀 4542

有待繼續補充。。。。

第一章 linux核心簡介

需要注意:核心開發其實並不難。

第二章 從核心出發

核心開發需要注意:

1、沒有c庫,c庫太大了;

2、沒有記憶體保護機制;

3、不要輕易使用浮點數;

4、可移植的重要性;

5、同步和併發;

疑問:編譯和安裝核心?必須在linux下麼?其他機器安裝了gcc編譯器呢?能否編譯安裝?

第三章 程序管理

1、父子程序間的寫時拷貝;

重要函式:fork;子程序建立時,共享父程序資源給子程序,注意此時連procid都一致,所有的屬性和資源。。然後fork呼叫其他函式分配id給子程序,修改子程序對這些資源的許可權為唯讀,子程序在使用父程序在建立之前申請的資源的時候才會拷貝這些資源;

2、執行緒的實現,實際呼叫的是另一種fork,不過共享父程序資源給子程序之後,不會去除這個共享,因此子程序很多屬性跟父程序一致並能訪問父程序在子程序建立前申請的資源;

3、關於程序退出時的資源釋放:

(1)子程序先於父程序退出,但是父程序不呼叫wait進行善後處理:

a、在父程序退出之前,子程序處於僵死狀態。。

b、父程序退出之後,子程序會被交給init程序,init程序為子程序做善後。。

(2)、子程序先於父程序退出,父程序呼叫wait進行善後處理

不會出現僵死程序。

(3)、父程序先於子程序退出;

子程序交與init程序,由其為子程序做善後

第四章 程序排程

1、搶占式程序排程

2、實時排程;

3、每個處理器維護兩個優先順序陣列:活動陣列和過期陣列,時間片被用完的程序優先順序結構被轉移到過期陣列中,當然在此之前,它的新時間片已經被計算好了,當活動陣列沒有資料之後,過期陣列和活動陣列互換;

還有另外乙個機制,對於互動性很強的程序(nice值很小),排程程式會在該程序時間片用完之後不把它放進過期陣列,而是重新放入活動陣列;

4、負載平衡程式:

針對多處理器系統,為了使各個處理器之間負載平衡,負責保證可執行佇列的負載處於平衡狀態;

呼叫方式:定時器呼叫,處理器可執行隊列為空時呼叫。

第五章 系統呼叫 

其實系統呼叫無非就是應用程式呼叫系統api,引發乙個異常(軟中斷,注意,它是同步的,下一章的中斷一般指的硬中斷,是非同步的)促使系統切換到核心態呼叫異常處理程式,該異常對應的就是系統呼叫處理程式,系統呼叫處理程式執行對應的系統呼叫(每個系統呼叫都有乙個呼叫號,系統api會傳遞該引數到暫存器eax中),由核心執行該操作;引數的正向傳遞是通過暫存器,不過引數個數受暫存器數目的限制(只有ebx,ecx,edx,esi,edi這幾個暫存器可以使用),返回只使用乙個暫存器eax;

需要學習的東西:

1、彙編相關;

2、作業系統相關;

3、《unix網路程式設計》

4、《設計模式》

Linux核心設計與實現總結。

1.程序管理。本章主要是介紹程序的乙個靜態的狀態,包括系統如何組織程序。建立,啟動,到最後死亡的乙個概念性認識,沒有更加深刻的知識。2.程序排程。本章比較重要。1.搶占式排程策略。2.倆程序間上下文切換 有倆函式 switch mm 和 switch to倆函式完成此功能。具體細節需要閱讀其他書籍 ...

linux核心設計與實現 前言

認真閱讀原始碼很重要,應該鑽研並嘗試著手改一些 尋找乙個bug然後去修改它,改進你的硬體裝置的驅動程式 unix特點 作業系統 指系統中負責完成最基本功能和系統管理的部分。包括 核心 裝置驅動程式 啟動引導程式 命令列shell或其他種類的使用者介面 基本的檔案管理和系統工具。核心組成 中斷服務程式...

linux核心設計與實現 核心同步介紹

小結 核心同步方法 順序和屏障 第10章 核心同步方法 臨界區 訪問和操作共享資料的 競爭條件 兩個執行執行緒有可能在同乙個臨界區中同時執行。同步 避免併發和防止競爭條件。鎖的形式和鎖的粒度各不相同,各個鎖機制之前的主要區別在於 當鎖被其他執行緒持有時,其他的行為表現。造成併發執行的原因 使用者空間...