Day 2:进程与线程的相爱相杀

目录

一、多道程序设计技术

1.基本概念

2.多道批处理系统的优缺点

3.需要解决的问题

二、程序、进程、线程的区别与联系

1.程序的概念

2.进程的概念

3.线程的概念

4.三者的区别

5.三者的联系

三、线程实现方式

1.内核支持线程KST(Kernel Supported Threads)

2.用户级线程ULT(User Level Threads)

3.组合方式

(1)多对一模型

(2)一对一模型

(3)多对多模型


一、多道程序设计技术

1.基本概念

        在多道程序设计技术中,用户所提交的作业先存放在外存上,并排成一个队列,称为"后备队列"。然后由作业调度程序按一定的算法,从后备队列中选择若干个作业调入内存,使它们共享 CPU和系统中的各种资源。由于同时在内存中装有若干道程序,这样便可以在运行程序A时,利用其因I/O操作而暂停执行时的CPU空档时间,再调度另一道程序B运行,同样可以利用程序B在I/O操作时的CPU空档时间,再调度程序C运行,使多道程序交替地运行,这样便可以保持CPU处于忙碌状态。下图显示了四道程序的运行情况:

2.多道批处理系统的优缺点

        优点是:资源利用率高,提高内存利用率的同时也提高了I/O设备的利用率;系统吞吐量大,这是因为CPU和其他资源保持“忙碌”状态,且仅当作业完成时或运行不下去时才进行切换,系统开销小。

        缺点是:平均周转时间长;无交互能力,修改和调试程序极不方便。

3.需要解决的问题

        需要解决的问题有:处理机争用问题;内存分配和保护问题;I/O设备分配问题;文件的组织和管理问题;作业管理问题;用户与系统的接口问题。

二、程序、进程、线程的区别与联系

1.程序的概念

        程序是一组有序指令的集合,并存放于某种介质上,其本身并不具有活动的含义,是一个静态的实体。

        可以使用前驱图(Precedence Graph)来描述程序执行的先后顺序。前驱图是有向无环图DAG(Directed Acyclic Graph),图中必须不能存在循环。图中的结点表示一个进程或程序段,甚至是一条语句,结点间的有向边表示两结点之间存在的偏序(Partial Order)或前驱关系(Precedence Relation)。没有前驱的结点称作初始结点(Initial Node),没有后继的结点称作终止结点(Final Node)。每个结点还具有一个重量(Weight),表示该结点所含有的程序量或程序的执行时间。前驱图举例如下:

        程序顺序执行时的特征:顺序性、封闭性、可再现性。这些特征将为程序员检测和校正程序的错误带来极大的方便。程序顺序执行的前驱图如下:

        程序并发执行时的特征:间断性、失去封闭性、不可再现性。程序并发执行的前驱图如下:

2.进程的概念

        进程是可并发执行的程序在一个数据集合上的运行过程,亦即进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

        进程实体(又称进程映像)由程序段、相关的数据段和PCB三部分组成。

        进程是程序的一次执行;是一个程序及其数据在处理机上顺序执行时所发生的活动;是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

        进程的特征:结构性(最基本的特征)、动态性、并发性、独立性、异步性。

3.线程的概念

        线程是程序执行流的最小单位,是基本的CPU执行单元。

        进程的引入是为了提高资源利用率和系统吞吐量,而线程的引入是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。各个线程可以占用不同的CPU。

4.三者的区别

        程序是静态的,而进程和线程是动态的。进程是一个可拥有资源的独立单位,而线程是一个可独立调度和分派的基本单位。线程本身并不拥有资源,而是仅有一点必不可少的、能保证独立运行的资源。对于创建、撤销、切换这些操作来说,进程所付出的开销要远远大于线程。进程通信需要操作系统的支持,而同一进程间的线程间通信无需操作系统干预。多进程和多线程共享资源时都需要同步。在同一进程中的不同线程之间的独立性要比不同进程之间的独立性低得多。

5.三者的联系

        进程是程序的一次执行,线程是进程的可执行单元,同一进程的不同线程共享进程的资源和地址空间。线程又称之为轻型进程(Light-Weight Process),而传统的进程又被称作重型进程(Heavy-Weight Process),它相当于只有一个线程的任务。为使程序能够并发执行,系统需要对进程做一系列操作,这包括进程的创建、撤销和切换。在引入线程的OS中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行,甚至还允许在一个进程中的所有线程都能并发执行。同样,不同进程中的线程也能并发执行。线程除了拥有自己的少量资源外,还允许多个线程共享该进程所拥有的资源。在多处理机系统中,一个进程的多个线程被分配到多个处理机上,加速进程的完成。

三、线程实现方式

1.内核支持线程KST(Kernel Supported Threads)

        KST在内核的支持下运行,它们的创建、阻塞、撤销和切换也都是在内核空间完成的。对于设置了内核级线程的系统,调度是以线程为单位进行的。

        KST的优点是:内核能够同时调度同一进程中的多个线程并行执行;如果有线程被阻塞,内核可以调度其他线程占有处理器运行;线程切换快、开销小;内核本身可以采用多线程技术,提高系统的执行速度和效率。

2.用户级线程ULT(User Level Threads)

        ULT是在用户空间中实现的,对线程的创建、撤销、同步和通信都无需内核的支持,即用户级线程是与内核无关的。内核完全不知道用户级线程的存在。对于设置了用户级线程的系统,调度仍是以进程为单位进行的。

        ULT的优点是:线程切换不需要转换到内核空间;调度算法可以是进程专用的;ULT的实现与OS平台无关,ULT甚至可以在不支持线程机制的操作系统平台上实现。

        ULT的缺点是:在基于进程机制的OS中,线程执行系统调用时不仅会使该线程被阻塞,也会使进程中的所有线程被阻塞;而在KST中进程的其他线程仍然可以运行。在单纯的ULT实现方式中,内核每次分配给一个进程的只有一个CPU,进程中仅有一个线程能够执行,该线程放弃CPU之前,其他线程只能等待。

3.组合方式

(1)多对一模型

        将用户级线程映射到一个内核级线程。

        优点:线程管理开销小,效率高。

        缺点:一个线程在访问内核时发生阻塞,则整个进程都会被阻塞。在任意时刻只有一个线程能够访问内核,多个线程不能同时在多个处理机上运行。

(2)一对一模型

        每一个用户级线程映射到一个内核级线程。

        优点:当一个线程阻塞时,允许调度另一个线程运行,提供了比多对一模型更好的并发功能。允许多个线程并行地运行在多处理机系统上。

        缺点:每创建一个用户线程,相应地就创建一个内核线程,开销较大,需要限制整个系统的线程数。

(3)多对多模型

        将许多用户级线程映射到同样数量或更少数量的内核级线程上。

        优点:结合上述两种模型的优点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

交交的土拨鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值