读书笔记-现代操作系统-2进程与线程-2.1进程2.2线程

来源:互联网 发布:淘宝退货优惠券退吗 编辑:程序博客网 时间:2024/06/05 05:44

1. 进程与线程

首先,应该考虑的是引入进程和线程需要解决的问题是什么?
以我个人的意见来看,进程的抽象解决了这样的一个问题:使同一台计算机上可以运行多道不相关联的任务,而进程的引入主要目的在于提高同一个任务完成的效率。如果围绕这个进程和线程的目的来看分析进程和线程的区别就比较容易总结了。

1.1 进程:

由于需要解决多个任务的问题,进程首先需要的就是资源分组处理执行能力。这些资源和能力定义了进程。
通常来说从进程的实现来看,进程模型的实现需要操作系统维护一个进程表。表中每个进程占用一个进程表项(进程控制块)。这个进程表项中包括了进程的信息,包括程序计数器,堆栈指针,内存分配情况,所打开的文件,账号和调度信息,以及其他进程的状态信息。这些内容不仅相互独立而且是与操作系统的实现是密切相关的。
也因为与操作系统密切相关,进程创建销毁和切换的代价是很大的,也就说是很慢的。

  • 进程与中断、定时器和上下文切换:
    首先,在微机原理里面说过中断、定时器和上下文切换,而进程是对这部分更加底层内容的抽象。

1.2 线程:

线程与进程不同的地方在于它强调的是资源共享执行能力上。

  • 为何需要进程,根本原因有两个:

    1. 是任务中有多种活动而其中某些活动可能存在阻塞线程的情况(比如说IO读取,网络信息传递等等)这样的情况下,将程序分解称为多个可以并行执行的任务可以有效的提高效率
    2. 当然上面说的可以是单核的意义,对于多核的计算机,多线程可以确实的实现并行系统,更具有现实意义。
  • 在何种情况下需要使用多线程:

    1. 并行实体共享同一个地址空间和所有可用数据的能力,这是多进程模型无法提供的。比如说进程提供了共享的全局变量,拥有相同的地址空间,相同的打开文件,相同的信号与信号处理程序,子进程和账号信息。应该说除了进程内部的局部变量之外,大部分的资源都是共享的,这些资源都 服务于需要共同完成一项任务。
    2. 线程更加轻量级,建立和撤销也更快,通常来说快1-2数量级
    3. 从性能的角度上考虑,多进程模型对于存在大量IO操作的任务更有意义,对于CPU密集型的任务提升可能有限,而且还可能由于平凡的任务切换导致效率降低
    4. 在多核系统中实现真实的并行运行。

1.3 线程和进程的相同点:

除了上面所说的进程和线程的不同之外应该说两种之间的共同点还是很多的。
对于状态信息、进程间通信IPC,和调度都有很多相似之处可以一起讨论

1 0
原创粉丝点击