linux内核设计与实现
oyhy_
这个作者很懒,什么都没留下…
展开
-
<<Linux内核的设计与实现>>读书笔记(三)-Linux的进程
进程是所有操作系统的核心概念,同样在linux上也不例外.主要内容: 进程和线程 进程的生命周期 进程的创建 进程的终止 1.进程和线程进程和线程是程序运行时的状态,是动态变化的,进程和线程的管理操作(比如创建,销毁等)都是由内核来实现的.Linux中的进程于Windows相比是很轻量级的,而且不严格区分进程和线程,线程不过是一种特殊的进程.所以下面只讨论进程,只有当线程和进程存在不一样的地方才提以转载 2017-05-07 19:37:24 · 444 阅读 · 0 评论 -
<<Linux内核设计与实现>>读书笔记(七)-中断处理
中断处理一般不是纯软件来实现的,需要硬件的支持.通过对中断的学习有助于更深入地了解系统的一些底层原理,特别是驱动程序的开发.主要内容: 什么是中断 中断类型 中断相关函数 中断处理机制 中断控制方法 总结 1.什么是中断为了提高CPU和外围硬件(硬盘,键盘,鼠标等等)之间协同工作的性能,引入了中断的机制.没有中断的话,CPU和外围设备之间协同工作可能只有轮询这个方法:CPU定期检查硬件状态,需要处理转载 2017-05-09 17:29:13 · 347 阅读 · 0 评论 -
<<Linux内核设计与实现>>读书笔记(二)-内核开发的准备
在尝试内核开发之前,需要对内核有个整体的了解.主要内容 获取内核源码 内核源码的结构 编译内核的方法 内核开发的特点 1.获取内核源码内核是开源的,所以获取源码特别方便,参照以下的网址,可以通过git或者直接下载压缩好的源码包.http://www.kernel.org2.内核源码的结构 目录 说明 arch 特定体系结构的代码 block 块设备I/O层 crypo转载 2017-05-07 15:36:05 · 287 阅读 · 0 评论 -
<<Linux内核设计与实现>>读书笔记(六)-内核数据结构
内核数据结构贯穿于整个内核代码中,这里介绍4个基本的内核数据结构.利用这4个基本的数据结构,可以在编写内核代码时节约大量时间.主要内容: 链表 队列 映射 红黑树 1.链表链表是linux内核中最简单,同时也是应用最广泛的数据结构. 内核中定义的是双向链表.1.1 头文件简介内核中关于链表定义的代码位于:include/linux/list.h list.h文件中对每个函数都有注释,这里就不详细转载 2017-05-08 22:43:27 · 345 阅读 · 0 评论 -
<<Linux内核设计与实现>>读书笔记(四)-进程的调度
主要内容: 什么是调度 调度实现原理 Linux上调度实现的方法 调度相关的系统调用 1.什么是调度现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好地运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程).这个管理程序就是调度程序,它的功能说起来很简单: 决定哪些进程运行,哪些进程等待 决定每个进程运行多长时间 此外,为了获得更好的用户体验,运行中的进程还可以立即被其他转载 2017-05-08 00:43:07 · 384 阅读 · 0 评论 -
<<Linux内核设计与实现>>读书笔记(一)-内核简介
本章简单介绍内核相关的基本概念.主要内容: 单内核和微内核 内核版本号 1.单内核和微内核 原理 优势 劣势 单内核 整个内核都在一个大内核地址空间上运行 1.简单.2.高效:所有内核都在一个大的地址空间上,所以内核各个功能之间的调用和调用函数类似,几乎没有性能开销. 微内核 内核按功能被划分成各个独立的过程.每个过程独立地运行在自己的地址空间上 安全:内核的转载 2017-05-07 13:05:29 · 272 阅读 · 0 评论 -
<<Linux内核设计与实现>>读书笔记(十二)-内存管理
内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决).所有内核的内容管理必须简洁而且高效.主要内容: 内存的管理单元 获取内存的方法 获取高端内存 内核内存的分配方式 总结1.内存的管理单元内存最基本的管理单元是页,同时按照内存地址的大小,大致分为3个区. 1.1 页页的大小与体系结构有关,在 x86 结构中一般是 4KB 或者 8KB.转载 2017-05-14 01:52:35 · 470 阅读 · 0 评论 -
<<Linux内核设计和实现>>读书笔记(十一)-定时器和时间管理
系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要. 主要内容: 系统时间 定时器 定时器相关概念 定时器执行流程 实现程序延迟的方法 定时器和延迟的例子 1.系统时间系统管理的时间有2种:实际时间和定时器.1.1 实际时间实际时间就是现实中钟表上显示的时间,其中内核并不常用这个时间,主要是用户空间的程序有时需要转载 2017-05-13 01:24:18 · 967 阅读 · 0 评论 -
<<Linux内核设计与实现>>读书笔记(十)-内核同步方法
内核中提供了多种方法来防止竞争条件,理解这些方法的使用场景有助于我们在编写内核代码时选用合适的同步方法,从而即可保证代码中临界区的安全,同时也让性能损失降到最低.主要内容: 原子操作 自旋锁 读写自旋锁 信号量 读写信号量 互斥体 完成变量 大内核锁 顺序锁 禁止抢占 顺序和屏障 总结1.原子操作原子操作是由编译器来保证的,保证一个线程数据的操作不会被其他线程打断.原子操作有2类: 原子整数操作,转载 2017-05-11 00:45:12 · 556 阅读 · 0 评论 -
<<Linux内核设计与实现>>读书笔记(九)-内核同步介绍
存在共享资源(共享一个文件,一块内存等等)的时候,为了防止并发访问时共享资源的数据不一致,引入了同步机制.主要内容: 同步的概念 同步的方法-加锁 死锁 锁的粒度1.同步的概念了解同步之前,先了解另外2个概念: 临界区-也称为临界段,就是访问和操作共享数据的代码段. 竞争条件-2个或2个以上线程在临界区里同时执行的时候,就构成了竞争条件. 所谓同步,就是防止在临界区形成竞争条件.如果临界区里是原子操转载 2017-05-10 14:09:18 · 486 阅读 · 0 评论 -
<<Linux内核设计与实现>>读书笔际(五)-系统调用
主要内容: 什么是系统调用 Linux上的系统调用实现原理 一个简单的系统调用的实现 1.什么是系统调用简单来说,系统调用就是用户程序和硬件设备之间的桥梁.用户程序在需要的时候,通过系统调用来使用硬件设备.系统调用的存在,有以下重要的意义:1)用户程序通过系统调用来使用硬件,而不关心具体的硬件设备,这样大大简化了用户程序的开发. 比如:用户程序通过write()系统调用就可以将数据写入文件,而转载 2017-05-08 18:12:23 · 347 阅读 · 0 评论 -
<<Linux内核设计与实现>>读书笔记(八)-中断下半部的处理
在前一章也提到过,之所以中断会分成上下两部分,是由于中断对时限的要求非常高,需要尽快地响应硬件.主要内容: 中断下半部的处理 实现中断下半部的机制 总结中断下半部的实现 中断实现示例1.中断下半部处理那么对于一个中断,如果划分上下两部分呢?哪些处理放在上半部,哪些处理放在下半部?这里有一些经验可供借鉴: 如果一个任务对时间十分敏感,将其放在上半部 如果一个任务和硬件有关,将其放在上半部 如果一个任务转载 2017-05-10 00:35:41 · 624 阅读 · 0 评论