`
leogao_emcom
  • 浏览: 81005 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

进程和线程管理在Windows和Linux的不同之处初探

阅读更多

进程是一个执行环境,包含了私有的进程内存空间、句柄表和其他的一些东西,为线程的存活提供了一个环境,这句话其中的含义是当创建进程时往往要创建一个默认的线程,线程是具体干活的,当一个进程中的最后一个线程被CPU执行完毕后,进程也就消亡了。这些事情都是OS内核的进程和线程管理干的事情。了解这些对使用一些高层语言来做多进程或者多线程的程序时就能在了解其底层原理的基础上发挥更大的创作空间(对于线程的竞争,同步等等的问题,其实就是OS的问题,高层语言不过还是利用OS的能力做到这些罢了)

 

上面是一段对进程和线程关系的描述,但是本文的重点是比较windows和Linux在这方面的不同之处!

 

Linux在由一段汇编程序引导其内核载入其核心态所在的内存空间并交由CPU执行时,会产成一个进程0,之后所有的进程都是通过这个进程0复制出来的,进程0总是处于空闲的状态,不占用CPU,只是一个所有进程的根,其中就推导出进程之间是有父子关系的,而且是一种强的关系,可以做一个实验:在具有root权限的shell中运行init 0时,系统会发生什么事情?init 0命令其实就是让进程0关闭掉,由于它是所有进程的父亲,当它消亡时,其后代也全部消亡了,此时你会看到linux采取的工作就是杀掉所有的进程而开始关机!

 

Windows则不同,进程之间的关系是松散的关系,只不过在子进程中记录了父进程的ID而已,杀掉父进程不一定会使子进程也被杀掉!

 

这种异同会带来什么哪,在Linux管理进程会比较简单的多!但也危险的多!Windows下会麻烦一些,但安全的多。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics