操作系统原理
文章平均质量分 87
操作系统原理教学
囧九
工作~
展开
-
进程同步:哲学家进餐问题与生产者消费者问题
哲学家进餐问题和生产者消费者问题是进程同步中的两个经典例子,它们帮助我们理解如何使用信号量和互斥量来管理共享资源,避免死锁和饥饿等问题。在实际系统中,这些方法对于保证系统的稳定性和有效性至关重要。希望通过这些示例,大家可以更好地理解进程同步的概念,并将这些技术应用到实际的编程场景中。同步机制不仅用于解决这些经典问题,也在各种并发编程中起着重要作用。编写并发程序时,合理使用信号量、互斥量等同步工具,可以帮助我们避免许多潜在的错误和不一致。原创 2024-11-07 17:27:45 · 1063 阅读 · 0 评论 -
死锁 - 银行家算法
银行家算法由艾兹赫尔·戴克斯特拉(Edsger Dijkstra)提出,得名于银行如何向客户分配贷款的类比。它通过确保在分配资源后系统仍然处于安全状态来避免死锁。在这种算法中,系统在做出每一个资源分配决定之前,都会预先评估资源分配的安全性,以确保系统不会进入死锁状态。最大需求声明:每个进程在开始时声明其对每种资源的最大需求量。动态资源分配:在分配资源时,系统会检查是否有足够的资源满足进程需求,并确保资源分配不会导致死锁。安全状态检查。原创 2024-10-17 11:00:13 · 1474 阅读 · 0 评论 -
调度算法 - 多级反馈队列调度算法
多级反馈队列调度算法是一种基于多个优先级队列的调度算法。在这种调度策略中,进程根据它们的特性和执行表现,被分配到不同的优先级队列中,且这些队列中的调度策略可以是不同的。算法的主要目标是兼顾系统的公平性和响应性,使得短作业和交互型作业得到更快的响应,同时保证长作业最终也能得到处理。多个优先级队列:每个优先级队列可以有不同的调度策略(如时间片大小不同)。动态调整优先级:进程可以在执行过程中根据其表现被移至不同优先级的队列。抢占机制:高优先级的队列可以抢占低优先级队列中的进程。原创 2024-10-17 10:57:32 · 1212 阅读 · 1 评论 -
调度算法 - 优先级调度算法
优先级调度算法是一种调度策略,基于进程的优先级来决定 CPU 的分配顺序。每个进程都有一个优先级数值,通常是一个整数,优先级数值越低或越高,表示优先级越高(具体取决于实现)。在这种算法中,具有较高优先级的进程会优先获得 CPU 资源,直到它完成执行或者被阻塞。抢占式优先级调度:当一个更高优先级的进程到达时,它可以中断正在执行的低优先级进程。非抢占式优先级调度:当前正在运行的进程不会因为更高优先级的进程到达而被中断,直到其完成执行或被阻塞。原创 2024-10-17 10:55:22 · 715 阅读 · 0 评论 -
调度算法 - 时间片轮转调度算法
时间片轮转调度算法是一种基于时间片的抢占式调度算法。它将 CPU 的时间分割为一个个固定长度的时间片(Time Slice),然后将这些时间片按顺序分配给每个进程。每个进程在它的时间片内执行任务,如果在时间片结束前完成任务,那么它会释放 CPU 供其他进程使用;如果未完成任务,则进程会被置于就绪队列的末尾,等待下一轮时间片。时间片轮转调度的基本特点包括:每个进程都有一个固定的时间片。如果进程在时间片内没有完成,则会被挂起并移到队列的尾部。该算法是抢占式的,可以提高系统响应时间。原创 2024-10-17 10:52:26 · 900 阅读 · 0 评论 -
调度算法-高响应比优先调度算法
高响应比优先(HRN)是一种改进型的调度算法,它综合考虑了进程的等待时间和执行时间,通过计算每个进程的响应比来决定下一个要执行的进程。HRN算法的主要目标是避免长进程因短进程不断插入而长期等待的情况,从而兼顾系统的公平性和效率。响应比等待时间:进程已经在就绪队列中等待的时间。执行时间:进程所需的CPU时间。通过该公式可以看出,随着等待时间的增加,响应比也会相应提高,这意味着等待时间较长的进程会逐渐得到更高的优先级,解决了短作业优先调度算法中长任务容易饥饿的问题。原创 2024-10-16 11:11:16 · 1196 阅读 · 0 评论 -
短作业优先调度算法详解:抢占式与非抢占式
短作业优先(SJF)是一种调度策略,它选择执行时间最短的进程优先进行调度。这种算法的核心理念是:短的任务先执行,从而减少整体的平均等待时间。非抢占式短作业优先抢占式短作业优先(也称为最短剩余时间优先。原创 2024-10-16 11:07:15 · 1944 阅读 · 0 评论 -
调度算法-先来先服务
*先来先服务(First-Come, First-Served,FCFS)**调度算法是操作系统中最简单、最基本的进程调度算法之一。它按照进程到达就绪队列的先后顺序来调度进程,即先到达的进程先被分配CPU资源进行执行。int pid;// 进程ID// 到达时间// 服务时间// 开始执行时间// 完成时间// 周转时间// 带权周转时间} Process;使用结构体Process来表示一个进程的各种属性。内存分配:动态分配存储进程的数组。数据输入。原创 2024-10-10 15:28:42 · 1332 阅读 · 0 评论