26考研——进程与线程(2)
408答疑
文章目录
- 一、处理器管理相关概念
- 二、进程
- 三、线程和多线程模型
- 四、CPU 调度
- 五、同步和互斥
- 六、死锁
- 七、参考资料
- 鲍鱼科技课件
- 26王道考研书
- 八、总结
- 1、进程与线程
- 1.1、为什么要引入进程?
- 1.2、什么是进程?进程由什么组成?
- 1.3、进程是如何解决问题的?
- 1.4、进程与程序的区别与联系。
- 2、CPU 调度
- 2.1、为什么要进行 CPU 调度?
- 2.2、调度算法有哪几种?
- 3、同步和互斥
- 3.1、为什么要引入进程同步的概念?
- 3.2、不同的进程之间会存在什么关系?
- 3.3、当单纯用本节介绍的方法解决这些问题时会遇到什么新的问题吗?
- 3.4、进程同步、互斥的区别和联系。
- 4、死锁
- 4.1、为什么会产生死锁?产生死锁有什么条件?
- 4.2、有什么办法可以解决死锁问题?
- 4.3、银行家算法的工作原理。
一、处理器管理相关概念
- 文章链接: 点击跳转
二、进程
- 文章链接: 点击跳转
三、线程和多线程模型
- 文章链接: 点击跳转
四、CPU 调度
- 暂略
五、同步和互斥
- 文章链接: 点击跳转
六、死锁
- 文章链接: 点击跳转
七、参考资料
鲍鱼科技课件
b站免费王道课后题讲解:
网课全程班:
26王道考研书
八、总结
1、进程与线程
1.1、为什么要引入进程?
- 在多道程序设计的背景下,进程之间需要共享系统资源,因此会导致各程序在执行过程中出现相互制约的关系,程序的执行会表现出间断性等特征。
- 这些特征都是在程序的执行过程中发生的,是动态的过程,而传统的程序本身是一组指令的集合,是静态的概念,无法描述程序在内存中的执行情况,即无法从程序的字面上看出它何时执行、何时停顿,也无法看出它与其他执行程序的关系,因此,程序这个静态概念已不能如实反映程序并发执行过程的特征。
- 为了深刻描述程序动态执行过程的性质乃至更好地支持和管理多道程序的并发执行,便引入了进程的概念。
1.2、什么是进程?进程由什么组成?
- 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码本身,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
- 一个进程实体由程序段、相关数据段和 PCB 三部分构成,其中 PCB 是标志一个进程存在的唯一标识,程序段是进程运行的程序的代码,数据段则存储程序运行过程中相关的一些数据。
1.3、进程是如何解决问题的?
- 进程将能够识别程序运行状态的一些变量存放在 PCB中,通过这些变量系统能够更好地了解进程的状况,并在适当时机进行进程的切换,以避免一些资源的浪费,甚至划分为更小的调度单位——线程来提高系统的并发度。
- 接下来,我们再用一个比较熟悉的概念来类比进程,以便大家能彻底理解本节的内容到底在讲什么,到底解决了什么问题。
- 我们用“人的生命历程”来类比进程。
- 首先,人的生命历程一定是一个动态的、过程性的概念,要研究人的生命历程,先要介绍经历这个历程的主体是什么。主体当然是人,相当于经历进程的主体是进程映像,人有自己的身份,相当于进程映像里有 PCB;人生历程会经历好几种状态:出生的时候、弥留的时候、充满斗志的时候、发奋图强的时候及失落的时候,相当于进程有创建、撤销、就绪、运行、阻塞等状态,这几种状态会发生改变,人会充满斗志而转向发奋图强,发奋图强获得进步之后又会充满斗志预备下一次发奋图强,或者发奋图强后遇到阻碍会进入失落状态,然后在别人的开导之下又重新充满斗志。
- 类比进程,会由就绪态转向运行态,运行态转向就绪态,或者运行态转向阻塞态,然后在别的进程帮助下返回就绪态。若我们用“人生历程”这个过程的概念去类比进程,则对进程的理解就更深一层。前面生活化的例子可以帮我们理解进程的实质,但它毕竟有不严谨的地方。一种较好的方式是,在类比进程和人生历程后,再看一遍前面较为严谨的书面阐述和讨论,这样对知识的掌握会更加准确而全面。
1.4、进程与程序的区别与联系。
- 进程是程序及其数据在计算机上的一次运行活动,是一个动态的概念。进程的运行实体是程序,离开程序的进程没有存在的意义。从静态角度看,进程是由程序、数据和进程控制块(PCB)三部分组成的。而程序是一组有序的指令集合,是一种静态的概念。
- 进程是程序的一次执行过程,它是动态地创建和消亡的,具有一定的生命周期,是暂时存在的;而程序则是一组代码的集合,是永久存在的,可长期保存。
- 一个进程可以执行一个或几个程序,一个程序也可构成多个进程。进程可创建进程,而程序不可能形成新的程序。
- 进程与程序的组成不同。进程的组成包括程序、数据和 PCB。
2、CPU 调度
2.1、为什么要进行 CPU 调度?
- 若没有 CPU 调度,则意味着要等到当前运行的进程执行完毕后,下一个进程才能执行,而实际情况中,进程时常需要等待一些外部设备的输入,而外部设备的速度与 CPU 相比是非常缓慢的,若让 CPU 总是等待外部设备,则对 CPU 的资源是极大的浪费。
- 而引进 CPU 调度后,可在运行进程等待外部设备时,将 CPU 调度给其他进程,从而提高 CPU 的利用率。用一句简单的话说,就是为了合理地处理计算机的软/硬件资源。
2.2、调度算法有哪几种?
- 本节介绍的调度算法有先来先服务调度、短作业优先调度、优先级调度、高响应比优先调度、时间片轮转调度、多级队列调度、多级反馈队列调度 7 种。
- 先来先服务算法和短作业优先算法无法保证及时地接收和处理问题,因此无法保证在规定的时间间隔内响应每个用户的需求,也同样无法达到实时操作系统的及时性需求。
- 优先级调度算法按照任务的优先级进行调度,对于更紧急的任务给予更高的优先级,适合实时操作系统。
- 高响应比优先调度算法、时间片轮转调度算法、多级反馈队列调度算法都能保证每个任务在一定时间内分配到时间片,并轮流占用 CPU,适合分时操作系统。
- 本节主要介绍了 CPU 调度的概念。
- 操作系统主要管理 CPU、内存、文件、设备几种资源,只要对资源的请求大于资源本身的数量,就会涉及调度。例如,在单处理器系统中,CPU 只有一个,而请求的进程却有多个,因此就需要 CPU 调度。
- 出现调度的概念后,又有了一个问题,即如何调度、应该满足谁、应该让谁等待,这是调度算法所面对的问题;而应该满足谁、应该让谁等待,要遵循一定的准则。
3、同步和互斥
3.1、为什么要引入进程同步的概念?
- 在多道程序共同执行的条件下,进程与进程是并发执行的,不同进程之间存在不同的相互制约关系。
- 为了协调进程之间的相互制约关系,引入了进程同步的概念。
3.2、不同的进程之间会存在什么关系?
- 进程之间存在同步与互斥的制约关系。
- 同步是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。
- 互斥是指当一个进程进入临界区使用临界资源时,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一进程才允许去访问此临界资源。
3.3、当单纯用本节介绍的方法解决这些问题时会遇到什么新的问题吗?
- 当两个或两个以上的进程在执行过程中,因占有一些资源而又需要对方的资源时,会因为争夺资源而造成一种互相等待的现象,若无外力作用,它们都将无法推进下去。
- 这种现象称为死锁。
3.4、进程同步、互斥的区别和联系。
- 并发进程的执行会产生相互制约的关系:
- 一种是进程之间竞争使用临界资源,只能让它们逐个使用,这种现象称为互斥,是一种竞争关系;
- 另一种是进程之间协同完成任务,在关键点上等待另一个进程发来的消息,以便协同一致,是一种协作关系。
4、死锁
4.1、为什么会产生死锁?产生死锁有什么条件?
- 由于系统中存在一些不可剥夺资源,当两个或两个以上的进程占有自身的资源并请求对方的资源时,会导致每个进程都无法向前推进,这就是死锁。
- 死锁产生的必要条件有 4 个,分别是互斥条件、不剥夺条件、请求并保持条件和循环等待条件。
- 互斥条件是指进程要求分配的资源是排他性的,即最多只能同时供一个进程使用。
- 不剥夺条件是指进程在使用完资源之前,资源不能被强制夺走。
- 请求并保持条件是指进程占有自身本来拥有的资源并要求其他资源。
- 循环等待条件是指存在一种进程资源的循环等待链。
4.2、有什么办法可以解决死锁问题?
- 死锁的处理策略可以分为预防死锁、避免死锁及死锁的检测与解除。
- 死锁预防是指通过设立一些限制条件,破坏死锁的一些必要条件,让死锁无法发生。
- 死锁避免指在动态分配资源的过程中,用一些算法防止系统进入不安全状态,从而避免死锁死锁的检测和解除是指在死锁产生前不采取任何措施,只检测当前系统有没有发生死锁,若有,则采取一些措施解除死锁。
4.3、银行家算法的工作原理。
- 银行家算法的主要思想是避免系统进入不安全状态。
- 在每次进行资源分配时,它首先检查系统是否有足够的资源满足要求,若有则先进行试分配,并对分配后的新状态进行安全性检查。若新状态安全,则正式分配上述资源,否则拒绝分配上述资源。
- 这样,它保证系统始终处于安全状态,从而避免了死锁现象的发生。