05进程与线程(3)
王道操作系统第二章进程与线程思维导图脑图

用一个整数型的变量作为信号量,用来表示系统中某种资源的数量
与普通整型变量的区别:对信号量的操作只有三种,即初始化,P操作,V操作
整型信号量
存在的问题:不满足“让权等待”的原则,会发生“忙等”
P,V原语用于实现系统资源的“申请”和释放
S.value的初值表示系统中某种资源的数目
对信号量S的一次Р操作意味着进程请求一个单位的该类资源,因此需要执行 S.value--,表示资源数减1,当S.value<0时表示该类资源已分配完毕,因此进程 应调用block原语进行自我阻塞(当前运行的进程从运行态→阻塞态),主动放 弃处理机,并插入该类资源的等待队列S.L中。可见,该机制遵循了“让权等 待”原则,不会出现“忙等”现象。
进程的整个生命周期中,大部分时间都处于三种基本状态
进程的状态和转换
状态间的转换
就绪态→运行态
进程被调度
运行态→就绪态
时间片到,或CPU被其他高优先级的进程抢占
运行态→阻塞态
等待系统资源分配,或等待某事件发生(主动行为)
阻塞态→就绪态
资源分配到位,等待的事件发生(被动行为)
创建态→就绪态 运行态→终止态
系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个 进程访问该资源
互斥共享方式
基本概念
进程同步
系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问
同时共享方式
两种资源共享方式
把一个时间段内只允许一个进程使用的资源称为临界资源,对临界资源的访问, 必须互斥的进行
互斥,亦称间接制约关系,进程互斥指当一个进程访问某临界资源时,另一个想 要访问该临界资源的进程必须等待,当前访问临界资源的进程访问结束,释放该 进程之后,另一个进程才能去访问临界资源
操作系统期末试卷(含答案)1

一、选择题1、在现代操作系统中引入了(),从而使并发和共享成为可能。
A.单道程序B. 磁盘C. 对象D.多道程序2、( )操作系统允许在一台主机上同时连接多台终端,多个用户可以通过各自的终端同时交互地使用计算机。
A.网络B.分布式C.分时D.实时3、从用户的观点看,操作系统是()。
A. 用户与计算机硬件之间的接口B.控制和管理计算机资源的软件C. 合理组织计算机工作流程的软件D.计算机资源的的管理者4、当CPU处于管态时,它可以执行的指令是()。
A. 计算机系统中的全部指令B. 仅限于非特权指令C. 仅限于访管指令D. 仅限于特权指令5、用户在程序中试图读取某文件的第100个逻辑块时,使用操作系统提供的()接口。
A. 系统调用B.图形用户接口C.原语D.键盘命令6、下列几种关于进程的叙述,()最不符合操作系统对进程的理解?A.进程是在多程序并行环境中的完整的程序。
B.进程可以由程序、数据和进程控制块描述。
C.线程是一种特殊的进程。
D.进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
7、当一个进程处于()状态时,称其为等待(或阻塞)状态。
A. 它正等待中央处理机B. 它正等待合作进程的一个消息C. 它正等待分给它一个时间片D. 它正等待进入内存8、一个进程释放一种资源将有可能导致一个或几个进程()。
A.由就绪变运行B.由运行变就绪C.由阻塞变运行D.由阻塞变就绪9、下面关于线程的叙述中,正确的是()。
A.不论是系统支持线程还是用户级线程,其切换都需要内核的支持。
B.线程是资源的分配单位,进程是调度和分配的单位。
C.不管系统中是否有线程,进程都是拥有资源的独立单位。
D.在引入线程的系统中,进程仍是资源分配和调度分派的基本单位。
10、设有3个作业,它们同时到达,运行时间分别为T1、T2和T3,且T1≤T2≤T3,若它们在单处理机系统中按单道运行,采用短作业优先调度算法,则平均周转时间为()。
进程与线程的区别和联系

进程概念进程是表示资源分配的基本单位,又是调度运行的基本单位。
例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。
然后,把该进程放人进程的就绪队列。
进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。
所以,进程是系统中的并发执行的单位。
在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。
在微内核系统中,真正调度运行的基本单位是线程。
因此,实现并发功能的单位是线程。
线程概念线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。
如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。
例如,假设用户启动了一个窗口中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。
假设用户要从数据库中产生一份工资单报表,并传到一个文件中,这是一个子任务;在产生工资单报表的过程中,用户又可以输人数据库查询请求,这又是一个子任务。
这样,操作系统则把每一个请求――工资单报表和新输人的数据查询表示为数据库进程中的独立的线程。
线程可以在处理器上独立调度执行,这样,在多处理器环境下就允许几个线程各自在单独处理器上进行。
操作系统提供线程就是为了方便而有效地实现这种并发性引入线程的好处(1)易于调度。
(2)提高并发性。
通过线程可方便有效地实现并发性。
进程可创建多个线程来执行同一程序的不同部分。
(3)开销少。
创建线程比创建进程要快,所需开销很少。
(4)利于充分发挥多处理器的功能。
通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。
进程和线程的关系(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
线程是操作系统可识别的最小执行和调度单位。
进程与线程

Process类常用属性和方法
Basepriority 进程优先级(只读) Priortyclass 设置或更改进程优先级 ExitCode 获取关联进程终止时指定的值 一般为0表 明进程成功退出 ExitTime 退出时间 HasExited 是否已终止 Id 进程唯一的标示符 MachineName 进程所运行的计算机名(本机名: Environment.machinename)
线程同步
• 当多个线程要对同一资源进行访问时,会出现如下问题: • 线程1在操作变量1,但线程1对变量1的操作没完成时,线 程1执行的时间已到,执行权交给线程2,此时线程2读取 变量1时读取的就是未知或者错误的数据。 • 要解决这一问题,.NET提供了很多方法,最简单的还是 lock • Lock’可以锁定某一变量,使得锁定范围内的代码期间只 能被一个单一线程操作(进入),操作完成后,其他线程 才可以进入执行。 • Demo 使用Lock实现线程同步 一个经典的多人同时提款 问题
• Demo:在线程池中执行任务
BackGroundWorker组建
• 当某些代码或者任务耗时比较长时,我们需要将 这些任务放在线程内执行,以避免影响主线程与 用户的交互。 • 这些工作用线程即可以实现,但在.NET中提供了 一个BackGroundWorker组件,专门用于完成这 些需要在后台线程内执行的工作,并可以通知主 线程任务进度及发送任务完成的消息。 • BackGroundWorker可以通过编程创建,也可以 通过工具箱拖放创建。
• GetProcessById 通过ID获取对应进程 • GetProcesses 获取本机所有进程 • Start 启动一个新进程
• DEMO 进程管理 启动和停止进程
操作系统中的进程与线程区别

操作系统中的进程与线程区别在操作系统中,进程和线程是两个重要的概念。
它们都是操作系统进行任务管理和资源分配的基本单位,但在很多方面存在着区别。
本文将从不同角度详细讨论进程与线程的区别。
一、定义和概念进程是指在操作系统中正在运行的程序。
一个进程可以包含多个线程,它们共享进程的资源,如内存、文件和网络连接等。
每个进程都有自己的地址空间和系统资源。
线程是进程的执行单元。
一个进程可以包含多个线程,它们共享进程的上下文、数据和资源。
线程是进程中的一个实体,通过执行线程代码来完成特定的任务。
二、调度和执行1. 线程是调度和执行的基本单位,进程是资源分配的基本单位。
线程的创建、撤销、切换和同步的开销比进程小,因此操作系统可以更高效地实现线程的调度和执行。
2. 在多核处理器上,多个线程可以并行执行,从而提高系统的并发性和性能。
而进程只能在一个处理器上执行,无法实现真正的并行执行。
三、内存和资源1. 各个线程共享进程的地址空间。
线程可以访问进程的全局变量和堆上的动态内存,也可以共享打开的文件和网络连接等资源。
2. 各个进程拥有独立的地址空间。
不同进程的内存空间相互隔离,彼此之间不能直接访问。
四、通信和同步1. 线程之间共享数据和通信更加方便快捷。
线程可以直接读写进程的共享内存,因此在线程之间进行通信和数据共享的开销比较小。
2. 进程之间通信和数据共享的代价比较大。
进程之间需要通过进程间通信(Inter-Process Communication,IPC)的方式来进行数据交换和通信。
3. 线程之间的同步更加容易,可以使用锁、信号量等机制来实现线程之间的互斥和同步。
而进程之间的同步则需要使用更复杂的机制,如管道、消息队列和信号等。
五、容错性和稳定性1. 一个线程的崩溃通常会导致整个进程的崩溃。
由于线程共享进程的资源,一个线程的错误或异常可能会影响到整个进程的稳定性。
2. 进程之间通常具有较好的容错性。
一个进程的崩溃不会影响其他进程的稳定性,操作系统可以通过重新启动新的进程来替代崩溃的进程。
进程和线程面试题

进程和线程⾯试题1、线程和进程线程:线程是进程的⼀个实体,是CPU调度和分派的基本单元。
进程:进程是具有⼀定独⽴功能的程序,它是系统进程资源分配和调度的⼀个独⽴单元。
区别:(1)⼀个线程只属于⼀个进程,⼀个进程包含⼀个或者多个线程。
(2)进程拥有独⽴的内存单元,⽽多个线程共享内存。
(3)进程的创建调⽤fork或者vfork,⽽线程的创建调⽤pthead_create,进程结束后它拥有的所有线程都将销毁,⽽线程的结束不会影响同个进程中的其他线程的结束。
(4)线程是轻量级的进程,它的创建和销毁所需要的时间⽐进程⼩很多,所有操作系统中的执⾏功能都是创建线程去完成的。
(5)线程中执⾏时⼀般都要进⾏同步和互斥,因为他们共享同⼀进程的资源。
2、死锁?死锁产⽣的原因?死锁的必要条件?怎么处理死锁?死锁:死锁是指两个或者两个以上的进程在执⾏过程中,由于竞争资源或者由于彼此通信⽽造成的⼀种阻塞的现象。
死锁原因:系统资源不⾜、相互竞争资源。
请求资源顺序不当死锁的必要条件:1.互斥条件:⼀个资源每次只能被⼀个进程使⽤。
2.请求和保持条件:⼀个进程因请求资源⽽阻塞时,对已获得的资源保持不放。
3.不可剥夺条件:进程已获得的资源,在未使⽤完之前,不能强⾏剥夺,只能在进程使⽤完时由⾃⼰释放。
4.循环等待条件:若⼲进程之间形成⼀种头尾相接的循环等待资源关系。
避免死锁的⽅法:因为互斥是不可改变的,所以只能破坏其他三个条件中的⼀个来解除死锁,⽅法:剥夺资源、杀死其中⼀个线程。
避免死锁最简单的⽅法就是阻⽌循环等待条件,将系统中所有的资源设置标志位、排序,规定所有的进程申请资源必须以⼀定的顺序做操作来避免死锁。
3、如何在Java中实现线程?(1)继承Thread类(2)实现Runnable接⼝(3)实现Callable接⼝通过FutureTask包装器来创建Thread线程(4)使⽤ExecutorService、Callable、Future实现有返回结果的多线程4、⽤Runnable还是Thread?Java不⽀持类的多重继承,但允许你调⽤多个接⼝(当然是调⽤Runnable接⼝更好)5、Thread类中start()和run()⽅法有什么区别?(1)start()⽅法被⽤来启动新创建的线程,⽽start()内部调⽤了run()⽅法。
进程与线程的定义、关系及区别

进程与线程的定义、关系及区别进程与线程的定义、关系及区别⼀、进程的定义进程:指在系统中能独⽴运⾏并作为资源分配的基本单位,它是由⼀组机器指令、数据和堆栈等组成的,是⼀个能独⽴运⾏的活动实体。
进程⼀般有三个状态:就绪状态、执⾏状态和等待状态【或称阻塞状态】;进程只能由⽗进程建⽴,系统中所有的进程形成⼀种进程树的层次体系;挂起命令可由进程⾃⼰和其他进程发出,但是解除挂起命令只能由其他进程发出。
进程控制块(PCB):PCB不但可以记录进程的属性信息,以便对进程进⾏控制和管理,⽽且PCB标志着进程的存在,操作系统根据系统中是否有该进程的进程控制块PCB⽽知道该进程存在与否。
系统建⽴进程的同时就建⽴该进程的PCB,在撤销⼀个进程时,也就撤销其PCB,故进程的PCB对进程来说是它存在的具体的物理标志和体现。
⼀般PCB包括以下三类信息:进程标识信息;处理器状态信息;进程控制信息。
由程序段、相关的数据段和PCB三部分构成了进程实体(⼜称进程印像),⼀般,我们把进程实体就简称为进程。
进程的特征:1.动态性:进程的实质是程序的⼀次执⾏过程,进程是动态产⽣,动态消亡的。
2.并发性:任何进程都可以同其他进程⼀起并发执⾏。
3.独⽴性:进程是⼀个能独⽴运⾏的基本单位,同时也是系统分配资源和调度的独⽴单位。
4.异步性:由于进程间的相互制约,使进程具有执⾏的间断性,即进程按各⾃独⽴的、不可预知的速度向前推进。
⼆、线程的定义线程:线程是进程中的⼀个实体,作为系统调度和分派的基本单位。
线程的性质:1.线程是进程内的⼀个相对独⽴的可执⾏的单元。
若把进程称为任务的话,那么线程则是应⽤中的⼀个⼦任务的执⾏。
2.由于线程是被调度的基本单元,⽽进程不是调度单元。
所以,每个进程在创建时,⾄少需要同时为该进程创建⼀个线程。
即进程中⾄少要有⼀个或⼀个以上的线程,否则该进程⽆法被调度执⾏。
3.进程是被分给并拥有资源的基本单元。
同⼀进程内的多个线程共享该进程的资源,但线程并不拥有资源,只是使⽤他们。
指令,程序,进程,线程的概念及其之间的关系

指令,程序,进程,线程的概念及其之间的关系指令(Instruction)是计算机执行特定操作的命令。
它是由一系列位(Value)组成的,在计算机处理器中表示为二进制代码。
计算机通过执行一条指令,完成特定的操作,如算数运算、内存读取、数据传输等。
指令是计算机硬件和软件之间的桥梁,它告诉计算机硬件如何执行某项功能。
程序(Program)是一组有序的指令集合,通过执行这组指令,可以实现预定的计算机功能。
程序一般由程序员使用编程语言编写,并保存在磁盘或存储器中。
程序包含了实现特定功能的算法和逻辑结构。
当用户需要计算机执行某项任务时,可以通过调用相应的程序来完成。
程序可以是操作系统、应用程序、驱动程序等。
进程(Process)是指正在运行的一个程序的实例。
当一个程序被调用执行时,计算机系统会为该程序分配一些资源,如CPU时间、内存空间、文件句柄等,形成一个独立的执行环境,即进程。
进程是操作系统进行资源分配和调度的基本单位。
每个进程都有自己的地址空间和执行状态,并与其他进程相互独立、互不干扰。
进程可以同时执行多个任务,通过操作系统的调度机制,使得多个进程能够并发执行。
线程(Thread)是指进程中的一个执行单元。
一个进程可以包含多个线程,这些线程共享进程的资源,如内存、打开的文件等。
线程拥有自己的栈空间,以及指令执行顺序、程序计数器等。
多线程的机制使得多个线程能够在同一个进程中并发执行,提高系统的并发处理能力。
线程的调度由操作系统负责,通过时间分片等算法,实现不同线程之间的切换和并发执行。
指令、程序、进程和线程之间存在着以下关系:1.指令是程序的基本组成单位,程序是由一系列指令构成的。
程序是静态的,存储在磁盘或存储器中,通过调用执行。
2.程序是进程的载体,进程是程序的一次执行过程。
进程是动态的,是程序在计算机中运行的状态。
进程可以同时运行多个线程,完成多个任务。
3.线程是进程中的一个执行单元,多个线程共享进程的资源。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
马洪兵,清华大学电子工程系
进程间通信问题概述
操作顺序冲突
3个进程get、process和print协作完成事务处 理:有6种可能的操作顺序,只有一种结果是 正确的
get
process
磁带
Buf1
Buf2
打印机
马洪兵,清华大学电子工程系
7
进程间通信问题概述
竞争条件(race condition):两个或多个进程访 问某些共享资源,最终结果取决于进程运行的 精确时序
V(s) {
}
马洪兵,清华大学电子工程系
35
利用信号量实现互斥
为临界资源设置一个 互斥信号量 mutex(MUTual Exclusion),其初值 为1 在每个进程中将临界 区代码置于P(mutex) 和V(mutex)原语之间
马洪兵,清华大学电子工程系
29
信号量
上述互斥算法都存在问题,它们是平等进 程间的一种协商机制 为此,需要一个地位高于进程的管理者来 解决公有资源的使用问题。 OS 可从进程 管理者的角度来处理互斥的问题,信号量 就是OS提供的管理共享资源的有效手段
马洪兵,清华大学电子工程系
30
信号量
信号量是1965年由荷兰学者 Dijkstra提出的,是 一种卓有成效的进程同步机制 每个信号量 s 除一个整数值 s.count( 计数 ) 外,还 有一个进程等待队列 s.queue ,队列中是阻塞在 该信号量上的各个进程的标识
避免竞争条件的关键是阻止多个进程同时访问可能 导致竞争条件的共享资源
临界资源(critical resource):硬件或软件(如外 设、共享代码段、共享数据结构),多个进程在 对其进行访问时(关键是进行写入或修改),必须 互斥地进行
并非所有共享资源都是临界资源,如只读数据
马洪兵,清华大学电子工程系
马洪兵,清华大学电子工程系
33
P、V原语
P原语
--s.count; //表示申请一个资源; if (s.count <0) //表示没有空闲资源; { 调用进程进入等待队列s.queue; 阻塞调用进程; }
P(s) {
}
马洪兵,清华大学电子工程系
34
P、V原语
V原语
++s.count; //表示释放一个资源; if (s.count <= 0) //表示有进程处于阻塞状态; { 从等待队列s.queue中取出一个进程P; 进程P进入就绪队列; }
entry section critical section exit section remainder section
马洪兵,清华大学电子工程系
10
进程间通信问题概述
解决互斥问题应遵循的条件
1. 2. 3.
4.
任何两个进程不能同时处于临界区 不应对CPU的速度和数量做任何假设 临界区外运行的进程不得阻塞其他进程 不得使进程无限期等待进入临界区
一方面它们相互竞争使用系统中有限的资源 另一方面它们可以相互协作以达到运行用户 作业所预期的目的
所以,必须考虑进程间通信(IPC, Inter Process Communication)问题
3
马洪兵,清华大学电子工程系
进程间通信问题概述
进程间的关系
竞争——互斥
相互不感知(完全不了解其它进程的存在) 独占分配到的部分或全部共享资源 间接感知(双方都与第三方交互,如共享资源) 等待来自其他进程的信息 直接感知(双方直接交互) 一个进程的结果依赖于从其他进程获得的信息
马洪兵,清华大学电子工程系
13
禁止中断
进入临界区前执行 “关中断”指令 离开临界区后执行 “开中断”指令 ——CPU只有在发生时钟中断或其他中 断时才会进行进程切换 优点:简单 缺点:
把禁止中断的权利交给用户进程导致系统可 靠性较差 不适用于多处理器(违反条件2)
马洪兵,清华大学电子工程系
考虑两个进程 H、 L,H的优先级高于 L,假 设调度规则规定,只要H处于就绪态它就可 以运行。若某一时刻 L 处于临界区中,此时 H变成就绪态并被调度,从而开始忙等待, 但是由于H的优先级高于L,使得L不会被调 度,也就无法离开临界区
28
马洪兵,清华大学电子工程系
第5讲 进程与线程(3)
进程间通信问题概述 互斥问题的几种算法 信号量 管程 消息传递 经典IPC问题 Windows的互斥和同步机制 POSIX的互斥和同步机制
马洪兵,清华大学电子工程系
24
硬件方法
SWAP(对换)指令
例如X86的XCHG指令
XCHG OP1, OP2
enter_region: MOV reg, 1 LOCK XCHG lock, reg CMP reg, 0 JNZ enter_region RET
——将OP1和OP2的 内容对换
leave_region: LOCK MOV lock, 0 RET
通过共享进行协作——同步
通过通信进行协作——通信
马洪兵,清华大学电子工程系
4
进程间通信问题概述
进程间通信要解决的三个问题
1.
2.
3.
一个进程如何把信息传递给另一个进程 ——高级通信问题 保证对共享资源的访问不至于引起冲突 保证正确的操作顺序 ——互斥与同步问题
互斥与同步问题对于线程同样适用
8
进程间通信问题概述
临界区(critical section):进程中访问临界 资源的代码片断
entry section critical section exit section remainder section
马洪兵,清华大学电子工程系
9
进程间通信问题概述
进入区(entry section):在进入临界区之前,检查可否进 入临界区的一段代码。如果可以进入临界区,通常设置 相应"正在访问临界区"标志 退出区(exit section):用于将"正在访问临界区"标志清 除 剩余区(remainder section):代码中的其余部分
14
锁变量
共享锁变量lock:
0:无进程在临界区(初值) 1:有进程在临界区
while(lock==1); lock=1; critical_region lock=0;
noncritical_region
存在的问题:
可能违反条件1 忙等待
15
马洪兵,清华大学电子工程系
锁变量
忙等待(busy waiting):连续测试一个变量直到 出现某个值为止 忙等待浪费CPU时间,所以应该避免。只有等 待时间非常短的情况下才使用忙等待 用于忙等待的锁,称为自旋锁(spin lock)
21
硬件指令方法
利用处理机提供的专门的硬件指令,对一 个字的内容进行检测和修改 硬件方法的目的是解决共享变量的完整性 和正确性——其读写操作由一条指令完 成,因而保证读操作与写操作不被打断
马洪兵,清华大学电子工程系
22
硬件方法
测试并设置(Test and Set)指令
例如X86的BTS/BTR指令 BTS OP1, OP2 ——将OP1中第OP2位的值保存到标志寄存 器FLAGS的进位标志CF中,并将被测试的 位置1 BTR OP1, OP2 ——将OP1中第OP2位的值保存到进位标志 CF中,并将被测试的位清0
目的:避免竞争条件,同时保证使用临界 资源的进程能够正确和高效地进行协作
马洪兵,清华大学电子工程系
11
进程间通信问题概述
使用临界区
马洪兵,清华大学电子工程系
12
第5讲 进程与线程(3)
进程间通信问题概述 互斥问题的几种算法 信号量 管程 消息传递 经典IPC问题 Windows的互斥和同步机制 POSIX的互斥和同步机制
马洪兵,清华大学电子工程系
32
P、V原语
P、V来自荷兰语的proberen(降低)和 verhogen(升起) P操作表示申请一个资源,它使信号量之 值减1,如果信号量之值小于0,则进程被 阻塞而不能进入临界区 V操作表示释放一个资源,它使信号量之 值增1,如果信号量之值不大于0,则唤醒 一个被阻塞的进程
leave_region(0);
noncritical_region
leave_region(1);
noncritical_region
马洪兵,清华大学电子工程系
20
Peterson算法
优点:
解决了互斥访问的问题,而且克服了强制轮 转法的缺点,可以正常地工作
缺点:
忙等待
马洪兵,清华大学电子工程系
马洪兵,清华大学电子工程系
26
硬件方法
硬件指令方法的优点
适用于任意数目的进程 简单,容易验证其正确性 可以支持进程中存在多个临界区,只需为每 个临界区设立一个布尔变量
硬件方法的缺点
忙等待,耗费CPU时间
马洪兵,清华大学电子工程系
27
优先级反转问题
Peterson 算法和硬件方法都是正确的算 法,但是都具有忙等待的缺点 忙等待不但浪费CPU时间,而且可能导 致优先级反转问题(priority inversion problem):