內容簡介
全書分為Linux套用、Linux編程、Linux核心分析、實驗四篇共21章,內容豐富、循序漸進、通俗易懂、實用性強。《Linux體系與編程:基於Linux0.01版本》在Linux核心分析的基礎上增加了具有較高實用價值的Linux套用和Linux編程,讀者可以通過書中大量的實例,由淺入深地理解Linux的套用技術和程式設計思想。《Linux體系與編程:基於Linux0.01版本》把重心放在Linux核心分析上,讓讀者能夠更清晰地理解Linux核心源碼。書中精選的Linux0.01核心是最簡單、最精緻的Linux核心,可以幫助讀者快速掌握Linux核心設計原理,特別適合Linux的初學者閱讀。
《Linux體系與編程:基於Linux0.01版本》可讓初學者在領略Linux實用性的同時,快速地跨入Linux程式設計師的門檻。《Linux體系與編程:基於Linux0.01版本》既可作為Linux初學者的最佳入門教材,也可作為Linux程式設計師深入理解Linux編程體系的參考書,同時還可供計算機愛好者、軟體工程師學習、分析Linux核心使用。
圖書目錄
前言
第一篇 Linux套用及基礎
第1章 Linux套用簡介
1.1 Linux簡介
1.2 虛擬化軟體VirtualBox
1.3 Centos的安裝
1.4 Linux企業級的一般套用
1.4.1 為什麼選擇Linux
1.4.2 檔案伺服器
1.4.3 企業入口網站
1.4.4 數據備份
本章小結
習題一
第2章 Linux基本命令詳解
2.1 命令之路
2.2 來自系統的援助——man
2.3 目錄與檔案操作
2.3.1 目錄瀏覽與管理
2.3.2 檔案操作
2.4 查找命令與正則表達式
2.4.1 grep
2.4.2 正則表達式
2.4.3 find
2.5 有用的小命令以及重定向
2.5.1 文本處理
2.5.2 date&time
2.5.3 重定向
2.6 系統管理命令
2.6.1 進程管理
2.6.2 用戶管理
2.6.3 許可權管理
2.7 實用工具與任務管理
2.7.1 壓縮檔案
2.7.2 uname
2.7.3 容量查看
2.7.4 任務管理
本章小結
習題二
第3章 LAMP的基本安裝與配置
3.1 安裝前的注意事項
3.2 Apache
3.2.1 Apache的安裝
3.2.2 Apache的配置
3.3 MySQI
3.3.1 MySQL的安裝
3.3.2 MySQL的配置
3.4 PHP
3.4.1 PHP的安裝
3.4.2 PHP的配置
3.5 安裝測試
本章小結
習題三
第4章 遠程定期自動增量備份
4.1 shell腳本的基本語法
4.2 數據備份簡介
4.2.1 數據備份設備
4.2.2 數據備份方案
4.3 遠程定期自動增量備份
4.3.1 定期功能——crontab
4.3.2 增量功能——find
4.3.3 壓縮功能——tar
4.3.4 遠程備份——ftp
4.3.5 遠程定期自動增量備份綜合實例
本章小結
習題四
第二篇 Linux程式設計
第5章 Linux編程基礎
5.1 Vim編輯器
5.1.1 使用Vim建立一個名為exam的檔案
5.1.2 進入編輯模式
5.1.3 按Esc鍵返回一般模式
5.1.4 退出和存檔
5.2 GCC編譯器
5.2.1 GCC簡介
5.2.2 第一個Linux下的c程式
5.3 GDB調試器
5.3.1 GDB簡介
5.3.2 GDB實例
5.4 make
5.4.1 Make file檔案
5.4.2 make使用實例
本章小結
習題五
第6章 檔案和目錄
6.1 Linux/UNIX的檔案結構
6.1.1 檔案和目錄
6.1.2 檔案和設備
6.2 系統調用和設備驅動程式
6.3 庫函式
6.4 檔案I/O
6.4.1 open函式
6.4.2 訪問許可權的初始化值
6.4.3 write函式
6.4.4 read函式
6.4.5 close函式
6.4.6 ioctl函式
6.4.7 其他系統調用函式
6.5 標準I/O庫
6.5.1 fopen、freopen和fdopen函式
6.5.2 fread函式
6.5.3 fwrite函式
6.5.4 fclose函式
6.5.5 mush函式
6.5.6 fseek函式
6.5.7 龜etc、getc和getchar函式
6.5.8 fputc、putc和putchar函式
6.5.9 fgets、gets函式
6.6 格式化輸入和輸出
6.6.1 printf、fprintf和sprintf函式
6.6.2 scanf,、fscanf和sscanf函式
6.6.3 其他流函式
6.6.4 檔案流錯誤處理
6.7 檔案和目錄的維護
6.7.1 chmod系統調用函式
6.7.2 chown系統調用函式
6.7.3 unlink系統調用函式
6.7.4 mkdir和rmdir系統調用函式
6.7.5 chdir系統調用和getcwd函式
本章小結
習題六
第7章 進程控制
7.1 Linux進程概述
7.1.1 進程簡介
7.1.2 進程標識
7.2 創建進程
7.2.1 fork函式
7.2.2 vfork函式
7.3 終止進程
7.4 等待進程
7.4.1 wait函式
7.4.2 waitpid函式
7.5 exec函式
7.6 system函式
7.7 綜合實例
本章小結
習題七
第8章 進程間通信
8.1 管道
8.1.1 什麼是管道
8.1.2 popen和pclose函式
8.1.3 命名管道FIFO
8.2 信號量
8.2.1 什麼是信號量
8.2.2 信號量的相關函式
8.2.3 信號量實例
8.3 訊息佇列
8.3.1 訊息佇列
8.3.2 訊息佇列的相關函式
8.3.3 訊息佇列實例
本章小結
習題八
第9章 多執行緒
9.1 什麼是執行緒
9.1.1 執行緒的特點
9.1.2 執行緒的分類
9.2 執行緒編程基礎
9.2.1 創建執行緒函式
9.2.2 等待執行緒結束的函式
9.2.3 取自己執行緒ID函式
9.2.4 終止執行緒函式
9.3 執行緒屬性
9.4 執行緒訪問控制
本章小結
習題九
第10章 Linux網路編程
10.1 計算機網路簡介
10.1.1 IP位址
10.1.2 連線埠
10.1.3 域名
10.1.4 TCP/IP體系模型
10.1.5 C/S模型
10.2 套接字簡介
10.2.1 套接字的概念
10.2.2 套接字的分類
10.2.3 套接字相關的數據類型
10.3 涉及套接字的網路編程
10.3.1 面向連線的。TCP模型
10.3.2 無連線的UDP模型
本章小結
習題十
第11章 Linux綜合編程——微博伺服器設計簡介
11.1 有狀態和無狀態的TCP通信
11.2 伺服器設計的方案與思路
11.2.1 伺服器設計涉及的數據結構
11.2.2 伺服器的實現
本章小結
習題十一
第三篇 Linux0.01核心分析
第12章 Linux和GNU簡介
12.1 自由的天地:GNU和Linux
12.1.1 熱愛和享受自由
12.1.2 神奇的Linux
12.2 在樂趣中獲得成功:一起來玩作業系統
12.2.1 十一歲開始編程式
12.2.2 一種作業系統的誕生
12.3 GNU的開發工具
本章小結
習題十二
第13章 作業系統設計入門
13.1 作業系統介紹
13.2 作業系統的基本功能
13.3 作業系統設計的基本準則
13.3.1 簡單就是優美
13.3.2 利用已有的基礎
13.3.3 良好的設計
13.3.4 單核心作業系統和微核心作業系統
本章小結
習題十三
第14章 Linux0.01核心
14.1 Linux0.01核心簡介
14.1.1 Linux0.01核心背景
14.1.2 Linux0.01的技術特色
14.1.3 存儲管理
14.1.4 檔案系統
14.1.5 硬體平台移植和應用程式
14.2 Linux0.01核心代碼目錄
14.3 核心原始碼的目錄分布
14.3.1 boot目錄
14.3.2 fs目錄
14.3.3 include目錄
14.3.4 init目錄
14.3.5 kernel目錄
14.3.6 lib目錄
14.3.7 mm目錄
14.3.8 tools目錄
14.4 Linux0.01的main.c分析
14.5 編譯和運行Linux0.01系統
本章小結
習題十四
第15章 作業系統引導——裝載核心
15.1 作業系統引導基本知識
15.1.1 系統引導設備
15.1.2 啟動過程簡介
15.1.3 硬碟主引導扇區簡介
15.2 Linux0.01引導代碼分析
15.2.1 boot.s:BIOS引導代碼
15.2.2 head.s:Linux的32位引導代碼
15.3 實例:使用nasm生成引導代碼
15.3.1 引導代碼基礎
15.3.2 最簡單的引導程式
15.3.3 如何設定段暫存器
15.3.4 在引導程式中裝入程式(基於扇區)
本章小結
習題十五
第16章 進程管理和調度
16.1 進程的概念
16.1.1 進程的定義
16.1.2 進程的屬性
16.2 進程調度
16.2.1 進程調度算法的選擇
16.2.2 進程描述符
16.2.3 Linux進程調度原始碼分析
16.2.4 進程的切換
16.3 Linux0.01核心中的進程調度實例
16.3.1 進程調度
16.3.2 用戶進程和核心執行緒
本章小結
習題十六
第17章 存儲管理和設計
17.1 存儲管理概述
17.1.1 信息的二級存儲
17.1.2 存儲管理的功能
17.2 段頁式存儲管理
17.2.1 頁式存儲管理
17.2.2 段式存儲管理
17.2.3 段頁式存儲管理
17.2.4 3種存儲管理方式的對比
17.3 物理存儲管理
17.3.1 技術細節
17.3.2 物理存儲管理器的組織
17.3.3 物理存儲管理器的初始化
17.3.4 頁面分配
17.3.5 頁面回收
17.3.6 映射
17.3.7 記憶體映射
17.4 虛擬存儲管理
17.4.1 技術細節
17.4.2 malloc()和free()
17.4.3 缺頁處理
17.4.4 虛擬存儲管理的頁面分配
17.4.5 可執行程式
17.4.6 交換
17.4.7 總結
17.5 malloc()和free()的實現
17.6 Linux0.01存儲管理代碼分析
17.6.1 memory.c分析
17.6.2 page.s分析
本章小結
習題十七
……
第18章 設備管理和調度
第19章 磁碟檔案系統
第20章 shell編程技術和實例
第21章 Linux0.01系統調用的實現
第四篇 實驗