Linux笔记: Linux Kernel的特点

学习Linux,不是件轻松的事。
庞大的体系,很容易找不到方向。

这里就自己工作中积累的一些点,作个小小的笔记。

个人认为,学习一个知识前,利用比较,和洞察设计者的个人喜好,是有意义的。特别是对于 Linux这样一个由linus一手掌控的中央集权的系统来说,理解他本人的想法,也是必要的。
这样,学习的方向往往相对比较清楚。

被动性 

Linux 的Kernel没有Service的概念,
即,自身并不是有生命的主体。

是被Kernel调度的进程,以及CPU.

那么,是谁在驱动Linux在运转呢?
 

这看起来有点奇怪,特别是习惯了Windows的微内核中服务的概念后,就更难理解。
================================================
直观地说来,Linux的kernel就是一个机器,类似汽车的变速箱。没有生命,它“掌管着”无数的进程,但实际上,它并没有掌管它们,因为它没有生命。

要理解,可以从几个流程来理解。

1. 你说Linux 的Kernel没有生命,那么进程是怎么来的?进程是占用CPU时间片的,是有生命的,无生命的事物,不可能创造出有生命的事物啊?
2. Kernel如果没有生命,那么如何装时间片分配到每个进程中的呢?
3. 为什么要设计成为被动模式呢?有什么好处呢?
=========================================

从这两个问题来看,要想理解Linux kernel,需要详细的研究几个问题:
a ) 什么是进程,为什么说进程是有生命的(在windows中是线程,不是进程)。
b ) 进程是如何从无到有的呢,是谁干的呢?
c ) 分配CPU时间片这件事情是怎么做到的?如果kernel 没有生命,它哪里来的权力,来抢断一个正在执行的进程的呢?(这点linux kernel有点像是CPU的扩展)

这几个问题,可能是我们需要重点关注的。

被动性带来的好处

被动性带来的好处,最主要是安全性。
还有简单性,以及便于调试。
============================
因为kernel 没有自己的上下文,要么在进程上下文,要么在中断上下文,没有kernel 上下文。
所以,在任一进刻,责任界定都是清楚的(而且推得很干净)。

也就是说,在任一时刻,按下暂停键,都可以知道是哪个进程正在被调度。
也就是责任的主体,在任一时刻都是清楚的。

责任界定,是安全的前提。
所谓的安全,不是说号召人们都守法,实际最终的保证有两点:公开透时;责任界定清晰。

就这方面来说,Linux的体系相对是好的。

当然,凡事都有两面性。后面我们有时候,也来分析下,Windows的服务的概念的好处。

另外,当然这样在理论上,效率也是更好的。
Windows在开发NT时,盖茨最担心的问题之一是效率。他很担心,每一次system call都要调用服务的接口进行切换,效率是否能得到保证。
(当然,现在的系统调用,Windows也是向量表,与linux很接近,很像,没什么差别。但只是表面上像,本质的意思是完全不同的)。


当然,现代的linux中,有许多进程和线程为内核服务,这些是存在争议的。许多守旧的人当然不喜欢这一点。其中就包括 linus.
linus希望中央集权,并且少承担,最好不承担与运算相关的责任。
但各发行版的公司,当然会有自己的想法。

今天先写到这里,我们不是带有主观色彩的判断linux,而是我们需要从庞大的信息森林中,找出适合自己学习的路径。从而不会迷路。
至于Linux好与坏,我们只是去比较。心里有数即可。我们很难去改变什么,但有明确的方向,学习的时候,往往效果更好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值