關(guān)于我們
書單推薦
新書推薦
|
操作系統(tǒng)實(shí)踐
本書可分為兩大部分,第一部分是Linux操作與應(yīng)用編程,包括Linux常用命令、C語言編程工具和典型的Linux應(yīng)用開發(fā),如多進(jìn)程、進(jìn)程通信等,并提供一個(gè)基于開源的Qt框架和MySQL數(shù)據(jù)庫的綜合實(shí)訓(xùn)案例;第二部分是Linux內(nèi)核編程,這一部分緊密結(jié)合操作系統(tǒng)課程的教學(xué)內(nèi)容,包含進(jìn)程管理、內(nèi)存管理、設(shè)備驅(qū)動(dòng)程序和虛擬文件系統(tǒng)等。
作為計(jì)算機(jī)學(xué)科的核心專業(yè)基礎(chǔ)課程,操作系統(tǒng)的教學(xué)面臨很大的挑戰(zhàn)。
首先,在理論教學(xué)上操作系統(tǒng)描述的對(duì)象是微觀的、隱蔽的、抽象的。操作系統(tǒng)講述的模型、算法來自于與日常認(rèn)識(shí)差別極大、以ns或ms秒為單位計(jì)時(shí)的計(jì)算空間(Cyberspace),這些模型、算法很難被直接觀察、真實(shí)演示。 其次,在實(shí)踐教學(xué)上操作系統(tǒng)往往面對(duì)的是具體的、整體的實(shí)際操作系統(tǒng),而幾乎每一個(gè)實(shí)際操作系統(tǒng)都是讓人望而生畏的龐然大物,都有各自的一套復(fù)雜規(guī)定和實(shí)現(xiàn)方法。 因此,無論是理論教學(xué)還是實(shí)踐教學(xué),往往只能針對(duì)抽象后的操作系統(tǒng)普遍原理、方法及其模擬來進(jìn)行。也因此,一些同學(xué)在學(xué)習(xí)操作系統(tǒng)課程后會(huì)有一個(gè)感慨: 操作系統(tǒng)理論就像一門哲學(xué),感覺學(xué)了很多,卻又什么也沒掌握; 操作系統(tǒng)實(shí)踐就像仰望高山,看到了其大其雄,但又無從攀登。 實(shí)踐方能出真知。沒有實(shí)踐的支撐,操作系統(tǒng)的教學(xué)就是空中樓閣。在過去的十多年中,編者曾經(jīng)嘗試了多種實(shí)踐教學(xué)方法來提升教學(xué)效果,但結(jié)果都不太令人滿意,原因主要有兩個(gè): 要么太簡單,無法真正揭示操作系統(tǒng)的內(nèi)涵; 要么難度太高,很多同學(xué)難以完成。在嘗試的過程中,編者發(fā)現(xiàn)了一個(gè)現(xiàn)象: 目前操作系統(tǒng)的教材非常多,關(guān)于Windows、Linux等實(shí)際操作系統(tǒng)內(nèi)核分析與編程的書籍也非常多,但與操作系統(tǒng)課程內(nèi)容緊密結(jié)合、適于實(shí)踐教學(xué)的書卻很少。因此我們萌生了一個(gè)想法,能不能編寫一本以實(shí)際操作系統(tǒng)為素材、以操作系統(tǒng)授課內(nèi)容為主線、以驗(yàn)證實(shí)驗(yàn)為主要手段的實(shí)踐教學(xué)用書,來幫助學(xué)生理解操作系統(tǒng)抽象的概念和原理呢?于是編寫了本書。 1. 本書內(nèi)容 本書可分為兩部分: 第一部分是Linux操作和應(yīng)用編程; 第二部分是Linux內(nèi)核編程。 (1) 第一部分為第1~10章,主要是為學(xué)習(xí)過C語言、但未接觸過Linux編程的讀者提供一個(gè)快速上手的途徑。Linux應(yīng)用,包括操作與編程,不光在實(shí)踐中有廣泛應(yīng)用,而且對(duì)于理解Linux內(nèi)核也有重要幫助。 第1、2章主要介紹Linux的基本操作和常用的Shell命令。 第3~7章是與Linux應(yīng)用編程相關(guān)的內(nèi)容,包含Linux平臺(tái)上的C語言開發(fā)環(huán)境、Makefile、系統(tǒng)時(shí)間、多進(jìn)程程序開發(fā)、進(jìn)程通信等。 第8、9章介紹目前Linux上流行的Qt框架和MySQL數(shù)據(jù)庫。 第10章綜合前面各章知識(shí),設(shè)計(jì)了一個(gè)Linux綜合實(shí)訓(xùn)案例,并給出了相應(yīng)的實(shí)訓(xùn)題目。 (2) 第二部分為第11~19章,基本上是按操作系統(tǒng)課程的內(nèi)容結(jié)構(gòu)進(jìn)行編排的,目的是配合操作系統(tǒng)理論教學(xué),使讀者對(duì)操作系統(tǒng)課程中的重要概念、理論和方法有一個(gè)直觀、具體、生動(dòng)的認(rèn)識(shí)。 第11章是Linux內(nèi)核的配置與構(gòu)建,第12章介紹Linux內(nèi)核模塊編程基本流程。 第13~16章對(duì)應(yīng)進(jìn)程管理,包括Linux進(jìn)程控制塊、多線(進(jìn))程、同步機(jī)制、進(jìn)程間通信等。 第17章對(duì)應(yīng)內(nèi)存管理,包括Linux物理內(nèi)存、段頁式尋址和虛擬地址空間管理等。 第18章對(duì)應(yīng)設(shè)備管理,包括Linux設(shè)備文件、驅(qū)動(dòng)程序等。 第19章對(duì)應(yīng)文件系統(tǒng),包括Linux虛擬文件系統(tǒng)、文件系統(tǒng)的加載等。 另外,與本書配套的電子資源中還給出了Ubuntu系統(tǒng)的安裝方法、Linux內(nèi)核常用的系統(tǒng)調(diào)用以及Shell編程等內(nèi)容。 本書各章節(jié)均有數(shù)量不等的配套實(shí)驗(yàn),相應(yīng)代碼均在本書的配套素材中。由于實(shí)驗(yàn)較多,讀者可以根據(jù)具體情況來組合使用; 各章節(jié)包含的實(shí)驗(yàn)請讀者參考本書實(shí)驗(yàn)?zāi)夸洝?br />2. 本書使用建議 讀者在使用本書時(shí),可以根據(jù)具體情況來進(jìn)行組合安排。 第一部分內(nèi)容可以作為Linux應(yīng)用與編程課程的相關(guān)教材和實(shí)驗(yàn)用書。其中,第2章可以用于Linux基本應(yīng)用實(shí)驗(yàn),第3~9章可以作為Linux應(yīng)用開發(fā)實(shí)驗(yàn),其中的第3、4章是基礎(chǔ),不可跳過。另外,第10章給出了一個(gè)可以用于綜合實(shí)訓(xùn)的基本框架,并且在10.5節(jié)給出了部分實(shí)訓(xùn)題目。 第二部分內(nèi)容可以作為操作系統(tǒng)課程的配套實(shí)驗(yàn)用書。如果讀者有C語言編程經(jīng)驗(yàn),但沒有Linux編程經(jīng)驗(yàn),那么可以選學(xué)第一部分的基礎(chǔ)內(nèi)容,然后把重點(diǎn)放在第二部分; 如果讀者有較多Linux應(yīng)用編程經(jīng)驗(yàn),可以直接從第二部分開始。第二部分各章具有較強(qiáng)的獨(dú)立性,但第12、13章是后續(xù)各章的基礎(chǔ),請不要跳過。 本書內(nèi)容以驗(yàn)證性實(shí)驗(yàn)為主,課后練習(xí)則是以驗(yàn)證實(shí)驗(yàn)為基礎(chǔ)的設(shè)計(jì)實(shí)驗(yàn),要求讀者自己完成。雖然是以驗(yàn)證性實(shí)驗(yàn)為主,但其涉及的內(nèi)容遠(yuǎn)不止實(shí)驗(yàn)本身,例如在第17章的實(shí)驗(yàn)3中,要把一個(gè)變量的物理地址計(jì)算出來,就需要把分頁機(jī)制完整地梳理一遍。強(qiáng)烈建議讀者閱讀本書時(shí)一定要運(yùn)行、分析電子資源中的源代碼,結(jié)合操作系統(tǒng)教材理解其原理和機(jī)制。電子資源的網(wǎng)址為清華大學(xué)出版社(www.tup.tsinghua.edu.cn)本書頁面或http://os.sdust.edu.cn/linux/。 另外需要強(qiáng)調(diào)的是,本書不是系統(tǒng)講解Linux的書籍,而主要是通過實(shí)驗(yàn)來幫助讀者更好地掌握操作系統(tǒng)的原理、方法和概念。因此,考慮到教學(xué)的方便性和適用性,有些內(nèi)容并未包含在本書中。例如,本書并未給出系統(tǒng)調(diào)用的實(shí)驗(yàn),原因就在于添加一個(gè)新的系統(tǒng)調(diào)用必須重新編譯內(nèi)核,而這個(gè)過程短則半個(gè)小時(shí),長則1個(gè)小時(shí)以上,不適于實(shí)踐教學(xué); 類似的原因?qū)е逻M(jìn)程調(diào)度實(shí)驗(yàn)也未出現(xiàn)在本書中。當(dāng)然讀者可以把本書作為一個(gè)臺(tái)階,進(jìn)一步深入學(xué)習(xí)Linux,到那時(shí)你會(huì)發(fā)現(xiàn)Linux原來并非那么讓人望而生畏。 本書分工如下: 黃玲編寫第1~3章,李哲編寫第4~6章、11章和19章,李旭健編寫第7~10章,房勝編寫第12~18章。全書由房勝和李旭健統(tǒng)稿。本書編寫和出版過程中,得到了清華大學(xué)出版社工作人員的大力支持。此外,本書參考了很多文獻(xiàn),既有操作系統(tǒng)的教材,也有Linux內(nèi)核的書籍和網(wǎng)上資料,感謝這些作者。另外,張征亮、孫楠楠、高秀洋、張叢靜、李秀麗參與了本書的編寫、審校和代碼測試工作,在此一并表示感謝。 由于本書涉及內(nèi)容廣泛,且Linux內(nèi)核日漸龐大,不斷更新、演變,限于編者的水平,書中難免有不當(dāng)甚至謬誤之處,請各位讀者不吝指正,您的支持是我們進(jìn)一步努力的源動(dòng)力。 作者2015年6月
第1章Linux概述
1.1Linux的發(fā)展 1.1.1Linux概念 1.1.2Linux和UNIX的淵源 1.1.3與Linux相關(guān)的協(xié)議和標(biāo)準(zhǔn) 1.2Linux的內(nèi)核架構(gòu) 1.2.1Linux操作系統(tǒng)結(jié)構(gòu) 1.2.2Linux內(nèi)核體系結(jié)構(gòu) 1.2.3內(nèi)核版本和獲取 1.2.4內(nèi)核源代碼目錄結(jié)構(gòu) 1.3Linux的主要版本 1.3.1Linux版本介紹 1.3.2Ubuntu的首次使用 1.4本章小結(jié) 習(xí)題 第2章Linux基本命令與應(yīng)用 2.1認(rèn)識(shí)命令行 2.1.1Terminal 2.1.2命令用法初體驗(yàn) 2.1.3其他虛擬終端 2.1.4相關(guān)概念 2.2使用文本文件 2.2.1創(chuàng)建文本文件 2.2.2查看文本文件內(nèi)容 2.2.3查找及統(tǒng)計(jì) 2.3目錄和文件 2.3.1目錄及文件的基本操作 2.3.2文件權(quán)限 2.4管理用戶和用戶組 2.4.1相關(guān)配置文件 2.4.2相關(guān)操作 2.5其他常見命令 2.5.1掛載和卸載設(shè)備 2.5.2安裝和卸載軟件 2.6本章小結(jié) 習(xí)題 練習(xí) 第3章從Hello Linux程序開始 3.1Hello Linux 3.1.1hello_linux的誕生 3.1.2Linux平臺(tái)C語言編碼風(fēng)格 3.1.3開發(fā)工具 3.2gcc編譯 3.2.1單文件的編譯 3.2.2多個(gè)源文件的編譯 3.2.3其他介紹 3.3gdb調(diào)試 3.3.1gdb介紹 3.3.2使用gdb調(diào)試C語言文件 3.4本章小結(jié) 習(xí)題 練習(xí) 第4章利用Makefile管理一個(gè)工程 4.1第一個(gè)Makefile 4.1.1利用make編譯一個(gè)程序文件 4.1.2利用make編譯多個(gè)程序文件 4.2Makefile的基本概念與規(guī)則 4.2.1Makefile的基本概念 4.2.2規(guī)則 4.3本章小結(jié) 習(xí)題 練習(xí) 第5章Linux系統(tǒng)中的時(shí)間 5.1時(shí)間表示 5.1.1Linux系統(tǒng)時(shí)間 5.1.2Linux應(yīng)用程序時(shí)間函數(shù) 5.2利用程序顯示系統(tǒng)時(shí)間 5.2.1常用時(shí)間函數(shù) 5.2.2高級(jí)時(shí)間函數(shù) 5.3時(shí)間的測量與計(jì)時(shí) 5.3.1時(shí)間測量 5.3.2計(jì)時(shí)器 5.4本章小結(jié) 習(xí)題 練習(xí) 第6章多進(jìn)程程序開發(fā) 6.1進(jìn)程概念 6.2進(jìn)程的創(chuàng)建 6.3連續(xù)調(diào)用多次fork函數(shù) 6.4啟動(dòng)外部程序 6.5本章小結(jié) 習(xí)題 練習(xí) 第7章進(jìn)程間通信 7.1概述 7.2管道通信 7.2.1管道概述 7.2.2無名管道 7.2.3命名管道 7.3套接字通信 7.3.1用文件套接字實(shí)現(xiàn)本地進(jìn)程通信 7.3.2用網(wǎng)絡(luò)套接字實(shí)現(xiàn)網(wǎng)絡(luò)進(jìn)程通信 7.4本章小結(jié) 習(xí)題 練習(xí) 第8章利用Qt開發(fā)GUI應(yīng)用程序 8.1Qt及Qt Creator 8.1.1Qt簡介 8.1.2Qt Creator 8.1.3Qt的安裝和啟動(dòng) 8.1.4Qt Creator的界面組成 8.2用Qt Creator完成一個(gè)GUI項(xiàng)目 8.2.1創(chuàng)建Qt GUI項(xiàng)目 8.2.2程序的運(yùn)行 8.3信號(hào)和槽 8.3.1信號(hào)和槽的概念 8.3.2用信號(hào)槽機(jī)制響應(yīng)GUI事件 8.3.3關(guān)于信號(hào)槽的進(jìn)一步說明 8.4Qt設(shè)計(jì)師 8.4.1簡介 8.4.2Qt設(shè)計(jì)師的功能 8.5本章小結(jié) 習(xí)題 練習(xí) 第9章MySQL數(shù)據(jù)庫 9.1安裝MySQL 9.2MySQL的基本用法 9.2.1MySQL管理 9.2.2數(shù)據(jù)庫操作 9.2.3數(shù)據(jù)類型 9.2.4表操作 9.2.5創(chuàng)建一個(gè)數(shù)據(jù)庫 9.3使用C語言訪問MySQL數(shù)據(jù)庫 9.3.1連接數(shù)據(jù)庫 9.3.2執(zhí)行SQL語句 9.3.3處理數(shù)據(jù) 9.4本章小結(jié) 習(xí)題 練習(xí) 第10章Linux綜合應(yīng)用 10.1概述 10.1.1系統(tǒng)需求 10.1.2本章內(nèi)容結(jié)構(gòu) 10.2原型設(shè)計(jì) 10.2.1添加資源文件 10.2.2界面設(shè)計(jì) 10.2.3界面布局 10.2.4添加動(dòng)作 10.3系統(tǒng)設(shè)計(jì) 10.3.1系統(tǒng)架構(gòu) 10.3.2客戶端功能設(shè)計(jì) 10.3.3服務(wù)器功能設(shè)計(jì) 10.4系統(tǒng)實(shí)現(xiàn) 10.4.1數(shù)據(jù)結(jié)構(gòu)(通信協(xié)議) 10.4.2客戶端實(shí)現(xiàn) 10.4.3服務(wù)器端實(shí)現(xiàn) 10.4.4幾點(diǎn)說明 10.5Linux應(yīng)用綜合實(shí)訓(xùn) 10.6本章小結(jié) 第11章構(gòu)建Linux內(nèi)核系統(tǒng) 11.1概述 11.2內(nèi)核初始化 11.3內(nèi)核配置 11.4內(nèi)核構(gòu)建 11.5本章小結(jié) 練習(xí) 第12章添加最簡單的Linux內(nèi)核模塊 12.1用戶態(tài)與內(nèi)核態(tài) 12.1.1C/C++應(yīng)用程序的運(yùn)行機(jī)制 12.1.2Linux內(nèi)核模塊 12.2添加最簡單的Linux內(nèi)核模塊 12.2.1LKM代碼框架 12.2.2LKM編譯 12.2.3kello.c的編譯、添加和刪除 12.2.4LKM與C應(yīng)用程序的差異 12.3printk和某些常見宏 12.3.1實(shí)時(shí)顯示內(nèi)核模塊運(yùn)行信息 12.3.2顯示位置信息 12.4本章小結(jié) 練習(xí) 第13章基于proc的Linux進(jìn)程控制塊信息讀取 13.1proc偽文件系統(tǒng) 13.1.1proc中的文件 13.1.2proc中文件的內(nèi)容 13.1.3proc偽文件系統(tǒng)介紹 13.2Linux中的進(jìn)程控制塊 13.2.1Linux進(jìn)程控制塊task_struct 13.2.2進(jìn)程重要信息解讀 13.3通過proc讀取Linux進(jìn)程信息 13.3.1創(chuàng)建proc文件 13.3.2基于seq_file機(jī)制的proc文件操作 13.3.3task_struct信息讀取過程 13.3.4tasklist內(nèi)核模塊編譯和添加 13.3.5tasklist內(nèi)核模塊工作流程 13.4task_struct重要信息 13.4.1Linux進(jìn)程調(diào)度策略 13.4.2進(jìn)程優(yōu)先級(jí) 13.4.3進(jìn)程控制塊中的其他信息 13.5向proc文件寫入數(shù)據(jù) 13.5.1用戶空間和內(nèi)核空間之間傳遞數(shù)據(jù) 13.5.2內(nèi)核空間內(nèi)存分配 13.5.3proc文件的寫操作函數(shù) 13.6本章小結(jié) 習(xí)題 練習(xí) 第14章POSIX多任務(wù)及同步機(jī)制 14.1fork創(chuàng)建進(jìn)程 14.1.1fork創(chuàng)建進(jìn)程的流程 14.1.2fork/exec創(chuàng)建進(jìn)程的流程 14.1.3fork進(jìn)階問題 14.2POSIX線程機(jī)制 14.2.1POSIX概述 14.2.2POSIX線程創(chuàng)建 14.3POSIX多線程及同步機(jī)制 14.3.1多個(gè)線程的資源競爭訪問 14.3.2POSIX同步機(jī)制 14.4條件變量與生產(chǎn)者消費(fèi)者問題 14.4.1同步與互斥 14.4.2POSIX條件變量 14.4.3條件變量在生產(chǎn)者消費(fèi)者問題中的應(yīng)用 14.5本章小結(jié) 習(xí)題 練習(xí) 第15章用戶態(tài)和內(nèi)核態(tài)信號(hào)量 15.1信號(hào)量與同步問題 15.1.1信號(hào)量概述 15.1.2同步問題 15.2POSIX信號(hào)量 15.2.1無名信號(hào)量 15.2.2有名信號(hào)量 15.2.3POSIX信號(hào)量用于線程同步問題 15.2.4POSIX信號(hào)量用于進(jìn)程間同步 15.2.5Linux中的信號(hào)量技術(shù) 15.3內(nèi)核信號(hào)量和內(nèi)核線程 15.3.1Linux內(nèi)核信號(hào)量 15.3.2Linux內(nèi)核線程 15.3.3內(nèi)核信號(hào)量和線程的例子 15.3.4Linux內(nèi)核同步技術(shù) 15.4本章小結(jié) 習(xí)題 練習(xí) 第16章基于共享內(nèi)存的進(jìn)程間通信 16.1共享內(nèi)存 16.2共享內(nèi)存映射文件 16.2.1單個(gè)進(jìn)程的內(nèi)存映射文件 16.2.2多個(gè)進(jìn)程間的內(nèi)存映射文件的同步 16.3POSIX共享內(nèi)存對(duì)象 16.4本章小結(jié) 習(xí)題 練習(xí) 第17章Linux內(nèi)存管理 17.1Linux物理內(nèi)存管理機(jī)制 17.1.1內(nèi)存結(jié)點(diǎn)node 17.1.2內(nèi)存結(jié)點(diǎn)zone 17.1.3物理頁框page 17.2IA32的尋址機(jī)制 17.2.1IA32的段機(jī)制 17.2.2IA32的頁面映射機(jī)制 17.2.3IA32中的控制寄存器以及PAE、PSE 17.3IA32結(jié)構(gòu)上的Linux地址映射機(jī)制 17.3.1Linux中段地址映射機(jī)制 17.3.2IA32 Linux段地址映射實(shí)驗(yàn) 17.3.3IA32 Linux頁地址映射 17.3.4IA32 Linux頁地址映射實(shí)驗(yàn) 17.4Linux進(jìn)程地址空間 17.4.1Linux中進(jìn)程的虛擬地址空間 17.4.2獲取進(jìn)程虛擬地址空間信息 17.4.3Linux中進(jìn)程的虛擬存儲(chǔ)區(qū)域vma 17.4.4獲取進(jìn)程的虛擬內(nèi)存區(qū)域信息 17.4.5Linux中進(jìn)程、內(nèi)存和文件的關(guān)系 17.5本章小結(jié) 習(xí)題 練習(xí) 第18章Linux設(shè)備驅(qū)動(dòng)程序 18.1概述 18.1.1設(shè)備管理基本概念 18.1.2Linux字符設(shè)備管理 18.2字符設(shè)備CMOS驅(qū)動(dòng)程序 18.2.1CMOS RTC信息 18.2.2獲取CMOS RTC信息的驅(qū)動(dòng)程序內(nèi)核模塊 18.2.3CMOS RTC驅(qū)動(dòng)程序內(nèi)核模塊測試 18.3基于內(nèi)存映射的雜項(xiàng)設(shè)備驅(qū)動(dòng)程序 18.3.1Linux中的雜項(xiàng)設(shè)備 18.3.2設(shè)備驅(qū)動(dòng)中的內(nèi)存映射 18.3.3基于內(nèi)存映射的雜項(xiàng)設(shè)備驅(qū)動(dòng)程序 18.3.4測試 18.4本章小結(jié) 習(xí)題 練習(xí) 第19章Linux虛擬文件系統(tǒng) 19.1概述 19.1.1VFS在Linux中的作用 19.1.2VFS支持的文件系統(tǒng)類型 19.1.3VFS的基本數(shù)據(jù)結(jié)構(gòu) 19.2VFS對(duì)象的操作 19.2.1注冊文件系統(tǒng) 19.2.2文件系統(tǒng)裝載 19.2.3與進(jìn)程相關(guān)的文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu) 19.2.4從當(dāng)前進(jìn)程訪問Linux內(nèi)核VFS文件系統(tǒng) 19.3proc文件系統(tǒng) 19.3.1主要數(shù)據(jù)結(jié)構(gòu) 19.3.2proc文件系統(tǒng)的操作 19.4本章小結(jié) 習(xí)題 練習(xí) 參考文獻(xiàn) 實(shí)驗(yàn)?zāi)夸?br /> 第2章Linux基本命令與應(yīng)用 實(shí)驗(yàn)1: 認(rèn)識(shí)命令行的相關(guān)實(shí)驗(yàn) 實(shí)驗(yàn)2: 創(chuàng)建文本文件 實(shí)驗(yàn)3: 查看文本文件 實(shí)驗(yàn)4: 文本文件查找及統(tǒng)計(jì) 實(shí)驗(yàn)5: 目錄及文件基本操作 實(shí)驗(yàn)6: 文件權(quán)限 實(shí)驗(yàn)7: 管理用戶和用戶組 實(shí)驗(yàn)8: 其他常見操作 第3章從Hello Linux程序開始 實(shí)驗(yàn)1: 簡單程序開發(fā) 實(shí)驗(yàn)2: 單步編譯和多步編譯 實(shí)驗(yàn)3: 瀏覽gdb內(nèi)置命令 實(shí)驗(yàn)4: 利用gdb調(diào)試程序 第4章利用Makefile管理一個(gè)工程 實(shí)驗(yàn)1: Makefile與命令行編譯的比較 實(shí)驗(yàn)2: 編寫Makefile 第5章Linux系統(tǒng)中的時(shí)間 實(shí)驗(yàn)1: 編程顯示系統(tǒng)時(shí)間 實(shí)驗(yàn)2: Linux中的時(shí)間測量 實(shí)驗(yàn)3: Linux中的計(jì)時(shí)器 第6章多進(jìn)程程序開發(fā) 實(shí)驗(yàn)1: 利用fork創(chuàng)建進(jìn)程 實(shí)驗(yàn)2: 連續(xù)調(diào)用多次fork函數(shù) 實(shí)驗(yàn)3: 啟動(dòng)外部程序 第7章進(jìn)程間通信 實(shí)驗(yàn)1: 管道通信 實(shí)驗(yàn)2: 文件套接字通信 實(shí)驗(yàn)3: 網(wǎng)絡(luò)套接字通信 第8章利用Qt開發(fā)GUI應(yīng)用程序 實(shí)驗(yàn)1: Qt的安裝與啟動(dòng) 實(shí)驗(yàn)2: 創(chuàng)建Qt GUI項(xiàng)目 實(shí)驗(yàn)3: 信號(hào)槽機(jī)制 第9章MySQL數(shù)據(jù)庫 實(shí)驗(yàn)1: MySQL數(shù)據(jù)庫操作 實(shí)驗(yàn)2: MySQL表操作 實(shí)驗(yàn)3: 創(chuàng)建一個(gè)MySQL數(shù)據(jù)庫 實(shí)驗(yàn)4: 用C語言訪問MySQL數(shù)據(jù)庫 第12章添加最簡單的Linux內(nèi)核模塊 實(shí)驗(yàn)1: 添加最簡單的內(nèi)核模塊kello 實(shí)驗(yàn)2: 內(nèi)核模塊輸出信息顯示 第13章基于proc的Linux進(jìn)程控制塊信息讀取 實(shí)驗(yàn)1: 測試proc文件系統(tǒng)功能 實(shí)驗(yàn)2: 創(chuàng)建顯示系統(tǒng)進(jìn)程信息的proc模塊 實(shí)驗(yàn)3: 顯示Linux進(jìn)程控制塊中更多的信息 第14章POSIX多任務(wù)及同步機(jī)制 實(shí)驗(yàn)1: Linux進(jìn)程創(chuàng)建 實(shí)驗(yàn)2: POSIX線程創(chuàng)建 實(shí)驗(yàn)3: POSIX線程互斥和參數(shù)傳遞 實(shí)驗(yàn)4: 使用POSIX條件變量實(shí)現(xiàn)線程同步 第15章用戶態(tài)和內(nèi)核態(tài)信號(hào)量 實(shí)驗(yàn)1: 使用POSIX信號(hào)量實(shí)現(xiàn)線程同步 實(shí)驗(yàn)2: 使用POSIX信號(hào)量實(shí)現(xiàn)進(jìn)程同步 實(shí)驗(yàn)3: 創(chuàng)建Linux內(nèi)核線程并使用內(nèi)核信號(hào)量實(shí)現(xiàn)同步 第16章基于共享內(nèi)存的進(jìn)程間通信 實(shí)驗(yàn)1: 使用內(nèi)存映射文件實(shí)現(xiàn)進(jìn)程間通信 實(shí)驗(yàn)2: 使用共享內(nèi)存對(duì)象實(shí)現(xiàn)進(jìn)程同步 第17章Linux內(nèi)存管理 實(shí)驗(yàn)1: 獲取IA32段寄存器中的描述符 實(shí)驗(yàn)2: 獲取IA32中的全局段表信息 實(shí)驗(yàn)3: 獲取C程序中一個(gè)邏輯地址對(duì)應(yīng)的物理地址 實(shí)驗(yàn)4: 顯示進(jìn)程的虛擬內(nèi)存地址空間分布信息 實(shí)驗(yàn)5: 獲取一個(gè)進(jìn)程的虛擬存儲(chǔ)區(qū)域信息 第18章Linux設(shè)備驅(qū)動(dòng)程序 實(shí)驗(yàn)1: 實(shí)現(xiàn)讀取CMOS實(shí)時(shí)時(shí)鐘信息的驅(qū)動(dòng)程序 實(shí)驗(yàn)2: 實(shí)現(xiàn)一個(gè)基于內(nèi)存映射的設(shè)備驅(qū)動(dòng)程序 第19章Linux虛擬文件系統(tǒng) 實(shí)驗(yàn)1: 訪問Linux內(nèi)核虛擬文件系統(tǒng) 實(shí)驗(yàn)2: 加載newproc文件系統(tǒng)
你還可能感興趣
我要評(píng)論
|