免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: chenrvmldd
打印 上一主题 下一主题

也谈谈这四年来对内核的研究 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2011-07-31 12:41 |显示全部楼层
感谢大家对我的支持,最近一段时间比较忙,等忙完这阵,我会继续把我的问题提出来,然后再整理一下这十个问题,

论坛徽章:
0
32 [报告]
发表于 2011-08-06 10:19 |显示全部楼层
回复 136# oooooxxxxx


这个观点我真不敢苟同,兄弟要知道slab的提出,是CCS当年最牛的一篇paper,就你一句话浮云,

论坛徽章:
0
33 [报告]
发表于 2011-08-06 10:30 |显示全部楼层
最近比较忙,在搞一个驱动,搞了很久了,也许比较复杂,总是有些BUG,所以没时间去总结一些问题,今天算是忙里偷闲,发一个我当时在学习的过程中曾经困惑过的问题:是有关红黑树的!这应该算是第四个问题了:
1.        首先第一个:我们知道红黑树是用来管理虚拟地址的,我记得在0.11版本的Linux中也有虚拟地址的概念,为什么不用红黑树来管理虚拟地址了,后来我仔细的想了想发现原来在0.11中每个进程最大的虚拟地址空间是64M,但是在现在的内核中32位的系统,虚拟地址3G,所以就引入了红黑树,好的,虚拟地址的管理是用红黑树,虚拟地址是用数据结构VMA来表示的,那么VMA这个东东,比没有VMA这个东东有哪些好处了?
2.        第二个问题,到现在我也不是很深入的研究过:原来在2.2的版本左右吧,管理VMA的时候用的是AVL树,后来引入了RB-树,据说RD-树的统计性能要比AVL树要好,这个我也不是特别的清楚,等待高手过来解答

论坛徽章:
0
34 [报告]
发表于 2011-08-10 09:50 |显示全部楼层
回复 131# imcg


    谢谢兄弟的鼓励和支持啊

论坛徽章:
0
35 [报告]
发表于 2011-08-10 09:51 |显示全部楼层
回复 134# brauceunix


    中断线程化得结构:
*/
typedef struct irq_desc {
        struct irq_type                *handler;
        void                        *handler_data;
        struct irq_chip                *chip;
        void                        *chip_data;
        struct irqaction        *action;
        unsigned int                status;

        unsigned int                depth;
        unsigned int                irq_count;
        unsigned int                irqs_unhandled;
        struct task_struct        *thread;
        wait_queue_head_t        wait_for_handler;
        raw_spinlock_t                lock;
#if defined (CONFIG_GENERIC_PENDING_IRQ) || defined (CONFIG_IRQBALANCE)
        unsigned int                move_irq;
#endif

注意:struct task_struct        *thread;看到这个结构没有?

还有这个帖子http://www.ibm.com/developerwork ... ernelint/index.html讲的还不错,希望能对你有帮助

论坛徽章:
0
36 [报告]
发表于 2011-08-10 09:55 |显示全部楼层
回复 141# kgn28


    内存管理的结构不管在什么样的大小内存管理模式都是大同小异,对于你说的超大内存的管理,我不知道Linux有没有做相关的优化,说实在话我没有接触过,所以没有发言权,但是,凭我的理解来讲的话:
个人觉得在内存管理方面优化应该不太多,有可能在cache方面做了一些优化,这样是最能提高内存的访问效率的

论坛徽章:
0
37 [报告]
发表于 2011-08-10 09:56 |显示全部楼层
回复 141# kgn28


   我们可以私下讨论一下!

论坛徽章:
0
38 [报告]
发表于 2011-08-24 18:40 |显示全部楼层
回复 154# nettom


    这个可以参考LINUX内核设计与实现第4章的4.2节

论坛徽章:
0
39 [报告]
发表于 2012-04-12 08:53 |显示全部楼层
回复 181# 源方

有个小问题,如果我的内存512MB,那一定是全部直接映射到3G~(3G+896MB)的线性地址空间,那如果vmalloc分配内存就要重新建立页表,会不会出现多个线性地址对应同一块物理内存的情况,如果这样那不就出错了吗?
还有用户空间程序也要分配内存,会不会与内核使用同一块物理内存。记得有个数组叫mem_map吧,描述了所有的物理页,是不是和这个有关系。初学者,比较迷茫,可能比较弱。

第一个问题:内存如果是512M的话,处理的方法就不是这样了,你去看一下源码,你会发现在内核初始化的时候,内核在建立内核页表的时候,会根据内存的大小去建立的,而不是做死的。
第二个问题:vmalloc分配的线性地址空间范围是固定的,不会出现多个线性地址对应同一块物理地址的现象,你要明白为什么会出现使用vmalloc,vmalloc和kmalloc之间的区别,内核将线性地址映射成物理地址的时候,不会出现多个现象地址对应同一块物理地址的现象的,除非存在一种情况,那是共享内存的时候,
第三个问题:不知道怎么回答你了,建议你先看一下ULK这本书,估计看完关于内存这几章的内容,你就会懂了
   

论坛徽章:
0
40 [报告]
发表于 2012-04-12 08:55 |显示全部楼层
回复 182# jzwxh77


    呵呵,我没有写过书,虽然曾经有人邀请过,自我感觉还是水平没有到位
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP