Linux内核分析及应用
电子书推荐
-
深入Linux内核架构(中文高清版) 评分:
第1章 简介和概述1 1.1 内核的任务2 1.2 实现策略2 1.3 内核的组成部分3 1.3.1 进程、进程切换、调度3 1.3.2 UNIX进程4 1.3.3 地址空间与特权级别6 1.3.4 页表9 1.3.5 物理内存的分配11 1.3.6 计时13 1.3.7 系统调用13 1.3.8 设备驱动程序、块设备和字符设备14 1.3.9 网络14 1.3.10 文件系统14 1.3.11 模块和热插拔15 1.3.12 缓存16 1.3.13 链表处理16 1.3.14 对象管理和引用计数17 1.3.15 数据类型20 1.3.16 本书的局限性22 1.4 为什么内核是特别的23 1.5 行文注记23 1.6 小结27 第2章 进程管理和调度28 2.1 进程优先级28 2.2 进程生命周期30 2.3 进程表示32 2.3.1 进程类型37 2.3.2 命名空间37 2.3.3 进程ID号43 2.3.4 进程关系49 2.4 进程管理相关的系统调用50 2.4.1 进程复制50 2.4.2 内核线程62 2.4.3 启动新程序63 2.4.4 退出进程66 2.5 调度器的实现67 2.5.1 概观67 2.5.2 数据结构69 2.5.3 处理优先级74 2.5.4 核心调度器79 2.6 完全公平调度类84 2.6.1 数据结构85 2.6.2 CFS操作85 2.6.3 队列操作89 2.6.4 选择下一个进程91 2.6.5 处理周期性调度器92 2.6.6 唤醒抢占93 2.6.7 处理新进程93 2.7 实时调度类94 2.7.1 性质94 2.7.2 数据结构95 2.7.3 调度器操作96 2.8 调度器增强97 2.8.1 SMP调度97 2.8.2 调度域和控制组101 2.8.3 内核抢占和低延迟相关工作102 2.9 小结106 第3章 内存管理107 3.1 概述107 3.2 (N)UMA模型中的内存组织109 3.2.1 概述109 3.2.2 数据结构111 3.3 页表123 3.3.1 数据结构124 3.3.2 页表项的创建和操作129 3.4 初始化内存管理129 3.4.1 建立数据结构130 3.4.2 特定于体系结构的设置135 3.4.3 启动过程期间的内存管理153 3.5 物理内存的管理159 3.5.1 伙伴系统的结构159 3.5.2 避免碎片161 3.5.3 初始化内存域和结点数据结构167 3.5.4 分配器API172 3.5.5 分配页177 3.5.6 释放页192 3.5.7 内核中不连续页的分配195 3.5.8 内核映射201 3.6 slab分配器205 3.6.1 备选分配器206 3.6.2 内核中的内存管理207 3.6.3 slab分配的原理209 3.6.4 实现212 3.6.5 通用缓存226 3.7 处理器高速缓存和TLB控制228 3.8 小结230 第4章 进程虚拟内存231 4.1 简介231 4.2 进程虚拟地址空间231 4.2.1 进程地址空间的布局232 4.2.2 建立布局234 4.3 内存映射的原理237 4.4 数据结构238 4.4.1 树和链表238 4.4.2 虚拟内存区域的表示239 4.4.3 优先查找树241 4.5 对区域的操作244 4.5.1 将虚拟地址关联到区域245 4.5.2 区域合并246 4.5.3 插入区域247 4.5.4 创建区域248 4.6 地址空间250 4.7 内存映射251 4.7.1 创建映射251 4.7.2 删除映射253 4.7.3 非线性映射254 4.8 反向映射257 4.8.1 数据结构258 4.8.2 建立逆向映射259 4.8.3 使用逆向映射259 4.9 堆的管理261 4.10 缺页异常的处理263 4.11 用户空间缺页异常的校正268 4.11.1 按需分配/调页269 4.11.2 匿名页271 4.11.3 写时复制271 4.11.4 获取非线性映射272 4.12 内核缺页异常272 4.13 在内核和用户空间之间复制数据274 4.14 小结276 第5章 锁与进程间通信277 5.1 控制机制277 5.1.1 竞态条件277 5.1.2 临界区278 5.2 内核锁机制279 5.2.1 对整数的原子操作280 5.2.2 自旋锁282 5.2.3 信号量283 5.2.4 RCU机制284 5.2.5 内存和优化屏障286 5.2.6 读者/写者锁287 5.2.7 大内核锁288 5.2.8 互斥量288 5.2.9 近似的per-CPU计数器290 5.2.10 锁竞争与细粒度锁291 5.3 SystemV进程间通信292 5.3.1 SystemV机制292 5.3.2 信号量292 5.3.3 消息队列300 5.3.4 共享内存303 5.4 其他IPC机制303 5.4.1 信号303 5.4.2 管道和套接字310 5.5 小结311 第6章 设备驱动程序312 6.1 I/O体系结构312 6.2 访问设备316 6.2.1 设备文件316 6.2.2 字符设备、块设备和其他设备317 6.2.3 使用ioctl进行设备寻址319 6.2.4 主从设备号的表示320 6.2.5 注册321 6.3 与文件系统关联324 6.3.1 inode中的设备文件成员324 6.3.2 标准文件操作325 6.3.3 用于字符设备的标准操作325 6.3.4 用于块设备的标准操作325 6.4 字符设备操作326 6.4.1 表示字符设备326 6.4.2 打开设备文件326 6.4.3 读写操作328 6.5 块设备操作329 6.5.1 块设备的表示330 6.5.2 数据结构331 6.5.3 向系统添加磁盘和分区338 6.5.4 打开块设备文件339 6.5.5 请求结构341 6.5.6 BIO343 6.5.7 提交请求345 6.5.8 I/O调度350 6.5.9 ioctl的实现352 6.6 资源分配353 6.6.1 资源管理353 6.6.2 I/O内存355 6.6.3 I/O端口357 6.7 总线系统358 6.7.1 通用驱动程序模型358 6.7.2 PCI总线363 6.7.3 USB370 6.8 小结376 第7章 模块377 7.1 概述377 7.2 使用模块378 7.2.1 添加和移除378 7.2.2 依赖关系380 7.2.3 查询模块信息381 7.2.4 自动加载382 7.3 插入和删除模块384 7.3.1 模块的表示385 7.3.2 依赖关系和引用389 7.3.3 模块的二进制结构391 7.3.4 插入模块396 7.3.5 移除模块403 7.4 自动化与热插拔404 7.4.1 kmod实现的自动加载404 7.4.2 热插拔405 7.5 版本控制408 7.5.1 校验和方法408 7.5.2 版本控制函数411 7.6 小结412 第8章 虚拟文件系统413 8.1 文件系统类型413 8.2 通用文件模型414 8.2.1 inode415 8.2.2 链接416 8.2.3 编程接口416 8.2.4 将文件作为通用接口417 8.3 VFS的结构417 8.3.1 结构概观418 8.3.2 inode419 8.3.3 特定于进程的信息423 8.3.4 文件操作427 8.3.5 目录项缓存431 8.4 处理VFS对象436 8.4.1 文件系统操作436 8.4.2 文件操作450 8.5 标准函数456 8.5.1 通用读取例程457 8.5.2 失效机制459 8.5.3 权限检查461 8.6 小结463 第9章 Ext文件系统族464 9.1 简介464 9.2 Ext2文件系统465 9.2.1 物理结构465 9.2.2 数据结构470 9.2.3 创建文件系统484 9.2.4 文件系统操作485 9.3 Ext3文件系统507 9.3.1 概念508 9.3.2 数据结构509 9.4 小结511 第10章 无持久存储的文件系统512 10.1 proc文件系统512 10.1.1 /proc的内容513 10.1.2 数据结构519 10.1.3 初始化522 10.1.4 装载proc文件系统523 10.1.5 管理/proc数据项525 10.1.6 读取和写入信息528 10.1.7 进程相关的信息530 10.1.8 系统控制机制535 10.2 简单的文件系统542 10.2.1 顺序文件542 10.2.2 用libfs编写文件系统546 10.2.3 调试文件系统547 10.2.4 伪文件系统549 10.3 sysfs549 10.3.1 概述550 10.3.2 数据结构550 10.3.3 装载文件系统554 10.3.4 文件和目录操作556 10.3.5 向sysfs添加内容562 10.4 小结564 第11章 扩展属性和访问控制表565 11.1 扩展属性565 11.1.1 到虚拟文件系统的接口566 11.1.2 Ext3中的实现570 11.1.3 Ext2中的实现576 11.2 访问控制表577 11.2.1 通用实现577 11.2.2 Ext3中的实现580 11.2.3 Ext2中的实现585 11.3 小结585 …… 第12章 网络586 第13章 系统调用655 第14章 内核活动678 第15章 时间管理714 第16章 页缓存和块缓存761 第17章 数据同步793 第18章 页面回收和页交换821 第19章 审计882 附录A 体系结构相关知识899 附录B 使用源代码919 附录C 有关C语言的注记947 附录D 系统启动985 附录E ELF二进制格式 附录F 内核开发过程 参考文献
上传时间:2017-09 大小:108.53MB
- 106.61MB
设计开发 深入Linux 内核架构 完整版
2018-04-09设计开发 深入Linux 内核架构 完整版 设计开发 深入Linux 内核架构 完整版
- 133KB
深入Linux内核.pdf
2021-09-07深入Linux内核.pdf
- 53.37MB
深入linux内核构架 中文清晰版
2011-10-28深入linux内核构架 中文清晰版 Wolfgang Mauerer
- 18.70MB
深入Linux 内核架构
2019-04-01作者:Wolfgang Mauerer 翻译:郭旭 高清电子扫面版,可以pdf文字搜索,方便查询所需要的信息。 本人又使用了Adobe Acrobat 优化了网页浏览速度 欢迎大家下载,祝大家学习愉快,开卷有益
- 396KB
深度:一文看懂Linux内核!Linux内核架构和工作原理详解
2021-02-23理解Linux内核最好预备的知识点:懂C语言懂一点操作系统的知识熟悉少量相关算法懂计算机体系结构Linux内核的特点:结合了unix操作系统的一些基础概念Linux内核的任务:1.从技术层面讲,内核是硬件与软
- 992KB
linux内核架构2018最新版本
2018-06-27国外多位linux大牛联合出品 最新版linux内核架构最新4.x内核,绝对好资料,国内暂无
- 298KB
深入linux内核架构 Linux内核架构分析解读.docx
2021-11-08深入linux内核架构 Linux内核架构分析解读.docx
- 49.0MB
深入理解Linux内核 第三版 中文高清完整pdf版.part5.rar
2011-08-17《深入理解linux内核》第三版将引领你畅游内核中用到的最主要数据结构、算法和编程技巧。如果你的确想了解计算机内部的实现机理,那么作者透过现象探寻本质,提供了颇有价值的深入分析。本书针对具体的intel平台,...
- 56.80MB
深入理解linux内核(第三版中文)
2017-10-21本书以最新的 Linux 2.6 版架构为基础,分门别类地向初学者介绍了 Linux 内核的架构、编程思想、以及功能模块。相信你在本书的指导下学习,对于你读懂 Linux 操作系统的精华部分,会取得事半功倍的效果。事实上,...
- 202.57MB
linux aarch64架构libreoffice安装包
2023-03-20linux aarch64架构libreoffice安装包
- 34KB
(牛客网C++课程)Linux 高并发Web服务器项目实战(带定时检测代码)
2023-02-24(牛客网C++课程)Linux 高并发Web服务器项目实战(带定时检测代码) 技术框架: 1. 线程池 + 非阻塞 socket + epoll + 事件处理的并发模型 2. 状态机解析HTTP请求 3. 心跳机制 4. 简易日志系统 主要内容: 1. 使用 socket 实现服务器和浏览器客户端的通信; 2. 用 epoll 事件检测技术实现 IO 多路复用,提高运行效率; 3. 采用模拟 Proacto r的事件处理模式,利用线程池实现多线程机制,实现高并发通信,减少频繁创建和销毁线程带来的开销;(信号和互斥锁) 4. 主进程负责事件的读写,子线程负责业务逻辑——用有限状态机解析HTTP(GET)请求报文;生成相应的响应报文。 5. 利用链表数据结构实现心跳机制(超时检测处理)。
- 96.79MB
Linux项目设计_媒体播放器(6818).rar
2021-04-14主页有教程与视频 //Linux媒体播放器 //作者:化作尘 //时间:2020年8月8日15:52:45 //qq邮箱:2809786963@qq.com //csdn链接:https://blog.csdn.net/mbs520/article/details/107880118 //哔哩哔哩项目视频:(可点击主页查看)https://b23.tv/bxfxvd 项目功能展示: 一、开机显示登入界面,可密码管理员登入,也可以免密码普通用户登入 二、登入后显示桌面,显示5个应用 ,分别是图片、视频、音乐、设置、文件管理 三、音乐相册功能,播放图片同时播放背景音乐,可以左右滑动切换图片等操作 四、视频播放功能,可以播放avi,mp4等格式视频 五、音乐播放器,可以播放mp3格式的音频 六、设置壁纸,可以根据喜好设置自己喜欢的壁纸 七、文件管理,可以对文件进行预览和删除 一、项目课题: 基于ARM平台的广告机系统设计 (最好可以自己取
- 0B
openssh-server离线安装包
2022-11-04openssh-server离线安装包 三个.deb文件
- 52.9MB
VisualGDB 5.6 R9//支持VS2008-VS2022
2023-05-04VisualGDB 是 Visual Studio 的一个非常强大的扩展,它允许您调试或调试嵌入式系统。这个程序有一个非常有吸引力的用户界面,它具有许多用于调试或调试代码的功能。VisualGDB 还有一个向导,可以帮助您调试程序并为您提供强大的指南。此外,该程序还有许多其他功能,分为常见功能、高级功能、可用性功能、Linux 功能、Android 功能等类别,每个功能都已在“功能和功能”部分为您列出。 畅享版
- 190B
centos 7.6版本 ISO镜像下载
2020-12-03关于centos7.6版本的镜像文件,适用于练习docker、k8s等容器技术。 亲和性较好,本资源是网盘下载,非网盘会员慎点。
- 46.83MB
linux下nginx离线安装包及相关依赖包(附教程)
2022-06-151)资源:linux下nginx离线安装包及相关依赖包; 2)教程:https://blog.csdn.net/hualinger/article/details/125298009?spm=1001.2014.3001.5502
- 617.59MB
tongweb7.0,windows和linux安装包
2023-04-27下载安装部署tongweb
- 1.34MB
rufus-4.1.exe 版本 4.1 (2023.05.31)
2023-06-05Rufus 是一款格式化和创建 USB 启动盘的辅助工具。 本软件适用于以下场景: 需要将可引导 ISO (Windows、Linux、UEFI 等) 刻录到 USB 安装媒介的情况 需要处理未安装操作系统的设备的情况 需要在 DOS 环境下刷写 BIOS 或其他固件的情况 需要运行低级工具的情况 Rufus 麻雀虽小,但五脏俱全!
- 51.93MB
docker-compose-linux-x86-64
2023-04-19docker-compose v2.17.2
- 110KB
银河麒麟系统硬盘分区挂载
2023-02-11麒麟系统挂载硬盘方法及分区方法
- 12.58MB
Linux Centos7 升级最新版OpenSSH-9.6p1 有脚本(支持离线)
2024-01-03包含升级的rpm文件 openssh-9.6p1.tar.gz openssl-1.1.1q.tar.gz zlib-1.3.tar.gz 以及升级脚本 sshupdate2.sh
- 207.28MB
GitKrakenSetup-6.5.1 版本,包括win和linux
2023-04-20GitKrakenSetup-6.5.1 gitkraken-amd64
- 509.59MB
RK3588开发资料(文档),509MB
2022-08-24RK3588开发资料(pdf文档),509MB,Rockchip Linux 开发指南
- 1013KB
Stable Diffusion WebUI linux部署问题
2023-10-15https://huggingface.co/openai/clip-vit-large-patch14/tree/main 资源文件
- 52.85MB
nginx依赖的环境安装包
2023-08-29Linux系统下安装配置 Nginx 超详细图文教程nginx依赖的环境安装包
- 297.87MB
银河麒麟V10_ARM版Qt5.12.8离线安装包(飞腾处理器)
2022-01-211.银河麒麟V10 2.飞腾处理器 3.ARM版本
- 6.3MB
Linux常用命令和基础命令和教程,好用,非常推荐
2024-03-24Linux常用命令和基础命令和教程,好用,非常推荐。
- 69.25MB
FinalShell安装包,让用户通过SSH、Telnet或者RDP等协议连接到远程服务器或设备,实现远程控制和管理
2023-08-28FinalShell是一款功能强大的远程终端软件,它可以让用户通过SSH、Telnet或者RDP等协议连接到远程服务器或设备,实现远程控制和管理。FinalShell支持多标签页、会话管理、命令自动补全、命令批量执行等功能,用户可以方便地在多个终端之间切换,同时也可以对会话进行分组管理。此外,FinalShell还提供了强大的文件传输功能,用户可以直接在本地和远程设备之间进行文件的上传和下载。FinalShell还支持脚本录制和回放,方便用户自动化执行一系列命令。总之,FinalShell是一款易用、功能丰富的远程终端软件,适用于系统管理员、开发人员和网络工程师等多种角色。
- 15.4MB
用于升级CentOS7系统openssh-9.7p1的rpm包
2024-03-18CentOS7离线升级openssh-9.7p1 将openssh-9.7p1的rpm包上传到本地服务器 进入openssh9.7p1文件夹,里面包含openssh-9.7p1升级的rpm包 查看当前openssh的版本 使用yum localinstall openssh-*.rpm 进行更新 授权,重启服务,设置开机自启 查看openssh状态 查看openssh版本
- 567.65MB
VMware Workstation 16虚拟机安装包
2022-01-14VMware Workstation 16虚拟机安装包