出版時間:2012-1 出版社:清華大學(xué)出版社 作者:陳莉君,康華 編著 頁數(shù):255
Tag標(biāo)簽:無
內(nèi)容概要
本書是Linux內(nèi)核及動手實(shí)踐的入門教程。在龐大的Linux內(nèi)核中,選取最基本的內(nèi)容——進(jìn)程管理、中斷、內(nèi)存管理、系統(tǒng)調(diào)用、內(nèi)核同步、文件系統(tǒng)、i/o設(shè)備管理等進(jìn)行闡述。從原理出發(fā),基于Linux內(nèi)孩源代碼但又不局限于代碼,分析原理如何落實(shí)到代碼,并通過簡單有效的實(shí)例說明如何調(diào)用Linux內(nèi)核提供的函數(shù)進(jìn)行內(nèi)核級程序的開發(fā)。主要章節(jié)給出了具有實(shí)用價值的小型應(yīng)用,從而讓讀者在實(shí)踐中加深對原理的理解和應(yīng)用能力。
本書對于希望深入Linux操作系統(tǒng)內(nèi)部、閱讀Linux內(nèi)核源代碼以及進(jìn)行內(nèi)核級程序開發(fā)的讀者具有較高的參考價值。本書可作為高等院校計(jì)算機(jī)相關(guān)專業(yè)的本科生、研究生的教材,Linux應(yīng)用開發(fā)人員、嵌入式系統(tǒng)開發(fā)人員等均可從本書中獲益。
書籍目錄
第1章 概述
1.1 認(rèn)識操作系統(tǒng)
1.1.1 從使用者角度看
1.1.2 從程序開發(fā)者的角度看
1.1.3 從操作系統(tǒng)在整個計(jì)算機(jī)系統(tǒng)所處位置看
1.1.4 從操作系統(tǒng)設(shè)計(jì)者的角度看
1.1.5 操作系統(tǒng)組成
1.2 開放源代碼的UNlX/Linux操作系統(tǒng)
1.2.1 UNIX誕生和發(fā)展
1.2.2 Linux誕生
1.2.3 操作系統(tǒng)標(biāo)準(zhǔn)POSIX
1.2.4 GNU和Linux
1.2.5 Linux的開發(fā)模式
1.3 Linux內(nèi)核
1.3.1 Linux內(nèi)核的技術(shù)特點(diǎn)
1.3.2 Linux內(nèi)核的位置
1.3.3 Linux內(nèi)核體系結(jié)構(gòu)
1.4 Linux內(nèi)核源代碼
1.4.1 Linux內(nèi)核版本
1.4.2 Linux內(nèi)核源代碼的結(jié)構(gòu)
1.4.3 Linux內(nèi)核源代碼分析工具
1.5 Linux內(nèi)核模塊編程入門
1.5.1 模塊的定義
1.5.2 編寫一個簡單的模塊
1.5.3 應(yīng)用程序與內(nèi)核模塊的比較
1.6 Linux內(nèi)核中鏈表的實(shí)現(xiàn)及應(yīng)用
1.6.1 鏈表的演化
1.6.2 鏈表的定義和操作
1.6.3 鏈表的應(yīng)用
1.7 小結(jié)
習(xí)題
第2章 內(nèi)存尋址
2.1 內(nèi)存尋址
2.1.1 Intel x86 CPU尋址的演變
2.1.2 80x86寄存器簡介
2.1.3 物理地址、虛擬地址及線性地址
2.2 段機(jī)制
2.2.1 段描述符
2.2.2 地址轉(zhuǎn)換及保護(hù)
2.2.3 Linux中的段
2.3 分頁機(jī)制
2.3.1 頁與頁表
2.3.2 線性地址到物理地址的轉(zhuǎn)換
2.3.3 分頁舉例
2.3.4 頁面高速緩存
2.4 Linux中的分頁機(jī)制
2.5 Linux中的匯編語言
2.5.1 AT&T與Intel匯編語言的比較
2.5.2 AT&T匯編語言的相關(guān)知識
2.5.3 GCC嵌入式匯編
2.6 Linux系統(tǒng)地址映射舉例
2.7 小結(jié)
習(xí)題
第3章 進(jìn)程
3.1 進(jìn)程介紹
3.1.1 程序和進(jìn)程
3.1.2 進(jìn)程的層次結(jié)構(gòu)
3.1.3 進(jìn)程狀態(tài)
3.1.4 進(jìn)程舉例
3.2 Linux系統(tǒng)中的進(jìn)程控制塊
3.2.1 進(jìn)程狀態(tài)
3.2.2 進(jìn)程標(biāo)識符
3.2.3 進(jìn)程之間的親屬關(guān)系
3.2.4 進(jìn)程控制塊的存放
3.2.5 當(dāng)前進(jìn)程
3.3 Linux系統(tǒng)中進(jìn)程的組織方式
3.3.1 進(jìn)程鏈表
3.3.2 哈希表
……
第4章 內(nèi)存管理
第5章 中斷和異常
第6章 系統(tǒng)調(diào)用
第7章 內(nèi)核中的同步
第8章 文件系統(tǒng)
第9章 設(shè)備驅(qū)動
參考文獻(xiàn)
章節(jié)摘錄
版權(quán)頁:插圖:為此,Linux內(nèi)核設(shè)置了一個定期將頁面換出的守護(hù)進(jìn)程kswapd。從原理上說,kswapd相當(dāng)于一個進(jìn)程,它有自己的進(jìn)程控制塊task_struct結(jié)構(gòu)。與其他進(jìn)程一樣受內(nèi)核的調(diào)度。而正因?yàn)閮?nèi)核將它按進(jìn)程來調(diào)度,所以可以讓它在系統(tǒng)相對空閑的時候來運(yùn)行。不過,與普通進(jìn)程相比,kswapd有其特殊性。首先,它沒有自己獨(dú)立的地址空間,所以在近代操作系統(tǒng)理論中把它稱為“線程”或“守護(hù)進(jìn)程”以與進(jìn)程相區(qū)別。那么,kswapd到底隔多長時間運(yùn)行一次,這由內(nèi)核設(shè)計(jì)時所確定的一個常量HZ決定。HZ決定了內(nèi)核中每秒時鐘中斷的次數(shù),用戶可以在編譯內(nèi)核前的系統(tǒng)配置階段改變其值,但是一經(jīng)編譯就確定下來了。在Linux2.4 的內(nèi)核中,每秒鐘kswapd被調(diào)用一次。kswapd的執(zhí)行路線分為兩部分,第一部分是發(fā)現(xiàn)物理頁面已經(jīng)短缺的情況下才進(jìn)行的,目的在于預(yù)先找出若干頁面,且將這些頁面的映射斷開,使這些物理頁面從活躍狀態(tài)轉(zhuǎn)入不活躍狀態(tài),為頁面的換出做好準(zhǔn)備。第二部分是每次都要執(zhí)行的,目的在于把已經(jīng)處于不活躍狀態(tài)的“臟”頁面寫入交換區(qū),使它們成為不活躍的“干凈”頁面繼續(xù)緩沖,或進(jìn)一步回收這樣的頁面成為空閑頁面。在本章的學(xué)習(xí)中,有一點(diǎn)需特別向讀者強(qiáng)調(diào)。在Linux系統(tǒng)中,CPU不能按物理地址訪問存儲空間,而必須使用虛擬地址。因此,對于Linux內(nèi)核映像,即使系統(tǒng)啟動時將其全部裝入物理內(nèi)存,也要將其映射到虛擬地址空間中的內(nèi)核空間,而對于用戶程序,其經(jīng)過編譯、鏈接后形成的映像文件最初存于磁盤上,當(dāng)該程序被運(yùn)行時,先要建立該映像與虛擬地址空間的映射關(guān)系,當(dāng)真正需要物理內(nèi)存時,才建立地址空間與物理空間的映射關(guān)系。內(nèi)存管理實(shí)例我們希望能通過訪問用戶空間的內(nèi)存達(dá)到讀取內(nèi)核數(shù)據(jù)的目的,這樣便可以進(jìn)行內(nèi)核空間到用戶空間的大規(guī)模信息傳送,從而應(yīng)用于高速數(shù)據(jù)采集等性能要求高的場合。因?yàn)橥ㄟ^外設(shè)采集的數(shù)據(jù)首先會由驅(qū)動程序放入內(nèi)核,然后才傳送到用戶空間由應(yīng)用程序做進(jìn)一步的處理。由于內(nèi)核內(nèi)存是受保護(hù)的,因此,要想將其數(shù)據(jù)拷貝到用戶空間,通常的方法是利用系統(tǒng)調(diào)用,但是系統(tǒng)調(diào)用的缺點(diǎn)是速度慢,這會成為數(shù)據(jù)高速處理的瓶頸。因此我們希望可以從用戶空間直接讀取內(nèi)核數(shù)據(jù),從而省去數(shù)據(jù)在兩個空間拷貝的過程。具體地講,我們要利用內(nèi)存映射功能,將內(nèi)核中的一部分虛擬內(nèi)存映射到用戶空間,使得訪問用戶空間地址等同于訪問被映射的內(nèi)核空間地址,從而不再需要數(shù)據(jù)拷貝操作。4.6.1 相關(guān)背景知識我們知道,在內(nèi)核空間中調(diào)用kmalloc()分配連續(xù)物理空間,而調(diào)用vmalloc()分配非連續(xù)物理空間。在這里,把kmalloc()所分配的內(nèi)核空間稱為內(nèi)核邏輯空間(KernelLogicSpace)。它所分配的內(nèi)核空間虛地址是連續(xù)的,所以能很容易獲得其對應(yīng)的實(shí)際物理地址,即“內(nèi)核虛地址-PAGE_OFFSET=實(shí)際的物理地址”。另外,由于系統(tǒng)在初始化時就建立了內(nèi)核頁表swapper_pg_dir,而kmalloc()分配過程所使用的就是該頁表,因此也省去了建立和更新頁表的工作。
編輯推薦
《Linux 操作系統(tǒng)原理與應(yīng)用(第2版)》編輯推薦:教學(xué)目標(biāo)明確,注重理論與實(shí)踐的結(jié)合。教學(xué)方法靈活,培養(yǎng)學(xué)生自主學(xué)習(xí)的能力。教學(xué)內(nèi)容先進(jìn),強(qiáng)調(diào)計(jì)算機(jī)在各專業(yè)中的應(yīng)用。教學(xué)模式完善,提供配套的教學(xué)資源解決方案。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
Linux 操作系統(tǒng)原理與應(yīng)用 PDF格式下載