操作系统—线程

操作系统—线程

进程与线程

进程

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

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

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

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

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

这其中的关键思想:

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

进程两个特点:

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

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

线程

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

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

图1.png

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

图2.png

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

线程分类

线程分为两大类:

  • 用户级线程(ULT)

  • 内核级线程(KLT)

用户级线程

在纯ULT软件中,管理线程的所有工作都由应用程序完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值