- 博客(23)
- 收藏
- 关注
原创 信号量机制:多生产者 - 多消费者问题
摘要:多生产者-多消费者问题中,一个盘子(缓冲区大小=1)被爸爸(放苹果)、妈妈(放橘子)、女儿(吃苹果)和儿子(吃橘子)共享。核心关系包括互斥(盘子访问)和同步(3组操作依赖)。设置4个信号量:plate(1)、apple(0)、orange(0)和mutex(1)。通过P/V操作实现同步与互斥。在单缓冲区且一一对应同步时,plate可隐式实现互斥,mutex可省略。验证流程表明逻辑正确,与单生产者-单消费者模型相比,多对多模型需更多同步信号量且互斥可简化。
2025-08-17 18:13:41
737
原创 信号量机制中---生产者 - 消费者问题
生产者-消费者问题是进程同步与互斥的经典场景,涉及生产者将产品放入缓冲区,消费者从缓冲区取出产品。需要解决两个关键关系:同步关系(缓冲区满时生产者等待,空时消费者等待)和互斥关系(缓冲区作为临界资源需互斥访问)。通过设置三个信号量(mutex、empty、full)实现同步与互斥,其中P操作顺序必须严格(先检查缓冲区状态再获取互斥锁),否则可能导致死锁,而V操作顺序可交换。正确实现信号量机制可确保系统正常运行。
2025-08-17 18:04:38
808
原创 补充:用信号量实现前驱关系
本文介绍了进程前驱关系的同步实现方法。通过信号量机制可解决多进程间的顺序执行问题:1)为每个前驱关系设置初值为0的信号量;2)前进程执行V操作释放信号,后进程执行P操作等待信号。文章通过三进程和四进程案例演示了实现方法,并指出信号量在多资源场景下初值应设为资源总数。最后总结了三个常见错误:P/V操作不成对、信号量初值设置错误以及操作顺序颠倒,强调应遵循"前V后P"的基本规则。该机制可有效保证进程间的同步执行顺序。
2025-08-17 17:52:31
589
原创 认识信号量机制、以及用信号量来实现进程互斥于进程同步
信号量机制是操作系统实现进程同步与互斥的重要工具。整型信号量通过P/V原子操作管理资源,但存在忙等问题。记录型信号量引入等待队列,资源不足时进程阻塞,满足"让权等待"原则。信号量可灵活实现两类应用:互斥信号量(初值1)保护临界区,同步信号量(初值0)控制执行顺序。相比互斥锁,信号量功能更强大,能同时管理多种资源并支持复杂进程协作。P/V操作的原子性确保资源计数准确,避免并发错误。
2025-08-17 17:38:56
567
原创 互斥锁---【不适用于单处理机系统】
互斥锁与自旋锁是两种实现线程同步的机制。互斥锁通过acquire()和release()操作实现临界区保护,获取失败时线程会阻塞;自旋锁则采用忙等待方式,适合锁持有时间短的场景。互斥锁适用于长时间占用场景,避免上下文切换开销;自旋锁在短时间占用时效率更高,但会消耗CPU资源。两者各有利弊:互斥锁可能引起线程切换延迟,自旋锁可能导致CPU资源浪费。选择取决于具体场景,如锁持有时间、系统架构等性能需求。
2025-08-17 17:22:58
600
原创 进程互斥的硬件实现方法
本文总结了B站王道计算机教育《操作系统》课程中关于硬件方法解决竞态条件的内容。核心思想是通过原子性指令(如中断屏蔽、TSL和Swap)的不可中断特性保护临界区。三种方法各具特点:中断屏蔽简单高效但不适用于多处理器;TSL和Swap指令虽保证原子性但存在忙等待问题,且均未实现"让权等待"原则。硬件方法虽能解决竞态条件,但需结合高级同步机制(如信号量)来优化性能。表格对比显示,现有方法在空闲让进和忙则等待上表现良好,但在有限等待和让权等待方面存在不足。
2025-08-17 17:12:26
348
原创 进程同步与互斥,及进程互斥的软件实现方法
本文基于B站王道计算机课程,系统梳理了进程同步与互斥的核心概念。进程同步解决异步性问题,保证协作进程的有序执行;进程互斥则确保临界资源的独占访问。文章详细分析了实现进程互斥的四大原则(空闲让进、忙则等待、有限等待、让权等待)及其重要性,并对比了四种经典软件实现方法:单标志法、双标志先检查法、双标志后检查法和Peterson算法,分别指出这些方法在违背互斥原则时存在的缺陷。这些内容为理解操作系统中的并发控制机制提供了清晰框架。
2025-08-17 16:56:55
573
原创 多处理机调度----操作系统
多处理机调度与单处理机调度的主要区别在于需要考虑进程分配和负载均衡问题。调度核心目标是实现负载均衡和保持处理机亲和性。公共就绪队列通过全局共享实现自然负载均衡,但亲和性较差;私有就绪队列通过独立队列提升亲和性,但需要推迁移或拉迁移策略来维持负载平衡。两种队列各有优缺点:公共队列简单但需锁机制,私有队列性能更优但实现复杂。系统设计需根据场景在负载均衡和亲和性之间权衡选择。
2025-08-05 23:44:18
879
原创 调度算法--【交互式系统】
本文比较了三种CPU调度算法的核心特性和适用场景。时间片轮转(RR)采用固定时间片轮转执行,保证公平性和响应速度,适用于分时系统;优先级调度按任务重要性分配资源,支持抢占和非抢占模式,但可能导致低优先级进程饥饿;多级反馈队列(MFQ)综合多种算法优势,通过多级队列实现短作业优先和长作业优化,适合现代操作系统。三种算法在抢占性、短作业优化、长作业处理等方面各具特点,RR实现简单,优先级调度灵活性高,MFQ则复杂度较高但综合性能更优。
2025-08-05 23:36:40
794
原创 调度算法--【早期的批处理系统】
本文对比分析了四种经典调度算法:FCFS(先来先服务)、SJF(短作业优先)、SRTN(最短剩余时间优先)和HRRN(高响应比优先)。FCFS实现简单但效率低,SJF优化平均等待时间但可能导致长作业饥饿,SRTN通过抢占机制提升响应速度,HRRN引入动态优先级平衡公平性。各算法适用于不同场景:FCFS适合简单批处理,SJF/SRTN适用于实时系统,HRRN则适合混合负载环境。特性对比显示,从实现复杂度、公平性到抢占机制,各算法各有优劣,需根据具体需求选择。
2025-08-05 23:19:53
905
原创 认识调度器/调度程序--操作系统
摘要:调度器是操作系统进程调度的核心组件,负责决定进程运行顺序和时间分配。主要功能包括从就绪队列选择进程、分配时间片,触发时机包括进程创建/退出/阻塞、I/O中断和时钟中断。调度对象取决于系统是否支持内核级线程(进程或内核线程)。当就绪队列为空时,调度器会运行最低优先级的闲逛进程(idle process)来保持CPU运转。调度器直接影响系统响应速度和资源利用率,是确保CPU高效运行的关键机制。
2025-08-05 22:41:36
387
原创 进程调度:时机、切换、过程与方式
进程调度时机:主动放弃处理机的三种情况(正常终止、异常终止、主动阻塞)和被动放弃的三种情况(时间片用完、有更紧急事、高优先级进程进入),以及不能进行进程调度的三种场景(处理中断、内核程序临界区、原子操作),这些都是常考的知识点,需要准确记忆。进程切换过程:进程切换中对原进程数据的保存和新进程资源的恢复,以及频繁切换对系统效率的影响,理解这些内容有助于掌握操作系统的底层运行机制,在考试中也可能会涉及相关问题。调度方式。
2025-07-30 21:37:40
784
原创 操作系统:调度是什么?
本文基于B站王道计算机课程《操作系统》内容,系统介绍了操作系统的三级调度机制。高级调度(作业调度)负责从外存选择作业调入内存并创建进程,发生频率最低;中级调度(内存调度)管理内存资源,在内存和外存间调整进程状态,频率适中;低级调度(进程调度)直接分配CPU资源,调度频率最高。这三个层次各司其职,共同实现系统资源的合理分配,直接影响操作系统的性能和响应速度。调度机制的设计对系统资源利用率和用户体验至关重要。
2025-07-28 23:50:41
263
原创 操作系统:线程的实现、状态与转换
本文基于B站王道计算机课程,系统梳理了线程的核心概念。重点分析了用户级线程(UTL)和内核级线程(KTL)的实现差异:UTL由应用程序管理,切换开销小但并发能力弱;KTL由内核管理,支持多核并行但切换成本高。文章还对比了三种多线程模型(一对一、多对一、多对多)的特点,并详细阐述了线程的三种基本状态(就绪、运行、阻塞)及其转换机制。最后介绍了线程控制块(TCB)的关键作用,包括线程标识、程序计数器和寄存器状态的保存等核心内容。
2025-07-28 23:02:03
706
原创 理解操作系统中的信号机制
本文基于B站王道计算机课程,系统讲解了操作系统中的信号机制与线程知识。信号作为进程间通信(IPC)的重要机制,用于通知进程事件发生,其发送、保存和处理方式均有详细说明。在引入线程后,系统并发性显著提升:线程成为CPU调度单位,同一进程内的线程可共享资源,切换开销更小。文章还对比了线程与传统进程的区别,介绍了线程的实现方式和多线程模型。这些核心概念对理解操作系统运行原理和开发高效程序具有重要价值。
2025-07-27 22:43:57
879
原创 进程通信(IPC)
摘要:本文介绍了操作系统中的进程通信(IPC)机制,主要包括共享存储、消息传递和管道通信三种方式。共享存储通过共享内存区域实现高效数据交互,需自行处理互斥访问;消息传递以格式化消息为单位,支持直接和间接通信;管道通信采用单向FIFO传输,具有阻塞机制和互斥访问特性。每种方式各有优缺点:共享存储高效但需同步,消息传递灵活适应复杂场景,管道通信适合单向数据传输。操作系统为进程通信提供必要支持,确保安全高效的数据交互。
2025-07-24 22:41:54
503
原创 深入剖析进程的状态、转换与控制
本文基于B站王道计算机课程,系统梳理了操作系统中的进程状态管理机制。进程在生命周期中会经历创建态、就绪态、运行态、阻塞态和终止态五种基本状态,各状态间通过特定条件相互转换。操作系统通过进程控制块(PCB)记录进程状态,采用链式或索引方式组织PCB队列。文章详细解析了进程创建、终止、阻塞与唤醒等控制原语的实现原理,以及引起状态转换的各类事件。通过原语的原子性执行和精确的状态管理,操作系统实现了多进程的高效调度与资源分配。
2025-07-23 22:21:13
435
原创 【操作系统】虚拟机、进程的初步认识
本文基于B站王道计算机课程,系统梳理了虚拟机与进程两大核心概念。虚拟机通过软件模拟完整计算机系统,分为两类管理程序:直接运行在硬件上的第一类VMM(如VMware ESXi)性能更优,而运行在宿主OS上的第二类VMM(如VirtualBox)迁移性更好。进程则是程序执行的动态实例,包含PCB(唯一标识)、程序段和数据段三部分,具有动态性、并发性、独立性、异步性和结构性五大特征。文章通过QQ多开等实例,生动阐释了操作系统如何通过PCB管理进程状态与资源分配。
2025-07-19 21:48:31
504
原创 操作系统概念、发展与运行机制
操作系统是计算机核心软件,管理资源并提供 GUI、命令及程序接口,将裸机拓展为强功能虚拟机。其核心特征为并发、共享、虚拟和异步。发展历经手工操作阶段,效率极低;批处理阶段,单道批处理缓解人机矛盾但资源利用率低,多道批处理标志操作系统正式诞生;分时操作系统解决人机交互,实现公平服务;实时操作系统分为硬实时和软实时;还有网络、分布式和个人操作系统。运行中 CPU 分内核态与用户态,通过中断切换,中断是内核夺权唯一途径。系统调用为应用请求内核服务接口。体系结构含大内核、微内核、分层结构、模块化和外核等类型
2025-07-17 22:14:37
973
原创 Day4-python 设计链表
设计链表获取链表第index个节点的数值在链表的最前面插入一个节点在链表的最后面插入一个节点在链表第index个节点前面插入一个节点删除链表的第index个节点
2025-02-06 11:47:13
1582
原创 Day2-python数组(双指针、滑动窗口、螺旋矩阵II)
有序数组的平方(双指针解法)长度最小的子数组(滑动窗口)螺旋矩阵II(循环不变量)
2025-01-17 14:27:59
1647
1
原创 Day1-python实现二分法查找以及移除元素
二分法查找是一种高效的查找算法,适用于在有序数组中查找特定元素。其基本思想是通过逐步缩小查找范围,快速定位目标值的位置。
2025-01-15 14:19:24
1513
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人