2.1 进程与线程
进程是指令的集合(错,程序是指令的集合,进程是程序的一次执行过程)
优先级是进程调度的重要依据,一旦确定就不能改变(错)
在单CPU的系统中,任意时刻都有一个进程处于运行状态(错,可以空转)
进程申请CPU得不到满足时,其状态变为阻塞(错!等待CPU的进程处于就绪状态)
进程获得CPU运行是通过调度得到的(对)
线程是一种特殊的进程(对)
进程是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的独立单位(对)
进程是PCB结构、程序和数据的集合(对)
撤销父进程时,应同时撤销子进程(错!进程撤销可采用两种策略,一种是只撤销指定进程,另一种是撤销指定进程和其子孙进程)
撤销父进程时,应同时撤销子进程(错!进程撤销可采用两种策略,一种是只撤销指定进程,另一种是撤销指定进程和其子孙进程)
线程的切换,可能会引起进程的切换(对)
引入线程后,处理机只在线程中切换(错!!)
线程是比进程更小的能独立运行的基本单位(错,这句话的成立需要一定的前提条件)
线程的引入增加了程序执行的时空开销(错,应为减少)
一个进程一定包含多个线程(错)
一个进程创建的若干线程共享该进程的程序段和数据段,但是它们有各自的运行栈区(对)
中断是进程切换的必要条件,而不是充分条件。(对)
中断是进程切换的必要条件,而不是充分条件。(对)
进程的基本特点:动态性,并发性,独立性,异步性,结构性。
在多道程序设计环境下,操作系统分配资源以进程为基本单位
在引入线程的操作系统中,资源分配的基本单位是进程,CPU分配的基本单位是线程。
在引入线程的操作系统中,进程是资源分配的基本单位,线程是调度的基本单位
从运行状态到就绪状态是由于时间片用完或出现了比现在进程优先级更高的进程(调度程序决定)
从就绪状态到运行状态是调度程序决定的
从阻塞状态到就绪状态是协作程序决定的
从运行状态到阻塞状态是进程自身决定的(只有这个是主动的)
对进程的管理和控制使用原语。(原语包括创建原语,撤销原语,阻塞原语,唤醒原语等)
一个进程被唤醒意味着进程变为就绪状态(该进程可能重新占用CPU)。(唤醒原语的功能是将被被唤醒进程从阻塞队列中移到就绪队列中)
降低进程优先级的合理时机是进程的时间片用完。
一个进程被唤醒意味着进程变为就绪状态(该进程可能重新占用CPU)。(唤醒原语的功能是将被被唤醒进程从阻塞队列中移到就绪队列中)
降低进程优先级的合理时机是进程的时间片用完。
进程调度主要负责选一个进程占有CPU。
建立多线程的主要目的是提高CPU的利用率。
进程调度的方式有抢占式,非抢占式两种。
(?)以下 C 不会引起进程创建。A.用户登录 B.作业调度 C.设备分配 D.应用请求
进程与程序的联系与区别:
联系:进程是程序的一次执行过程,没有程序就没有进程
区别:
1.进程是程序的执行,所以进程属于动态概念,程序是一组指令的有序集合,是静态的概念
2.进程的存在是暂时的,程序的存在是永久的(相对而言)
3.进程的组成包裹程序,数据和PCB块
4.一个程序可能对应多个进程,一个进程也可以包含多个程序。也就是说,程序和进程无一一对应关系。
多线程与多任务的区别:
多任务是针对操作系统而言的,代表操作系统和同时执行的程序数。多线程是针对一个程序而言的,代表着一个程序内部可以同时执行的线程个数。
什么是内核线程?什么是用户线程?
内核线程是与操作系统内核中的程序相对应的线程。
用户线程是与用户的应用程序相对应的线程。
什么是内核支持线程?
内核支持线程是指其创建、撤销和切换都需要内核程序支持才能实现的线程,内核通过保留一个线程控制块用于感知该线程的存在并对其控制。所对应的程序可以是内核程序,也可以是用户程序,但主要是用户的应用程序
简述用户级线程和内核支持线程的区别。
1.内核支持线程是操作系统内核可感知的,而用户级线程是操作系统内核不可感知的。
2.用户级线程的创建,撤销和调度不需要操作系统内核的支持,是在语言这一级处理的(如运行在Java虚拟机中的程序);而内核支持线程的创建,撤销,调度都需要操作系统内核提供支持,而且与进程的创建,撤销和调度大体上是相同的。
3.在只有用户级线程的系统内,CPU调度还是以进程为单位,处于运行状态的进程中的多个线程,由用户程序控制线程的轮换运行;在有内核支持线程的系统内,CPU调度则以线程为单位,由操作系统的线程调度程序负责线程的调度。
4.用户级线程的程序实体是运行在用户态下的程序,而内核支持线程的程序实体则是运行在任何状态下的程序。
2.2 处理机调度
调度的层次:高级调度(作业调度,宏观调度),中级调度(中程调度,交换调度),低级调度(进程调度,微观调度,短程调度)。
运行频率:高级调度<中级调度<低级调度
以下四种情况可能发生CPU调度:
1.进程从运行状态转换到等待状态
2.进程从运行状态转换到就绪状态
3.进程从等待状态转换到就绪状态
4.进程终止
调度算法的评价准则:
1.CPU利用率
2.系统吞吐量(单位时间CPU完成作业的数量)
3.周转时间(完成时间-提交时间)
4.平均周转时间(所有作业周转时间平均值)
5.带权周转时间(周转时间/运行时间)
6.平均带权周转时间(所有作业带权周转时间平均值)
7.响应时间(系统首次产生响应时间-用户提交请求时间,在交互式系统中更重要)
进程调度方式:抢占方式,非抢占方式
在调度时机中只有当进程从运行状态转换到等待状态,当进程终止时的两种情况下进行的调度为非抢占式的。
典型调度算法
1.先来先服务调度算法(FCFS)
FCFS对CPU繁忙型进程比较有利,而对I/O繁忙型进程则不利。因为I/O繁忙型进程在执行I/O操作时进场放弃对CPU的占用;当I/O操作完成后,又需要等待很长一段时间后才能分配到CPU。FCFS是非抢占性的。有利于长作业,不利于短作业。不适合分时系统。无饥饿问题
2.短作业优先调度算法(SJF)
可以证明当所有进程同时到达时,SJF可以给出最小的平均等待时间,所以经常被用于批处理系统。该算法的缺点是对长进程不利,而且不能保存及时处理紧急性作业,而且有一个实际困难是难以预先获知CPU请求的占用长度。SJF通常在批处理系统的长程调度中使用。
SJF算法可以是抢占性或非抢占式的;抢占式SJF调度也被称为最短剩余时间优先级调度(SRTF)
有可能出现“饥饿问题”。
3.优先级调度算法
根据进程调度方式的不同,可以将该算法分为非抢占式优先级调度算法和抢占式优先级调度算法。根据优先级是否可变,可以分为静态优先级和动态优先级。静态优先级有可能出现“饥饿问题”。
4.时间片轮转调度算法(RR)
时间片轮转调度算法主要用于分时系统中的进程调度。时间片大小对系统性能影响很大,时间片过大,该算法退化为FCFS;时间片过小,系统开销很大。
5.高响应比优先调度算法(HRRN)
HRRN主要用于作业调度,其做法是在每次调度时,计算后备队列中每个作业的响应比,选择响应比最高的作业投入运行。
响应比=作业周转时间/估计运行时间=1+作业等待时间/估计运行时间
HRRN是非抢占式的
既有利于短作业又兼顾长作业,没有饥饿现象
6.多级队列调度算法(MQ)
用于进程调度,其核心思想是根据进程的性质或类型,将就绪队列划分成为若干子队列,每个进程固定属于一个就绪队列,每个就绪队列采用一种调度算法。
7.多级反馈队列调度算法
多级反馈队列调度算法是时间片轮转调度算法和优先级调度算法的综合和发展。可以兼顾多方面的系统目标。不必估计进程的执行时间。
算法实现思想如下:
1.系统中应设置多个就绪队列,每个就绪队列设置一个优先级,第一个队列优先级最高,其余队列优先级依次降低。
2.每个队列中进程执行时间片大小各不相同,队列优先级越高,时间片越短。
3.当一个新进程进入系统时,首先将它放入第一个队列的末尾,按FCFS排队。如果它在一个时间片内尚未完成,调度程序便将该进程转入第二个队列的末尾,如果还未完成就转入第三个...以此类推。最后一个队列中使用时间片轮转调度算法。
4.仅当第一个队列为空事,调度程序才从第二个队列中选择进程运行,仅当第1个到第i-1个队列均为空时,才会调度第i个队列的进程运行。当CPU正在执行第i个队列某进程时,若又有新进程进入优先级较高的队列中,则此时新进程将抢占正在运行进程的处理机。即由调度程序把正在执行的进程放入第i个队列末尾,重新将处理机分配给优先级更高的进程。
例题:
若某单处理器多进程系统中有多个就绪进程,则下列关于处理机调度的叙述中,错误的是 C
A.在进程结束后才能进行处理机调度
B.创建新进程后能进行处理机调度
C.在进程处于临界区时不进行处理机调度
D.在系统调用完成并返回用户态时能进行处理机调度
作业是用户提交的,进程是系统自动生成的,除此之外,两者的区别是 B
A.两者执行不同的程序段
B.前者以用户任务为单位,后者是操作系统控制的单位
C.前者是批处理的,后者是分时的
D.后者可并发执行,前者则不行
在单处理机的多进程系统中,进程切换时什么时候占用处理机和占用多长时间取决于进程自身和进程调度策略一个线程可以包含多个进程。
简述作业和进程的区别:
进程是一个程序对某个数据集的执行过程,是分配资源的基本单位,作业是用户需要计算机完成的某项任务,是要求计算机所做工作的集合。一个作业的完成要经过作业提交,作业收容,作业执行,和作业完成4个阶段。而进程是对已提交完毕程序所执行过程的描述,是资源分配的基本单位。其主要区别如下:
1.作业时用户向计算机提交任务的任务实体。在用户向计算机提交作业后,系统将它放入内存中的作业等待队列中等待执行。而进程是完成用户任务的执行实体,是向系统申请分配资源的基本单位。
2.一个作业可以由多个进程组成,且至少有一个进程组成,反过来就不成立。
3.作业的概念主要用于批处理系统中,向UNIX这样的分时系统中没有作业的概念,而进程的概念则用在几乎所有的多道程序系统中,在Windows中进程又被细化成线程。
作业调度的主要功能是检查系统是否满足作业的资源要求以及按照一定的算法来选取作业,把内存中的作业调度到内存中,并为其创建进程,加入就绪队列中等待进程调度。进程调度根据一定的短发将CPU分派给队列中的的一个进程,让其执行。
2.3 进程同步
临界资源:把一次仅允许一个进程使用的资源成为临界资源。
临界区:访问临界资源的那段程序称为临界区
进程互斥应遵循的准则:
空闲让进:当没有进程处于临界区时,可以允许一个请求进入邻接区的进程立即进入
忙则等待:当已有进程处于临界区时,其他试图进入临界区的进程必须等待。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论