linux内核设计与实现
文章平均质量分 87
Struggling-Snail
这个作者很懒,什么都没留下…
展开
-
linux内核学习——进程管理
稍等原创 2014-01-01 11:31:23 · 1326 阅读 · 0 评论 -
详解Linux内核红黑树算法的实现
开发平台:Ubuntu11.04 内核源码:linux-2.6.38.8.tar.bz2 关于二叉查找树的概念请参考博文《详解二叉查找树算法的实现》。 平衡二叉树(BalancedBinary Tree或Height-Balanced Tree)又称AVL树。它或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之转载 2014-04-22 21:52:16 · 899 阅读 · 0 评论 -
linux内核模块间通信
Linux模块间通讯方法非常的多,最便捷的方法莫过于函数符号导出,然后直接调用。 这种方法在内核中有很多使用: /* platform dependent support */ EXPORT_SYMBOL(strcat); EXPORT_SYMBOL(strcpy); EXPORT_SYMBOL(strlen); EXPORT_SYMBOL(strncpy); EXPORT_SYMBOL(st原创 2014-03-19 22:48:00 · 2899 阅读 · 0 评论 -
linux内核学习——内核学习资料
刚开始学习内核,建议用早期版本的源码。因为内核也一直在修改,最新的版本可能会和某些早期的内核学习书籍上内容有出入。 内核官网:https://www.kernel.org/ 内核早期版本源码:https://www.kernel.org/pub/linux/kernel/原创 2014-01-01 11:35:43 · 804 阅读 · 0 评论 -
linux内核模块编程
主题: linux内核模块的程序结构--模块加载函数(必须),模块卸载函数(必须),模块许可证声明(必须),模块参数(可选),模块导出符号(可选),模块作者的等信息声明(可选) 一个linux内核模块主要由以下几个部分组成。 1、模块加载函数"用module_init()来指定"(必须) 当通过insmod和modprobe命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块转载 2014-01-15 22:33:26 · 796 阅读 · 0 评论 -
Linux下Daemon的实现
注:Linux下可以直接调用damon函数来实现daemon进程,没必要重新实现,理解其原理即可。 在Linux中专门提供了一个函数来完成这个daemon化的过程,这个函数的原型如下 int daemon ( int __nochdir, int __noclose) ; 如果__nochdir的值为0,则将切换工作目录为根目录;如果__noclose为0,则将标准输入,输转载 2014-02-14 23:41:52 · 700 阅读 · 0 评论 -
块设备的处理及通用块层
原文地址:块设备的处理及通用块层 块设备的主要特点是,CPU和总线读写数据所化时间与磁盘所花时间与磁盘硬件的速度不匹配。块设备的平均访问时间很高。每个操作都需要几个毫秒才能完成,主要是因为磁盘控制器必须在磁盘表面将磁头移动到记录数据的确切位置。但是,当磁头到达正确的位置时,数据传送就可以稳定在每秒几十MB的速率。 块设备的处理 Linux块设备处理程序的组织是相当复杂的,块设备驱动转载 2014-02-11 20:59:50 · 1909 阅读 · 0 评论 -
linux内核学习——内存管理
内核内存管理基础: 页:内核把物理页作为内存管理的基本单位。 32位系统:4K / 页 64位系统:8K / 页 区: 由于硬件限制,内核不能对所有页一视同仁。linux必须处理如下硬件存在的缺陷而引起的内存寻址问题: 一些硬件只能用某些特定内存地址来执行DMA(直接内存寻址)一些体系结构的内存物理寻址范围比虚拟寻址范围大得多。这样一些内存就不能永久映射到内核空间。 linu原创 2013-12-14 23:00:53 · 1147 阅读 · 0 评论 -
linux内核学习——list链表
链表使用基础: 链表是linux内核中最简单,最普遍的数据结构。刚开始接触内核的人可能会对linux的链表操作有点不习惯,因为它不是把数据结构放到链表里面,而是把链表节点放到数据结构里面。 链表代码在头文件中声明,其数据结构很简单: struct list_head{ struct list_head *next; struct list_head *prev;原创 2013-12-15 20:39:50 · 1072 阅读 · 0 评论 -
linux内核学习——内核同步
一、内核同步基础概念 共享数据:能够被多个代码段访问的数据,一般指全局变量和静态变量 临界区:访问和操作共享数据的代码段 竞争条件:如果两个执行线程可能处于同一个临界区中同时执行,就被称为竞争条件发生了 同步:避免并发和防止竞争条件成为同步 内核中可能造成并发执行的原因: 中断 —— 中断几乎可以在任何时刻异步发生,也就可能随时打断当前正在执行的代码。内核抢占 —— 因原创 2013-12-15 15:23:15 · 933 阅读 · 0 评论 -
linux内核学习——工作队列
由于CPU要处理中断,而且中断都要求尽快执行结束,所以对于大量的程序处理都会放到下半部去执行。常用的下半部有:软中断、任务队列、工作队列等。 其中比较好用,也比较常用的是工作队列。 工作队列使用时我觉得一般会有以下几部分来共同使用。 struct workqueue_struct my_wq; //工作队列,用于通知工作者工作 struct work_struct my_wo原创 2014-03-19 23:38:24 · 1272 阅读 · 0 评论