菜鸟之旅——学习线程(0)

小说:看都看了,点一下吧,2000万棵紫穗槐苗开园上市作者:道平顺海更新时间:2019-04-27字数:37652

  在现在的软件编程中,不可避免的会用到多线程或者其他方式来实现异步的目的,那么,线程是个什么东西,如何使用?这些都是需要去学习与摸索的东西。不过在学习线程之前,还是有一些知识需要掌握的,虽说都是书本上的东西,但是还是对线程的学习有一定的作用的。

 

进程

 目的

  现在的计算机存在很多的操作系统(OS),大部分操作系统都是实时操作系统,可以实时的响应用户的操作,它们往往都有共同的基本特征:并发、共享虚拟,进程的产生于并发、共享有很大的联系。

  操作系统可以“同时”运行着很多的程序,并且很多程序有可能会有通讯、共同使用某些IO设备,比如打印机之类的,这些都是操作系统为我们提供的诸多便利,但是实际上CPU在同一时刻只能处理一道程序,但是操作系统却实现了程序并发的特征,这是因为在微观上是因为多个程序交替使用CPU和其他资源;但是在多道程序环境下,程序之间将会失去封闭性,并具有间断性及不可再现性,为了能够更好的实现并发特征,引入了进程这一概念。每个进程通过一种时间片轮转调度算法来进行调度,分配运行时间片,在时间片内可以使用CPU或是其他资源,由于时间片非常短暂,用户感觉不到进程之间的切换。

  注意:在多处理机上,每个处理机可以处理不同的程序,可以说是真正的并发。

 定义

  从不同的角度,进程可以有不同的定义,比较典型的定义有:

  1、进程是程序的一次执行过程。

  2、进程是一个程序及其数据在处理机上顺序执行时所发生的活动。

  3、进程是具有独立功能的程序在一个数据集上运行的过程,是操作系统进行资源分配和调度的一个独立单位。

 组成

  PCB:进程控制块,为了使参与并发执行的程序(含数据)能够独立的运行,更好的并发且不会冲突,于必须给进程配置一个专门的数据结构,操作系统利用PCB来控制和管理进程,PCB是进程的唯一标识

  程序段:程序段就是能被进程调度程序调度到CPU执行的程序代码段,注意程序是固定的,可以被多个进程共享,就是说多个进程可以运行同一段程序。

  数据段:一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行时产生的中间或最终结果。

  由PCB、程序段和数据段三部分构成了进程映像,进程的创建就是创建进程映像中的PCB,进程的撤销就是撤销进程的PCB。在引入进程映像的概念后,可以把传统操作系统中的进程定义为:进程是进程映像的运行过程,是系统进行资源分配和调度的一个独立单位。进程是动态的,而进程映像是静态的。

 状态

  进程存在5种状态,分别是创建、就绪、运行、阻塞和终止,而进程大部分时间是在就绪、阻塞和终止三个状态下切换。
             

  进程的切换:进程切换就是处理机(CPU)从一个进程的运行转到另一个进程上,进程的运行环境发生了实质性的变化:

  1、保存CPU上下文,包括程序计数器和其他寄存器;

  2、更新PCB信息;

  3、把进程的PCB移入相应的队列,比如就绪或者等待队列;

  4、选择另一个进程运行,更新其PCB;

  5、更新内存管理的数据结构;

  6、恢复CPU上下文信息。

 

线程 

  我们从上面简单的回顾了一下进程的基本知识,当然,进程还有很多知识点没有介绍到,因为本人能力有限,就不更多的介绍了。下面开始回顾线程的基本知识:

 目的

  进程的引入是为了解决操作系统实现多个程序并发执行,进程的出现使各个程序在并发执行具有良好的封闭性,在进程切换的时候总会消耗一些资源,有一定量的时空消耗,但是随着软件复杂度提升,进程所占用的资源也会变多,在进程切换时需要付出更多的时空开销!于是为了减小程序在并发执行时所付出的时空开销,提升操作系统的并发性能,便引入了线程的概念。

 定义

  对于线程的最直接理解就是:轻量级进程,它是一个基本的CPU执行单元,由线程ID、程序计数器、寄存器集合和堆栈组成;线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一些在运行中必不可少的资源,但是可以与同一进程下的线程共享进程的全部资源。

  引入线程之后,进程的内涵发生了变化,进程只作为除CPU以外系统资源的分配单元,线程则作为CPU的分配单元,进程内线程切换时不会引起进程切换,减少时空开销。

 与进程的比较

   1、调度:在传统的操作系统中,拥有资源和独立调度的基本单位都是进程,在引入线程之后,线程则变为独立调用的基本单位,进程则是拥有资源 的基本单位;同一进程内线程切换不会引起进程的切换,但是不同进程间的线程切换则会引起进程的切换。

  2、拥有资源:进程是拥有资源的基本单位,而线程不拥有系统资源(除一些必不可少的资源),但是线程可以使用其进程的资源。

  3、系统开销:由于线程并不拥有系统资源,所以同一进程下线程在被调度到CPU执行时,只需保存和设置少量寄存器内容,而无需保存、更新进程在CPU运行的环境,所付出的时空开销相对变得更少。

  4、并发性:在引入线程的操作系统中,由于线程不论在创建、撤销或者在调度切换时时空消耗更低,且进程间的线程切换也不会引起进程的切换,所以在整体的并发性能上,引入线程的操作系统吞吐量更高。

总结

  进程:计算机的CPU在同一时刻只有一道程序运行,且CPU是高速的,若是CPU等待程序的其他资源就绪,就会造成CPU的性能浪费,若是并发执行程序,在等待当前程序的其他资源就绪时,先去运行别的程序,就可以尽量减少CPU性能的浪费;这时引入了进程的概念,且CPU是以时间片调度的方式运行进程,进程的出现使得多到程序并发执行具有良好的封闭性和可控,使得操作系统拥有可控、稳定的并发性能。

  线程:进程作为系统资源和调度的基本单元本身是没什么问题,但是随着程序的日渐复杂,进程所拥有的资源变多,在进程被调度到CPU进行切换时,CPU需要保存当前进程的运行环境和设置要执行进程的运行环境,这里所付出的时空开销会越来越大;为了减少在调度时的开销,引入了更轻量的进程-线程,这时进程不再作为调度的基本单元,线程变为调度的基本单元,线程在进行切换要比进程的切换的开销小很多,这时操作系统的并发性能能够得到更良好的应用。

  总结的知识点不是很多,深一层的运行机制、数据结构和调度算法等,因本人知识限制都没有涉及到,这里还需要后续的学习。

 

当前文章:http://leetaemin.cn/array/sshdev260n.html

发布时间:2019-04-27 00:00:00

30公分高卫矛什么价格? 2017年最新的常春藤小苗价格表 80公分小叶黄杨球价格 龙爪槐花期是什么时候? 灌木月季和藤本月季有什么区别? 【货源分享】矮生型护坡高羊茅多少钱一公斤 决明子种子什么时候播种最适合? 白三叶籽多少钱一斤? 酸角的种子哪里能买到? 波斯菊怎么催芽呢?

34171 11494 17109 23891 23044 20848 54573 50129 16990 17495 62176 28382 68726 99953 85445 86636 14528 51715 43727 75539 62693 94642 22541

我要说两句: (0人参与)

发布