软考中级软件设计师——操作系统考试题型
一、PV操作与进程同步(必考大题)
1. 真题示例(2020年真题)
题目:
三个进程P1、P2、P3共享一个缓冲区,P1生产数据放入缓冲区,P2和P3消费数据。要求:
-
缓冲区大小为10,满时P1等待,空时P2/P3等待;
-
P2和P3不能同时消费同一数据。
请用PV操作实现同步。
答案与解析:
semaphore empty = 10; // 缓冲区空槽数
semaphore full = 0; // 缓冲区数据数
semaphore mutex1 = 1; // 生产者互斥锁(P1)
semaphore mutex2 = 1; // 消费者互斥锁(P2/P3) // 生产者P1
void P1() { while(1) { 生产数据(); P(empty); // 申请空槽 P(mutex1); 放入缓冲区(); V(mutex1); V(full); // 增加数据数 }
} // 消费者P2/P3
void P2() { while(1) { P(full); // 申请数据 P(mutex2); // 互斥消费 取出数据(); V(mutex2); V(empty); // 释放空槽 消费数据(); }
}
解析:
-
信号量设计:
-
empty
和full
控制缓冲区空满状态。 -
mutex1
保护生产者操作缓冲区的互斥性。 -
mutex2
确保消费者(P2/P3)互斥消费。
-
-
易错点:
-
若消费者未加互斥锁,可能导致多个消费者同时取出同一数据。
-
二、死锁与银行家算法(高频计算题)
1. 题目:
系统资源总数A=9,B=6,当前分配如下:
进程 | 已分配(A,B) | 最大需求(A,B) |
---|---|---|
P1 | (2,1) | (4,3) |
P2 | (3,2) | (5,4) |
P3 | (1,1) | (2,2) |
当前剩余资源:A=3, B=2。 | ||
判断系统是否处于安全状态,并给出安全序列。 |
答案与解析:
-
计算各进程仍需资源:
-
P1需(2,2),P2需(2,2),P3需(1,1)。
-
-
模拟分配过程:
-
Step 1:剩余资源(3,2)可满足P3需求 → 分配后释放P3资源,剩余资源变为(3+1,2+1)=(4,3)。
-
Step 2:剩余资源(4,3)可满足P1需求 → 分配后释放P1资源,剩余资源变为(4+2,3+1)=(6,4)。
-
Step 3:剩余资源(6,4)可满足P2需求 → 安全序列为
P3→P1→P2
。
结论:系统安全,存在安全序列。
-
三、页面置换算法(计算缺页次数)
1.题目:
页面访问序列:1,2,3,4,1,2,5,1,2,3,物理块数为3。
分别计算FIFO和LRU算法的缺页次数。
答案与解析:
FIFO算法:
访问页 | 1 | 2 | 3 | 4 | 1 | 2 | 5 | 1 | 2 | 3 |
---|---|---|---|---|---|---|---|---|---|---|
块1 | 1 | 1 | 1 | 4 | 4 | 4 | 5 | 5 | 5 | 3 |
块2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | |
块3 | 3 | 3 | 3 | 2 | 2 | 2 | 2 | 2 | ||
缺页标记:✔️✔️✔️✔️✔️✔️✔️✔️ | ||||||||||
缺页次数:8次(替换顺序1→2→3→4→5→1→2→3)。 |
LRU算法:
访问页 | 1 | 2 | 3 | 4 | 1 | 2 | 5 | 1 | 2 | 3 |
---|---|---|---|---|---|---|---|---|---|---|
块1 | 1 | 1 | 1 | 4 | 1 | 1 | 5 | 1 | 1 | 3 |
块2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | |
块3 | 3 | 3 | 3 | 3 | 3 | 5 | 5 | 5 | ||
缺页标记:✔️✔️✔️✔️✔️✔️✔️ | ||||||||||
缺页次数:7次(替换顺序3→4→5→3)。 |
解析:
-
FIFO:淘汰最早进入的页面,注意Belady异常(物理块增加时缺页可能增多)。
-
LRU:淘汰最近最久未使用的页面,需记录访问时间戳或使用栈结构。
四、磁盘调度算法(计算寻道时间)
1. 题目:
当前磁头位于100号磁道,请求队列:45, 83, 62, 120, 20。
使用SCAN(电梯算法)计算总移动磁道数。
答案与解析:
-
排序请求队列:初始方向假设为磁道号增大方向。
-
当前磁道100 → 请求队列排序为:120, 83, 62, 45, 20。
-
-
移动路径:
-
100 → 120(移动20)→ 83(移动37)→ 62(移动21)→ 45(移动17)→ 20(移动25)。
-
总移动磁道数:20 + 37 + 21 + 17 + 25 = 120。
-
关键点:
-
SCAN算法先服务同一方向所有请求,再反向扫描。
-
若初始方向为减小方向,路径为100→20→45→62→83→120,总移动数可能不同。
五、进程调度算法(计算平均等待时间)
1. 题目:
进程到达时间和运行时间如下:
进程 | 到达时间 | 运行时间 |
---|---|---|
P1 | 0 | 5 |
P2 | 1 | 3 |
P3 | 2 | 2 |
使用短作业优先(SJF)算法计算平均等待时间。 |
答案与解析:
-
调度顺序:
-
0时刻:只有P1到达,执行P1(0~5)。
-
5时刻:P2和P3均已到达,选择运行时间短的P3(5~7)。
-
7时刻:执行P2(7~10)。
-
-
等待时间:
-
P1:0(无需等待)。
-
P2:7-1=6(到达时间1,开始时间7)。
-
P3:5-2=3(到达时间2,开始时间5)。
-
平均等待时间:(0 + 6 + 3)/3 = 3。
-
关键点:
-
SJF是非抢占式算法,需等待当前进程执行完毕再选择下一个最短作业。
六、高频易错点总结
-
PV操作顺序:
-
同步信号量(如
empty
)必须在互斥信号量(如mutex
)之前申请,否则可能死锁。
-
-
银行家算法安全序列:
-
必须按步骤模拟分配,不可跳跃。
-
-
Belady异常:
-
仅FIFO算法可能出现物理块增加时缺页次数反而增多。
-
相关文章:
软考中级软件设计师——操作系统考试题型
一、PV操作与进程同步(必考大题) 1. 真题示例(2020年真题) 题目: 三个进程P1、P2、P3共享一个缓冲区,P1生产数据放入缓冲区,P2和P3消费数据。要求: 缓冲区大小为10,满时…...
transformer归一化层优化:深度解读 RMSNorm (Root Mean Square Layer Normalization,均方根层归一化)
导读:RMSNorm 把传统 LayerNorm 的“减均值(centering) 除标准差(scaling)”简化为“直接除以向量均方根 (Root Mean Square, RMS,均方根)”。这一改动让归一化既 更省算 又 同样稳定,因而成为 …...
java基础 之 Hash家族(一)
文章目录 HashCode定义代码使用使用场景 HashMap定义常用方法使用场景 ConcurrentHashMap定义常用方法使用场景 HashTable定义常用方法使用场景 HashSet定义常用方法使用场景你想到过吗? HashMap、ConcurrentHashMap、HashTable的对比总结 HashCode 定义 hashcode是…...
windows服务器部署jenkins工具(二)
jenkins的大致流程:新增任务->配置任务->构建(打包)项目->部署(发布) 具体如何使用,我这里就不多讲了。这次就给大家讲讲,jenkins安装之后使用过程中存在的一些问题。 1.maven项目如…...
机器学习第二十讲:网格搜索 → 像尝试所有密码组合找最佳解锁方式
机器学习第二十讲:网格搜索 → 像尝试所有密码组合找最佳解锁方式 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 网…...
【人工智能发展史】从黎明到曙光01
人工智能的史诗:从黎明到曙光 序曲:晨曦微露 故事的序幕拉开于一个思想激荡的年代,1956年,达特茅斯会议的钟声,如同第一缕晨曦,宣告了"人工智能"纪元的到来。那个夏天,在新罕布什尔…...
ollama使用gpu运行大模型
罗列ollma镜像 ollama list拉取ollama镜像源里面的模型: ollama pull qwen2:1.5b下载CudaToolkit https://developer.nvidia.com/cuda-toolkit-archive 我这里选择11.7的万金油版本,从来没出过bug Ollama安装好后,为了让推理跑在GPU上&am…...
Linux电源管理——PSCI初始化流程和多核启动流程
目录 一、PSCI 初始化流程 1、PSCI设备树节点 2、PSCI kernel初始化流程 get_set_conduit_method set_conduit psci_probe 二、CPU PSCI 操作初始化流程 1、CPU 设备树节点 2、 struct cpu_operations 3、kernel 流程 cpu_read_bootcpu_ops smp_init_cpus 三、CPU…...
Linux问题排查-引起服务器带宽使用率高的内鬼
Linux网络流量监控与瓶颈分析全攻略:从基础命令到进程级方案 一、网络带宽查询与实时流量监控 1. 查询主机网络带宽 网卡理论带宽 通过ethtool命令查看网卡最大支持速率,例如: ethtool eth0 # 替换为实际网卡名(如ens33&#x…...
《微服务架构设计模式》笔记
思维导图 1-3章 4-6 章 5-13 章 资料 配套代码仓库:https://github.com/microservices-patterns/ftgo-application 作者网站:https://microservices.io/...
基于JDBC的信息管理系统,那么什么是JDBC呢?
JDBC 即 Java Database Connectivity,是 Java 语言中用于与数据库进行交互的一套 API。它提供了一种标准的方式,让 Java 程序能够连接到各种不同类型的数据库,并执行 SQL 语句来实现对数据库的查询、插入、更新和删除等操作。 主要功能 建立…...
百度地图的地铁图API所有城市的城市名和citycode的对照关系列表
百度地图的地铁图API所有城市的城市名和citycode的对照关系列表 城市keywordcitycode北京beijing131上海shanghai289广州guangzhou257深圳shenzhen340重庆chongqing132天津tianjin332石家庄shijiazhuang150南京nanjing315成都chengdu75沈阳shenyang58杭州hangzhou179武汉wuhan2…...
信息学奥赛一本通 1853:【08NOIP提高组】传纸条 | 洛谷 P1006 [NOIP 2008 提高组] 传纸条
【题目链接】 ybt 1853:【08NOIP提高组】传纸条 洛谷 P1006 [NOIP 2008 提高组] 传纸条 【题目考点】 1. 动态规划:坐标型动态规划 【解题思路】 抽象问题,存在m乘n的网格,每个格子中有一个数值,即同学愿意帮忙的…...
APM32小系统键盘PCB原理图设计详解
APM32小系统键盘PCB原理图设计详解 一、APM32小系统简介 APM32微控制器是国内半导体厂商推出的一款高性能ARM Cortex-M3内核微控制器,与STM32高度兼容,非常适合DIY爱好者用于自制键盘、开发板等电子项目。本文将详细讲解如何基于APM32 CBT6芯片设计一款…...
【Linux我做主】探秘进程与fork
进程和fork 父子进程和forkgithub地址前言1. 进程的标识符PID1.1 查看系统内所有的进程1.2 kill杀掉进程1.3 获取进程的PID1.4 bash与父子进程 2. 创建进程与fork2.1 fork创建子进程2.2 fork困惑的解释0. fork的工作原理1. 为什么给子进程返回0,给父进程返回子进程P…...
学习python day4
1.顺序语句结构 #赋值语句 name张三 age20 a,b,c,droom#字符串分解赋值 print(a,b,c,d) #输入输出也是典型的顺序结构 nameinput(请输入您的姓名:) ageeval(input(请输入您的年龄:)) #使用eval进行转换 print(姓名:,name) print(年龄&#x…...
如何通过外链建设提升Shopify独立站的权重和排名
一、外链质量评估与筛选原则 相关性优先 选择与自身行业、产品或目标用户群体高度相关的网站(如行业论坛、垂直媒体、评测博客)交换外链,避免低相关性垃圾链接导致搜索引擎惩罚。 权威性指标 关注外链来源网站的域名权威(DA…...
高并发内存池|六、page cache的设计
六、page cache的设计 1. page cache的结构 page cache 也是一个哈希桶结构,但它的映射结构与前两个 cache 不同。它的每一个桶是容量从 1 到 128 页大小的内存块,桶中的每个内存块由 SpanList 管理。page cache 的内存由其向系统申请所得,…...
C++线程池实现
C线程池实现 知识点补充为什么要实现线程池线程池的实现过程 知识点补充 在C11中引入了对线程库的支持,接下来我们介绍一下跟线程相关的一些知识点: 线程对象的构造方式 在C11中主要提供的三种线程的构造方式:无参构造、带参构造和调用移动构…...
#Redis缓存篇#(七)分布式缓存
目录 一 单节点Redis 1 单节点的问题 二 分布式缓存 1 Redis持久化 (1 RDB持久化 (2 AOF持久化 2 Redis主从集群 (1 搭建主从架构 (2 主从数据同步原理 3 Redis哨兵 (1 哨兵的作用和原理 (2 搭…...
【VSCode】安装与 ssh 免密登录
【VSCode】安装与 ssh 免密登录 下载SSH 登录设置免密登录关闭远程连接删除ssh连接(慎用!!!删除了建立的连接就没有了!!) 下载 https://code.visualstudio.com/docs/?dvwin64user 选择安装路径…...
【Python解决八皇后问题】回溯算法与优化策略全解析
目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选型对比🛠️ 二、实战演示⚙️ 环境配置要求💻 核心代码实现基础回溯实现位运算优化…...
判断一个元素是否在可视区域
判断元素是否在可视区域的方法 方法一:offsetTop 和 scrollTop 通过计算元素的 offsetTop 和容器的 scrollTop 来判断元素是否位于视口内。这种方法适用于简单的垂直滚动场景。 优点: 实现简单,性能较好。缺点: 不支持复杂的布局结构(如嵌套滚动),无法处理水平方向上的可…...
作物遗传与种质创新利用全国重点实验室-随笔10
作物遗传与种质创新利用全国重点实验室依托于南京农业大学,2022年11月完成国家重点实验室重组工作,由原名称“作物遗传与种质创新国家重点实验室”正式更名为“作物遗传与种质创新利用全国重点实验室”。 实验室面向国家粮食安全和农业高质量发展的重大战…...
分布式电源的配电网无功优化
分布式电源(Distributed Generation, DG)的大规模接入配电网,改变了传统单向潮流模式,导致电压波动、功率因数降低、网损增加等问题,无功优化成为保障配电网安全、经济、高效运行的关键技术。 1. 核心目标 电压稳定性:抑制DG并网点(PCC)及敏感节点的电压越限(如超过5%…...
游戏引擎学习第301天:使用精灵边界进行排序
回顾并为今天的内容做准备 昨天,我们解决了一些关于排序的问题,这对我们清理长期存在的Z轴排序问题很有帮助。这个问题我们一直想在开始常规游戏代码之前解决。虽然不确定是否完全解决了问题,但我们提出了一个看起来合理的排序标准。 有两点…...
网络框架二次封装:基于Kotlin的高扩展性网络请求框架完整实现
完整目录结构 1. 架构设计1.1 分层架构1.2 核心组件1.3 接口关系图2. 基础配置实现2.1 NetworkConfig完整代码2.2 CacheConfig完整代码3. 核心网络客户端3.1 SmartHttpClient完整实现3.2 单例管理3.3 服务创建与执行4. DSL请求构建器4.1 NetworkRequest完整实现4.2 生命周期绑…...
高噪声下扩展边缘检测算子对检测边缘的影响
目录 一、常见的边缘检测算子 二、扩展边缘检测算子对检测边缘的影响 三、结论 一、常见的边缘检测算子 Sobel 算子: Prewitt算子;...
Linux 内核音视频架构(V4L2 )介绍
一.概述 Linux 内核中的 V4L2(Video for Linux Two)框架 是用于管理音视频设备(如摄像头、电视调谐器、视频采集卡等)的核心子系统。 它提供了一套统一的接口,使得用户空间应用程序能够方便地访问和控制硬件设备&…...
专业 YouTube SEO 方案:打造高排名视频的关键步骤
YouTube 是全球订阅量最高的社交媒体平台之一。YouTube 为发布创意视频内容和针对特定受众开展营销活动提供了无限可能,是任何品牌内容营销策略的重要组成部分。 但是,为了发展您的 YouTube 频道并消除噪音,优化您的视频内容以便可以在搜索结…...
基于STM32的智能台灯_自动亮度_久坐提醒仿真设计(Proteus仿真+程序设计+设计报告+讲解视频)
这里写目录标题 1.主要功能2.仿真设计3.程序设计4.设计报告5.下载链接 基于STM32的智能台灯_自动亮度_久坐提醒仿真设计 (Proteus仿真程序设计设计报告讲解视频) 仿真图Proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号࿱…...
labview硬件部分——压力测量
0kg的电压需要我们手动输入!在不放东西的时候的电压,先运行一次程序,将其记录后写到程序中的0kg输入按键即可。 整体的程序:...
Mysql索引实战1
对于上面这两种 name>‘a’ 和 name>‘zzz’ 的执行结果,mysql最终是否选择走索引或者一张表涉及多个索引,mysql最终如何选择索引,我们可以用trace工具来一查究竟,开启trace工具会影响mysql性能,所以只能临时分析…...
在实际网络部署中,静态路由的优先级通常高于RIP
是的,在实际网络部署中,静态路由的优先级通常高于RIP,尤其是在中小型网络或对可控性要求高的场景中。以下是关键原因和典型应用场景分析: 1. 为何静态路由比RIP更受青睐? (1) 简单性与可靠性 静态路由: 手…...
Linux系统编程-DAY02
一、标准io 1.写文件 fgets函数中判断有多少行,且判断最后一个是不是终止符 if( buf[strlen(buf) - 1] \n ) 2. wc命令行:字符统计 wc -l 文件名 行数 文件名 3. write 用于操作二进制的文件(文办文件和图片文件也可以…...
【C++ 真题】P5736 【深基7.例2】质数筛
P5736 【深基7.例2】质数筛 题目描述 输入 n n n 个不大于 10 5 10^5 105 的正整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。 输入格式 第一行输入一个正整数 n n n,表示整数个数。 第二行输入 n n n 个正…...
自制操作系统day6(GDTR、段描述符、PIC、实模式和保护模式、16位到32位切换、中断处理程序、idt的设定、EFLAG寄存器)(ai辅助整理)
day6 分割源文件(harib03a) 优点 按照处理内容进行分类,如果分得好的话,将来进行修改时,容易找到地方。如果Makefile写得好,只需要编译修改过的文件,就可以提高make的速度。单个源文件都不长。…...
大模型评测与可解释性
随着大模型在各个领域展现出惊人的能力,我们对其性能的评估和对其决策过程的理解变得尤为重要。一个模型即使在基准测试中表现出色,也可能在实际应用中遇到意想不到的问题。同时,由于大模型的复杂性,它们常常被视为“黑箱”,这给其在关键领域的应用带来了挑战。 本章将深…...
【TTS回顾】StyleTTS 深度剖析:TTS+风格迁移
写在前面 这篇博客我们回顾一下StyleTTS,当时的背景是,文本转语音(TTS)技术,早已不再满足于仅仅将文字转化为可听的语音。行业需要的是“真人TTS”,AI 不仅能“说得清楚”,更能“说得生动”、“说得有感情”,甚至能模仿特定人物的说话风格。富有表现力的语音合成,即能…...
GStreamer (四)交叉编译
交叉编译 下载链接库交叉编译1、下载Gstreamer (方式二 ),进入到编译目录2、在gst-build目录下创建交叉编译配置文件cross_file.txt3、修改meson_options.txt中libmount选项为false,否则编译前需要先编译libmount。4、在gst-build…...
电路设计基础
只有当电容两端的电压等于0伏的时候,就是这一点的电压和这一点电压之间没有压差的时候,我门才可以把电容当成是一根导线,如果当我电容比如说它己经充到有一个1伏的电压了,这个时候我们是不可以把电容当成是导线的,所以…...
C语言——函数递归与迭代
(1)递归的例子: 顺序打印一个整数,打印整数的每一位。 例如: input:1234 output:1 2 3 4 input:520 output:5 2 0 我们可能会想到用这种方法:(但是运行之后,我们发现结果是事…...
详解 C# 中基于发布-订阅模式的 Messenger 消息传递机制:Messenger.Default.Send/Register
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…...
8 种快速易用的Python Matplotlib数据可视化方法
你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python 的 Matplotlib 库是你数据可视化的最佳伙伴!它简单易用、功能强大,能将枯燥的数字变成引人入胜的图表。无论是学生、数据分析师还是程序员&…...
嵌入式开发学习日志(linux系统编程--文件读写函数(2))Day25
一、linux操作命令 【wc】:指定字符统计; 【file 文件名】:可以查看文件的类型; 二、写入函数【fwrite】————可写入二进制文件 形式: size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE…...
离线服务器Python环境配置指南
离线服务器Python环境配置指南:避坑与实战 0. 场景分析:当服务器与世隔绝时 典型困境: 无法访问国际网络(如PyPI、Conda官方源)服务器处于内网隔离环境安全策略限制在线安装 解决方案矩阵: 方法适用场…...
Java线程池调优与实践经验
在Java面试中,线程池调优是一个常见且重要的考察点,尤其是当涉及Spring生态时,ThreadPoolTaskExecutor的使用经验通常会被深入追问。以下是针对该问题的结构化回答,结合原理、实践和调优经验: 1. 线程池调优的核心参数…...
Python 包管理工具核心指令uvx解析
uvx 是 Python 包管理工具 uv 的重要组成部分,主要用于在隔离环境中快速运行 Python 命令行工具或脚本,无需永久安装工具包。以下是其核心功能和使用场景的详细解析: 一、uvx 的定位与核心功能 工具执行器的角色 uvx 是 uv tool run 的别名&a…...
力扣-三数之和
1.题目描述 2.题目链接 LCR 007. 三数之和 - 力扣(LeetCode) 3.题目代码 import java.util.*; class Solution {public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);int tempnums.length-1;Set<List<Integer>…...
【AI模型学习】ESM2
文章目录 1. 版本2. 开始2.1 安装2.2 使用预训练模型2.2.1 代码2.2.2 讲解 2.2 结构预测 3. 任务类型总结1. 蛋白质结构预测(ESMfold)2. 特征嵌入提取(esm-extract)3. 零镜头变体预测(ESM-1v/ESM-2)4. 逆向…...