第1章 概述
1.1 什么是Linux
1.2 Linux內(nèi)核的特征
1.3 Linux內(nèi)核源代碼
1.3.1 內(nèi)核源代碼分布結(jié)構(gòu)
1.3.2 閱讀內(nèi)核源代碼導(dǎo)引
1.4 Linux內(nèi)核的抽象結(jié)構(gòu)
1.4.1 系統(tǒng)數(shù)據(jù)結(jié)構(gòu)
1.4.2 Linux的具體結(jié)構(gòu)
1.5 進(jìn)程管理子系統(tǒng)
1.5.1 子系統(tǒng)描述
1.5.2 子系統(tǒng)功能
1.5.3 子系統(tǒng)接口
1.5.4 子系統(tǒng)數(shù)據(jù)結(jié)構(gòu)
1.6 內(nèi)存管理子系統(tǒng)
1.6.1 子系統(tǒng)描述
1.6.2 子系統(tǒng)功能
1.6.3 子系統(tǒng)接口
1.6.4 子系統(tǒng)數(shù)據(jù)結(jié)構(gòu)
1.6.5 子系統(tǒng)組成模塊
1.7 虛擬文件子系統(tǒng)
1.7.1 子系統(tǒng)描述
1.7.2 子系統(tǒng)功能
1.7.3 子系統(tǒng)接口
1.7.4 數(shù)據(jù)結(jié)構(gòu)
1.8 進(jìn)程間通信(IPC)子系統(tǒng)
1.8.1 子系統(tǒng)描述
1.8.2 子系統(tǒng)功能
1.8.3 子系統(tǒng)接口
1.8.4 子系統(tǒng)數(shù)據(jù)結(jié)構(gòu)
1.9 網(wǎng)絡(luò)接口子系統(tǒng)
1.9.1 Linux的網(wǎng)絡(luò)層
1.9.2 子系統(tǒng)接口
1.9.3 子系統(tǒng)描述
1.9.4 子系統(tǒng)數(shù)據(jù)結(jié)構(gòu)
習(xí)題
第2章 Linux進(jìn)程及其管理
2.1 進(jìn)程的概念
2.1.1 為何要引入進(jìn)程
2.1.2 進(jìn)程及其特征
2.1.3 進(jìn)程的狀態(tài)
2.1.4 進(jìn)程實(shí)體
2.1.5 進(jìn)程調(diào)度
2.1.6 進(jìn)程通信
2.2 Linux中的進(jìn)程
2.3 Linux的進(jìn)程控制塊 task_struct
2.4 Linux中的進(jìn)程狀態(tài)及其轉(zhuǎn)換
2.5 Linux中的進(jìn)程調(diào)度
2.6 Linux的時鐘
2.6.1 Linux中的時間控制
2.6.2 計時和定時器
2.7 Linux內(nèi)核機(jī)制
2.7.1 底半處理
2.7.2 任務(wù)隊列(Task Queue)
2.8 進(jìn)程的創(chuàng)建與撤銷
2.8.1 進(jìn)程的建立
2.8.2 進(jìn)程的撤銷
2.9 程序的裝入和執(zhí)行
習(xí)題
第3章 進(jìn)程通信
3.1 管道(pipe)通信方式
3.2 信號
3.3 UNIX System V IPC 機(jī)制
3.3.1 消息隊列
3.3.2 信號量
3.3.3 共享內(nèi)存
習(xí)題
第4章 Linux存儲管理
4.1 存儲管理的一般常識
4.2 請求頁式存儲管理的實(shí)現(xiàn)原理
4.3 80386內(nèi)存管理機(jī)構(gòu)和功能
4.3.1 80386的分段機(jī)制在Linux中的應(yīng)用
4.3.2 80386的分頁機(jī)制在Linux中的應(yīng)用
4.4 控制轉(zhuǎn)移和任務(wù)切換
4.4.1 控制轉(zhuǎn)移
4.4.2 任務(wù)切換
4.5 Linux虛存管理
4.5.1 Linux虛存管理的實(shí)現(xiàn)
4.5.2 Linux的內(nèi)核空間和用戶空間
4.5.3 Linux虛存段的組織和管理
4.5.4 Linux虛存頁的組織和管理
4.6 Linux虛存的保護(hù)
4.6.1 多任務(wù)及保護(hù)
4.6.2 同一任務(wù)內(nèi)的保護(hù)
4.7 Linux物理內(nèi)存的管理
4.7.1 空閑塊管理
4.7.2 內(nèi)核態(tài)內(nèi)存的申請與釋放
4.7.3 用戶態(tài)內(nèi)存的申請與釋放
4.7.4 頁交換進(jìn)程和頁面換出
4.8 緩沖機(jī)制
習(xí)題
第5章 Linux文件系統(tǒng)
5.1 EXT2(第二擴(kuò)展文件系統(tǒng))
5.1.1 EXT2的磁盤布局
5.1.2 EXT2的超級塊
5.1.3 EXT2的索引節(jié)點(diǎn)inode
5.1.4 EXT2的組描述符
5.1.5 位示圖
5.1.6 文件的安全
5.2 虛擬文件系統(tǒng)
5.3 VFS中的主要數(shù)據(jù)結(jié)構(gòu)
5.3.1 VFS的超級塊
5.3.2 VFS的索引節(jié)點(diǎn)
5.3.3 其他重要的數(shù)據(jù)結(jié)構(gòu)
5.4 文件系統(tǒng)的注冊. 安裝與卸載
5.4.1 文件系統(tǒng)的注冊
5.4.2 文件系統(tǒng)的安裝
5.4.3 文件系統(tǒng)的卸載
5.5 文件系統(tǒng)的系統(tǒng)調(diào)用
5.5.1 open系統(tǒng)調(diào)用
5.5.2 read系統(tǒng)調(diào)用
5.5.3 fcntl系統(tǒng)調(diào)用
習(xí)題
第6章 Linux的設(shè)備管理
6.1 設(shè)備驅(qū)動程序
6.1.1 設(shè)備驅(qū)動程序的框架
6.1.2 Linux驅(qū)動程序的幾個通用函數(shù)
6.1.3 塊設(shè)備驅(qū)動程序
6.2 字符設(shè)備驅(qū)動程序
6.2.1 字符設(shè)備的注冊
6.2.2 工作內(nèi)存
6.2.3 基本入口
6.2.4 一個字符設(shè)備驅(qū)動程序的實(shí)例
6.3 驅(qū)動程序的編譯與裝載
6.4 塊高速緩存(buffer-cache)
6.5 Linux中的中斷
6.5.1 Linux對中斷的管理
6.5.2 Linux的中斷處理
習(xí)題
第7章 Linux的使用基礎(chǔ)
7.1 開始使用
7.1.1 登錄
7.1.2 退出系統(tǒng)
7.1.3 關(guān)機(jī)
7.1.4 虛擬終端
7.1.5 獲取幫助
7.2 文件操作
7.2.1 目錄與文件的基本操作
7.2.2 常用的系統(tǒng)操作命令
7.3 vi編輯
7.3.1 編輯方式
7.3.2 插入方式
7.3.3 正文替換
7.3.4 命令方式
7.3.5 退出命令
7.3.6 文件的使用
7.3.7 行號
7.3.8 字符串搜索
7.3.9 規(guī)則表達(dá)式
7.3.10 正文替換
7.3.11 刪除正文
7.3.12 編輯程序的選項
7.3.13 shell切換
7.4 shell
7.4.1 了解Linux的shell
7.4.2 shell命令的語法分析
7.4.3 shell編程
7.4.4 shell程序舉例
7.5 X Windows
7.5.1 X Windows 的安裝與配置
7.5.2 X Windows的使用
習(xí)題
第8章 Linux的安裝
8.1 Linux的版本介紹
8.1.1 SLS(Softland Software)Linux
8.1.2 Slackware Linux
8.1.3 RedHat Linux
8.1.4 Debian Linux
8.1.5 Caldera Linux
8.2 Linux的獲取
8.3 硬件支持
8.4 RedHat Linux安裝指南
8.4.1 準(zhǔn)備工作
8.4.2 啟動機(jī)器
8.4.3 安裝系統(tǒng)
8.5 常見問題解答
習(xí)題
第9章 系統(tǒng)管理
9.1 Root 賬號與系統(tǒng)安全
9.2 引導(dǎo)系統(tǒng)
9.2.1 從軟盤引導(dǎo)
9.2.2 從硬盤引導(dǎo)
9.2.3 用Loadin 程序引導(dǎo)
9.3 系統(tǒng)初始化程序和文件
9.3.1 初始化信息
9.3.2 初始化程序和文件
9.4 關(guān)閉系統(tǒng)
9.5 用戶管理
9.5.1 用戶賬號的信息
9.5.2 創(chuàng)建賬號
9.5.3 修改賬號的屬性
9.5.4 組賬號的管理
9.6 管理文件系統(tǒng)
9.6.1 文件系統(tǒng)的基本概念和類型
9.6.2 創(chuàng)建文件系統(tǒng)
9.6.3 安裝文件系統(tǒng)
9.6.4 檢查. 維護(hù)文件系統(tǒng)
9.7 交換空間
9.8 系統(tǒng)升級
9.8.1 內(nèi)核的升級
9.8.2 庫的升級
9.8.3 GCC的升級
9.8.4 其他軟件的升級
習(xí)題
第10章 Linux與網(wǎng)絡(luò)
10.1 Linux網(wǎng)絡(luò)管理
10.1.1 TCP/IP歷史
10.1.2 TCP/IP通信基礎(chǔ)
10.1.3 TCP/IP網(wǎng)絡(luò)配置
10.1.4 配置Linux的域名服務(wù)
10.1.5 獲得Linux網(wǎng)絡(luò)軟件
10.2 建立Linux的普通站點(diǎn)
10.2.1 安裝遠(yuǎn)程目錄
10.2.2 設(shè)置網(wǎng)絡(luò)其他設(shè)備
10.2.3 創(chuàng)建賬戶
10.3 建立Internet站點(diǎn)
10.3.1 準(zhǔn)備工作
10.3.2 選擇接入方式
10.3.3 安裝E-mail軟件
10.3.4 安裝WWW服務(wù)
10.3.5 安裝FTP服務(wù)器軟件
10.4 網(wǎng)絡(luò)常用術(shù)語及協(xié)議
習(xí)題
第11章 實(shí)驗
11.1 安裝Linux系統(tǒng)
11.1.1 實(shí)驗?zāi)康?br />11.1.2 實(shí)驗內(nèi)容
11.1.3 思考題
11.2 用戶界面實(shí)驗
11.2.1 實(shí)驗?zāi)康?br />11.2.2 實(shí)驗內(nèi)容
11.2.3 思考題
11.3 進(jìn)程管理
11.3.1 實(shí)驗?zāi)康?br />11.3.2 實(shí)驗預(yù)備內(nèi)容
11.3.3 實(shí)驗內(nèi)容
11.3.4 思考題
11.3.5 實(shí)驗指導(dǎo)
11.4 進(jìn)程間通信
11.4.1 實(shí)驗?zāi)康?br />11.4.2 實(shí)驗預(yù)備內(nèi)容
11.4.3 實(shí)驗內(nèi)容
11.4.4 實(shí)驗指導(dǎo)
11.5 內(nèi)存管理
11.5.1 實(shí)驗?zāi)康?br />11.5.2 實(shí)驗內(nèi)容
11.5.3 思考題
11.6 文件系統(tǒng)設(shè)計
11.6.1 設(shè)計目的
11.6.2 設(shè)計內(nèi)容
11.6.3 設(shè)計提示
主要參考文獻(xiàn)
序言/前言
序
言
這套教材是面向21世紀(jì)計算機(jī)學(xué)科系列教材. 為什么要組織這套教材 根據(jù)什么編寫這
套教材 這些都是在這篇序言中要回答的問題.
計算機(jī)學(xué)科是一個飛速發(fā)展的學(xué)科, 尤其是近十年來, 計算機(jī)向高度集成化. 網(wǎng)絡(luò)化和多媒體化發(fā)展的速度一日千里. 但是, 從另一個方面來看, 目前高等學(xué)校的計算機(jī)教育, 特別是教材建設(shè), 遠(yuǎn)遠(yuǎn)落后于現(xiàn)實(shí)的需要. 現(xiàn)在的教材主要是根據(jù)《教學(xué)計劃1993》的要求組織編寫的. 這個教學(xué)計劃, 在制定過程中主要參照了美國IEEE和ACM的《教學(xué)計劃1991》.
10年來, 計算機(jī)學(xué)科已有了長足發(fā)展, 這就要求高等學(xué)校計算機(jī)教育必須跟上形勢發(fā)展的需要, 在課程設(shè)置和教材建設(shè)上做出相應(yīng)調(diào)整, 以適應(yīng)面向21世紀(jì)計算機(jī)教育的要求. 這是組織這套教材的初衷.
為了組織好這套教材, 全國高等學(xué)校計算機(jī)教育研究會課程與教材建設(shè)委員會在天津召開了“全國高等學(xué)校計算機(jī)學(xué)科課程與教材建設(shè)研討會”, 在北京召開了“教材編寫大綱研討會”. 在這兩次會議上, 代表們深入地研討了全國高校計算機(jī)專業(yè)教學(xué)指導(dǎo)委員會和中國計算機(jī)學(xué)會教育委員會制定的《計算機(jī)學(xué)科教學(xué)計劃2000》以及美國IEEE和ACM的《計算機(jī)學(xué)科教學(xué)計劃2001》, 這是這套教材參照的主要依據(jù).
IEEE和ACM的《計算機(jī)學(xué)科教學(xué)計劃2001》是在總結(jié)了從《計算機(jī)學(xué)科教學(xué)計劃1991》到現(xiàn)在, 計算機(jī)學(xué)科十年來發(fā)展的主要成果的基礎(chǔ)上誕生的. 它認(rèn)為面向21世紀(jì)計算機(jī)學(xué)科應(yīng)包括14個主科目:算法與分析 AL . 體系結(jié)構(gòu) AR . 離散結(jié)構(gòu) DS . 計算科學(xué) CN . 圖形學(xué). 可視化. 多媒體 GR . 網(wǎng)絡(luò)計算 NC . 人機(jī)交互 HC . 信息管理 IM . 智能系統(tǒng) IS . 操作系統(tǒng) OS . 程序設(shè)計基礎(chǔ) PF . 程序設(shè)計語言 PL . 軟件工程 SE . 社會. 道德. 法律和專業(yè)問題 SP . 其中除CN和GR為非核心主科目外, 其他12項均為核心主科目.
將2001教學(xué)計劃與1991教學(xué)計劃比較可看出:
1 在1991年計劃中, 離散結(jié)構(gòu)只作為數(shù)學(xué)基礎(chǔ)提出, 而在2001計劃中, 則作為核心主科目提出, 顯然, 提高了它在計算機(jī)學(xué)科中的地位.
2 在1991計劃中, 未提及網(wǎng)絡(luò)計算, 而在2001計劃中, 則作為核心主科目提出, 以適應(yīng)網(wǎng)絡(luò)技術(shù)飛速發(fā)展的需求.
3 圖形學(xué). 可視化與多媒體也是為適應(yīng)發(fā)展要求新增加的內(nèi)容.
除此之外, 2001計劃在下述5個方面做調(diào)整:
將程序設(shè)計語言引論調(diào)整為程序設(shè)計基礎(chǔ), 將人-機(jī)通信調(diào)整為人機(jī)交互, 將人工智能與機(jī)器人學(xué)調(diào)整為智能系統(tǒng), 將數(shù)據(jù)庫與信息檢索調(diào)整為信息管理, 將數(shù)值與符號計算調(diào)整為計算科學(xué).
顯然, 這些變化使2001計劃更具有科學(xué)性, 也更好地適應(yīng)了學(xué)科發(fā)展的需要.
在組織這套教材的過程中, 充分考慮了這些變化和調(diào)整, 在軟件和硬件的課程體系. 界面劃分方面均做了相應(yīng)的調(diào)整, 使整套教材更具有科學(xué)性和實(shí)用性.
另外, 還要說明一點(diǎn), 教材建設(shè)既要滿足必修課的要求, 又要滿足限選課和任選課的要求. 因此, 教材應(yīng)按系列組織, 反映整個計算機(jī)學(xué)科的要求, 采用大拼盤結(jié)構(gòu), 以適應(yīng)各校不同的具體教學(xué)計劃, 使學(xué)??筛鶕?jù)自己的需求進(jìn)行選擇.
這套教材包括:《微機(jī)應(yīng)用基礎(chǔ)》. 《離散數(shù)學(xué)》. 《電路與電子技術(shù)》. 《電路與電子技術(shù)習(xí)題與實(shí)驗指南》. 《數(shù)字邏輯與數(shù)字系統(tǒng)》. 《計算機(jī)組成原理》. 《微型計算機(jī)接口技術(shù)》. 《計算機(jī)體系結(jié)構(gòu)》. 《計算機(jī)網(wǎng)絡(luò)》. 《計算機(jī)網(wǎng)絡(luò)實(shí)驗教程》. 《通信原理》. 《計算機(jī)網(wǎng)絡(luò)管理及系統(tǒng)開發(fā)》. 《網(wǎng)絡(luò)信息系統(tǒng)集成》. 《多媒體技術(shù)》. 《計算機(jī)圖形學(xué)》. 《計算機(jī)維護(hù)技術(shù)》. 《數(shù)據(jù)結(jié)構(gòu)》. 《計算機(jī)算法設(shè)計與分析》. 《計算機(jī)數(shù)值分析》. 《匯編語言程序設(shè)計》. 《Pascal語言程序設(shè)計》. 《VB程序設(shè)計》. 《C語言程序設(shè)計》. 《C 語言程序設(shè)計》. 《Java語言程序設(shè)計》. 《操作系統(tǒng)原理》. 《UNIX操作系統(tǒng)原理與應(yīng)用》. 《Linux操作系統(tǒng)》. 《軟件工程》. 《數(shù)據(jù)庫系統(tǒng)原理》. 《編譯原理》. 《編譯方法》. 《人工智能》. 《計算機(jī)信息安全》. 《計算機(jī)圖像處理》. 《人機(jī)交互》. 《計算機(jī)倫理學(xué)》. 對于IEEE和ACM的《計算機(jī)學(xué)科教學(xué)計劃2001》中提出的14個主科目, 這套系列教材均涵蓋, 能夠滿足不同層次院校. 不同教學(xué)計劃的要求.
這套系列教材由全國高等學(xué)校計算機(jī)教育研究會課程與教材建設(shè)委員會主任李大友教授精心策劃和組織. 編者均為具有豐富教學(xué)實(shí)踐經(jīng)驗的專家和教授. 所編教材體系結(jié)構(gòu)嚴(yán)謹(jǐn). 層次清晰. 概念準(zhǔn)確. 論理充分. 理論聯(lián)系實(shí)際. 深入淺出. 通俗易懂.
教材組織過程中, 得到了哈爾濱工業(yè)大學(xué)蔣宗禮教授, 西安交通大學(xué)董渭清副教授, 武漢大學(xué)張煥國教授, 吉林大學(xué)張長海教授, 福州大學(xué)王曉東教授, 太原理工大學(xué)余雪麗教授等的大力支持和幫助, 在此一并表示衷心感謝.
李大友
2000年6月
前 言
Linux是可運(yùn)行于多種硬件平臺, 支持多種系統(tǒng)軟件和應(yīng)用軟件, 與UNIX兼容, 符合POSIX標(biāo)準(zhǔn)的功能強(qiáng)大的操作系統(tǒng). Linux具有多用戶. 多任務(wù). 虛擬存儲器. 虛擬文件系統(tǒng)等先進(jìn)技術(shù), 更主要的是Linux為源代碼公開. 可免費(fèi)獲得的自由軟件.
操作系統(tǒng)是計算機(jī)專業(yè)的必修主干課程, 也是所有使用計算機(jī)的工程技術(shù)人員或用戶必須掌握的計算機(jī)基本知識, 是每臺計算機(jī)必須安裝的最基本的系統(tǒng)軟件.
在操作系統(tǒng)的教學(xué)過程中, 編者深刻體會到, 操作系統(tǒng)的概念. 原理. 算法等較抽象, 因為操作系統(tǒng)本身是個軟件的“黑匣子”, 其源代碼要么是讀不到, 要么讀不懂. 而有操作系統(tǒng)編寫經(jīng)驗的人很少, 又由于操作系統(tǒng)的復(fù)雜性, 使得操作系統(tǒng)課程又難以實(shí)習(xí), 所以無論“教”還是“學(xué)”操作系統(tǒng), 都不是一件容易的事.
Linux則是一個自由軟件, 它的源程序代碼是開放的, 開發(fā)模式也是開放和協(xié)作的, 源程序允許任何人取得. 修改和重新發(fā)布. 這種開發(fā)模式既有利于充分發(fā)揮開發(fā)人員的集體智慧, 同時由于Linux的開放, 又非常適合于教學(xué)科研領(lǐng)域, 它對于學(xué)生學(xué)習(xí)和研究操作系統(tǒng)來說, 是低成本. 高效率的, 可以起到事半功倍的作用.
本書共分為11章, 其中1~6章介紹Linux內(nèi)核的實(shí)現(xiàn)原理和方法, 由馬季蘭編寫, 第7~9章介紹Linux的安裝. 管理和使用, 第10章介紹Linux與網(wǎng)絡(luò), 第11章為實(shí)驗及部分實(shí)驗的指導(dǎo), 第7~11章由彭新光編寫.
本書得到全國高等學(xué)校計算機(jī)教育研究會課程與教材建設(shè)委員會. 電子工業(yè)出版社, 特別是李大友老師的大力支持和幫助, 在此表示衷心感謝.
由于知識水平有限, 時間倉促, 定有錯誤和不妥之處, 望同行和讀者批評指正.
編
者
2001年12月