关于Linux的模块化改造

关于Linux的模块化改造
        正如Tanenbaum在《操作系统设计与实现(第三版上册)》指出的:“操作系统正变得越来越大、越来越慢以及越来越不可靠。与其他电子设备如电视、手机以及DVD播放器相比,操作系统变得越来越容易崩溃,加之具有许多特性和选项,实际上几乎没有人能完全理解它们,或将它们管理得很好。当然,计算机病毒、蠕虫、间谍软件以及其他形式的恶意程序也已变得越来越猖獗,这对操作系统无疑会造成较大的影响。
    在很大程度上,这些问题均是由当前操作系统中的基本设汁缺陷引起的:模块性的缺失。整个操作系统一般会由几百万行C/C++代码组成,这些代码被编译到了一个在内核态下运行的巨大可执行程序中。在几百万行代码中,即使只有一行代码存在缺陷,也会导致系统发生故障。使所有这些代码均正确是不可能的,尤其是当70%的代码是由设备驱动程序组成时,因为这些设备驱动程序是由第三方编写的,而这已超出了操作系统编写者的控制范围。”
    操作系统模块性的缺失已经是操作系统发展的重大障碍,宏内核操作系统比如Linux就是一个典型,所有的设备驱动,框架,各种处理机制(wait queue, work queue等)都挤进内核,严重违反软件开发的低耦合,高内聚的原则,使得整个庞大的内核既难于理解又难于维护。而这种难度有利于维持操作系统高高在上的定位。但Minix的出现以及随后人们对其所做的研究已经使操作系统从神坛走了下来,编写一个操作系统并不是那么难的事情。于渊的书《自己动手写操作系统》及其第二版《Orange's  一个操作系统的实现》使人们看到甚至是个人都可以写操作系统。更有甚者,日本人川合秀实2011年出版的书《30天自制操作系统》,不但认为个人可以写操作系统,而且还可以在30天内写出。当然软件的价值在于被使用,如果人人都去写操作系统,写出来的系统又互不兼容,那就没人用了,自己写操作系统的学习意义大于实用。如果现有的系统可以用,还是应该优先使用现有的系统。Linux不管如何难理解难维护,高高在上,它毕竟是被广泛使用的系统,如果我们对它加以研究和改造,使得它不那么难理解难维护
,又可以兼容现有的软件,那岂不是很好。
    如果对Linux进行模块化改造,最先想到的是将其驱动程序挪出内核。确实如Tanenbaum所说,Linux的源代码里面70%以上是驱动程序,如果将驱动程序挪出内核,内核的尺寸将大大减小。而且将驱动程序变成一个个进程以后,内核可以根据硬件特性来调度这些进程,使得CPU时间得到更合理的分配。于是笔者开始尝试这一方面的工作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值