新書推薦:
《
谁是窃书之人 日本文坛新锐作家深绿野分著 无限流×悬疑×幻想小说
》
售價:NT$
254.0
《
一个经济杀手的自白 第3版
》
售價:NT$
505.0
《
8秒按压告别疼痛
》
售價:NT$
398.0
《
津巴多时间心理学:挣脱束缚、改写命运的6种时间观
》
售價:NT$
352.0
《
大英博物馆东南亚简史
》
售價:NT$
806.0
《
纯粹·我只要少许
》
售價:NT$
367.0
《
经济史的趣味(全新增订版)(经济史与思想史丛书)
》
售價:NT$
383.0
《
中国古代鬼神录
》
售價:NT$
866.0
|
編輯推薦: |
Linux用户态编程已经变成了服务器、云平台、AI开发者的技能之一。通过本书,我们将为读者提供全面的指导和实用的知识,帮助读者在Linux平台上进行高效的C语言编程。作者肖威轩老师有多年KDE开发经验,用生动形象的方式,系统并深入地阐述了C语言程序设计入门、Linux操作系统的构造,以及系统级API的使用方法,让广大读者能够很好地掌握并灵活使用C语言进行Linux 开发。因此,编辑认为本书是开源项目开发的相关从业者很值得拥有的一本书。
|
內容簡介: |
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操作系统及其编程的内部机制和实践技巧。本书提供了全面的指导和实用的知识,也可作为初学者的自学参考书。
|
關於作者: |
肖威轩,本科毕业于上海大学,硕士毕业于法国贡比涅技术大学,从法国克莱蒙-奥弗涅大学综合理工学院获得计算机专业的哲学博士学位。 曾在法国电力公司从事Linux环境中的智能电网充电桩协议栈开发等工作,现于法国巴黎初创公司进行人工智能伦理的研究与应用,包括在Linux环境中的人工智能模型运行环境和监控等。 长期致力于开源贡献、包括Linux应用程序与内核开发,对Linux驱动、嵌入式Linux和实时系统等有诸多了解与实践,并持续参与KDE社区的Linux桌面环境社区的开发与维护。 已于SCI索引刊物上发表多篇文章,于IEEE会议发表会议论文数篇。
|
目錄:
|
前言 第1章Linux操作系统概述/ 1.1用户态与内核态/ 1.1.1硬件特权级、运行模式(x86)/ 1.1.2Linux的用户态与内核态/ 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.1uClibc/ 2.2.2musl libc/ 2.2.3BSD libc/ 2.2.4Android Bionic/ 第3章系统调用与Linux系统调用的实现/ 3.1什么是系统调用/ 3.1.1计算机架构、特权级与硬件资源访问限制/ 3.1.2内核中的系统调用/ 3.1.3系统调用open的实现/ 3.2Linux系统调用的实现(内核态)/ 3.2.1系统调用的通用处理/ 3.2.2x86架构的系统调用实现/ 第4章系统调用与C语言标准库/ 4.1如何基于Linux系统调用实现C语言标准库/ 4.1.1实现标准库的原理与方法/ 4.1.2glibc中的标准库实例/ 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.2UIO的用户态API/ 5.2.3基于UIO实现的PCI设备用户态驱动/ 5.3用户态驱动接口VFIO/ 5.3.1VFIO与硬件无关IOMMU的重映射/ 5.3.2使用VFIO实现PCI设备的用户态驱动/ 第6章Linux系统用户态高性能网卡驱动分析/ 6.1Intel网卡用户态驱动的架构/ 6.2Intel网卡用户态驱动ixy的核心实现/ 第7章Linux系统用户态文件系统FUSE分析/ 7.1FUSE在内核中的实现模块/ 7.2FUSE在用户态中的API与基础示例/ 第8章用户态线程——协程/ 8.1Linux内核中线程与进程切换的实现/ 8.1.1线程与进程切换的算法与原理/ 8.1.2线程与进程上下文切换实现/ 8.2Linux环境用户态中含栈协程的实现/ 8.2.1协程的上下文切换实现/ 8.2.2基于用户态的栈实现协程状态 / 第9章基于Android HAL硬件抽象层的用户态驱动/ 9.1Android HAL简介/ 9.1.1Android HAL的作用/ 9.1.2Android HAL的分类/ 9.2HAL中的内核态隔离/ 9.2.1HAL中灯光Light的实现分析/ 9.2.2HAL中内核态部分的实现/ 9.2.3HAL实现内核态GPL隔离的原理/
|
內容試閱:
|
感谢您购买《Linux 用户态 C 语言编程原理与实践》,在本书中,我们将探索Linux操作系统下用户态的C语言编程,并从用户态技术在内核态中的实现过程里,深入了解其原理和实践技巧。在Linux操作系统问世三十多年之际,开源的服务器操作系统也被越来越多的人所接受,而世界上各科技公司对开源的Linux操作系统也更为广泛地接受。比如微软的态度,从鲍尔默任CEO时期的“Linux是癌症”,变为了纳德拉时期的拥抱移动和云,在微软的Azure云平台上也可以看到大量开箱即用的Linux发行版镜像。因此,Linux用户态编程已经变成了服务器、云平台、AI开发者的技能之一。通过本书,我们将为您提供全面的指导和实用的知识,帮助您在Linux平台上进行高效的C语言编程。 笔者作为开源软件的拥趸,从初中就开始尝试接触和使用桌面版Linux发行版,此后通过参与各种开源项目成为KDE桌面开源软件社区的长期贡献者、开发者和维护者。笔者在高中开始自学C语言,由于其是一门偏向底层的、与硬件联系紧密的语言,在教学与应用之间存在着巨大的鸿沟,往往与理工科专业的就业需求脱节。在与他人交流C语言学习过程的感受时,笔者得到最多的评价就是“C语言无法写出有用的程序”,这是因为C语言的教学过程中往往只能教授C语言的语法,于是在此过程中只能编译出“黑漆漆”的控制台程序,无法为写代码的人带来成就感的正反馈。笔者在当时的学习期间也有类似的感受。在越来越多地接触到嵌入式C语言开发、各开源社区使用C语言编写的软件后,笔者认识到C语言其实是一个极其方便的底层操作工具,可以和操作系统无缝衔接。基本上所有操作系统都有一套C语言编程接口,例如微软Windows操作系统的WIN32接口、Linux和UNIX家族操作系统的POSIX C接口和macOS的Cocoa接口,因此非常适合编写系统软件。而C语言教学与应用之间的鸿沟其实来自对C语言之外的概念的了解,如操作系统中的概念、文件系统和硬件驱动等。 恰逢笔者正在攻读博士、大量产出文本期间,因此笔者决定结合自身经历和经验,调研并尝试编写本书,对现今已存在的Linux用户态编程的一些极具代表性的应用及其原理,以及在Linux内核中的实现进行讲解。代表性的应用包括用户态网卡硬件驱动、用户态文件系统、用户态线程(或称协程)和在移动设备上运行的Android Linux中的用户态实现的硬件抽象层等。本书的开始部分会先回顾Linux和C语言的一些基础知识,然后介绍Linux中的用户态和内核态之间的桥梁——系统调用,以及基于系统调用实现的C标准库。紧接着对Linux内核中的硬件驱动部分进行简要介绍,进而从用户态网卡硬件驱动开启应用部分的讲解。经过用户态文件系统和用户态线程部分对Linux内核中的接口的实现以及用户态中对接口使用的讲解,最后以Android操作系统的硬件抽象层作为结束。 本书的创作源于机械工业出版社李晓波老师的邀请,首先在这里对李老师表达笔者诚挚的谢意。在本书创作过程中,家人、朋友和同事的支持也是必不可少的,在本书编写和修改期间发生了各种各样的事情,遇到了形形色色的人,在此感谢陪我一路走来的妻子黄茜,以及父母肖战军和刘艳枝,谨以此书献给因病不幸去世的妹妹刘嘉涵,感谢在日本交换期间和最困难的时候陪伴了笔者的Arts Yang博士。 通过阅读本书,您将深入了解Linux操作系统和获得用户态C语言编程的宝贵知识和实践技巧。无论是初学者还是有经验的开发者,相信本书都将成为您在Linux平台上进行“有用”的开发与编程的指南和良师益友。 最后,感谢您的阅读和支持。衷心希望本书能够满足您的学习需求,启发您的思考,并成为您在Linux用户态甚至内核态编程领域的伙伴和引路人。祝愿您阅读愉快,愿本书能够帮助您在Linux用户态C语言编程的旅程中取得成功。 肖威轩
|
|