在 32位的 Linux 内核中,每个进程都独有 4GB 的虚拟内存空间,但所有进程却共用相同的物理内存空间。...vm_area_struct 结构 在Linux内核中,虚拟内存是用过结构体 vm_area_struct 来管理的,通过 vm_area_struct 结构体可以把虚拟内存划分为多个用途不相同的内存区...当调用 mmap() 时,内核会创建一个 vm_area_struct 结构,并且把 vm_start 和 vm_end 指向虚拟内存空间的某个内存区,并且把 vm_file 字段指向映射的文件对象。...对文件的读写 像 read()/write() 这些系统调用,首先需要进行内核空间,然后把文件内容读入到缓存中,然后再对缓存进行读写操作,最后由内核定时同步到文件中。过程如下图: ?
CPU数据通信总线 CPU通过地址线、数据线、控制信号组成的本地总线(或称为内部总线)与系统其它部分进行数据通信。 地址总线 地址总线用于内存或I/O设备的地址...
wait_queue_t wait; ktime_t expires, *to = NULL; if (timeout > 0) { // 转换为内核时间
IO是什么 ? IO(Input and Output)是输入输出接口。是CPU和其他外部设备(如串口、LCD、触摸屏、LED等)之间通信的接口。一般的,我们说...
文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ; 5.x 内核源码下载地址.../pub/linux/kernel/v5.x/linux-5.6.18.tar.gz 下载完 Linux 源码后 , 如果在 Windows 系统中解压 , 需要使用管理员权限在 命令行终端 中解压 ,...不同版本的 Linux 内核 区别 : 系统调用 : 其系统调用是相同的 , 新的版本可能会增加新的系统调用 ; 设备文件 : 各内核版本的设备文件都是相同的 , 但是 内部接口 可能不同 ; 二、使用...VSCode 阅读 Linux 内核源码 ---- 参考 【开发环境】安装 Visual Studio Code 开发环境 ( 下载 Visual Studio Code 安装器 | Visual Studio
文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ; 5.x 内核源码下载地址.../pub/linux/kernel/v5.x/linux-5.6.18.tar.gz 下载完 Linux 源码后 , 如果在 Windows 系统中解压 , 需要使用管理员权限在 命令行终端 中解压 ,...VSCode 阅读 Linux 内核源码 ---- 参考 【开发环境】安装 Visual Studio Code 开发环境 ( 下载 Visual Studio Code 安装器 | Visual Studio...按钮 , 此时就可以在 VSCode 中阅读 Linux 内核源码 ;
epoll实现 epoll 的实现比poll/select 复杂一些,这是因为: 1. epoll_wait, epoll_ctl 的调用完全独立开来,内核需要锁机制对这些操作进行保护,并且需要持久的维护添加到...其中的visited_list和visited标记完全是为了优化处理速度,如果没有visited_list和visited标记函数也是能够工作的。...epoll_event epds; error = -EFAULT; if (ep_op_has_event(op) && // 复制用户空间数据到内核
epoll实现 epoll 的实现比poll/select 复杂一些,这是因为: 1. epoll_wait, epoll_ctl 的调用完全独立开来,内核需要锁机制对这些操作进行保护,并且需要持久的维护添加到...其中的visited_list和visited标记完全是为了优化处理速度,如果没有visited_list和visited标记函数也是能够工作的。
. */ *err=-EAGAIN; } return skb;//返回该数据包 } skb_copy_datagram() //将内核缓冲区中数据复制到用户缓冲区 //拷贝size
所以,Linux 根据功能上的差异,来对虚拟内存空间进行管理。 今天,我们来介绍一下 Linux 对虚拟内存空间管理的细节。...Linux 根据功能上的差异,把整个虚拟内存空间划分为多个不同区间,称为 段。 我们先来看看 Linux 进程虚拟内存空间的布局图,如图 1 所示: ?...虚拟内存区 从上面的介绍可知,Linux 按照功能上的差异,把虚拟内存空间划分为多个 段。那么在内核中,是通过什么结构来管理这些段的呢? 答案就是:vm_area_struct。...我们通过图 2 来展示内核是怎么通过 vm_area_struct 结构来管理进程中的所有 段: ? 从上图可以看出,内核通过一个链表和一棵红黑树来管理进程中所有的 段。...通过上面的过程,内核就把应用程序的所有段加载到虚拟内存中。 总结 本文主要介绍了 Linux 内核是怎么加载应用程序,并且在虚拟内存中建立各个段的布局。
作者在前言里面写到: 这是一本剖析 TensorFlow 内核工作原理的书籍,并非讲述如何使用 TensorFlow 构建机器学习模型,也不会讲述应用 TensorFlow 的最佳实践。...本书将通过剖析 TensorFlow 源代码的方式,揭示 TensorFlow 的系统架构、领域模型、工作原理、及其实现模式等相关内容,以便揭示内在的知识。 可以看出,这必定是一本干货满满的书。
文章主要包含以下内容: Kafka为什么快 Kafka为什么稳 Kafka该怎么用 该文章为开篇引导之做,后续会有对应的HBase,Spark,Kylin,Pulsar等相关组件的剖析。...对于这两个Cache,使用Linux的同学通常不会陌生,例如我们在Linux下执行free命令的时候会看到如下的输出: ?...操作系统将数据从磁盘拷贝到内核区的pagecache 用户程序将内核区的pagecache拷贝到用户区缓存 用户程序将用户区的缓存拷贝到socket缓存中 操作系统将socket缓存中的数据拷贝到网卡的...buffer上,发送数据 可以发现一次IO请求操作进行了2次上下文切换和4次系统调用,而同一份数据在缓存中多次拷贝,实际上对于拷贝来说完全可以直接在内核态中进行,也就是省去第二和第三步骤,变成这样: ?...如果kafka生产消费配合的好,那么数据完全走内存,这对集群的吞吐量提升是很大的。
下载大文件的时候想取消接收,在 HTTP/1 里只能断开 TCP 连接重新“三次握手”,成本很高,而在 HTTP/2 里就可以简单地发送一个“RST_STREAM”中断流,而长连接会继续保持。
前面一篇文章介绍了Kafka的具体内容,今天讲述一下HBase相关的知识。首先HBase作为大数据发展初期伴随Google三大论文问世的一个组件,在今天依旧被广...
arm-linux-androideabi-4.9 aarch64-linux-android-4.9 x86-4.9 x86_64-4.9 这其实是针对不同的CPU架构平台,我们熟知的是arm平台,Android...上面介绍完了不同架构的区别,现在可以看看有什么具体的交叉编译工具,可以选择arm平台进去看看: arm-linux-androideabi-gcc : 编译c文件的交叉编译器,和gcc类似,不同的是arm-linux-androideabi-gcc...arm-linux-androideabi-g++ : 编译cpp文件的交叉编译器 arm-linux-androideabi-addr2line : 反解出堆栈的工具,Android上的Native...crash堆栈都是通过addr2line反解出来的 arm-linux-androideabi-ld : 交叉链接器,可以将编译出来的文件链接成在arm平台上运行的文件 arm-linux-androideabi-readelf...hello.c,编译指令如下: $ANDROID_NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc
看Linux代码,最好结合Linux内核开发文档。Linux内核开发文档在https://www.kernel.org/ ,访问速度慢。一般开发,也只需要某一个版本的文档。...这时,执行下列命令,可以下载Linux内核开发文档到本地查看,保证速度飞快。下列命令中,我指定了Linux内核版本4.19。...nohup wget -c -r -np -k -L -p https://www.kernel.org/doc/html/v4.19/ 下载时,会有类似下列的信息输出。...下载后,得到1949个文件,大约45.7 MB 。
作者:刘光聪 编辑:机器之心 & Amusi 这是一本剖析 TensorFlow 内核工作原理的书籍,并非讲述如何使用 TensorFlow 构建机器学习模型,也不会讲述应用 TensorFlow 的最佳实践...本书将通过剖析 TensorFlow 源代码的方式,揭示 TensorFlow 的系统架构、领域模型、工作原理、及其实现模式等相关内容,以便揭示内在的知识。...项目链接:https://github.com/horance-liu/tensorflow-internals 在项目地址中,作者提供了全部的 LaTex 源文件,也提供了对应的 PDF,读者可直接下载...本书适合于渴望深入了解 TensorFlow 内核设计,期望改善 TensorFlow 系统设计和性能优化,及其探究 TensorFlow 关键技术的设计和实现的系统架构师、AI 算法工程师、和 AI...PDF下载地址:https://raw.github.com/horance-liu/tensorflow-internals/master/tensorflow-internals.pdf ?
内核——操作系统的内在核心 设备驱动程序 启动引导程序 命令行shell 其他种类的用户界面—-操作系统的外在表象 基本的文件管理工具和系统工具 Linux内核的组成 Linux内核源代码目录结构是什么...Linux内核的有哪些组成部分? 进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC) Linux内核的的组成部分之间有什么关系?...Makefile:分布在Linux 内核源代码中的Makefile,定义Linux 内核的编译规则。 配置文件(Kconfig):给用户提供配置选择的功能。...记录哪些部分被编译入内核、哪些部分被编译为内核模块。 在Linux 内核中增加程序需要完成哪些工作? 将编写的源代码复制到Linux 内核源代码的相应目录。...次引导加载程序加载Linux内核和可选的初始RAM 磁盘,将控制权交给Linux内核源代码。 运行被加载的内核,并启动用户空间应用程序。
[下载地址 ] PHP作为最流行的语言之一,自第一个版本发布至今的二十几年里经历了多次重大改进,PHP7版本最大的特色在于其性能上的突破,比PHP5快了一倍。...目前,关于PHP内核的资料非常有限,《PHP7内核剖析》以当前最为流行的PHP7版本为基础,系统性地、尽可能详细地介绍PHP语言底层的实现,旨在帮助更多的开发者进一步理解PHP,参与到PHP的实现中,为未来...《PHP7内核剖析》适用于有一定C语言基础的PHP高级工程师,或者想了解PHP7的内部实现、扩展开发的工程师。
领取专属 10元无门槛券
手把手带您无忧上云