摘要:
Table of Contents1. 发布站点 by emacs org-mode1.1 org-mode 自带的导出方法1.2 批量导出1.3 css 美化1.4 导出html1. 发布站点 by emacs org-modeorg-mode 写文档做笔记啥的很方便, 反应超快(因为是文本文件), 而且在emacs中可以显示出类似word的效果. 但是给没有emacs的人看时, 就不太方便.(没有高亮显示, 也无法在文本中跳转等等)为了将继续使用 org-mode 带来的便利, 也为了方便别人查看自己的文档, 稍稍调查了一下org-mode导出html的功能.1.1 org-mode 自带 阅读全文
摘要:
读完这本书回过头才发现, 第一篇笔记居然是 2012年8月发的, 将近一年半的时间才看完这本书(汗!!!).为了方便以后查看, 做个《Linux内核设计与实现》读书笔记 的目录:《Linux内核设计与实现》读书笔记(一)-内核简介《Linux内核设计与实现》读书笔记(二)- 内核开发的准备《Linu... 阅读全文
摘要:
linux最吸引我的地方之一就是它拥有一个高手云集的社区, 还有就是如果能=为linux内核中贡献代码, 一定是一件令人自豪的事情.下面主要总结一些和贡献代码相关的主要内容.加入社区编码风格提交补丁总结1. 加入社区如果想为linux贡献代码, 那么加入linux社区是必须的, 加入了社区, 不仅可以及时内核的最新消息, 而且可以及时和社区内有经验的内核开发者交流经验.同时也是提交代码和讨论代码的地方, 了解社区的规则, 融入社区环境之中, 才能更好的学习内核, 体会内核开发的乐趣和成就感.内核社区说白了就是内核邮件列表(LKML linux kernel mail list)订阅邮件列表的网 阅读全文
摘要:
linux内核的移植性非常好, 目前的内核也支持非常多的体系结构(有20多个).但是刚开始时, linux也只支持 intel i386 架构, 从 v1.2版开始支持 Digital Alpha, Intel x86, MIPS和SPARC(虽然支持的还不是很完善).从 v2.0版本开始加入了对 Motorala 68K和PowerPC的官方支持, v2.2版本开始新增了 ARMS, IBM S390和UltraSPARC的支持.v2.4版本支持的体系结构数达到了15个, v2.6版本支持的体系结构数目提高到了21个.目前的我使用的系统是 Fedora20, 支持的体系结构有31个之多.(源 阅读全文
摘要:
内核调试的难点在于它不能像用户态程序调试那样打断点,随时暂停查看各个变量的状态。也不能像用户态程序那样崩溃后迅速的重启,恢复初始状态。用户态程序和内核交互,用户态程序的各种状态,错误等可以由内核来捕获并显示。而内核是直接和硬件交互的,内核出错之后整个系统就无法正常运行了,所以要想熟练的进行内核调试,首先要熟悉内核已经给我们提供的工具,然后实实在在的去做一些内核功能的开发,在开发的过程中不断熟悉内核代码,增加内核调试的经验。主要内容:内核调试的难点内核调试的工具和方法总结1. 内核调试的难点内核调试的难点大致有以下几个:重现bug困难 - 如果能够重现一个bug, 相当于成功了一半. (特别是有 阅读全文
摘要:
本章主要讨论与linux的设备驱动和设备管理的相关的4个内核成分,设备类型,模块,内核对象,sysfs。主要内容:设备类型内核模块内核对象sysfs总结1. 设备类型linux中主要由3种类型的设备,分别是:设备类型代表设备特点访问方式块设备硬盘,光盘随机访问设备中的内容一般都是把设备挂载为文件系统后再访问字符设备键盘,打印机只能顺序访问(一个一个字符或者一个一个字节)一般不挂载,直接和设备交互网络设备网卡打破了Unix "所有东西都是文件" 的设计原则通过套接字API来访问除了以上3种典型的设备之外,其实Linux中还有一些其他的设备类型,其中见的较多的应该算是" 阅读全文
摘要:
好久没有更新了。。。主要内容:缓存简介页高速缓存页回写1. 缓存简介在编程中,缓存是很常见也很有效的一种提高程序性能的机制。linux内核也不例外,为了提高I/O性能,也引入了缓存机制,即将一部分磁盘上的数据缓存到内存中。1.1 原理之所以通过缓存能提高I/O性能是基于以下2个重要的原理:CPU访问内存的速度远远大于访问磁盘的速度(访问速度差距不是一般的大,差好几个数量级)数据一旦被访问,就有可能在短期内再次被访问(临时局部原理)1.2 策略缓存的创建和读取没什么好说的,无非就是检查缓存是否存在要创建或者要读取的内容。但是写缓存和缓存回收就需要好好考虑了,这里面涉及到「缓存内容」和「磁盘内容」 阅读全文
摘要:
进程地址空间也就是每个进程所使用的内存,内核对进程地址空间的管理,也就是对用户态程序的内存管理。主要内容:地址空间(mm_struct)虚拟内存区域(VMA)地址空间和页表1. 地址空间(mm_struct)地址空间就是每个进程所能访问的内存地址范围。这个地址范围不是真实的,是虚拟地址的范围,有时甚至会超过实际物理内存的大小。现代的操作系统中进程都是在保护模式下运行的,地址空间其实是操作系统给进程用的一段连续的虚拟内存空间。地址空间最终会通过页表映射到物理内存上,因为内核操作的是物理内存。虽然地址空间的范围很大,但是进程也不一定有权限访问全部的地址空间(一般都是只能访问地址空间中的一些地址区间 阅读全文
摘要:
最近太忙,居然过了2个月才更新第十四章。。。。主要内容:块设备简介内核访问块设备的方法内核I/O调度程序1. 块设备简介I/O设备主要有2类:字符设备:只能顺序读写设备中的内容,比如 串口设备,键盘块设备:能够随机读写设备中的内容,比如 硬盘,U盘字符设备由于只能顺序访问,所以应用场景也不多,这篇文章主要讨论块设备。块设备是随机访问的,所以块设备在不同的应用场景中存在很大的优化空间。块设备中最重要的一个概念就是块设备的最小寻址单元。块设备的最小寻址单元就是扇区,扇区的大小是2的整数倍,一般是 512字节。扇区是物理上的最小寻址单元,而逻辑上的最小寻址单元是块。为了便于文件系统管理,块的大小一般 阅读全文
摘要:
虚拟文件系统(VFS)是linux内核和具体I/O设备之间的封装的一层共通访问接口,通过这层接口,linux内核可以以同一的方式访问各种I/O设备。虚拟文件系统本身是linux内核的一部分,是纯软件的东西,并不需要任何硬件的支持。主要内容:虚拟文件系统的作用虚拟文件系统的4个主要对象文件系统相关的数据结构进程相关的数据结构小结1. 虚拟文件系统的作用虚拟文件系统(VFS)是linux内核和存储设备之间的抽象层,主要有以下好处。- 简化了应用程序的开发:应用通过统一的系统调用访问各种存储介质- 简化了新文件系统加入内核的过程:新文件系统只要实现VFS的各个接口即可,不需要修改内核部分2. 虚拟文 阅读全文