Linux操作系統(tǒng)上的用戶態(tài)編程是通過系統(tǒng)調用提供的接口,將原本需要在Linux內核中或者對Linux內核進行多次系統(tǒng)調用才能實現(xiàn)的功能,放到內核之外來實現(xiàn),從而保證內核的穩(wěn)定性,獲得更強的可拓展性,并且可以將Linux內核的傳染性開源協(xié)議隔離。全書共分9章,第1、2章從用戶態(tài)與內核態(tài)的基本概念入手,簡要介紹C語言標準庫編程以及各種C語言標準庫。第3章深入介紹系統(tǒng)調用的概念和計算機架構、特權級與硬件資源訪問限制的關系,以及內核中系統(tǒng)調用的處理方式。第4章涵蓋了系統(tǒng)調用與C語言標準庫的關系,介紹如何基于Linux系統(tǒng)調用實現(xiàn)C語言標準庫。第5章深入介紹了Linux系統(tǒng)用戶態(tài)驅動API的使用和分析,包括UserspaceI/O(UIO)接口的使用和VFIO等用戶態(tài)驅動接口的使用。第6-9章涵蓋了高性能網卡Linux用戶態(tài)驅動分析、用戶態(tài)文件系統(tǒng)FUSE分析、用戶態(tài)線程——協(xié)程和基于AndroidHAL硬件抽象層的用戶態(tài)驅動,介紹了操作系統(tǒng)中各個關鍵組件在用戶態(tài)中的實現(xiàn)方法。
肖威軒,本科畢業(yè)于上海大學,碩士畢業(yè)于法國貢比涅技術大學,從法國克萊蒙-奧弗涅大學綜合理工學院獲得計算機專業(yè)的哲學博士學位。
曾在法國電力公司從事Linux環(huán)境中的智能電網充電樁協(xié)議棧開發(fā)等工作,現(xiàn)于法國巴黎初創(chuàng)公司進行人工智能倫理的研究與應用,包括在Linux環(huán)境中的人工智能模型運行環(huán)境和監(jiān)控等。
長期致力于開源貢獻、包括Linux應用程序與內核開發(fā),對Linux驅動、嵌入式Linux和實時系統(tǒng)等有諸多了解與實踐,并持續(xù)參與KDE社區(qū)的Linux桌面環(huán)境社區(qū)的開發(fā)與維護。
已于SCI索引刊物上發(fā)表多篇文章,于IEEE會議發(fā)表會議論文數(shù)篇。
前言
第1章Linux操作系統(tǒng)概述/
1.1用戶態(tài)與內核態(tài)/
1.1.1硬件特權級、運行模式(x86)/
1.1.2Linux的用戶態(tài)與內核態(tài)/
1.2用戶態(tài)的優(yōu)勢/
1.2.1用戶態(tài)的速度優(yōu)勢/
1.2.2受限的高級功能(中斷、DMA)/
1.2.3更優(yōu)的內核穩(wěn)定性/
1.2.4高吞吐量網絡設備/
1.2.5內核態(tài)的copyleft開源協(xié)議/
第2章C語言程序設計與標準庫編程/
2.1桌面Linux使用的glibc簡介/
2.2其他C語言標準庫/
2.2.1uClibc/
2.2.2musl libc/
2.2.3BSD libc/
2.2.4Android Bionic/
第3章系統(tǒng)調用與Linux系統(tǒng)調用的實現(xiàn)/
3.1什么是系統(tǒng)調用/
3.1.1計算機架構、特權級與硬件資源訪問限制/
3.1.2內核中的系統(tǒng)調用/
3.1.3系統(tǒng)調用open的實現(xiàn)/
3.2Linux系統(tǒng)調用的實現(xiàn)(內核態(tài))/
3.2.1系統(tǒng)調用的通用處理/
3.2.2x86架構的系統(tǒng)調用實現(xiàn)/
第4章系統(tǒng)調用與C語言標準庫/
4.1如何基于Linux系統(tǒng)調用實現(xiàn)C語言標準庫/
4.1.1實現(xiàn)標準庫的原理與方法/
4.1.2glibc中的標準庫實例/
4.2基于Linux sysfs在用戶態(tài)下編寫程序控制硬件/
4.2.1什么是Linux sysfs/
4.2.2使用C語言標準庫文件讀寫函數(shù)控制鍵盤LED/
4.2.3使用標準庫中提供的系統(tǒng)調用或Shell腳本調節(jié)屏幕背光/
第5章Linux系統(tǒng)用戶態(tài)驅動API/
5.1用戶態(tài)驅動與內核態(tài)驅動/
5.1.1內核中的驅動與字符設備驅動/
5.1.2內核中的塊設備驅動/
5.1.3內核中的網絡設備驅動/
5.1.4用戶態(tài)驅動的原理/
5.1.5在用戶態(tài)實現(xiàn)驅動的優(yōu)劣/
5.2用戶態(tài)驅動接口Userspace I/O(UIO)/
5.2.1硬件設備的內存映射/
5.2.2UIO的用戶態(tài)API/
5.2.3基于UIO實現(xiàn)的PCI設備用戶態(tài)驅動/
5.3用戶態(tài)驅動接口VFIO/
5.3.1VFIO與硬件無關IOMMU的重映射/
5.3.2使用VFIO實現(xiàn)PCI設備的用戶態(tài)驅動/
第6章Linux系統(tǒng)用戶態(tài)高性能網卡驅動分析/
6.1Intel網卡用戶態(tài)驅動的架構/
6.2Intel網卡用戶態(tài)驅動ixy的核心實現(xiàn)/
第7章Linux系統(tǒng)用戶態(tài)文件系統(tǒng)FUSE分析/
7.1FUSE在內核中的實現(xiàn)模塊/
7.2FUSE在用戶態(tài)中的API與基礎示例/
第8章用戶態(tài)線程——協(xié)程/
8.1Linux內核中線程與進程切換的實現(xiàn)/
8.1.1線程與進程切換的算法與原理/
8.1.2線程與進程上下文切換實現(xiàn)/
8.2Linux環(huán)境用戶態(tài)中含棧協(xié)程的實現(xiàn)/
8.2.1協(xié)程的上下文切換實現(xiàn)/
8.2.2基于用戶態(tài)的棧實現(xiàn)協(xié)程狀態(tài) /
第9章基于Android HAL硬件抽象層的用戶態(tài)驅動/
9.1Android HAL簡介/
9.1.1Android HAL的作用/
9.1.2Android HAL的分類/
9.2HAL中的內核態(tài)隔離/
9.2.1HAL中燈光Light的實現(xiàn)分析/
9.2.2HAL中內核態(tài)部分的實現(xiàn)/
9.2.3HAL實現(xiàn)內核態(tài)GPL隔離的原理/