![](https://img-blog.csdnimg.cn/20200803214347287.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux内核
记录自己的内核学习笔记以及相关的总结,参考书籍:
Linux内核设计与实现
深入Linux内核架构
Miller-Xie
这个作者很懒,什么都没留下…
展开
-
Linux内核原理系列总结
主要总结了本人Linux内核原理学习的系列笔记 Linux内核原理总结 Linux内核原理之进程管理 Linux内核原理之进程调度 Linux内核原理之系统调用 Linux内核原理之网络 Linux内核原理之内存管理 Linux内核原理之虚拟文件系统(上) Linux内核原理之虚拟文件系统(中) Linux内核原理之虚拟文件系统(下) Linux内核原理之通用块设备层 Linux内核原理之进程地址空间 Linux内核原理之缓存 参考资料 Linux内核设计与实现 深入Linux内核架构 ...原创 2020-09-05 12:02:27 · 854 阅读 · 0 评论 -
Linux内核原理之缓存
文章目录页缓存和块缓存页缓存的结构管理和查找缓存的页回写修改的数据块缓存的结构地址空间数据结构页缓存的实现分配页查找页在页上等待对整页的操作页缓存预读 页缓存和块缓存 内核为块设备提供了两种通用的缓存方案: 页缓存:针对以页为单位的所有操作,例如内存映射技术,负责了块设备的大部分工作 块缓存:以块为操作单位,存取的单位是设备的各个块,由于块长度取决于特定的文件系统,块缓存能处理不通长度的块 缓冲区曾经是块设备进行I/O操作的传统方法,目前只用于支持很小的读取操作,对于块传输的标准数据结构变为struct原创 2020-09-05 11:40:26 · 1041 阅读 · 0 评论 -
Linux内核原理之进程地址空间
文章目录进程地址空间简介进程虚拟地址空间进程地址空间的布局内存映射的原理数据结构树和链表虚拟内存区域的表示优先查找树对区域的操作address_space内存映射创建映射删除映射反向映射数据结构建立逆向映射 进程地址空间 用户层进程的虚拟地址空间是Linux的一个重要抽象:它向每个运行进程提供了同样的系统视图,使得多个进程可以同时运行,而不会干扰其他进程内存中的内容 简介 本章主要关注用户管理虚拟地址空间的方法 每个应用程序都有自身的地址空间,与所有其他应用程序分隔开 在巨大的线性结构地址空间中,只有很少原创 2020-09-05 11:26:32 · 452 阅读 · 0 评论 -
Linux内核原理之通用块设备层
文章目录通用块设备层I/O体系结构访问设备设备文件字符设备、块设备与其它设备使用ioctl进行设备寻址设备数据库与文件系统关联inode中的设备文件成员标准文件操作用于字符设备的标准操作用于块设备的标准操作块设备操作块设备的表示数据结构向系统添加磁盘和分区打开块设备文件请求结构BIO提交请求 通用块设备层 I/O体系结构 与外设的通信通常称为输入输出,缩写为I/O。在实现外设的I/O时,内核需要处理好3个问题: 根据具体的设备型号和模型,使用各种方法对硬件寻址 内核必须向用户应用程序和系统工具提供访问各种原创 2020-09-05 11:12:58 · 1947 阅读 · 0 评论 -
Linux内核原理之网络
文章目录网络网络实现的分层模型网络命名空间套接字缓冲区使用套接字缓冲区管理数据管理套接字缓冲区数据网络访问层网络设备的表示接收分组发送分组网络层IPv4接收分组交付到本地传输层分组转发发送分组netfilter传输层UDPTCP应用层socket数据结构套接字和文件socketcall系统调用创建套接字接收数据发送数据 网络 网络实现的分层模型 内核网络子系统的实现与TCP/IP模型很相似,相关的C语言代码划分为不同层次,各层次都有明确定义的任务,各个层次只能通过明确定义的接口与上下紧邻的层次通信(这样设计原创 2020-09-05 10:39:28 · 812 阅读 · 0 评论 -
Linux内核原理之虚拟文件系统(下)
文章目录处理VFS对象文件系统操作注册文件系统装载和卸载mount系统调用umount系统调用文件操作过程查找inode打开文件读取和写入参考资料 处理VFS对象 文件系统操作 注册文件系统 文件系统注册到内核时,是编译为模块,或者持久编译到内核。fs/super.c中的register_filesystem函数用来向内核注册文件系统,该函数扫描文件系统结构组成的单链表,直至到达链表尾部然后添加新的元素或者找到所需的文件系统 装载和卸载 装载操作开始于超级块的读取,file_system_type中保存的r原创 2020-06-25 17:24:35 · 538 阅读 · 0 评论 -
Linux内核原理之虚拟文件系统(中)
文章目录VFS对象及数据结构超级块inode对象目录项缓存特定于进程的信息文件文件系统参考资料 VFS对象及数据结构 VFS的四个对象类型: 超级块对象:代表具体的文件系统 索引节点对象:代表具体文件 目录项对象:代表目录项,是路径的一个组成部分 文件对象:代表进程打开的文件 注意:VFS将目录作为一个文件来处理,不存在目录对象;目录项不同于目录 每个对象中都包含一个操作对象,其中描述了内核针对主要对象可以使用的方法 super_operations对象:内核针对特定文件系统调用的方法,如writ原创 2020-06-25 17:03:25 · 676 阅读 · 0 评论 -
Linux内核原理之系统调用
文章目录第5章 系统调用5.1 与内核通信5.2 API、POSIX和C库5.3 系统调用5.3.1 系统调用号5.3.2 系统调用的性能5.4 系统调用处理程序5.4.1 指定恰当的系统调用5.4.2 参数传递5.5 系统调用的实现5.5.1 实现系统调用5.5.2 参数验证5.6 系统调用上下文5.6.1 绑定一个系统调用的最后步骤5.6.2 从用户空间访问系统调用 第5章 系统调用 5.1 与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层,主要作用是: 为用户空间提供了硬件的抽象接口原创 2020-05-31 22:53:08 · 659 阅读 · 0 评论 -
Linux内核原理之进程调度
文章目录第4章 进程调度4.1 多任务4.2 Linux的进程调度4.3 策略4.3.1 I/O消耗型和CPU消耗型的进程4.3.2 进程优先级4.3.3 时间片4.4 Linux调度算法4.4.1 调度器类4.4.2 Unix系统中的进程调度4.4.3 公平调度4.5 Linux调度的实现4.5.1 时间记账4.5.2 进程选择4.5.3 调度器入口4.5.4 睡眠和唤醒4.6 抢占和上下文切换4.6.1 用户抢占4.6.2 内核抢占4.7 实时调度策略 第4章 进程调度 进程调度程序:在可运行态进程原创 2020-05-24 21:01:51 · 641 阅读 · 0 评论 -
Linux内核原理之进程管理
第3章 进程管理 3.1 进程 进程:处于执行期的程序以及相关资源(打开的文件、挂起的信号、内核内部数据、处理器状态等)的总称 线程:是在进程中活动的对象,每个线程都拥有一个独立的程序计数器、进程栈和一组进程寄存器。内核调度的对象是线程,不是进程 Linux不区分进程和线程,对它来说,线程只不过是一种特殊的进程而已 现代操作系统的两种虚拟机制: 虚拟处理器:给进程一种假象,让它觉得自己在独享处理器 虚拟内存:让进程在分配和管理内存时觉得自己拥有整个系统的内存资源 注意:线程之间可以共享虚拟内存,但是原创 2020-05-24 20:59:51 · 720 阅读 · 0 评论 -
Linux内核原理之内存管理
第12章 内存管理 内核不能像用户空间那样奢侈的使用内存,获取内存币用户空间复杂很多 12.1 页 内核把物理页作为内核管理的基本单元,内存管理单元(MMU)是管理内存并将虚拟内存转换为物理内存的硬件,它以页为单位来管理系统中的页表 结构体struct page表示系统中的每个物理页 struct page { unsigned long flags, atomi...原创 2020-02-22 21:05:10 · 353 阅读 · 0 评论 -
Linux内核原理之虚拟文件系统(上)
文章目录第13章 虚拟文件系统13.1 通用文件系统接口13.2 文件系统抽象层13.3 Unix文件系统13.4 VFS对象及数据结构对象类型操作对象13.5 超级块对象13.6 超级块操作13.7 索引节点对象13.8 索引节点操作13.9 目录项对象13.9.1 目录项状态13.9.2 目录项缓存13.10 目录项操作13.11 文件对象13.12 文件操作13.13 和文件系统相关的数据结...原创 2020-02-22 10:02:58 · 383 阅读 · 0 评论