当前位置:首页 » 文件传输 » 缺页中断需要访问几次主存
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

缺页中断需要访问几次主存

发布时间: 2022-11-18 19:42:07

❶ 假定有4,5个页块,应用下面的页面替换算法,计算机会出现多少次缺页中断

<pre t="code" l="cpp">(1) FIFO
1 2 3 4 1 2 5 1 2 3 4 5
----------------------------------------
1 2 3 4 1 2 5 5 5 3 4 4
1 2 3 4 1 2 2 2 5 3 3 该行是怎么算出来的?
1 2 3 4 1 1 1 2 5 5 该行是怎么算出来的?
----------------------------------------
缺页中断次数=9
FIFO是这样的:3个内存块构成一个队列,前3个页面依次入队(3个缺页),内存中为3-2-1;
接着要访问4号页面,内存中没有(1个缺页),按FIFO,1号页面淘汰,内存中为4-3-2;
接着要访问1号页面,内存中没有(1个缺页),按FIFO,2号页面淘汰,内存中为1-4-3;
接着要访问2号页面,内存中没有(1个缺页),按FIFO,3号页面淘汰,内存中为2-1-4;
接着要访问5号页面,内存中没有(1个缺页),按FIFO,4号页面淘汰,内存中为5-2-1;
接着要访问1号页面,内存中有(命中),内存中为5-2-1;
接着要访问2号页面,内存中有(命中),内存中为5-2-1;
接着要访问3号页面,内存中没有(1个缺页),按FIFO,1号页面淘汰,内存中为3-5-2;
接着要访问4号页面,内存中没有(1个缺页),按FIFO,2号页面淘汰,内存中为4-3-5;
接着要访问5号页面,内存中有(命中),内存中为4-3-5;
缺页中断次数=9 (12次访问,只有三次命中)
LRU不同于FIFO的地方是,FIFO是先进先出,LRU是最近最少用,如果1个页面使用了,要调整内存中页面的顺序,如上面的FIFO中:
接着要访问1号页面,内存中有(命中),内存中为5-2-1;
在LRU中,则为
接着要访问1号页面,内存中有(命中),内存中为1-5-2;

❷ 计算机组成原理——虚拟存储

(1)程序员在比实际主存大得多的逻辑地址空间中编写程序

(2)程序执行时,把当前需要的程序段和数据块掉入主存,其他暂不使用的放在磁盘上

(3)执行指令时,通过硬件将逻辑地址转化为物理地址。虚拟地址高位为虚页号,低位为页内偏移地址

(4)当程序发生数据访问或程序访问失效(缺页时),由操作系统把信息从磁盘调入主存中

    (1)基本思想:

        内存被分成固定长度且长度较小的存储块(页框,实页,物理页)

        每个进程也被划分为固定长度的程序块(页,虚页,逻辑页)

        通过页表,实现逻辑地址想物理地址的转化

    (2)逻辑地址

        程序中指令所使用的地址(进程所在地址空间)

    (3)物理地址

        存放指令或数据的实际内存地址

(1)与“cache-主存”层次相比,页大小远比cache的行大小要大(windows中的页位4k)

(2)采用全相联映射方式:磁盘中的任意一个页能用射到内存中的任意一个页

    因为缺页导致中断时,操作系统从磁盘拿数据通常要耗费几百万个时钟周期。增大页大小,可以减少缺页中断

(3)为什么让软件处理“缺页”

    因为访问磁盘需要好粉几百万个时钟周期,硬件即使能立刻把地址打给磁盘,磁盘也不能立即响应

(4)为什么地址转换用硬件实现

    硬件实现地址转换可以加快指令的执行速度

(5)为什么页写会策略采用write back

    避免频繁的慢速磁盘访问

页表的首地址放在基址寄存器。采用基址寻址方式

每个页表项前面有一个虚页号:从0开始递增的序号。页表项又分为几个结构:

(1)装入位:该页是否在内存中

(2)修改位:该也在内存中是否被修改

(3)替换控制位:用于clock算法

(4)其他

(5)实页号(8进制)

(1)一次磁盘引用需要访问几次主存?2次,一次查页表,一次查物理地址。于是,把经常查的页表放到cache中。这种在cache页表项组成的页表称为TLB(Translation Lookside Buffer)

(2)TLB的页表结构:tag + 主存中的页表项

当采用全相连映射时,tag为页表项前面的虚页号。需要把tag和虚页号一一比较

当采用组相联映射时,tag被分为tag+index,虚页号的高位为tag,虚页号的低位为index,做组内索引(属于组内第几行)

    1.段式存储是根据程序逻辑,给程序分段。使得每段大小不同。这种虚拟地址划分方法适合程序设计

    2.段式存储的虚拟地址由段号和段内偏移地址组成。段式虚拟存储器到物理地址的映射通过段表实现

    3.段式虚拟存储会造成空页

    1.段页式虚拟存储,先把程序按照逻辑分成段,再把每段分成固定大小的页。

    2.程序对主存的调入调出是按照页面进行的;但他有可以根据段实现共享和保护

    3.缺点是段页式虚拟地址转换成物理地址需要查询2个表:段表和页表。段表找到相应页表的位置,页表找到想也页的位置

    4.段页式细腻地址的结构可以为以下形式:

            程序地址: 用户号(进程pid) | 段号 | 页号 | 页内偏移地址

(1)某计算机的cache块工16块,采用二路组相联映射方式,每个主存块大小为32字节,按照字节编制。则主存129号单元的主存块硬装如刀cache的组号是:(C)A、0      B、2      C、4      D、6

解:二路组相联,所以每组2块,共有16/2=8组,所以组号占3位。

      每块32字节,所以块内地址占5位。

      129转化为二进制:1000 0001:前3位为组号,100:=4

(2)假设用若干个2K4位的芯片组成一个8K8位的存储器,则地址0B1FH所在芯片的最小地址为:

解:用2片组成一行,共4行,所以片选地址占2位。片内地址有2k=211,所以占11位

      0B1FH:000|0 1|011 0001 1111 这三段为前缀,片选地址,片内地址。

      该片芯片的最小地址是片内地址全0:000|0 1|000 0000 0000 = 0800H

(3)某计算机的主存地址空间大小为256MB,按字节编址,指令cache和数据cache分离,均有8个cache行,每行大小为64B,数据cache采用直接映射方式,现有两个程序A,B对数组int a[256][256]进行遍历,程序A按行遍历,程序B按列遍历。假定int类型数据用32位补码表示,数组a按行优先方式存储,其地址为320(十进制)。

问:(1) 若不考虑cache一致性维护和替换算法所需的控制位,则数据cache的总容量占多少?

      (2) 数组元素a[0][31]和a[1][1]各自所在主存块对应的cache行号分别为多少(cache从0行开始)?

      (3)程序A和B的数据访问命中率各自为多少?哪个程序的执行时间更短?

解:(1) 因为cache的总容量是cache每行的数据存储大小+tag位+数据是否有效位+其他一致性控制位。

          主存地址空间256MB,占28位。直接映射方式,8行,行号占3位。每行64B,所以块内地址占6位,因此,tag占28-3-6=19位

          每行有一个数据有效位。因此,cache共(19+1+648)8 = 532字节

      (2) 因为int类型占32位,所以一个int占4B。a[0][31] = 320 + 314 = 444 a1 = 320 + 4(256+1) = 1348。

          块内地址占6位,直接映射下行号占3位,因此444 = 110 | 111100,所以行号为6

          1348 = 10 | 101 | 000100,所以行号为5

      (3) 因为1行cache占64B,每个int数占4B,所以一行有16个数。第一个数会因cache缺失而不命中,然后调入cache。,使得后面的15个int访问全部命中。所以命中率为1516 对于程序B,每次调入16个数,小于数组每行的128个元素,因此每次都不会命中,命中率为0

❸ 叙述缺页中断的处理步骤 以及和一般中断的区别

一般中断只需要保护现场然后就直接跳到需及时处理的地方。
缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。故缺页中断除了保护现场之外,还要判断内存中是否有足够的空间存储所需的页或段,然后再把所需页调进来再使用。

❹ 缺页中断

malloc()和mmap()等内存分配函数,在分配时 只是建立了进程虚拟地址空间,并没有分配虚拟内存对应的物理内存。 当进程访问这些没有建立映射关系的虚拟内存时,处理器自动触发一个缺页异常。

缺页中断:在请求分页系统中,可以通过查询页表中的状态位来确定所要访问的页面是否存在于内存中。每当 所要访问的页面不在内存时 ,会产生一次缺页中断,此时操作系统会根据页表中的外存地址在外存中找到所缺的一页,将其调入内存。

缺页本身是一种中断,与一般的中断一样,需要经过4个处理步骤:

1、保护CPU现场

2、分析中断原因

3、转入缺页中断处理程序进行处理

4、恢复CPU现场,继续执行

但是缺页中断是由于所要访问的页面不存在于内存时,由硬件所产生的一种特殊的中断,因此,与一般的中断存在区别:

1、在指令执行期间产生和处理缺页中断信号

2、一条指令在执行期间,可能产生多次缺页中断

3、缺页中断返回是,执行产生中断的一条指令,而一般的中断返回是,执行下一条指令。

当访问一个内存中不存在的页,并且内存已满 ,则需要从内存中调出一个页或将数据送至磁盘对换区,替换一个页,这种现象叫做缺页置换。当前操作系统最常采用的缺页置换算法如下:

当前最常采用的就是LRU算法。

do_page_fault是缺页中断的核心函数,主要工作交给__do_page_fault处理,然后进行一些异常处理__do_kernel_fault和__do_user_fault。
__do_page_fault查找合适的vma,然后主要工作交给handle_mm_fault;handle_mm_fault的核心又是handle_pte_fault。

handle_pte_fault中根据也是否存在分为两类:do_fault( 文件映射缺页中断 )、do_anonymous_page( 匿名页面缺页中断 )、do_swap_page()和do_wp_page( 写时复制 )。

❺ 一个计算机操作系统题 有关页面置换算法和缺页中断的 知道答案但有一句不太明白

100字=2^2 就代表页内地址是后2位 字地址3位 那么页号就是剩下的1位 我是这么理解的 和逻辑地址转化物理地址的页号计算一样

❻ 在页式存储管理系统中,当访问主存中的一条指令或数据时,需要访问多少次主存段式存储呢

1)页式存储管理中,访问指令或数据时,首先要访问内存中的页表,查找到指令或数据所在页面对应的页表项,然后再根据页表项查找访问指令或数据所在的内存页面。需要访问内存两次。
段式存储管理同理,需要访问内存两次。
段页式存储管理,首先要访问内存中的段表,然后再访问内存中的页表,最后访问指令或数据所在的内存页面。需要访问内存三次。
对于比较复杂的情况,如多级页表,若页表划分为N级,则需要访问内存N+1次。若系统中有快表,则在快表命中时,只需要一次访问内存即可。

❼ 什么是缺页中断

缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。 缺页率:在进行内存访问时,若所访问的页已在主存,则称此次访问成功;若所访问的页不在主存,则称此次访问失败,并产生缺页中断。若程序P在运行过程中访问页面的总次数为S,其中产生缺页中断的访问次数为F,则其缺页率为:F/s. 解:根据所给页面走向,采用FIFO淘汰算法的页面置换情况如下:这里的页面走向,即为系统要调用的页号。 页面走向 1 2 1 3 1 2 4 2 1 3 4 物理块1 1 1 3 3 2 2 1 1 4 物理块2 2 2 1 1 4 4 3 3 缺页 缺 缺 缺 缺 缺缺 缺 缺 缺 从上述页面置换图可以看出:页面引用次数为11次,缺页次数为9次,所以缺页率为9/11。 若采用后一种页面淘汰策略,其页面置换情况如下: 页面走向 1 2 1 3 1 2 4 2 1 3 4 物理块1 1 1 3 1 1 1 3 4 物理块2 2 2 2 4 2 2 2 缺页: 缺 缺 缺 缺缺 缺缺 缺 从上述页面置换图可以看出:页面引用次数为11次,缺页次数为8次,所以缺页率为8/11。

❽ 缺页是什么什么是缺页中断

缺页指的是当软件试图访问已映射在虚拟地址空间中,但是并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断。

缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。在这个时候,被内存映射的文件实际上成了一个分页交换文件。

(8)缺页中断需要访问几次主存扩展阅读:

通常情况下,用于处理此中断的程序是操作系统的一部分。如果操作系统判断此次访问是有效的,那么操作系统会尝试将相关的分页从硬盘上的虚拟内存文件中调入内存。而如果访问是不被允许的,那么操作系统通常会结束相关的进程。

虽然其名为“页缺失”错误,但实际上这并不一定是一种错误。而且这一机制对于利用虚拟内存来增加程序可用内存空间的操作系统(比如Microsoft Windows和各种类Unix系统)中都是常见且有必要的。

微软在较新版Windows的资源监视器中使用“硬错误”(Windows Vista及以上)、“硬中断”(Windows 8及以上)这一术语来指代“页缺失”。

❾ 怎么用LRU和FIFO算法计算“缺页中断”

四块主存空间 FIFO:先入先出,应用队列概念
装入0 1 2 3
之后的2132四个序列无需出入队。

执行到5
0出队,5入队:1235
执行到6
1出队,6入队:2356
执行到1
2出队,1入队:3561

执行到4
3出队,4入队:5614
执行到最后的2
5出队,2入队:6142

两块主存空间的 LRU:
0.装入0
1.装入1
2.0出2入 12

3.1出3入 23
2.使用2 32

1.3出1入 21(2最近被使用过)
3.2出3入 13
2.1出2入 32

5.3出5入 25

2.使用2 52
3.5出3入 23

6.2出6入 36

2.3出2入 62

1.6出1入 21

4.2出4入 14

2.1出2入 42
到此结束
最右边的序号是当前作业标号
然后是执行的换页操作
最后2位是当前内存中的作业标号,其中靠左边的是下一次要被换出去的。