上一页 1 ··· 55 56 57 58 59 60 61 62 63 ··· 67 下一页
摘要: Sparse是内核代码静态分析工具, 能够帮助我们找出代码中的隐患.主要内容:Sparse 介绍Sparse 使用方法Sparse 在编译内核中的使用补充1. Sparse 介绍Sparse 诞生于 2004 年, 是由linux之父开发的, 目的就是提供一个静态检查代码的工具, 从而减少linux内核的隐患.其实在Sparse之前, 已经有了一个不错的代码静态检查工具("SWAT"), 只不过这个工具不是免费软件, 使用上有一些限制.所以 linus 还是自己开发了一个静态检查工具.具体可以参考这篇文章(2004年的文章了): Finding kernel problem 阅读全文
posted @ 2014-03-01 14:18 wang_yb 阅读(16249) 评论(2) 推荐(4)
摘要: 总结linux内核开发的coding style, 便于以后写代码时参考.下面只是罗列一些规则, 具体说明可以参考: 内核源码(Documentation/CodingStyle)01 - 缩进缩进用 Tab, 并且Tab的宽度为8个字符swich 和 case对齐, 不用缩进switch (suffix) {case 'G':case 'g': mem * / % | & ^ = == != ? :下面的一元操作符后面 *不要* 留空格& * + - ~ ! sizeof typeof alignof __attribute__ defined 阅读全文
posted @ 2014-01-24 13:48 wang_yb 阅读(7270) 评论(0) 推荐(1)
摘要: 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 自带 阅读全文
posted @ 2014-01-14 16:14 wang_yb 阅读(12449) 评论(27) 推荐(0)
摘要: 读完这本书回过头才发现, 第一篇笔记居然是 2012年8月发的, 将近一年半的时间才看完这本书(汗!!!).为了方便以后查看, 做个《Linux内核设计与实现》读书笔记 的目录:《Linux内核设计与实现》读书笔记(一)-内核简介《Linux内核设计与实现》读书笔记(二)- 内核开发的准备《Linu... 阅读全文
posted @ 2014-01-11 09:56 wang_yb 阅读(33906) 评论(12) 推荐(24)
摘要: linux最吸引我的地方之一就是它拥有一个高手云集的社区, 还有就是如果能=为linux内核中贡献代码, 一定是一件令人自豪的事情.下面主要总结一些和贡献代码相关的主要内容.加入社区编码风格提交补丁总结1. 加入社区如果想为linux贡献代码, 那么加入linux社区是必须的, 加入了社区, 不仅可以及时内核的最新消息, 而且可以及时和社区内有经验的内核开发者交流经验.同时也是提交代码和讨论代码的地方, 了解社区的规则, 融入社区环境之中, 才能更好的学习内核, 体会内核开发的乐趣和成就感.内核社区说白了就是内核邮件列表(LKML linux kernel mail list)订阅邮件列表的网 阅读全文
posted @ 2014-01-11 08:11 wang_yb 阅读(3095) 评论(0) 推荐(0)
摘要: 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个之多.(源 阅读全文
posted @ 2014-01-09 13:49 wang_yb 阅读(3743) 评论(0) 推荐(0)
摘要: 内核调试的难点在于它不能像用户态程序调试那样打断点,随时暂停查看各个变量的状态。也不能像用户态程序那样崩溃后迅速的重启,恢复初始状态。用户态程序和内核交互,用户态程序的各种状态,错误等可以由内核来捕获并显示。而内核是直接和硬件交互的,内核出错之后整个系统就无法正常运行了,所以要想熟练的进行内核调试,首先要熟悉内核已经给我们提供的工具,然后实实在在的去做一些内核功能的开发,在开发的过程中不断熟悉内核代码,增加内核调试的经验。主要内容:内核调试的难点内核调试的工具和方法总结1. 内核调试的难点内核调试的难点大致有以下几个:重现bug困难 - 如果能够重现一个bug, 相当于成功了一半. (特别是有 阅读全文
posted @ 2014-01-04 09:03 wang_yb 阅读(6844) 评论(2) 推荐(1)
摘要: 本章主要讨论与linux的设备驱动和设备管理的相关的4个内核成分,设备类型,模块,内核对象,sysfs。主要内容:设备类型内核模块内核对象sysfs总结1. 设备类型linux中主要由3种类型的设备,分别是:设备类型代表设备特点访问方式块设备硬盘,光盘随机访问设备中的内容一般都是把设备挂载为文件系统后再访问字符设备键盘,打印机只能顺序访问(一个一个字符或者一个一个字节)一般不挂载,直接和设备交互网络设备网卡打破了Unix "所有东西都是文件" 的设计原则通过套接字API来访问除了以上3种典型的设备之外,其实Linux中还有一些其他的设备类型,其中见的较多的应该算是" 阅读全文
posted @ 2013-12-24 21:52 wang_yb 阅读(6217) 评论(0) 推荐(2)
摘要: 好久没有更新了。。。主要内容:缓存简介页高速缓存页回写1. 缓存简介在编程中,缓存是很常见也很有效的一种提高程序性能的机制。linux内核也不例外,为了提高I/O性能,也引入了缓存机制,即将一部分磁盘上的数据缓存到内存中。1.1 原理之所以通过缓存能提高I/O性能是基于以下2个重要的原理:CPU访问内存的速度远远大于访问磁盘的速度(访问速度差距不是一般的大,差好几个数量级)数据一旦被访问,就有可能在短期内再次被访问(临时局部原理)1.2 策略缓存的创建和读取没什么好说的,无非就是检查缓存是否存在要创建或者要读取的内容。但是写缓存和缓存回收就需要好好考虑了,这里面涉及到「缓存内容」和「磁盘内容」 阅读全文
posted @ 2013-11-21 18:18 wang_yb 阅读(5976) 评论(5) 推荐(1)
摘要: 进程地址空间也就是每个进程所使用的内存,内核对进程地址空间的管理,也就是对用户态程序的内存管理。主要内容:地址空间(mm_struct)虚拟内存区域(VMA)地址空间和页表1. 地址空间(mm_struct)地址空间就是每个进程所能访问的内存地址范围。这个地址范围不是真实的,是虚拟地址的范围,有时甚至会超过实际物理内存的大小。现代的操作系统中进程都是在保护模式下运行的,地址空间其实是操作系统给进程用的一段连续的虚拟内存空间。地址空间最终会通过页表映射到物理内存上,因为内核操作的是物理内存。虽然地址空间的范围很大,但是进程也不一定有权限访问全部的地址空间(一般都是只能访问地址空间中的一些地址区间 阅读全文
posted @ 2013-10-04 16:28 wang_yb 阅读(8916) 评论(1) 推荐(6)
上一页 1 ··· 55 56 57 58 59 60 61 62 63 ··· 67 下一页