📝 操作系统教程
321篇技术文档📅  最后修改于: 2020-12-14 09:37:47        🧑  作者: Mango
二进制地址的基础计算机系统将二进制地址分配给内存位置。但是,系统使用位数来寻址存储位置。使用1位,我们可以寻址两个存储位置。使用2位,我们可以寻址4,使用3位,我们可以寻址8个存储单元。可以在地址中的位数与存储位置范围之间的映射中标识一个模式。我们知道,这n位可以分为两部分,即K位和(nk)位。...
📅  最后修改于: 2020-12-14 09:38:39        🧑  作者: Mango
物理和逻辑地址空间物理地址空间系统中的物理地址空间可以定义为主存储器的大小。将进程大小与物理地址空间进行比较非常重要。进程大小必须小于物理地址空间。逻辑地址空间逻辑地址空间可以定义为进程的大小。进程的大小应足够小,以便可以驻留在主内存中。比方说什么是单词?字是内存的最小单位。它是字节的集合。在分析输入到解码器的n位地址和从解码器产生的2 ^ n个存储位置之后,每个操作系统都会定义不同的字长。...
📅  最后修改于: 2020-12-14 09:39:30        🧑  作者: Mango
页表页表是虚拟内存系统用来存储逻辑地址和物理地址之间的映射的数据结构。逻辑地址是由CPU为进程的页面生成的,因此它们通常由进程使用。物理地址是内存的实际帧地址。它们通常由硬件或更具体地由RAM子系统使用。下面给出的图像考虑到,CPU始终通过其逻辑地址访问进程。但是,主存储器只能识别物理地址。在这种情况下,将出现一个名为“内存管理单元”的单元。它将逻辑地址的页码转换为物理地址的帧号。两个地址的偏移量...
📅  最后修改于: 2020-12-14 09:40:24        🧑  作者: Mango
从页表到主存储器的映射在操作系统中,始终需要从逻辑地址映射到物理地址。但是,该过程涉及定义如下的各个步骤。1.逻辑地址的生成CPU为进程的每一页生成逻辑地址。它包含两部分:页码和偏移量。2.缩放为了确定进程的实际页码,CPU将页表库存储在特殊寄存器中。每次生成地址时,页面表基数的值就会添加到页码中,以获取页面条目在表中的实际位置。此过程称为缩放。3.生成物理地址所需页面的帧号由其在页面表中的输入确...
📅  最后修改于: 2020-12-15 03:40:22        🧑  作者: Mango
页表条目除页面帧号外,页面表还包含一些位,这些位表示有关页面的额外信息。让我们看看页面的每一位代表什么。1.禁用缓存有时,最接近CPU的信息和最接近用户的信息之间存在差异。操作系统始终希望CPU尽快访问用户数据。 CPU访问在某些情况下可能不准确的缓存,因此,操作系统可以为所需的页面禁用缓存。如果禁用了缓存,则该位设置为1。2.参考有各种页面替换算法,本教程稍后将介绍这些算法。如果在最后一个时钟周...
📅  最后修改于: 2020-12-15 03:41:21        🧑  作者: Mango
页表的大小但是,在该时间段内,CPU正在执行的过程的一部分必须存在于主存储器中。页表还必须一直存在于主存储器中,因为它具有所有页的条目。页表的大小取决于表中条目的数量以及一个条目中存储的字节数。考虑一下在这里,我们很幸运地使页表大小等于框架大小。现在,页表将被简单地存储在主存储器的其中一个帧中。 CPU维护一个包含该帧的基址的寄存器,逻辑地址中的每个页码都将首先添加到该基址中,以便我们可以访问被询...
📅  最后修改于: 2020-12-15 03:42:19        🧑  作者: Mango
寻找最佳页面大小我们已经看到较大的页面表大小会导致额外的开销,因为我们必须将该表划分为多个页面,然后将其存储到主内存中。我们所关心的必须是执行进程而不是执行页表。页表为流程的执行提供了支持。页表越大,开销越大。我们知道,将有100万页,这是一个很大的数字。但是,请尝试使页面大小更大,例如2 MB。然后,页表中的页数=(2 X 2 ^ 30)/(2 X 2 ^ 20)= 1 K页。如果比较这两种情况...
📅  最后修改于: 2020-12-15 03:43:14        🧑  作者: Mango
虚拟内存虚拟内存是一种存储方案,可为用户提供拥有很大主内存的错觉。这是通过将辅助存储器的一部分作为主存储器来完成的。在这种方案中,用户可以幻想内存可用于加载进程,从而可以加载比可用主内存更大的进程。操作系统没有在主存储器中加载一个大进程,而是在一个主存储器中加载了一个以上进程的不同部分。通过这样做,将增加多编程的程度,因此,CPU使用率也将增加。虚拟内存如何工作?用现代的话来说,虚拟内存近来已经很...
📅  最后修改于: 2020-12-15 03:44:09        🧑  作者: Mango
翻译预留缓冲区分页的缺点Page表的大小可能非常大,因此浪费了主内存。CPU将花费更多时间从主存储器读取单个字。如何减小页表大小可以通过增加页面大小来减小页面表的大小,但这将导致内部碎片,并且还会浪费页面。其他方法是使用多级分页,但这会增加有效的访问时间,因此这不是一种实用的方法。如何减少有效访问时间CPU可以使用内部存储有页面表的寄存器,以便访问页面表的访问时间可以大大减少,但是该寄存器并不便宜...
📅  最后修改于: 2020-12-15 03:45:03        🧑  作者: Mango
关于TLB的门问题门| GATE-CS-2014-(Set-3)考虑具有TLB的寻呼硬件。假定整个页表和所有页都在物理内存中。搜索TLB需要10毫秒,而访问物理内存则需要80毫秒。如果TLB命中率为0.6,则有效内存访问时间(以毫秒为单位)为_________。A.120B.122C.124D.118鉴于有效访问时间(EAT)= 0.6(10 + 80)+ 0.4(10 + 80 + 80)= 9...
📅  最后修改于: 2020-12-15 03:45:57        🧑  作者: Mango
需求分页根据虚拟内存的概念,为了执行某些过程,仅一部分过程需要存在于主存储器中,这意味着在任何时候仅几页将仅存在于主存储器中。但是,很难决定哪些页面需要保留在主存储器中,哪些页面需要保留在辅助存储器中,因为我们无法预先说一个进程在特定时间需要特定页面。因此,为了克服这个问题,引入了一种称为需求分页的概念。建议将所有帧的页面保留在辅助存储器中,直到需要它们为止。换句话说,它表示除非需要,否则不要在主...
📅  最后修改于: 2020-12-15 03:46:49        🧑  作者: Mango
倒页表反向页表是操作系统为所有进程维护的全局页表。在反向页表中,条目数等于主存储器中的帧数。它可以用来克服页表的缺点。无论页面是否存在于主存储器中,都始终为该页面保留一个空间。但是,如果页面不存在,这仅仅是浪费内存。我们可以通过反转页面表来节省这种浪费。我们只能保存主内存中存在页面的详细信息。框架是索引,块中保存的信息将是过程ID和页码。...
📅  最后修改于: 2020-12-15 03:47:43        🧑  作者: Mango
页面替换算法页面替换算法决定要替换哪个内存页面。替换过程有时称为换出或写入磁盘。当在主存储器中找不到请求的页面时(页面错误)完成页面替换。虚拟内存有两个主要方面,即帧分配和页面替换。拥有最佳的帧分配和页面替换算法非常重要。帧分配是有关要为该进程分配多少帧的信息,而页面替换是有关确定需要替换的页码以便为请求的页面腾出空间的全部信息。如果算法不是最佳的怎么办?1.如果分配给进程的帧数不足或不准确,则可...
📅  最后修改于: 2020-12-15 03:48:38        🧑  作者: Mango
关于LRU和FIFO的GATE 2015问题问:考虑一个具有五个页面框架和以下页面引用序列的主存储器:3、8、2、3、9、1、6、3、8、9、3、6、2、1、3。关于页面替换策略,先进先出(FIFO)和最近最少使用(LRU)是否正确?A.两者都会导致相同数量的页面错误B.FIFO导致的页面错误比LRU多2C.LRU导致的页面错误比FIFO多2次D.FIFO导致的页面错误比LRU多1解:帧数= 5先...
📅  最后修改于: 2020-12-15 03:49:32        🧑  作者: Mango
最优,LRU和FIFO上的数值问:考虑一个参考字符串:4、7、6、1、7、6、1、2、7、2。内存中的帧数为3。找出与以下各项有关的页面错误数:最佳页面替换算法FIFO页面替换算法LRU页面替换算法最佳页面替换算法最佳页面替换算法中的页面错误数= 5LRU页面替换算法LRU中的页面错误数= 6FIFO页面替换算法FIFO中的页面错误数= 6...