第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)核源代碼導引
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 進程管理子系統(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 進程間通信(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)
習題
第2章 Linux進程及其管理
2.1 進程的概念
2.1.1 為何要引入進程
2.1.2 進程及其特征
2.1.3 進程的狀態(tài)
2.1.4 進程實體
2.1.5 進程調(diào)度
2.1.6 進程通信
2.2 Linux中的進程
2.3 Linux的進程控制塊 task_struct
2.4 Linux中的進程狀態(tài)及其轉(zhuǎn)換
2.5 Linux中的進程調(diào)度
2.6 Linux的時鐘
2.6.1 Linux中的時間控制
2.6.2 計時和定時器
2.7 Linux內(nèi)核機制
2.7.1 底半處理
2.7.2 任務(wù)隊列(Task Queue)
2.8 進程的創(chuàng)建與撤銷
2.8.1 進程的建立
2.8.2 進程的撤銷
2.9 程序的裝入和執(zhí)行
習題
第3章 進程通信
3.1 管道(pipe)通信方式
3.2 信號
3.3 UNIX System V IPC 機制
3.3.1 消息隊列
3.3.2 信號量
3.3.3 共享內(nèi)存
習題
第4章 Linux存儲管理
4.1 存儲管理的一般常識
4.2 請求頁式存儲管理的實現(xiàn)原理
4.3 80386內(nèi)存管理機構(gòu)和功能
4.3.1 80386的分段機制在Linux中的應(yīng)用
4.3.2 80386的分頁機制在Linux中的應(yīng)用
4.4 控制轉(zhuǎn)移和任務(wù)切換
4.4.1 控制轉(zhuǎn)移
4.4.2 任務(wù)切換
4.5 Linux虛存管理
4.5.1 Linux虛存管理的實現(xiàn)
4.5.2 Linux的內(nèi)核空間和用戶空間
4.5.3 Linux虛存段的組織和管理
4.5.4 Linux虛存頁的組織和管理
4.6 Linux虛存的保護
4.6.1 多任務(wù)及保護
4.6.2 同一任務(wù)內(nèi)的保護
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 頁交換進程和頁面換出
4.8 緩沖機制
習題
第5章 Linux文件系統(tǒng)
5.1 EXT2(第二擴展文件系統(tǒng))
5.1.1 EXT2的磁盤布局
5.1.2 EXT2的超級塊
5.1.3 EXT2的索引節(jié)點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é)點
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)用
習題
第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ū)動程序的實例
6.3 驅(qū)動程序的編譯與裝載
6.4 塊高速緩存(buffer-cache)
6.5 Linux中的中斷
6.5.1 Linux對中斷的管理
6.5.2 Linux的中斷處理
習題
第7章 Linux的使用基礎(chǔ)
7.1 開始使用
7.1.1 登錄
7.1.2 退出系統(tǒng)
7.1.3 關(guān)機
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ī)則表達式
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的使用
習題
第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 準備工作
8.4.2 啟動機器
8.4.3 安裝系統(tǒng)
8.5 常見問題解答
習題
第9章 系統(tǒng)管理
9.1 Root 賬號與系統(tǒng)安全
9.2 引導系統(tǒng)
9.2.1 從軟盤引導
9.2.2 從硬盤引導
9.2.3 用Loadin 程序引導
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 檢查. 維護文件系統(tǒng)
9.7 交換空間
9.8 系統(tǒng)升級
9.8.1 內(nèi)核的升級
9.8.2 庫的升級
9.8.3 GCC的升級
9.8.4 其他軟件的升級
習題
第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的普通站點
10.2.1 安裝遠程目錄
10.2.2 設(shè)置網(wǎng)絡(luò)其他設(shè)備
10.2.3 創(chuàng)建賬戶
10.3 建立Internet站點
10.3.1 準備工作
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é)議
習題
第11章 實驗
11.1 安裝Linux系統(tǒng)
11.1.1 實驗目的
11.1.2 實驗內(nèi)容
11.1.3 思考題
11.2 用戶界面實驗
11.2.1 實驗目的
11.2.2 實驗內(nèi)容
11.2.3 思考題
11.3 進程管理
11.3.1 實驗目的
11.3.2 實驗預備內(nèi)容
11.3.3 實驗內(nèi)容
11.3.4 思考題
11.3.5 實驗指導
11.4 進程間通信
11.4.1 實驗目的
11.4.2 實驗預備內(nèi)容
11.4.3 實驗內(nèi)容
11.4.4 實驗指導
11.5 內(nèi)存管理
11.5.1 實驗目的
11.5.2 實驗內(nèi)容
11.5.3 思考題
11.6 文件系統(tǒng)設(shè)計
11.6.1 設(shè)計目的
11.6.2 設(shè)計內(nèi)容
11.6.3 設(shè)計提示
主要參考文獻
序言/前言
序
言
這套教材是面向21世紀計算機學科系列教材. 為什么要組織這套教材 根據(jù)什么編寫這
套教材 這些都是在這篇序言中要回答的問題.
計算機學科是一個飛速發(fā)展的學科, 尤其是近十年來, 計算機向高度集成化. 網(wǎng)絡(luò)化和多媒體化發(fā)展的速度一日千里. 但是, 從另一個方面來看, 目前高等學校的計算機教育, 特別是教材建設(shè), 遠遠落后于現(xiàn)實的需要. 現(xiàn)在的教材主要是根據(jù)《教學計劃1993》的要求組織編寫的. 這個教學計劃, 在制定過程中主要參照了美國IEEE和ACM的《教學計劃1991》.
10年來, 計算機學科已有了長足發(fā)展, 這就要求高等學校計算機教育必須跟上形勢發(fā)展的需要, 在課程設(shè)置和教材建設(shè)上做出相應(yīng)調(diào)整, 以適應(yīng)面向21世紀計算機教育的要求. 這是組織這套教材的初衷.
為了組織好這套教材, 全國高等學校計算機教育研究會課程與教材建設(shè)委員會在天津召開了“全國高等學校計算機學科課程與教材建設(shè)研討會”, 在北京召開了“教材編寫大綱研討會”. 在這兩次會議上, 代表們深入地研討了全國高校計算機專業(yè)教學指導委員會和中國計算機學會教育委員會制定的《計算機學科教學計劃2000》以及美國IEEE和ACM的《計算機學科教學計劃2001》, 這是這套教材參照的主要依據(jù).
IEEE和ACM的《計算機學科教學計劃2001》是在總結(jié)了從《計算機學科教學計劃1991》到現(xiàn)在, 計算機學科十年來發(fā)展的主要成果的基礎(chǔ)上誕生的. 它認為面向21世紀計算機學科應(yīng)包括14個主科目:算法與分析 AL . 體系結(jié)構(gòu) AR . 離散結(jié)構(gòu) DS . 計算科學 CN . 圖形學. 可視化. 多媒體 GR . 網(wǎng)絡(luò)計算 NC . 人機交互 HC . 信息管理 IM . 智能系統(tǒng) IS . 操作系統(tǒng) OS . 程序設(shè)計基礎(chǔ) PF . 程序設(shè)計語言 PL . 軟件工程 SE . 社會. 道德. 法律和專業(yè)問題 SP . 其中除CN和GR為非核心主科目外, 其他12項均為核心主科目.
將2001教學計劃與1991教學計劃比較可看出:
1 在1991年計劃中, 離散結(jié)構(gòu)只作為數(shù)學基礎(chǔ)提出, 而在2001計劃中, 則作為核心主科目提出, 顯然, 提高了它在計算機學科中的地位.
2 在1991計劃中, 未提及網(wǎng)絡(luò)計算, 而在2001計劃中, 則作為核心主科目提出, 以適應(yīng)網(wǎng)絡(luò)技術(shù)飛速發(fā)展的需求.
3 圖形學. 可視化與多媒體也是為適應(yīng)發(fā)展要求新增加的內(nèi)容.
除此之外, 2001計劃在下述5個方面做調(diào)整:
將程序設(shè)計語言引論調(diào)整為程序設(shè)計基礎(chǔ), 將人-機通信調(diào)整為人機交互, 將人工智能與機器人學調(diào)整為智能系統(tǒng), 將數(shù)據(jù)庫與信息檢索調(diào)整為信息管理, 將數(shù)值與符號計算調(diào)整為計算科學.
顯然, 這些變化使2001計劃更具有科學性, 也更好地適應(yīng)了學科發(fā)展的需要.
在組織這套教材的過程中, 充分考慮了這些變化和調(diào)整, 在軟件和硬件的課程體系. 界面劃分方面均做了相應(yīng)的調(diào)整, 使整套教材更具有科學性和實用性.
另外, 還要說明一點, 教材建設(shè)既要滿足必修課的要求, 又要滿足限選課和任選課的要求. 因此, 教材應(yīng)按系列組織, 反映整個計算機學科的要求, 采用大拼盤結(jié)構(gòu), 以適應(yīng)各校不同的具體教學計劃, 使學校可根據(jù)自己的需求進行選擇.
這套教材包括:《微機應(yīng)用基礎(chǔ)》. 《離散數(shù)學》. 《電路與電子技術(shù)》. 《電路與電子技術(shù)習題與實驗指南》. 《數(shù)字邏輯與數(shù)字系統(tǒng)》. 《計算機組成原理》. 《微型計算機接口技術(shù)》. 《計算機體系結(jié)構(gòu)》. 《計算機網(wǎng)絡(luò)》. 《計算機網(wǎng)絡(luò)實驗教程》. 《通信原理》. 《計算機網(wǎng)絡(luò)管理及系統(tǒng)開發(fā)》. 《網(wǎng)絡(luò)信息系統(tǒng)集成》. 《多媒體技術(shù)》. 《計算機圖形學》. 《計算機維護技術(shù)》. 《數(shù)據(jù)結(jié)構(gòu)》. 《計算機算法設(shè)計與分析》. 《計算機數(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)原理》. 《編譯原理》. 《編譯方法》. 《人工智能》. 《計算機信息安全》. 《計算機圖像處理》. 《人機交互》. 《計算機倫理學》. 對于IEEE和ACM的《計算機學科教學計劃2001》中提出的14個主科目, 這套系列教材均涵蓋, 能夠滿足不同層次院校. 不同教學計劃的要求.
這套系列教材由全國高等學校計算機教育研究會課程與教材建設(shè)委員會主任李大友教授精心策劃和組織. 編者均為具有豐富教學實踐經(jīng)驗的專家和教授. 所編教材體系結(jié)構(gòu)嚴謹. 層次清晰. 概念準確. 論理充分. 理論聯(lián)系實際. 深入淺出. 通俗易懂.
教材組織過程中, 得到了哈爾濱工業(yè)大學蔣宗禮教授, 西安交通大學董渭清副教授, 武漢大學張煥國教授, 吉林大學張長海教授, 福州大學王曉東教授, 太原理工大學余雪麗教授等的大力支持和幫助, 在此一并表示衷心感謝.
李大友
2000年6月
前 言
Linux是可運行于多種硬件平臺, 支持多種系統(tǒng)軟件和應(yīng)用軟件, 與UNIX兼容, 符合POSIX標準的功能強大的操作系統(tǒng). Linux具有多用戶. 多任務(wù). 虛擬存儲器. 虛擬文件系統(tǒng)等先進技術(shù), 更主要的是Linux為源代碼公開. 可免費獲得的自由軟件.
操作系統(tǒng)是計算機專業(yè)的必修主干課程, 也是所有使用計算機的工程技術(shù)人員或用戶必須掌握的計算機基本知識, 是每臺計算機必須安裝的最基本的系統(tǒng)軟件.
在操作系統(tǒng)的教學過程中, 編者深刻體會到, 操作系統(tǒng)的概念. 原理. 算法等較抽象, 因為操作系統(tǒng)本身是個軟件的“黑匣子”, 其源代碼要么是讀不到, 要么讀不懂. 而有操作系統(tǒng)編寫經(jīng)驗的人很少, 又由于操作系統(tǒng)的復雜性, 使得操作系統(tǒng)課程又難以實習, 所以無論“教”還是“學”操作系統(tǒng), 都不是一件容易的事.
Linux則是一個自由軟件, 它的源程序代碼是開放的, 開發(fā)模式也是開放和協(xié)作的, 源程序允許任何人取得. 修改和重新發(fā)布. 這種開發(fā)模式既有利于充分發(fā)揮開發(fā)人員的集體智慧, 同時由于Linux的開放, 又非常適合于教學科研領(lǐng)域, 它對于學生學習和研究操作系統(tǒng)來說, 是低成本. 高效率的, 可以起到事半功倍的作用.
本書共分為11章, 其中1~6章介紹Linux內(nèi)核的實現(xiàn)原理和方法, 由馬季蘭編寫, 第7~9章介紹Linux的安裝. 管理和使用, 第10章介紹Linux與網(wǎng)絡(luò), 第11章為實驗及部分實驗的指導, 第7~11章由彭新光編寫.
本書得到全國高等學校計算機教育研究會課程與教材建設(shè)委員會. 電子工業(yè)出版社, 特別是李大友老師的大力支持和幫助, 在此表示衷心感謝.
由于知識水平有限, 時間倉促, 定有錯誤和不妥之處, 望同行和讀者批評指正.
編
者
2001年12月