📝 操作系统教程
321篇技术文档📅  最后修改于: 2020-12-14 09:24:41        🧑  作者: Mango
防止死锁如果我们用桌子的四腿站立模拟死锁,那么我们也可以用四种情况模拟四腿,当同时发生时会引起死锁。但是,如果我们折断桌脚之一,桌肯定会掉落。死锁也会发生同样的情况,如果我们能够违反四个必要条件之一并且不让它们同时出现,那么我们可以防止死锁。让我们看看如何预防每种情况。1.互斥从资源的角度来看,相互切入的事实是,一个资源永远不能被一个以上的进程同时使用,这很公平,但这是造成僵局的主要原因。如果一个...
📅  最后修改于: 2020-12-14 09:25:33        🧑  作者: Mango
避免死锁在避免死锁的情况下,如果系统的结果状态未引起系统死锁,则将批准对任何资源的请求。将连续检查系统的状态是否存在安全和不安全状态。为了避免死锁,该进程必须告知OS一个进程可以请求完成其执行的最大资源数量。最简单,最有用的方法是,该过程应声明可能需要的每种类型的最大资源数。避免死锁算法会检查资源分配,以便永远不会出现循环等待条件。安全与不安全国家系统的资源分配状态可以通过可用资源和已分配资源的实...
📅  最后修改于: 2020-12-14 09:26:25        🧑  作者: Mango
资源分配图资源分配图是系统状态的图形表示。顾名思义,资源分配图是有关持有某些资源或正在等待某些资源的所有进程的完整信息。它还包含有关所有资源的所有实例的信息,无论这些资源是否可用或被流程使用。在资源分配图中,过程用圆圈表示,而资源用矩形表示。让我们详细了解顶点和边的类型。顶点主要有两种类型,即资源和过程。它们中的每一个将以不同的形状表示。圆形代表过程,而矩形代表资源。一个资源可以有多个实例。每个实...
📅  最后修改于: 2020-12-14 09:27:17        🧑  作者: Mango
使用RAG进行死锁检测如果在所有资源都具有单个实例的资源分配图中形成一个循环,则系统将死锁。在具有多实例资源类型的资源分配图的情况下,循环是死锁的必要条件,但不是充分条件。以下示例包含三个进程P1,P2,P3和三个资源R2,R2,R3。所有资源均具有单个实例。如果我们分析该图,则可以发现在图中形成了一个循环,因为该系统满足了所有四个死锁条件。分配矩阵可以通过使用系统的资源分配图来形成分配矩阵。在分...
📅  最后修改于: 2020-12-14 09:28:14        🧑  作者: Mango
死锁检测和恢复在这种方法中,操作系统没有应用任何机制来避免或防止死锁。因此系统认为肯定会发生死锁。为了消除死锁,操作系统会定期检查系统是否有死锁。如果发现任何死锁,则操作系统将使用某些恢复技术来恢复系统。操作系统的主要任务是检测死锁。操作系统可以借助资源分配图检测死锁。在单实例资源类型中,如果系统中正在形成一个循环,则肯定会出现死锁。另一方面,在多个实例化资源类型图中,仅检测一个周期还不够。通过将...
📅  最后修改于: 2020-12-14 09:29:06        🧑  作者: Mango
什么是记忆?可以将计算机内存定义为以二进制格式表示的某些数据的集合。根据各种功能,存储器可以分为各种类别。我们稍后将详细讨论其中的每一个。能够暂时或永久存储任何信息或数据的计算机设备称为存储设备。数据如何存储在计算机系统中?为了了解内存管理,我们必须弄清所有有关如何在计算机系统中存储数据的信息。机器仅理解0或1的二进制语言。计算机首先将每个数据转换为二进制语言,然后将其存储到内存中。这意味着如果我...
📅  最后修改于: 2020-12-14 09:29:58        🧑  作者: Mango
固定分区可用于将多个进程加载到主存储器中的最早也是最简单的技术之一是固定分区或连续内存分配。在这种技术中,主存储器被分成大小相等或不同的分区。操作系统始终位于第一个分区中,而其他分区可用于存储用户进程。内存以连续方式分配给进程。在固定分区中分区不能重叠。进程必须连续存在于分区中才能执行。使用此技术存在多种弊端。1.内部碎片如果进程的大小较小,则分区的总大小会浪费掉一部分分区,并保持未使用状态。这是...
📅  最后修改于: 2020-12-14 09:30:50        🧑  作者: Mango
动态分区动态分区试图克服由固定分区引起的问题。在这种技术中,最初不声明分区大小。在进程加载时声明。第一个分区是为操作系统保留的。剩余空间分为多个部分。每个分区的大小将等于进程的大小。分区的大小根据处理的需要而变化,从而可以避免内部碎片。动态分区优于固定分区的优势1.无内部碎片鉴于动态分区中的分区是根据该过程的需要创建的,因此很显然不会有任何内部碎片,因为分区中不会有任何未使用的剩余空间。2.对过程...
📅  最后修改于: 2020-12-14 09:31:41        🧑  作者: Mango
压实我们知道动态分区会遭受外部碎片的困扰。但是,这可能会导致一些严重的问题。为了避免压缩,我们需要更改规则,即不能将进程存储在内存中的不同位置。我们还可以使用压缩来最小化外部碎片的可能性。在压缩中,使所有可用分区连续,并将所有已加载分区合并在一起。通过应用此技术,我们可以将更大的进程存储在内存中。空闲分区已合并,现在可以根据新进程的需要进行分配。此技术也称为碎片整理。如上图所示,由于空闲分区是连续...
📅  最后修改于: 2020-12-14 09:32:33        🧑  作者: Mango
动态分区的位图动态分区的主要关注点是跟踪所有可用分区和已分配分区。但是,操作系统为此任务使用以下数据结构。位图链表位图是用于存储详细信息的最不著名的数据结构。在该方案中,主存储器被分为分配单元的集合。可以根据该过程的需要将一个或多个分配单元分配给该过程。但是,分配单元的大小是固定的,由操作系统定义,并且永远不会更改。尽管分区大小可能有所不同,但是分配大小是固定的。操作系统的主要任务是跟踪分区是空闲...
📅  最后修改于: 2020-12-14 09:33:28        🧑  作者: Mango
动态分区的链接列表跟踪空闲或已填充分区的更好,最流行的方法是使用链接列表。在这种方法中,操作系统维护一个链表,其中每个节点代表每个分区。每个节点都有三个字段。节点的第一个字段存储一个标志位,该标志位显示分区是孔还是内部有某个进程。第二个字段存储分区的起始索引。第三字段存储分区的结束索引。如果某个分区在某个时间释放,则该分区将与其相邻的空闲分区合并,而无需进行任何额外的工作。使用此方法时,需要注意一...
📅  最后修改于: 2020-12-14 09:34:19        🧑  作者: Mango
分割算法操作系统实现了各种算法,以便找出链表中的漏洞并将其分配给进程。下面给出有关每种算法的说明。1.首次拟合算法First Fit算法将扫描链表,并在找到第一个足够大的漏洞以存储进程时停止扫描并将进程加载到该漏洞中。此过程将产生两个分区。其中一个分区将是一个洞,而另一个分区将存储该过程。First Fit算法根据起始索引的升序维护链表。这是所有算法中最简单的实现方法,与其他算法相比,它会产生更大...
📅  最后修改于: 2020-12-14 09:35:13        🧑  作者: Mango
GATE最适合和最适合的问题从门的角度来看,最适合和最适合的数值经常被问到一个标记。让我们来看看下面给出的那个。问:流程要求为:25 K,50 K,100 K,75 K确定最能满足此要求的算法。First Fit算法最佳拟合算法两者都不他们都在问题中,内存中有五个分区。 3个分区内部有进程,两个分区是孔。我们的任务是检查可以最佳满足要求的算法。使用First Fit算法让我们看一下首次拟合算法如何...
📅  最后修改于: 2020-12-14 09:36:03        🧑  作者: Mango
需要分页动态分区的缺点动态分区的主要缺点是外部碎片。尽管可以通过压缩将其删除,但是正如我们前面所讨论的,压缩使系统效率低下。我们需要找到一种可以以最佳方式将进程加载到分区中的机制。让我们讨论一种称为分页的动态而灵活的机制。需要分页让我们考虑一个大小为2 MB的进程P1和分为三个分区的主内存。在这三个分区中,两个分区分别是大小为1 MB的孔。P1需要在主存储器中加载2 MB空间。我们有两个每个1 M...
📅  最后修改于: 2020-12-14 09:36:56        🧑  作者: Mango
分页示例在操作系统中,分页是一种存储机制,用于以页的形式从二级存储中检索进程到主内存中。分页背后的主要思想是将每个进程划分为页面形式。主存储器也将以帧的形式进行划分。该过程的一页将存储在存储器的其中一个帧中。页面可以存储在内存的不同位置,但是始终要优先查找连续的框架或孔。仅当需要时,该过程的页面才会进入主内存,否则它们将位于辅助存储中。不同的操作系统定义了不同的框架大小。每帧的大小必须相等。考虑到...