当前位置: 技术问答>linux和unix
linux内核问题
来源: 互联网 发布时间:2016-10-31
本文导语: 我看的是《深入理解linux内核》 看前面时还能勉强看下去,不过看到linux中断部分是有点进行不下去了,因为里面有很多汇编是AT&T格式的,一下子保存这个,一下子有哪个。 1我想知道,是不是要把X86中断机制学一下...
我看的是《深入理解linux内核》
看前面时还能勉强看下去,不过看到linux中断部分是有点进行不下去了,因为里面有很多汇编是AT&T格式的,一下子保存这个,一下子有哪个。
1我想知道,是不是要把X86中断机制学一下啊
当时X86汇编好像与AT&T不一样,
2我该怎么学,能不能推荐几本书
3还有现在不是流行ARM的,但是linux内核却以X86来讲
4最重要的我该怎么理解那些中断机制啊?是不是有什么书
我不想半途而废啊,哪位大侠帮帮我啊?最好具体一点,(先学那些,后学那些,虽然这个有点老生常谈了,不过不具体,我想借此在谈论一下)
看前面时还能勉强看下去,不过看到linux中断部分是有点进行不下去了,因为里面有很多汇编是AT&T格式的,一下子保存这个,一下子有哪个。
1我想知道,是不是要把X86中断机制学一下啊
当时X86汇编好像与AT&T不一样,
2我该怎么学,能不能推荐几本书
3还有现在不是流行ARM的,但是linux内核却以X86来讲
4最重要的我该怎么理解那些中断机制啊?是不是有什么书
我不想半途而废啊,哪位大侠帮帮我啊?最好具体一点,(先学那些,后学那些,虽然这个有点老生常谈了,不过不具体,我想借此在谈论一下)
|
个人觉得看第一遍地时候,不必要再某一点固执下去,前提是你还会回来再看!
|
慢慢来吧。
lkd会薄一点,你可以先看看那本。
lkd会薄一点,你可以先看看那本。
|
多看几遍啊,第一遍没有必要也不可能完全PASS~
|
我也有這個困惑。但是慢慢來,AT&T的彙編就相差一點點的。慢慢研究就可以了。
|
我的看法是,你真要“那么深入地理解内核吗”?即使你知道压那个寄存器、弹哪个寄存器又有什么用?
把中断处理的流程弄清楚就可以了,比如怎么从中断向量算出中断号,再到C函数,C函数里又怎么调用irq_desc数组里的成员;
request_irq怎么设置irq_desc数组项,
free_irq怎么释放数组项。
至于这些寄存器怎么保存怎么恢复,我认为只要知道大概就可以了。
把中断处理的流程弄清楚就可以了,比如怎么从中断向量算出中断号,再到C函数,C函数里又怎么调用irq_desc数组里的成员;
request_irq怎么设置irq_desc数组项,
free_irq怎么释放数组项。
至于这些寄存器怎么保存怎么恢复,我认为只要知道大概就可以了。
|
我个人建议你看“情景分析”,深入linux内核这本书我也买了,最开始就是看的这本书,但是完全看不懂,以为讲的不够详细,有时候思想都没有表达清楚,这本书可能对有基础的人满适合的,想我们这种基础差的人还是越详细越好,情景分析有讲思想,还通过代码讲解如何实现这种思想的。呵呵,传说中的四库全书都买了 现阶段觉得情景分析还是最好的。顺便说一下版本是2.4的 深入linux内核是2.6版本的。
|
我最近移植linux,刚好遇到中断源转中断号问题。我工作很久了。
只是看书研究,很难搞多透的。把原理性的看看,有个概念就不错了。
|
不懂!帮顶!
|
直接看这本啊 厉害啊
|
1,AT&T格式的汇编和intel汇编没什么大的区别,只是源和目的操作数位置不一样,中断机制保存最多的是pt_regs,它里面保存中断号等内容。
2,《linux 内核源代码情景分析》里面的中断机制说的很详细,把那章看两三遍差不多懂了。
3,ARM和X86里面应该就是寄存器不大一样,个人这么理解,因为我也只是在X86上弄过内核。觉的把X86能弄懂就很不容易了。
4,你看完那个章节之后,我建议你用kgdb跟踪内核执行中断处理过程,大概如下:DO_IRQ==>handle_level_irq==>handle_irq_event,这些你可以在entry.S或者entry_32.S里面找到代码。
|
呵呵,ULK的中断部分使用的是x86的代码分析的,其实ARM的代码会简单一些,X86的指令还是要复杂一点