qidao123.com技术社区-IT企服评测·应用市场

标题: 软考-软件设计师中级备考 8、历程管理 [打印本页]

作者: 美丽的神话    时间: 2025-5-5 21:52
标题: 软考-软件设计师中级备考 8、历程管理
使用系统作为系统硬件资源和软件资源的管理者,向上层提供方便易用的服务,如使用系统的图形用户界面(GUI),是硬件层之上的第一层软件  如显卡驱动。特性是:并发、共享、捏造、异步。
硬件资源(存储管理、装备管理) 软件资源(历程管理、文件管理)
一、状态转换图

历程通常具备五种根本状态:创建态、停当态、运行态、阻塞态和终止态。状态转换图以可视化方式,精准呈现历程在这些状态之间的转换逻辑与关系。
1.1 创建态到停当态

当使用系统着手创建新历程时,会依次执行资源分配、初始化历程控制块(PCB)等使用。以在 Windows 系统中启动大型游戏《英雄联盟》为例,系统首先会为该游戏历程分配初始内存空间,用于加载游戏的底子步伐代码与配置数据;接着构建 PCB,在其中记载历程的优先级、初始状态等关键信息。当这些核心使用完成后,游戏历程便从创建态顺遂过渡到停当态,进入停当队列等待 CPU 调度执行。
1.2 停当态到运行态

调度步伐依据特定算法,从停当队列中挑选历程投入运行。假设系统处于多使命繁忙状态,停当队列中有浏览器历程(用于浏览网页)、音乐播放器历程(播放配景音乐)、游戏历程(运行《英雄联盟》)。若接纳优先级调度算法,且游戏历程被赋予较高优先级,那么调度步伐会选中游戏历程,使其从停当态切换为运行态,进而占用 CPU 资源,执行游戏的各项指令,如渲染游戏画面、处置处罚玩家使用输入等。
1.3 运行态到阻塞态

当历程遭遇需等待外部变乱完成的环境时,会主动进入阻塞态。继续以《英雄联盟》游戏历程为例,在游戏运行过程中,若须要从硬盘加载新的游戏地图数据,由于硬盘 I/O 使用速度远低于 CPU 处置处罚速度,在等待数据读取完成的时间段内,游戏历程会进入阻塞态。此时,CPU 资源会被释放,调度步伐将其分配给其他停当态历程,如音乐播放器历程可继续播放音乐。
1.4 阻塞态到停当态

一旦历程所等待的变乱完成,便会立刻从阻塞态转换为停当态。在上述游戏加载地图数据的场景中,当硬盘成功将地图数据传输至内存后,游戏历程所等待的 I/O 变乱竣事,它会迅速从阻塞态切换为停当态,重新进入停当队列,等待 CPU 再次调度,以便继续执行后续的游戏逻辑,如显示新地图画面、加载 NPC 信息等。
1.5 运行态到停当态

存在两种常见环境会促使历程从运行态转变为停当态。其一,若接纳时间片轮转调度算法,当历程分配到的时间片耗尽时,即便使命尚未完成,也会被暂停执行,转换为停当态。比方,音乐播放器历程在时间片内仅完成了部分歌曲解码使用,时间片用完后,它会被暂停,进入停当队列等待下一轮调度。其二,当有更高优先级的历程进入停当队列时,当前运行的低优先级历程也会被切换为停当态。好比,系统突然出现一个紧急的系统更新历程(优先级极高),正在运行的音乐播放器历程会立刻被停止,转为停当态,让位于系统更新历程。
1.6 运行态到终止态

历程完成预定使命或遭遇异常错误时,会进入终止态。以音乐播放器历程为例,若其正常播放完全部歌曲列表中的曲目,使命圆满完成,便会进入终止态,使用系统随后接纳其占用的内存、音频装备等资源;若在播放过程中,因软件代码出现严峻逻辑错误导致步伐崩溃,同样会进入终止态,使用系统同样会举行资源接纳使用,以释放系统资源供其他历程使用。
1.7 停当态到终止态

在一些特别环境下,停当态历程会直接进入终止态。比方,系统管理员在使命管理器中手动逼迫关闭一个处于停当态的应用步伐历程(如一个未相应的图像编辑软件历程);或者系统资源严峻不足,无法满足停当队列中某些历程的资源需求,系统会逼迫终止部分停当态历程,以保障关键系统历程的正常运行,此时被终止的停当态历程便直接进入终止态。
二、前驱图

前驱图作为有向无环图,能清晰界定历程间的先后执行顺序。图中的节点代表历程,有向边明白表现历程间的前驱关系。比方,在一个视频渲染项目中,存在三个历程:P1 负责视频素材导入,P2 负责特效添加,P3 负责终极视频导出。由于必须先导入素材,才气添加特效,最后导出视频,以是存在有向边 P1→P2 和 P2→P3。这意味着历程 P2 必须在 P1 执行完毕后才气启动,P3 则需在 P2 完成后执行,通过前驱图可直观规划和管理这些历程的执行流程,制止因执行顺序错误导致的使命失败。
三、历程同步机制

历程同步旨在确保多个历程在执行顺序上相互协调,保障步伐执行的精确性与结果一致性。
3.1 信号量同步

以生产者 - 消耗者模型为例,生产者历程负责生产数据并放入缓冲区,消耗者历程从缓冲区读取数据。设置两个信号量:empty(表现缓冲区空闲槽位数量,初始值为缓冲区大小)和 full(表现缓冲区中已添补数据的槽位数量,初始值为 0)。生产者历程在生产数据前执行 P (empty),若缓冲区已满,empty 值减为负数,生产者历程阻塞;生产数据后执行 V (full),叫醒可能阻塞的消耗者历程。消耗者历程在读取数据前执行 P (full),若缓冲区为空,full 值减为负数,消耗者历程阻塞;读取数据后执行 V (empty),叫醒可能阻塞的生产者历程,以此实现两者的同步执行。
3.2 管程同步

管程是一种编程语言布局,封装了共享数据及对其使用的过程。在多线程文件读写场景中,可定义一个管程类,其中包罗文件句柄、读写锁等数据成员,以及打开文件、读取数据、写入数据等使用过程。多个线程若要访问文件,必须通过调用管程类的相干过程,管程内部通过锁机制确保同一时刻仅有一个线程能执行文件读写使用,从而实现线程间的同步,制止文件数据的读写冲突。
3.3 消息转达同步

在分布式系统中,不同节点上的历程可通过消息转达实现同步。比方,节点 A 上的历程 P1 须要节点 B 上的历程 P2 处置处罚完数据后返回结果,P1 会向 P2 发送包罗使命哀求的消息。P2 收到消息后开始处置处罚数据,处置处罚完成后向 P1 回传包罗结果的消息。P1 在发送哀求消息后,可选择阻塞等待 P2 的复兴消息,也可继续执行其他使命,待收到 P2 的消息后再根据结果举行后续使用,通过这种消息交互实现历程间的同步协调。
四、历程互斥机制

历程互斥确保多个历程对临界资源的访问相互排斥,制止数据不一致题目。
4.1 Peterson 算法(软件实现)

假设有两个历程 P0 和 P1 竞争访问临界区。算法通过设置两个标志位 flag [0] 和 flag [1],分别表现历程 P0 和 P1 是否预备进入临界区,以及一个变量 turn,用于记载轮到哪个历程进入临界区。在进入临界区前,历程先设置自己的标志位为真,并将 turn 设置为对方历程编号,然后检查对方标志位和 turn 的值。若对方不想进入临界区,或者轮到自己进入临界区,则可进入临界区;否则等待。比方,P0 想要进入临界区,先设置 flag [0]=true,turn=1,然后检查发现 flag [1]=false(即 P1 不想进入),则 P0 可顺遂进入临界区,在退出临界区时将 flag [0] 设为 false,确保其他历程有机会进入,以此实现软件层面的历程互斥。
4.2 TestAndSet 指令(硬件实现)

TestAndSet 指令是硬件提供的原子使用。假设有一个共享的锁变量 lock,初始值为 0。历程实验进入临界区时,执行 TestAndSet (lock) 指令,该指令会返回 lock 的旧值,并将 lock 设为 1。若返回值为 0,分析没有其他历程占用临界区,当进步程可进入;若返回值为 1,则表现已有历程在临界区,当进步程需等待。比方,历程 P1 执行 TestAndSet (lock),返回 0,lock 变为 1,P1 进入临界区;此时历程 P2 执行 TestAndSet (lock),返回 1,P2 需等待 P1 退出临界区并将 lock 重新设为 0 后,才气实验进入,通过硬件指令实现高效的历程互斥。
4.3 基于信号量的互斥

使用二进制信号量可轻松实现历程互斥。将二进制信号量 mutex 初始化为 1,多个历程在进入临界区前执行 P (mutex) 使用,若 mutex 值减为 0,分析成功获取锁,可进入临界区;若 mutex 值变为负数,历程阻塞。在退出临界区时执行 V (mutex) 使用,叫醒可能阻塞的其他历程。比方,多个历程同时访问共享的打印机资源,每个历程在使用打印机前执行 P (mutex),确保同一时刻仅有一个历程能占用打印机,使用完毕后执行 V (mutex),让其他历程有机会使用,有效制止打印机资源的冲突使用。
五、信号量机制

信号量是控制历程对共享资源访问的核心工具,分为二进制信号量和计数信号量。
5.1 二进制信号量

其取值固定为 0 或 1,常用于实现历程互斥。以多个历程访问共享文件为例,设置二进制信号量 file_lock 初始值为 1。历程在读取或写入文件前,先执行 P (file_lock),若成功获取(file_lock 变为 0),则可对文件举行使用;使用完成后执行 V (file_lock),释放文件锁,答应其他历程访问。若有多个历程同时实验访问文件,只有一个历程能成功执行 P (file_lock),其他历程将被阻塞,直至锁被释放,从而保证文件资源的互斥访问。
5.2 计数信号量

其取值为非负整数,可用于历程同步与资源计数。比方,系统中有 3 台打印机可供多个历程使用,设置计数信号量 printer_count 初始值为 3。历程须要使用打印机时,执行 P (printer_count),若 printer_count 值大于 0,分析有可用打印机,值减 1 后历程可使用打印机;若 printer_count 值变为 0,分析打印机已全部被占用,历程阻塞等待。当历程使用完打印机后,执行 V (printer_count),释放一台打印机资源,若有历程阻塞等待,会叫醒其中一个历程继续执行,通过计数信号量有效管理打印机资源的分配与使用。
六、PV 使用

PV 使用是对信号量举行使用的原语。
6.1 P 使用

P 使用(wait 使用)用于申请资源。以停车场车辆进出管理为例,假设停车场最多容纳 10 辆车,设置计数信号量 parking_space 初始值为 10。每辆车进入停车场时,执行 P (parking_space),若此时停车场还有空位(parking_space 值大于 0),值减 1 后车辆可进入;若停车场已满(parking_space 值为 0),后续执行 P 使用的车辆历程将被阻塞,等待其他车辆脱离停车场释放资源。
6.2 V 使用

V 使用(signal 使用)用于释放资源。在上述停车场场景中,当车辆脱离停车场时,执行 V (parking_space),将 parking_space 值加 1,若有其他车辆历程因等待停车位而阻塞,会叫醒其中一个历程,答应其进入停车场,通过 PV 使用实现对停车场资源的动态管理与控制。
七、PV 使用实现前驱使用   刷题

通过设置信号量可精准实现历程间的前驱关系。比方,在一个视频编辑项目中,有三个历程:P1 负责视频剪辑,P2 负责添加字幕,P3 负责天生终极视频。要求 P2 在 P1 完成后执行,P3 在 P2 完成后执行。设置三个信号量 S1、S2、S3,初始值均为 0。在 P1 剪辑视频完成后执行 V (S1);P2 在开始添加字幕前执行 P (S1),若 P1 未完成,P2 将阻塞等待;P2 添加字幕完成后执行 V (S2);P3 在天生终极视频前执行 P (S2),若 P2 未完成,P3 将阻塞等待。以此类推,通过 PV 使用确保历程按 P1→P2→P3 的顺序依次执行,保障视频编辑使命的精确流程。
八、死锁

死锁是多个历程因争夺资源陷入的僵局。
8.1 死锁的四个须要条件


九、死锁的处置处罚策略

9.1 防备死锁

通过破坏死锁须要条件实现。比方,接纳资源静态分配策略,历程在启动时一次性申请所需的全部资源,制止运行中哀求其他资源,从而破坏哀求和保持条件;接纳可剥夺资源分配策略,当高优先级历程须要资源时,可从低优先级历程手中剥夺资源,破坏不可剥夺条件,以此防备死锁发生。
9.2 制止死锁

银行家算法是典型的制止死锁算法。假设系统中有 3 个历程 P1、P2、P3,2 类资源 R1、R2,系统拥有 R1 资源 9 个,R2 资源 8 个。记载每个历程的最大资源需求、已分配资源量、剩余资源量。当 P1 哀求 2 个 R1 和 1 个 R2 时,系统先检查哀求是否公道(未凌驾最大需求且系统有足够资源),然后实验分配,接着检查系统是否处于安全状态(是否存在一种分配顺序使全部历程都能完成)。若分配后系统安全,则实际分配资源;否则拒绝哀求,通过动态监测和公道分配资源,制止系统进入不安全状态,从而防止死锁。
9.3 检测死锁

定期检查系统资源分配图,判定是否存在环路。若存在环路且环路上每个历程已占用的资源数都小于其所需资源数,则检测到死锁。比方,通过资源分配图发现历程 P4、P5、P6 形成资源哀求环路,且各自持有的资源无法满足需求,确定发存亡锁。
9.4 解除死锁

可接纳资源剥夺法,从死锁历程中剥夺部分资源分配给其他历程,冲破死锁环路;或接纳撤销历程法,逼迫终止一个或多个死锁历程,释放其占用资源,使系统恢复正常运行,解决死锁题目。



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4