当前位置:   article > 正文

操作系统—线程_semsignal

semsignal

操作系统—线程

进程与线程

进程

进程是操作系统提供的最古老的也是最重要的抽象概念之一,即使可以使用的CPU只有一个,但它们也具有支持(伪)并发操作的能力。

进程和程序间的区别是很微妙的:

想象有一位厨艺非凡的科学家正在为他的女儿制作蛋糕。他有做蛋糕的食谱,厨房里面有需要的原料:面粉,鸡蛋,糖等。

上面的例子中:做蛋糕的食谱就是程序(用适当形式描述的算法),科学家就是处理器,而做蛋糕的各种原料就是输入数据,进程就是科学家阅读食谱,取来各种原料以及制作蛋糕等一系列动作的总和。

现在假设科学家的儿子哭着跑了进来,说他的头被蜜蜂蛰了。科学家就记录下他照着食谱做到哪了(保存进程的当前状态),然后拿出一本急救手册,按照里面的指示处理儿子的蛰伤。这里,处理器就从一个进程(做蛋糕)切换到了另一个高优先级的进程(医疗救治)。每个进程拥有各自的程序(食谱和急救手册),当儿子的伤处理完了之后,科学家又回到厨房继续做蛋糕,从他离开时的那一步继续做下去。

这其中的关键思想:

一个进程是某种类型的一个活动,它有程序,输入,输出以及状态,单个处理器可以被若干进程共享,它使用某种调度算法来决定何时停止一个线程的工作,转而为另一个进程提供服务。

进程两个特点:

  • 资源所有权:进程包括存放进程映像的虚拟地址空间;进程映像是程序,数据,栈和进程控制块中定义的属性集;进程总具有对资源的控制权,这些资源包括内存,IO通道,IO设备,文件等。

  • 调度/执行:进程执行时采用一个或多程序的执行路径;不同进程的执行过程会交替进行。

线程

简单来说,线程就是存在一个进程里面的诸多的“迷你进程”。

而多线程是指操作系统在单个进程内支持多个并发执行路径的能力。下图展示了线程和进程:

图1.png

下图从进程管理的角度说明了线程和进程的区别:

图2.png

多线程环境下,进程仍然只有一个与之关联的进程控制块和用户地址空间,但每个线程现在会有许多单独的栈和一个单独的控制块,控制块中包含寄存器值,优先级和其他线程相关的状态信息。所以进程中的所有线程共享该进程的状态和资源,所有线程都驻留在同一块地址空间中,并可访问相同的数据。

线程分类

线程分为两大类:

  • 用户级线程(ULT)

  • 内核级线程(KLT)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/149074
推荐阅读
相关标签
  

闽ICP备14008679号