全部博文(2759)
发布时间:2013-06-02 08:18:35
说起linux大家都不陌生,它由内核、系统调用、函数库、shell以及医用程序组成,其中内核直接运行在硬件之上,可被视为最底层软件,它为上层提供了各种各样的服务,如果应用程序想使用这些服务,就必须通过系统调用这个相当于城门通道的东西来调用。因为系统调用是相对底层的概念,为了更好的服务于上层逻辑,有必要对其进行.........【阅读全文】
发布时间:2013-05-30 10:34:51
问题一:为什么32位CPU只能读取字长(4字节)倍数的地址答:因为32位x86计算机的存储系统通常使用4组存储体,存储一个字长(4字节)数据时采用分体存储方式,即4个存储体各存储1个字节,且低二位(A0和A1)地址线未用作选址,因而CPU在寻址时只能寻到以字长(4字节)为倍数的地址。同理,16位计算机系统普遍采用两组存储.........【阅读全文】
发布时间:2013-05-22 15:53:43
前面总结了关于Linux内核结构的学习,接下来我们一起学习Linux内核源代码。
第一:多版本的内核源代码
对不同的内核版本,系统调用一般是相同的。新版本也许可以增加一个新的系统调用,但旧的系统调用将依然不变,这对于保持向后兼容是非常必要的—一个新的内核版本不能打破常规的过程。在大多数情况下,设备文件将仍然相同,而另一方面,版本之间的内部接口有所变化。......【阅读全文】
发布时间:2013-05-22 15:52:35
/*一个完整的LMOS驱动框架,当然对于不同的设备,不必写出所有的分发函数,我这里
*是为了展示一个完整的驱动框架。每个驱动分发函数都是4个参数,后面两个不用管
*这个是为了以后扩展升级用的。当然对于x86上的主桥驱动来说,最最重要的只有两个
*分发函数,设备枚举函数,电源管理函数。对于分发函数用到的参数全部在ioinfo_t
*结构体中。当然我这个驱动什么也不能做。
*注意的是,LMOS的驱动程序,一旦被装载,就是内核的一部分,和内核代码一起运行
*在CPU的最高特权级,可以访问所有的系统资源。就是说,你驱动程序的一点点错误都
*能导致机器崩溃,内核没有任何挽救措施。当然你的代码写不好但没有错误,这也许只
*会影响内核的执行性能。所以要明白的是,开发驱动就是开发内核,你的每行代码都至
*关重要。
*当然也不必紧张,LMOS内核会提供一系列接口,比如同步原语,内存分配与释放,进程
*间数据的传输,设备的注册与撤销等……以最大可能保证驱动编写的正确性。让其只专注
*于设备部分。
*/