首页 >

Linux内核和驱动的区别是什么,有无内核驱动这个名词,如果有,内核没有内核驱动也叫内核吗? – 网络|

魅族手机卡无显示怎么办,web 页面怎么调用优酷的播放器,网页404是什么意思Linux内核和驱动的区别是什么,有无内核驱动这个名词,如果有,内核没有内核驱动也叫内核吗? - 网络|Linux内核和驱动的区别是什么,有无内核驱动这个名词,如果有,内核没有内核驱动也叫内核吗

(1)直接编译进Linux内核,随同Linux启动时加载。

(2)编译成一个可加载和删除的模块。

驱动程序向内核添加了一些函数,是内核的一部分。例如Open(),Release(),Read(),Write()。这些函数由内核在适当的时候来调用,可以用来完成硬件访问等操作。驱动程序占kernel源代码超过50%。

内核中printk()函数的设计目的并不是为了和用户交流,它实际上是内核的一种日志机制,用来记录下日志信息或者给出警告提示。如果syslogd和klogd守护进程在运行的话,则不管是否向控制台输出,消息都会被追加进/var/log/messages文件。klogd只处理内核消息,syslogd处理其他系统消息,比如应用程序。

设备驱动的并发控制

自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环查看是否该自旋锁的保持者已经释放了锁,“自旋”就是“在原地打转”。自旋锁适合于保持时间非常短的情况,它可以在任何上下文使用。

信号量则引起调用者睡眠,它把进程从运行队列上拖出去,除非获得锁。信号量适合于保持时间较长的情况,会只能在进程上下文使用。

如果被保护的共享资源需要在中断上下文访问(包括底半部即中断处理句柄和顶半部即软中断),就必须使用自旋锁。

设备驱动的内存与IO访问

内核虚拟内存映射到连续的物理内存。

CPU通常并没有为这些已知的外设I/O内存资源的物理地址预定义虚拟地址范围,驱动程序并不能直接通过物理地址访问I/O内存资源,而必须将它们映射到核心虚地址空间内(通过页表),然后才能根据映射所得到的核心虚地址范围,通过访内指令访问这些I/O内存资源。Linux在io.h头文件中声明了函数ioremap(),用来将I/O内存资源的物理地址映射到核心虚地址空间(3GB-4GB)。

驱动中使用的地址是虚拟地址。外设的IO地址需要映射到虚拟地址。


Linux内核和驱动的区别是什么,有无内核驱动这个名词,如果有,内核没有内核驱动也叫内核吗? - 网络|
  • 精神医学考什么大学? - 网络|
  • 精神医学考什么大学? - 网络| | 精神医学考什么大学? - 网络| ...

    Linux内核和驱动的区别是什么,有无内核驱动这个名词,如果有,内核没有内核驱动也叫内核吗? - 网络|
  • 聊天群里有人过生日,公告该怎么写才能收获更多祝福? - 网络|
  • 聊天群里有人过生日,公告该怎么写才能收获更多祝福? - 网络| | 聊天群里有人过生日,公告该怎么写才能收获更多祝福? - 网络| ...

    Linux内核和驱动的区别是什么,有无内核驱动这个名词,如果有,内核没有内核驱动也叫内核吗? - 网络|
  • c语言如何输出三角形图形 - 网络|
  • c语言如何输出三角形图形 - 网络| | c语言如何输出三角形图形 - 网络| ...