os-进程线程概念

   操作系统中为了提供CPU的利用率,引入了多道编程,于是就有了进程的概念。
   进程模型无疑提高了CPU的利用率,因为多个进程可以“同时”运行在一个CPU上,一个进程被阻塞掉了,另一个进程就可以被调度上CPU继续运行了。这样降低了CPU闲置的时间。
   但是进程模型却存在一个问题。那就是如果一个进程被阻塞掉了,它就必须让出CPU了。同时对于一个任务,如果它是进程实现的(单进程),它实际上是“伪并发”的。因为一个进程内部不能并行运行。
   于是就产生了线程模型,允许一个进程内部存在两个东西,同时运行任务,这样就真正意义上实现了并发。
   有人会问,何必要出现线程模型,直接用多进程编程不是就可以了吗?
   多进程编程会有诸多问题,例如多个进程拥有不同的地址空间,交互起来比较麻烦。
   但是不可否认,引入线程模型后确实也带来了许多问题。

   在现在操作系统中,进程模型扮演的角色更多的像一个资源分配的单元,不论是CPU资源还是IO资源。
   不过对于CPU这样特殊的资源,有产生了线程这个模型来更好地利用这个稀缺资源。
  
   会有一些概念性质的问题,例如OS调度的基本单位是什么?
   这个问题比较难以回答,因为有的系统调度的单位是进程,有的是线程。
   Linux系统调度的基本单位是进程,据说,unix从某些版本后调度单位就是线程了,没有深究,仅供参考。
  
   至于Linux下的内核线程,idle与init,实际上是进程,由于他们没有用户态的地址空间,只在内核态有地址空间,从这个角度,被称为“线程”。

猜你喜欢

转载自peng-wp.iteye.com/blog/1177947
今日推荐