Linux操作系统上的用户态编程是通过系统调用提供的接口,将原本需要在Linux内核中或者对Linux内核进行多次系统调用才能实现的功能,放到内核之外来实现,从而保证内核的稳定性,获得更强的可拓展性,并且可以将Linux内核的传染性开源协议隔离。
全书共分9章,第1、2章从用户态与内核态的基本概念入手,简要介绍C语言标准库编程以及各种C语言标准库。第3章深入介绍系统调用的概念和计算机架构、特权级与硬件资源访问限制的关系,以及内核中系统调用的处理方式。第4章涵盖了系统调用与C语言标准库的关系,介绍如何基于Linux系统调用实现C语言标准库。第5章深入介绍了Linux系统用户态驱动API的使用和分析,包括Userspace I/O (UIO)接口的使用和VFIO等用户态驱动接口的使用。第6~9章涵盖了高性能网卡Linux用户态驱动分析、用户态文件系统FUSE分析、用户态线程——协程和基于Android HAL硬件抽象层的用户态驱动,介绍了操作系统中各个关键组件在用户态中的实现方法。
本书主要适合中高级应用程序开发者、内核开发者、Linux云服务器开发者阅读,有助于读者深入了解Linux操作系统及其编程的内部机制和实践技巧。本书提供了全面的指导和实用的知识,也可作为初学者的自学参考书。
封面
前折页
书名页
版权
前言
第1章 Linux操作系统概述
1.1 用户态与内核态
1.1.1 硬件特权级、运行模式(x86)
1.1.2 Linux的用户态与内核态
1.2 用户态的优势
1.2.1 用户态的速度优势
1.2.2 受限的高级功能(中断、DMA)
1.2.3 更优的内核稳定性
1.2.4 高吞吐量网络设备
1.2.5 内核态的copyleft开源协议
第2章 C语言程序设计与标准库编程
2.1 桌面Linux使用的glibc简介
2.2 其他C语言标准库
2.2.1 uClibc
2.2.2 musl libc
2.2.3 BSD libc
2.2.4 Android Bionic
第3章 系统调用与Linux系统调用的实现
3.1 什么是系统调用
3.1.1 计算机架构、特权级与硬件资源访问限制
3.1.2 内核中的系统调用
3.1.3 系统调用open的实现
3.2 Linux系统调用的实现(内核态)
3.2.1 系统调用的通用处理
3.2.2 x86架构的系统调用实现
第4章 系统调用与C语言标准库
4.1 如何基于Linux系统调用实现C语言标准库
4.1.1 实现标准库的原理与方法
4.1.2 glibc中的标准库实例
4.2 基于Linux sysfs在用户态下编写程序控制硬件
4.2.1 什么是Linux sysfs
4.2.2 使用C语言标准库文件读写函数控制键盘LED
4.2.3 使用标准库中提供的系统调用或Shell脚本调节屏幕背光
第5章 Linux系统用户态驱动API
5.1 用户态驱动与内核态驱动
5.1.1 内核中的驱动与字符设备驱动
5.1.2 内核中的块设备驱动
5.1.3 内核中的网络设备驱动
5.1.4 用户态驱动的原理
5.1.5 在用户态实现驱动的优劣
5.2 用户态驱动接口Userspace I/O(UIO)
5.2.1 硬件设备的内存映射
5.2.2 UIO的用户态API
5.2.3 基于UIO实现的PCI设备用户态驱动
5.3 用户态驱动接口VFIO
5.3.1 VFIO与硬件无关IOMMU的重映射
5.3.2 使用VFIO实现PCI设备的用户态驱动
第6章 Linux系统用户态高性能网卡驱动分析
6.1 Intel网卡用户态驱动的架构
6.2 Intel网卡用户态驱动ixy的核心实现
第7章 Linux系统用户态文件系统FUSE分析
7.1 FUSE在内核中的实现模块
7.2 FUSE在用户态中的API与基础示例
第8章 用户态线程——协程
8.1 Linux内核中线程与进程切换的实现
8.1.1 线程与进程切换的算法与原理
8.1.2 线程与进程上下文切换实现
8.2 Linux环境用户态中含栈协程的实现
8.2.1 协程的上下文切换实现
8.2.2 基于用户态的栈实现协程状态
第9章 基于Android HAL硬件抽象层的用户态驱动
9.1 Android HAL简介
9.1.1 Android HAL的作用
9.1.2 Android HAL的分类
9.2 HAL中的内核态隔离
9.2.1 HAL中灯光Light的实现分析
9.2.2 HAL中内核态部分的实现
9.2.3 HAL实现内核态GPL隔离的原理
后折页
封底
机械工业出版社 京icp备14043556号-1 (署)网出证(京)字第214号 Copyright (C) 2001 CmpBook. All Rights Reserved