摘要: 虚拟文件系统(VFS)是linux内核和具体I/O设备之间的封装的一层共通访问接口,通过这层接口,linux内核可以以同一的方式访问各种I/O设备。 虚拟文件系统本身是linux内核的一部分,是纯软件的东西,并不需要任何硬件的支持。 主要内容: 虚拟文件系统的作用 虚拟文件系统的4个主要对象 文件系 阅读全文
posted @ 2017-08-24 18:25 闫宝平 阅读(248) 评论(0) 推荐(0)
摘要: 内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决)。 所有内核的内存管理必须要简洁而且高效。 主要内容: 内存的管理单元 获取内存的方法 获取高端内存 内核内存的分配方式 总结 1. 内存的管理单元 内存最基本的管理单元是页,同时按照内 阅读全文
posted @ 2017-08-24 18:17 闫宝平 阅读(230) 评论(0) 推荐(0)
摘要: 系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要。 主要内容: 系统时间 定时器 定时器相关概念 定时器执行流程 实现程序延迟的方法 定时器和延迟的例子 1. 系统时间 系统中管理的时间有2种:实际时间和定时器 阅读全文
posted @ 2017-08-24 18:10 闫宝平 阅读(261) 评论(0) 推荐(0)
摘要: 内核中提供了多种方法来防止竞争条件,理解了这些方法的使用场景有助于我们在编写内核代码时选用合适的同步方法, 从而即可保证代码中临界区的安全,同时也让性能的损失降到最低。 主要内容: 原子操作 自旋锁 读写自旋锁 信号量 读写信号量 互斥体 完成变量 大内核锁 顺序锁 禁止抢占 顺序和屏障 总结 1. 阅读全文
posted @ 2017-08-24 17:47 闫宝平 阅读(182) 评论(0) 推荐(0)
摘要: 存在共享资源(共享一个文件,一块内存等等)的时候,为了防止并发访问时共享资源的数据不一致,引入了同步机制。 主要内容: 1. 同步的概念 了解同步之前,先了解另外2个概念: 临界区 - 也称为临界段,就是访问和操作共享数据的代码段。 竞争条件 - 2个或2个以上线程在临界区里同时执行的时候,就构成了 阅读全文
posted @ 2017-08-24 17:46 闫宝平 阅读(208) 评论(0) 推荐(0)
摘要: 在前一章也提到过,之所以中断会分成上下两部分,是由于中断对时限的要求非常高,需要尽快的响应硬件。 主要内容: 中断下半部处理 实现中断下半部的机制 总结中断下半部的实现 中断实现示例 1. 中断下半部处理 那么对于一个中断,如何划分上下两部分呢?哪些处理放在上半部,哪些处理放在下半部? 这里有一些经 阅读全文
posted @ 2017-08-24 17:45 闫宝平 阅读(321) 评论(0) 推荐(0)
摘要: 中断处理一般不是纯软件来实现的,需要硬件的支持。通过对中断的学习有助于更深入的了解系统的一些底层原理,特别是驱动程序的开发。 主要内容: 什么是中断 中断类型 中断相关函数 中断处理机制 中断控制方法 总结 1. 什么是中断 为了提高CPU和外围硬件(硬盘,键盘,鼠标等等)之间协同工作的性能,引入了 阅读全文
posted @ 2017-08-24 17:33 闫宝平 阅读(205) 评论(0) 推荐(0)
摘要: 内核数据结构贯穿于整个内核代码中,这里介绍4个基本的内核数据结构。 利用这4个基本的数据结构,可以在编写内核代码时节约大量时间。 主要内容: 链表 队列 映射 红黑树 1. 链表 链表是linux内核中最简单,同时也是应用最广泛的数据结构。 内核中定义的是双向链表。 1.1 头文件简介 内核中关于链 阅读全文
posted @ 2017-08-24 17:28 闫宝平 阅读(170) 评论(0) 推荐(0)
摘要: 主要内容: 1. 什么是系统调用 简单来说,系统调用就是用户程序和硬件设备之间的桥梁。 用户程序在需要的时候,通过系统调用来使用硬件设备。 系统调用的存在,有以下重要的意义: 1)用户程序通过系统调用来使用硬件,而不用关心具体的硬件设备,这样大大简化了用户程序的开发。 比如:用户程序通过write( 阅读全文
posted @ 2017-08-24 17:24 闫宝平 阅读(220) 评论(0) 推荐(0)
摘要: 主要内容: 什么是调度 调度实现原理 Linux上调度实现的方法 调度相关的系统调用 1. 什么是调度 现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程)。 这个管理程序就是调度程序,它的功能说起来很简单: 此外,为 阅读全文
posted @ 2017-08-24 17:22 闫宝平 阅读(241) 评论(0) 推荐(0)
摘要: 进程是所有操作系统的核心概念,同样在linux上也不例外。 主要内容: 进程和线程 进程的生命周期 进程的创建 进程的终止 1. 进程和线程 进程和线程是程序运行时状态,是动态变化的,进程和线程的管理操作(比如,创建,销毁等)都是有内核来实现的。 Linux中的进程于Windows相比是很轻量级的, 阅读全文
posted @ 2017-08-24 17:21 闫宝平 阅读(217) 评论(0) 推荐(0)
摘要: 在尝试内核开发之前,需要对内核有个整体的了解。 主要内容: 获取内核源码 内核源码的结构 编译内核的方法 内核开发的特点 1. 获取内核源码 内核是开源的,所有获取源码特别方便,参照以下的网址,可以通过git或者直接下载压缩好的源码包。 http://www.kernel.org 2. 内核源码的结 阅读全文
posted @ 2017-08-24 17:14 闫宝平 阅读(221) 评论(0) 推荐(0)
摘要: 本篇简单介绍内核相关的基本概念。 主要内容: 单内核和微内核 内核版本号 1. 单内核和微内核 原理 优势 劣势 单内核 微内核 Linux的内核虽然是基于单内核的,但是经过这么多年的发展,也具备微内核的一些特征。(体现了Linux实用至上的原则) 主要有以下特征: 2. 内核版本号 内核的版本号主 阅读全文
posted @ 2017-08-24 17:10 闫宝平 阅读(302) 评论(0) 推荐(0)