银行家算法-安全性检查算法(C语言实现)
目录1.题目要求​编辑2.安全性检查算法描述初始化查找可执行进程执行进程并更新状态判断系统安全性3.代码实现4.运行结果1.题目要求2.安全性检查算法描述初始化设置两个向量工作向量Work和布尔向量Finish。Work表示系统可提供给进程继续运行所需的各类资源数目初始化为当前可用资源数量Available。Finish表示系统是否有足够的资源分配给进程使之运行完成初始化为false。查找可执行进程从进程集合中找到一个满足以下条件的进程Finish[i]false且Need[i]Work。如果找到这样的进程则执行步骤3否则执行步骤4。执行进程并更新状态假设进程Pi获得资源后可顺利执行直至完成并释放出分配给它的资源。更新Work向量WorkAllocation[i]。将Finish[i]设置为true表示进程Pi已完成。返回步骤2继续查找下一个可执行进程。判断系统安全性如果所有进程的Finish[i]都为true则表示系统处于安全状态否则系统处于不安全状态。3.代码实现#includestdio.h #includemath.h #includestdlib.h #includestring.h #define SOURNUM 3 #define MAX 5 char* safeList[5]; typedef struct PCB { char name[2]; //进程名 int max[SOURNUM]; //所需最大资源数 int allocation[SOURNUM]; //已分配资源数 int need[SOURNUM]; //当前所需资源数 int finish; //完成状态 }pcb; pcb pro[MAX] { {P0,{7, 5, 3}, {0, 1 ,0},{7, 4 ,3},-1}, {P1,{3 ,2, 2}, {2, 0, 0},{1, 2 ,2},-1}, {P2,{9, 0, 2}, {3, 0 ,2},{6, 0 ,0},-1}, {P3,{2 ,2, 2}, {2, 1 ,1},{0, 1, 1},-1}, {P4,{4 ,3 ,3}, {0 ,0, 2},{4, 3, 1},-1} }; int checkSafe(pcb pro[], int *available, int proNumber, int sourNumber) { int i, j, numsour 0; int safeListnum 0; while (safeListnum proNumber) { int flag -1;//判断这一轮有没有至少找到一个 for (i 0; i proNumber; i) { numsour 0; if (pro[i].finish -1) { for (j 0; j sourNumber; j) { if (pro[i].need[j] available[j]) numsour; } if (numsour sourNumber) { for (j 0; j sourNumber; j) { available[j] pro[i].allocation[j];//释放资源 } pro[i].finish 1; flag 1; safeList[safeListnum] pro[i].name;//加入到安全序列 if (safeListnum proNumber)//已经找到了一个安全序列 return 1; } } } if (flag -1)//这轮一个都没有找到 return -1; } } int main() { int proNumber MAX, sourNumber SOURNUM; int available[SOURNUM] { 3,3,2 }; int flag checkSafe(pro, available, proNumber, sourNumber); if (flag 1) { printf(找到了一个安全序列); for (int i 0; i proNumber; i) { if (i ! proNumber-1) printf(%s-, safeList[i]); else printf(%s, safeList[i]); } printf(T0时刻系统是处于安全状态。\n); } else printf(找不到安全序列T0时刻系统处于不安全状态。); return 0; }4.运行结果

相关新闻

如何快速掌握Facebook xctool测试框架:从入门到精通的完整指南

如何快速掌握Facebook xctool测试框架:从入门到精通的完整指南

如何快速掌握Facebook xctool测试框架:从入门到精通的完整指南 【免费下载链接】xctool 项目地址: https://gitcode.com/gh_mirrors/xct/xctool xctool是Facebook开发的一款针对iOS和Mac产品的测试框架扩展工具,作为Apple xcodebuild的增强版本&…

2026/7/6 16:37:03 阅读更多 →
Flower数据库连接池配置:优化Celery任务队列性能的终极指南

Flower数据库连接池配置:优化Celery任务队列性能的终极指南

Flower数据库连接池配置:优化Celery任务队列性能的终极指南 【免费下载链接】flower Real-time monitor and web admin for Celery distributed task queue 项目地址: https://gitcode.com/gh_mirrors/fl/flower Flower作为Celery分布式任务队列的实时监控和…

2026/7/6 7:14:47 阅读更多 →
解决Chatto开源项目常见问题的完整指南:从安装到高级功能调试

解决Chatto开源项目常见问题的完整指南:从安装到高级功能调试

解决Chatto开源项目常见问题的完整指南:从安装到高级功能调试 【免费下载链接】Chatto A lightweight framework to build chat applications, made in Swift 项目地址: https://gitcode.com/gh_mirrors/ch/Chatto Chatto是一款轻量级的Swift聊天应用框架&am…

2026/7/7 23:09:24 阅读更多 →

最新新闻

YOLO系列模型选型指南:从v10到v26的技术对比与迁移实践

YOLO系列模型选型指南:从v10到v26的技术对比与迁移实践

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 1. 项目概述:YOLO系列模型选型困境与解决方案 在目标检测领域,YOLO系列模型始终保持着技术领先地位。作为从业…

2026/7/9 2:34:06 阅读更多 →
从字节“期权激励“到阿里“3.25“:大厂绩效变局下,普通人如何靠AI智能体提升赚钱能力?

从字节“期权激励“到阿里“3.25“:大厂绩效变局下,普通人如何靠AI智能体提升赚钱能力?

导语 2025年至2026年,互联网大厂的绩效与激励体系正在经历一场深刻的变革。从字节跳动将"字节范"与"领导力原则"深度绑定绩效、大幅提升期权/RSU在半年激励中的比重,到阿里巴巴经典的"3.25"绩效制度改革,大厂…

2026/7/9 2:32:06 阅读更多 →
LangSmith | LangChain / LangGraph Agent 全链路追踪

LangSmith | LangChain / LangGraph Agent 全链路追踪

最近一段时间学习及制作Agent,但在向量库检索、Prompt 拼接、工具调用、多轮记忆读写、多层 LLM 嵌套;运行后总会出现幻觉、回答跑偏、响应超时、Token 成本暴增,却完全无法定位根源。 传统打印日志只能零散输出片段,断点调试无法复现 LLM 非…

2026/7/9 2:32:06 阅读更多 →
Hermes Agent cron 27 个实战任务调度拆解 \(按 7 大类 \+ 错峰 5min 实战\)

Hermes Agent cron 27 个实战任务调度拆解 \(按 7 大类 \+ 错峰 5min 实战\)

适用读者: 用 Hermes Agent / Claude Code / 任何 AI 助手搭生产级 cron 自动化的独立开发者 关键词: Hermes Agent / cron / 任务调度 / 错峰 / 监控 / Supabase / 飞书 / 微信公众号 一、为什么 27 个 cron 是 Hermes Agent 产线 作者用 Hermes Agent 搭个人 AI 助手 1 个月…

2026/7/9 2:32:06 阅读更多 →
通达信最佳买卖点指标

通达信最佳买卖点指标

AA05:MA(C,5),COLOR0099CC;五日乖离率:(C-AA05)/AA05*100; BB05:ATAN((AA05/REF(AA05,1)-1)*100)*180/3.1416; 速度5:SMA(EMA((AA05-REF(AA05,1))/REF(AA05,1),3)*100,3,1); 加速度5:EMA((速度5-REF(速度5,1)),3),LINETHICK0; STICKLINE(BB05>30 AND AA05>REF(AA05,1), A…

2026/7/9 2:30:04 阅读更多 →
AI智能体如何变革材料发现:从预测到全流程自动化

AI智能体如何变革材料发现:从预测到全流程自动化

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这类AI智能体最值得关注的不是它能预测多少种材料,而是它把传统材料发现中“文献调研-理论预测-实验验证”这个漫长流程&a…

2026/7/9 2:30:04 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻