linux内核中没有分页内存

linux内核中没有分页内存吗?是的,没有,那么windows的内核为何就有呢?毕竟不是一个家族不好做全方位的评判,我的结论就是linux上的任何的程序只将内核作为一个平台而不依赖内核。这个事实的结果就是在linux内核中不能分配过大的内存,linux内核中唯一可以分配大内存的地方就是vmalloc区域,仅仅放松了对物理内存连续的限制,在vmalloc中分配内存只要求虚拟内存连续,并且事实上最多只能分配128M的内存,这是linux内核中最宽松的限制了。

在linux中,一切功能都可以由用户空间应用程序来解决,就连杀毒程序也不例外,这是因为linux有强大的安全机制,单点验证机制,只要linux保证任何用户不能随意su到root权限就可以了,这事实上就是一个消除一切漏洞的行为,只要操作系统安全机制没有漏洞,只要内核没有漏洞,那么一切恶意程序的得逞完全归结于该恶意程序所利用的用户空间应用程序设计的不足,而且这件事在linux看来,内核完全没有必要过问,正如一个国家的机关只认百姓的请求以及该请求的代理权限,只要认证通过就给与服务而不再对别的情况加以过问,linux只是一个服务者罢了,它不喜欢任何额外的机制要靠内核来完成,也就是说任何用户都不要随意动不动就用内核实现一个机制,只要在用户空间实现就好了。

看看windows下的杀毒程序这一简单的使用内核来完成的程序,正是由于windows不能保证复杂但是薄弱的用户空间机制都是安全的,才会动用内核来实现更高级别的安全管理,它没有linux的那种简单但是可以信赖的单点验证机制。正如微软建议的那样,在没有别的办法的时候请实现一个驱动程序,在DriverEntry中完成一切。既然微软会建议程序员编写内核驱动,那么微软的操作系统当然也把内核空间的开发开放给了程序员,于是DDK成了很大一部分人最后的救命稻草,既然将内核驱动的开发开放给了程序员,那么如何使用内存就不应该有任何限制,再者windows希望用一种简单一致的机制管理所有的不管是用户空间还是内核空间的内存,于是内核空间的内存管理和用户空间的内存管理大体上没有区别,都可以使用分页内存,说一句可能让windows的粉丝不愿意听的话:我们windows实现的不是很安全,所以你们可以用内核这个最高级别的执行绪以权势压人。反观linux,开源的linux难道没有将内核开放给程序员吗?不,绝对的开放,看看lkml的热闹程度吧!但是不同的是,linux下开发内核是完全为了内核本身的机制扩展而不涉及任何用户策略,linux的内核和用户应用分得比较开,不信你去内核邮件列表去问一个应用的问题,看看有没有人骂。

你可能感兴趣的:(linux)