国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

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

2024-06-28 13:25:00
字體:
來源:轉載
供稿:網友
讀書筆記2013-2 linux內核設計與實現A

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

《Linux內核設計與實現》簡介

這本書不是想Linux源碼剖析那樣一行行分析Linux源代碼的書,而是從Linux歷史,Linux哲學,Linux設計原理和原則,計算機硬件相關知識,編譯安裝內核實戰等多方面多角度講述和Linux相關的方方面面。從中學到的更多的不單內核的源代碼,而是Linux的哲學。建議所有從事Linux相關工作的猿都要讀一下,讀完之后,很多東西都變得容易理解,知其然,知其所以然。如果沒有讀過《深入理解計算機》類似的圖書,建議和《深入理解計算機》一起閱讀。有條件的話建議閱讀英文版。

筆記和摘要A

From the beginning to Chapter "The Linux Scheduling Implementation"

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

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

2. MMU--Memory Management Unit

MMU是一個專門用于管理內存的硬件,負責完成虛擬內存和物理內存間的轉換。通常,它被設計為CPU的一部分,但它也可以以獨立硬件的形式出現。除了管理虛擬內存外,MMU還負責內存保護,為每個進程分配單獨的進程空間,CPU高速緩存控制,Bus總線仲裁以及存儲體轉換(尤其在8位系統上)等工作。

3.如何加快編譯Linux內核的速度: make-j32

通過加參數-j來使用多線程來并行編譯內核。一般為一個cpu配兩個作業任務,所以如果你的服務器的cpu是16核的,則可以指定-j32

4.內核態和用戶態的區別
  • 內核態的代碼不能訪問標準C的庫函數或者外部的頭文件
  • 內核態的代碼依照GNU C標準來編寫
  • 內核態的代碼沒有像用戶態那樣的防止內存泄露的機制
  • 不能簡單的執行浮點型的計算
  • 每個內核態的進程只有一個很小的固定大小的棧(在x86的機器上,一般是4k或8k)
  • 由于內核中有異步中斷,是搶占式分配cpu,支持SMP,異步和并行操作主要在內核態完成(沒太看懂這段:Because the kernel has asynchronous interrupts,is PReemptive,and supports SMP,synchronization and concurrency are major concerns within the kernel.)
  • 對于內核態程序來說,可移植性很重要。
5.進程與線程

進程就是執行中的程序。但不僅僅指程序的源代碼,還包括打開的文件、接收到的信號、處理器狀態、內存地址空間、執行中的線程、全局變量等。線程是處理器調度的最小單位。Linux使用一種獨特的方式來實現線程:線程與進程沒有明顯區別,線程就是一種特殊的進程--它們能夠與其他進程共享如地址空間等資源。對進程來說,有兩個虛擬化:虛擬內存和虛擬處理器。通過進程調度機制,為每個進程分配獨立的虛擬內存和虛擬存儲器,所以從進程的角度來看,它們都任務自己獨占整個機器。

6.進程描述符

系統用process identification (PID)來標識每個進程。PID其實就是一int型的數字,為了向后兼容,這個數字最大是2的32,768(15次方),這個值記錄在<linux/threads.h>里,編譯時可以修改。這個值的大小限制著能夠同時運行的進程的個數。盡管這個值對于普通desktop來說,足夠用了,但對于大的服務器來說,可能不夠用。這種情況時管理員可以通過/proc/sys/kernel/pid_max。在內核中,通常是通過一個指向存儲任務信息的結構體task_struct的指針來獲取任務信息。由于x86系統的計算機只有很少的寄存器,所以與大多數體系結構的計算機直接把一些信息存到不同的寄存器里不同,x86系統的計算機將這些信息存到棧里面。

7.進程的狀態

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

  • TASK_RUNNING
  • TASK_INTERRUPTIBLE
  • TASK_UNINTERRUPTIBLE
  • TASK_TRACED
  • TASK_STOPPED

處在TASK_UNINTERRUPTIBLE狀態的進程拒絕接受信號,所以無法被殺死


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 禄丰县| 天门市| 类乌齐县| 宿州市| 卓尼县| 石屏县| 疏附县| 东光县| 安达市| 蓝山县| 京山县| 长武县| 明水县| 珠海市| 扎囊县| 志丹县| 伊吾县| 关岭| 亚东县| 郴州市| 郯城县| 东海县| 天峨县| 峡江县| 崇礼县| 防城港市| 灵璧县| 镇原县| 临西县| 通道| 正蓝旗| 北碚区| 梁河县| 乐东| 怀来县| 枞阳县| 静安区| 沙雅县| 岱山县| 高密市| 山西省|