免费注册 查看新帖 |

Chinaunix

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

图书试读 《深入Linux设备驱动程序内核机制》(获奖名单已公布) [复制链接]

论坛徽章:
0
21 [报告]
发表于 2012-03-01 10:09 |只看该作者
设备驱动程序自然是给硬件写驱动,目前国内有哪些公司做这个,成长性如何?
还有就是内核的选择上,初学的话,哪个更容易上手和把握?
谢谢!

论坛徽章:
0
22 [报告]
发表于 2012-03-01 11:47 |只看该作者
我是用bochs捣鼓的,不用担心软盘坏了  ,正在一点一点抄0.11的代码,安自己思路重写,感觉有点傻 。  另外还装了2.4.0 的内核。。。 你在2.4上改进的调度算法能分享不?   x86机制看了老是忘,没你以前学的疯狂阿还得加把劲。。。

=============================
软盘是我最原始阶段的产物,后来用grub和U盘来做了。另外,我没有在2.4的基础上哪怕做那么一丁点的优化,我觉得如果一个东西还不熟的话,是很难在上面做一些创新的。。。。


   

论坛徽章:
0
23 [报告]
发表于 2012-03-01 11:50 |只看该作者
冒泡觉得 风兄 更文雅一典。。恩。。。
=========================

我这不是怕不小心打成丰胸嘛,后来求证过了,的确是谷哥,所以才放下心来,哈哈


   

论坛徽章:
0
24 [报告]
发表于 2012-03-01 12:26 |只看该作者
看MagicBoy2010 兄书想到一个问题(以前怎么就没想到呢):
down_interruptible
        __down_interruptible
                __down_common (当然这个内联,和问题无关)
其中自旋锁顺序为:
spin_lock_irqsave(&sem->lock, flags);                1
……
        spin_unlock_irq(&sem->lock);                2
        timeout = schedule_timeout(timeout);
        spin_lock_irq(&sem->lock);                        3
……
spin_unlock_irqrestore(&sem->lock, flags);        4

1234处加锁解锁不对称,会不会有问题?
比如有2个内核线程争用信号量,一个调用顺序如上,另一个依次为5678.那调用顺序会不会变成12563478,导致1中保存的中断开关状态(可能关着),变为了5中保存的中断状态(必然开着)?

论坛徽章:
0
25 [报告]
发表于 2012-03-01 14:33 |只看该作者
顶起来,牛人很多啊。

论坛徽章:
0
26 [报告]
发表于 2012-03-01 15:29 |只看该作者
作者给内核提交过代码没?

论坛徽章:
0
27 [报告]
发表于 2012-03-01 19:46 |只看该作者
作者给内核提交过代码没?
======================================

作者一直是个围观者


   

论坛徽章:
0
28 [报告]
发表于 2012-03-01 20:17 |只看该作者
本帖最后由 MagicBoy2010 于 2012-03-01 22:32 编辑

看MagicBoy2010 兄书想到一个问题(以前怎么就没想到呢):
down_interruptible
        __down_interruptible
                __down_common (当然这个内联,和问题无关)
其中自旋锁顺序为:
spin_lock_irqsave(&sem->lock, flags);                1
……
        spin_unlock_irq(&sem->lock);                2
        timeout = schedule_timeout(timeout);
        spin_lock_irq(&sem->lock);                        3
……
spin_unlock_irqrestore(&sem->lock, flags);        4

1234处加锁解锁不对称,会不会有问题?
比如有2个内核线程争用信号量,一个调用顺序如上,另一个依次为5678.那调用顺序会不会变成12563478,导致1中保存的中断开关状态(可能关着),变为了5中保存的中断状态(必然开着)?

=================================================================================================
在SMP系统中,如果两个内核线程在不同的处理器上争用信号量,就不会出现你说的中断状态改变的问题。所以我想你更关心的是UP系统,在UP系统上,你所说的调用顺序我觉得是有可能的,2处spin_unlock_irq实际上演化成local_irq_enable和preempt_enable,2处接下来就会有一个调度点,所以运行另一个线程B是完全可能的,B如果调用down_interruptible,就进入了你所说的调用顺序,因此5将保持一个打开的中断,4退出时中断是关的(如你假设的那样),但是8退出时中断是打开的。不过我的理解是,它不会对系统造成什么影响,因为你假设的前提是1之前中断是关闭的,而中断关闭的情形无非是1.hardirq阶段,2. UP系统中的互斥保护,情形1显然不可能,hardirq阶段你不应该调用down,至于2嘛,down调用的本身就是用来实现互斥,更没有理由在其调用前关掉系统中断,所以从这个角度,我感觉1和4处直接用spin_lock_irq貌似更合理点,你觉得呢?

其实这里还有一个很有趣的问题是在schedule_timeout函数中,__down_common会将当前进程状态设置为TASK_INTERRUPTIBLE,然后会调用schedule,但是在schedule之前,抢占是有可能,那么current会被移除运行队列吗?
   

论坛徽章:
0
29 [报告]
发表于 2012-03-01 20:56 |只看该作者
回复 28# MagicBoy2010

谢谢 MagicBoy2010 兄提点。经MagicBoy2010 兄分析,1和4处就应该用spin_lock,就算保持对称也应该这么玩嘛。不知道内核开发者到底为什么一定要那么玩,难道是鼓励后来者多思考……


    ……但是在schedule之前,抢占是有可能,那么current会被移除运行队列吗?

不会。因为调度之前如果还没设置完成,移除运行队列,有可能导致当前进程永远醒不了了。所以只要内核抢占,都不允许移除运行队列,直到显示调用schedule.当然内核也可以内核抢占的时候把当前进程移出队列,放在特殊队列,而非等待队列。然后抢占完后看看特殊队列有没有进程,显示没有当前内核的使用方法来得快!

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
30 [报告]
发表于 2012-03-01 22:03 |只看该作者
1.如何学习Linux kernel,一般需要具备哪些知识点

如果学习Linux Kernel,必须要具备的知识我认为有:
操作系统的基础知识,如进程管理,调度等,CPU时间片分配、内存管理、作业管理、磁盘管理等等,就是大学操作系统的知识要学好。
还要具备编译原理相关的知识,这些都是大学里最基本的理论课程。
还要会C语言,因为只有具备这些,你才能基本读懂Linux Kernel啊。
2. 新人如何学习Linux设备驱动程序

要学习设备驱动程序,首先要了解相关的硬件基础知识,然后要了解硬件协议,只有这样你才可能学习驱动程序。
3. 阅读完样章后,你认为此书与市场上其他Linux设备驱动类书籍有什么优缺
            
其他的设备驱动程序书籍没有阅读过,所以无从比较,但就这本书的样章来看,我觉得对初学者不太适合,适合有一定开发经验的读者。因为书的开始讲不会特别讲解驱动的开发。但在样章中却有很多驱动相关的源代码。
4. 给刚毕业的一些新手进入职场的一些建议(比如求职面试,到外企、国企与私企工作做技术的利弊等等)

求职面试:在简历中千万不要写这个精通那个精通。我最近开始面试人,一看到这样精通那样精通的人,我基本上第一印像就是什么也不会。好多工作五六年的人也不也轻易说精通一门语言,你上来就全部精通,难道你是盖茨啊。面试时一定要敢于表述,不要因为自己是刚毕业生在被问及问题时就不也确认的回答。
到外企:要求外语好,同时对学习外语也有很好的帮助。如果你的外语不好,自己也不爱学外语,建议不要去,去了你也没有太多发展。
到国企:国企,稳定,但工资不要期待太高(但目前情况不是这样,有些国企都有好高的工资)
到私企:可能会对你有全面的要求,所以你能接触很多东西,工资也可能会高,但稳定性可能欠缺一些。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP