
《奔跑吧 Linux内核》配套资源
- 大小:560 MB
- 类型:Linux内核
- 格式:PDF
- 出版:人民邮电出版社
- 作者:张天飞
- 更新:2022-12-14 10:51:53

给大家整理一篇Linux内核类书籍配套资源,介绍了关于Linux内核、配套资源、Linux内核方面的内容,本书是由人民邮电出版社出版,已被868人关注,由余乐生测试纠错,目前本书在Linux内核类综合评分为:7.5分。
Linux内核资源推荐
- 《SQL Server On Linux运维实战》配套资源 配套资源 / 55.02 KB / 黄钊吉 熊章立 推荐度:
- 嵌入式Linux应用开发完全手册 / 111.09MB / admin 推荐度:
- CentOS 8 Linux系统管理与一线运维实战 PDF 电子书 / 80.4 MB / 陈祥琳 推荐度:
资源介绍
内容简介
本书内容基于Linux 4.x内核,主要选取了Linux内核中比较基本和常用的内存管理、进程管理、并发与同步,以及中断管理这4个内核模块进行讲述。全书共分为6章,依次介绍了ARM体系结构、Linux内存管理、进程调度管理、并发与同步、中断管理、内核调试技巧等内容。本书的每节内容都是一个Linux内核的话题或者技术点,读者可以根据每小节前的问题进行思考,进而围绕问题进行内核源代码的分析。本书内容丰富,讲解清晰透彻,不仅适合有一定Linux相关基础的人员,包括从事与Linux相关的开发人员、操作系统的研究人员、嵌入式开发人员及Android底层开发人员等学习和使用,而且适合作为对Linux感兴趣的程序员的学习用书,也可以作为大专院校相关专业师生的学习用书和培训学校的教材。
作者简介
张天飞,笔名“笨叔叔”。Linux内核爱好者,从事Linux内核和驱动开发十余年,在多家芯片公司从事过手机芯片底层软件开发和客户支持工作。
目录
- LINUX内核奔跑卷1
- 第1章 处理器体系结构4
- 本章思考题4
- 第2章 内存管理32
- 本章思考题32
- 2.1 物理内存初始化36
- 2.1.1 内存管理概述36
- 2.1.2 内存大小37
- 2.1.3 物理内存映射38
- 2.1.4 zone初始化40
- 2.1.5 空间划分44
- 2.1.6 物理内存初始化45
- 2.2 页表的映射过程51
- 2.2.1 ARM32页表映射51
- 2.2.2 ARM64页表映射60
- 2.3 内核内存的布局图67
- 2.3.1 ARM32内核内存布局图67
- 2.3.2 ARM64内核内存布局图70
- 2.4 分配物理页面72
- 2.4.1 伙伴系统分配内存72
- 2.4.2 释放页面85
- 2.4.3 小结89
- 2.5 slab分配器90
- 2.5.1 创建slab描述符91
- 2.5.2 分配slab对象103
- 2.5.3 释放slab缓冲对象108
- 2.5.4 kmalloc分配函数111
- 2.5.5 小结112
- 2.6 vmalloc113
- 2.7 VMA操作120
- 2.7.1 查找VMA122
- 2.7.2 插入VMA124
- 2.7.3 合并VMA129
- 2.7.4 红黑树例子131
- 2.7.5 小结133
- 2.8 malloc133
- 2.8.1 brk实现134
- 2.8.2 VM_LOCK情况138
- 2.8.3 小结148
- 2.9 mmap150
- 2.9.1 mmap概述151
- 2.9.2 小结153
- 2.10 缺页中断处理155
- 2.10.1 do_page_fault()157
- 2.10.2 匿名页面缺页中断165
- 2.10.3 文件映射缺页中断169
- 2.10.4 写时复制175
- 2.10.5 小结183
- 2.11 page引用计数184
- 2.11.1 struct page数据结构185
- 2.11.2 _count和_mapcount的区别188
- 2.11.3 页面锁PG_Locked192
- 2.11.4 小结192
- 2.12 反向映射RMAP192
- 2.12.1 父进程分配匿名页面193
- 2.12.2 父进程创建子进程198
- 2.12.3 子进程发生COW200
- 2.12.4 RMAP应用201
- 2.12.5 小结202
- 2.13 回收页面204
- 2.13.1 LRU链表204
- 2.13.2 kswapd内核线程216
- 2.13.3 balance_pgdat函数219
- 2.13.4 shrink_zone函数228
- 2.13.5 shrink_active_list函数233
- 2.13.6 shrink_inactive_list函数238
- 2.13.7 跟踪LRU活动情况244
- 2.13.8 Refault Distance算法244
- 2.13.9 小结249
- 2.14 匿名页面生命周期251
- 2.14.1 匿名页面的诞生251
- 2.14.2 匿名页面的使用252
- 2.14.3 匿名页面的换出252
- 2.14.4 匿名页面的换入254
- 2.14.5 匿名页面销毁254
- 2.15 页面迁移254
- migrate_pages()函数255
- 2.16 内存规整(memory compaction)262
- 2.16.1 内存规整实现263
- 2.16.2 小结272
- 2.17 KSM273
- 2.17.1 KSM实现274
- 2.17.2 匿名页面和KSM页面的区别293
- 2.17.3 小结294
- 2.18 Dirty COW内存漏洞296
- 2.19 总结内存管理数据结构和API309
- 2.19.1 内存管理数据结构的关系图309
- 2.19.2 内存管理中常用API312
- 2.20 最新更新和展望315
- 2.20.1 页面回收策略从zone迁移到node315
- 2.20.2 OOM Killer改进316
- 2.20.3 swap优化317
- 2.20.4 展望318
- 第3章 进程管理319
- 本章思考题319
- 3.1 进程的诞生320
- 3.1.1 init进程321
- 3.1.2 fork325
- 3.1.3 小结344
- 3.2 CFS调度器345
- 3.2.1 权重计算346
- 3.2.2 进程创建358
- 3.2.3 进程调度369
- 3.2.4 scheduler tick379
- 3.2.5 组调度382
- 3.2.6 PELT算法改进386
- 3.2.7 小结387
- 3.3 SMP负载均衡389
- 3.3.1 CPU域初始化389
- 3.3.2 SMP负载均衡401
- 3.3.3 唤醒进程415
- 3.3.4 调试421
- 3.3.5 小结422
- 3.4 HMP调度器422
- 3.4.1 初始化423
- 3.4.2 HMP负载调度425
- 3.4.3 新创建的进程436
- 3.4.4 小结437
- 3.5 NUMA调度器438
- 3.5.1 node和page的关系439
- 3.5.2 扫描进程441
- 3.5.3 NUMA缺页中断442
- 3.5.4 进程迁移450
- 3.5.5 小结455
- 3.6 EAS绿色节能调度器457
- 3.6.1 能效模型459
- 3.6.2 WALT算法465
- 3.6.3 唤醒进程480
- 3.6.4 CPU动态调频491
- 3.6.5 小结494
- 3.7 实时调度496
- 3.8 最新更新与展望500
- 3.8.1 进程管理更新500
- 3.8.2 展望500
- 第4章 并发与同步501
- 本章思考题501
- 4.1 原子操作与内存屏障503
- 4.1.1 原子操作503
- 4.1.2 内存屏障506
- 4.2 spinlock508
- 4.2.1 spinlock实现509
- 4.2.2 spinlock变种511
- 4.2.3 spinlock和raw_spin_lock512
- 4.3 信号量513
- 4.3.1 信号量513
- 4.3.2 小结516
- 4.4 Mutex互斥体517
- 4.4.1 MCS锁机制518
- 4.4.2 Mutex锁的实现525
- 4.4.3 小结531
- 4.5 读写锁531
- 4.5.1 读者信号量532
- 4.5.2 写者锁538
- 4.5.3 小结544
- 4.6 RCU544
- 4.6.1 经典RCU和Tree RCU547
- 4.6.2 Tree RCU设计551
- 4.6.3 小结573
- 4.7 内存管理中的锁574
- 4.8 最新更新与展望584
- 4.8.1 Queued Spinlock584
- 4.8.2 读写信号量优化591
- 4.8.3 展望592
- 4.8.4 推荐书籍593
- 第5章 中断管理594
- 本章思考题594
- 5.1 Linux中断管理机制595
- 5.1.1 ARM中断控制器595
- 5.1.2 硬件中断号和Linux中断号的映射599
- 5.1.3 注册中断610
- 5.1.4 ARM底层中断处理618
- 5.1.5 高层中断处理626
- 5.1.6 小结636
- 5.2 软中断和tasklet637
- 5.2.1 SoftIRQ软中断638
- 5.2.2 tasklet642
- 5.2.3 local_bh_disable local_bh_enable647
- 5.2.4 小结649
- 5.3 workqueue工作队列650
- 5.3.1 初始化工作队列652
- 5.3.2 创建工作队列659
- 5.3.3 调度一个work665
- 5.3.4 取消一个work675
- 5.3.5 和调度器的交互680
- 5.3.6 小结682
- 第6章 内核调试684
- 6.1 QEMU调试Linux内核684
- 6.1.1 QEMU运行ARM Linux内核684
- 6.1.2 QEMU调试ARM Linux内核687
- 6.1.3 QEMU运行ARMv8开发平台688
- 6.1.4 文件系统支持690
- 6.1.5 图形化调试691
- 6.1.6 实验进阶693
- 6.2 ftrace694
- 6.2.1 irqs跟踪器695
- 6.2.2 preemptoff跟踪器696
- 6.2.3 preemptirqsoff跟踪器697
- 6.2.4 function跟踪器698
- 6.2.5 动态ftrace699
- 6.2.6 事件跟踪700
- 6.2.7 添加tracepoint702
- 6.2.8 trace-cmd和kernelshark705
- 6.2.9 trace marker707
- 6.2.10 小结709
- 6.3 SystemTap710
- 6.4 内存检测714
- 6.4.1 slub_debug714
- 6.4.2 内存泄漏检测kmemleak718
- 6.4.3 kasan内存检测720
- 6.5 死锁检测722
- 6.6 内核调试秘籍728
- 6.6.1 printk728
- 6.6.2 动态打印730
- 6.6.3 RAM Console731
- 6.6.4 OOPS分析731
- 6.6.5 BUG_ON()和WARN_ON()734
以上就是本次关于配套资源的介绍和部分内容,我们还整理了以往更新的其它相关电子书资源内容,可以在下方直接下载,关于相关的资源我们在下方做了关联展示,需要的朋友们也可以参考下。
Linux内核相关资源
-
Linux Shell脚本攻略
Linux/GNU是一个不凡的电脑操作系统,有着平稳靠谱且极为强劲的开发工具。做为与电脑操作系统开展沟通交流的原生态页面,shell可以操纵全部电脑操作系统的运行,是与Linux开展互动*灵便的方
大小:1.67 MBLinux电子书
-
Linux系统编程
大小:2.1 MBLinux电子书
-
linux设备驱动程序(第二版)
linux设备驱动程序第二版 作者:(美)AlessandroRubini,JonathanCorbet 中国电力 原 O’Reilly 出版日期:2002 本书面向的读者是那些想在Linux操作系统下支持各种计算机外设,或者想开发新的硬件并在Linux下运行的人们。Linux是Unix市场中增长最快的部分,并且在许多应用领域获得了广泛的支持。现在,人们越来越清楚地认识到Linux是嵌入式系统的一个极佳平台,本书第二版已经成为该领域的经典之作。本书作者将以往那些口述式的经验和知识、或者隐晦的源代码注释
大小:15.23MBlinux
-
深入Linux内核架构
这书探讨了Linux内核的定义、构造和保持。主题思想包含任务管理、调度和进程管理,物理内存的管理方法及其内核与相关硬件设备的互动,客户室内空间的系统进程怎样浏览虚拟内存,怎样撰
大小:108.5 MBLinux电子书
-
构建嵌入式Linux系统
构建嵌入式Linux系统 作者:(美)KarimYaghmour 中国电力 原 OReilly 出版日期:2004-12-1 前言 第一章概述 定义 嵌入式Linux系统的实际应用 以多组件系统为例 设计与实现方法 第二章基本概念 主机类型 主机/目标板开发设置的类型 主机/目标板调试设置的类型 嵌入式Linux系统的一般架构 系统启动过程 引导配置的类型 系统存储器的设计 第三章所支持的硬件 处理器架构 总线与接口 I/O 存储设备 通用网络 工业级网络 系统监控 第四章开发工具 实际项目工作空间的
大小:10.38MBLinux
-
操作系统实践:基于Linux的应用与内核编程
《操作系统实践应用场景Linux的应用与内核编程》融合很多年操作系统课程内容理论研究课堂教学工作经验,应用场景当今时兴的开源系统操作系统Ubuntul4.04LTS(Linux内核3.13.0)设计方案了1组操
大小:55.1 MB操作系统电子书
-
《Linux实用教程》教案
内容介绍 本书以Fedora 8为基础,在内容安排上首先从介绍和安装Linux入手,由浅至深地介绍Linux系统,其内容主要包括Linux操作系统概述、Fedora 8系统的安装和删除、Linux图形界面、Linux字符界面、文件和目录、Linux常用操作命令、Shell编程、用户和组群账户管理、磁盘和文件系统管理、Linux日常管理和维护、Linux网络基本配置和Linux网络服务器配置。 全书内容由浅入深、全面细致,遵循理论和实践并重的原则,大量使用了图表和案例进行表述,便于读者理解
大小:10.15 MBLinux配套资源
-
Linux命令大全
Linux和windows相比,很多管控都需要用命令来操作。windows以直观的可视化的方式操作,特别适合在桌面端PC上操作执行相应的软件。 而Linux命令行方式的操作,特别是在服务器端编程、管理、运维方面,更加简单、短小、精悍。短短一行组合命令,即可完成在windows需要各种加工、整合的复杂高效的功能操作。 550 多个 Linux 命令,内容包含 Linux 命令手册、详解、学习,值得收藏的 Linux 命令速查手册。
大小:7.26 MBLinux
-
嵌入式Linux应用开发完全手册
嵌入式Linux应用开发完全手册 作者:韦东山 出版日期:2008-8-1 本书全面介绍了嵌入式Linux系统开发过程中,从底层系统支持到上层GUI应用的方方面面,内容涵盖Linux操作系统的安装及相关工具的使用、配置,嵌入式编程所需要的基础知识(交叉编译工具的选项设置、Makefile语法、ARM汇编指令等),硬件部件的使用及编程(囊括了常见硬件,比如UART、I2C、LCD等),U-Boot、Linux内核的分析、配置和移植,根文件系统的构造(包括移植busybox、glibc、制作映象文件
大小:111.09MBLinux
-
深入理解linux内核
大小:60 MBLinux电子书
下载地址
学习笔记

直接看代码吧,代码里有注释 复制代码 代码如下: #include stdio.h #include stdlib.h #include string.h #include pthread.h #include time.h #define MAX 3 int number =0; pthread_t id[2]; pthread_mutex_t mut; //初始化静态互斥锁 void thread1(void) { int i; printf("Hello,I am pthread1!\n"); for (i=0; iMAX; i++) { pthread_mutex_lock( //此处上锁,保证number的唯一性 number ++; printf("Thread1:number = %d\n",number); pthread_mutex_unlock( sleep(1); //linux c下 sleep(mi……

本文分享了Linux下控制(统计)文件的生成的C代码实现案例,供大家参考,具体内容如下 一、需求描述 不定时地在Linux机器下的某目录中放入文件,文件内容中包含了用户号码、起止时间等字段,现要求编写一程序来统计目前该目录中所有文件中的记录总条数及所有记录中的最早起始时间和最晚结束时间。 例如,该目录中有两个文件Test_1.txt和Test_2.txt,其中Test_1.txt文件内容为: ……