精华内容
下载资源
问答
  • 详解缺页中断-----缺页中断处理(内核、用户)

    万次阅读 多人点赞 2018-08-06 18:21:42
    一、什么缺页中断? 进程线性地址空间里的页面不必常驻内存,在执行一条指令时,如果发现他要访问的页没有在内存中(即存在位为0),那么停止该指令的执行,并产生一个页不存在的异常,对应的故障处理程序可通过...

    一、什么是缺页中断?

    进程线性地址空间里的页面不必常驻内存,在执行一条指令时,如果发现他要访问的页没有在内存中(即存在位为0),那么停止该指令的执行,并产生一个页不存在的异常,对应的故障处理程序可通过从外存加载该页的方法来排除故障,之后,原先引起的异常的指令就可以继续执行,而不再产生异常。

    二、页面调度算法

    将新页面调入内存时,如果内存中所有的物理页都已经分配出去,就按照某种策略来废弃整个页面,将其所占据的物理页释放出来;

    三、查看进程发生缺页中断的次数

    ps -o majflt,minflt -C program查看

    majflt和minflt表示一个进程自启动以来所发生的缺页中断的次数;

    四、产生缺页中断的几种情况

    1、当内存管理单元(MMU)中确实没有创建虚拟物理页映射关系,并且在该虚拟地址之后再没有当前进程的线性区(vma)的时候,可以肯定这是一个编码错误,这将杀掉该进程;

    2、当MMU中确实没有创建虚拟页物理页映射关系,并且在该虚拟地址之后存在当前进程的线性区vma的时候,这很可能是缺页中断,并且可能是栈溢出导致的缺页中断;

    3、当使用malloc/mmap等希望访问物理空间的库函数/系统调用后,由于linux并未真正给新创建的vma映射物理页,此时若先进行写操作,将和2产生缺页中断的情况一样;若先进行读操作虽然也会产生缺页异常,将被映射给默认的零页,等再进行写操作时,仍会产生缺页中断,这次必须分配1物理页了,进入写时复制的流程;

    4、当使用fork等系统调用创建子进程时,子进程不论有无自己的vma,它的vma都有对于物理页的映射,但它们共同映射的这些物理页属性为只读,即linux并未给子进程真正分配物理页,当父子进程任何一方要写相应物理页时,导致缺页中断的写时复制;

    五、缺页中断的处理

    缺页中断处理函数为arch/arm/mm/fault.c文件中的do_page_fault函数

    1、当前执行流程在内核态时

    (1)通过mm是否存在判断是否是内核线程,对于内核线程,进程描述符的mm总为NULL,一旦成立,说明是在内核态中发生的异常,跳到no_context

                         if (in_atomic() || !mm)

                                   goto no_context;

    如果当前执行流程在内核态,不论是在临界区还是内核进程本身(内核的mm为NULL),说明在内核态出了问题,跳到标号no_context进入内核态异常处理,由函数_do_kernel_fault完成;

    (2)

     

    这个函数首先尽可能的设法解决这个异常,通过查找异常表中和目前的异常对应的解决办法并调用执行;如果无法通过异常表解决,那么内核就要在打印其页表等内容后退出;

     

    (2)用户进程的缺页中断

    对于用户空间的缺页中断,则会调用函数_do_page_fault.

    首先从CPU的控制寄存器CR2中读出出错的地址address,然后调用find_vma(),在进程的虚拟地址空间中找出结束地址大于address的第一个区间,如果找不到的话,则说明中断是由地址越界引起的,转到bad_area执行相关错误处理;

    确定并非地址越界后,控制转向标号good_area。在这里,代码首先对页面进行例行权限检查,比如当前的操作是否违反该页面的Read,Write,Exec权限等。如果通过检查,则进入虚拟管理例程handle_mm_fault().否则,将与地址越界一样,转到bad_area继续处理。

    handle_mm_fault()用于实现页面分配与交换,它分为两个步骤:首先,如果页表不存在或被交换出,则要首先分配页面给页表;然后才真正实施页面的分配,并在页表上做记录。具体如何分配这个页框是通过调用handle_pte_fault()完成的。

    handle_pte_fault()函数根据页表项pte所描述的物理页框是否在物理内存中,分为两大类:

    (1)请求调页:被访问的页框不在主存中,那么此时必须分配一个页框,分为线性映射、非线性映射、swap情况下映射

    (2)写实复制:被访问的页存在,但是该页是只读的,内核需要对该页进行写操作,此时内核将这个已存在的只读页中的数据复制到一个新的页框中

    handle_pte_fault()调用pte_non()检查表项是否为空,即全为0;如果为空就说明映射尚未建立,此时调用do_no_page()来建立内存页面与交换文件的映射;反之,如果表项非空,说明页面已经映射,只要调用do_swap_page()将其换入内存即可;

    参考博客:https://blog.csdn.net/u010246947/article/details/10431149

                        http://www.360doc.com/content/11/0721/17/6580811_135034260.shtml

    展开全文
  • $多系汕乂琴实验报告 课程名称 操作系统原理 实验名称 虚拟页式管理 姓 名 学号 ...并用 先进先出调度算法FIFO处理缺页中断 1内容模拟请求页式存储管理中硬件的地址转换和缺页中断处理 2.思想 装入新页置换旧页时若旧页
  • 缺页中断与一般中断的主要区别

    千次阅读 2019-11-10 15:09:43
    缺页中断是一种特殊的中断,它与一般的中断的区别是: (1)在指令执行期间产生和处理中断信号,CPU通常在一条指令执行完后检查是否有中断请求,而缺页中断是在指令执行时间,发现所要访问的指令或数据不在内存时...

    缺页中断是一种特殊的中断,它与一般的中断的区别是:

    (1)在指令执行期间产生和处理中断信号,CPU通常在一条指令执行完后检查是否有中断请求,而缺页中断是在指令执行时间,发现所要访问的指令或数据不在内存时产生和处理的。

    (2)一条指令在执行期间可能产生多次缺页中断。如一条读取数据的多字节指令,指令本身跨越两个页面,若指令后一部分所在页面和数据所在页面均不在内存,则该指令的执行至少产生两次缺页中断。

    展开全文
  • 缺页中断

    千次阅读 2020-04-19 22:29:12
    题 采用FIFO替换算法,求缺页率: 采用LRU替换算法,求缺页率;...缺页率=缺页次数/总数 知道这些以后,我们可以画一个表格 0 1 4 2 0 2 6 5 1 2 3 2 1 2 6 2 1 3 6 2 0 0 0 1 4 2 0 6 5 1 2 3 ...

    在这里插入图片描述

    1. 采用FIFO替换算法,求缺页率:
    2. 采用LRU替换算法,求缺页率;

    我们要解这道题首先得知道FIFO、LRU算法以及缺页率

    1. FIFO:先进先出
    2. LRU:最近最久未使用
    3. 缺页率=缺页次数/总数

    知道这些以后,我们可以画一个表格

    01420265123212621362
    0001420651236
    114206512361
    42065123612
    xxxxxxxxxxxxx

    x:代表发生缺页中断的

    我们使用的使FIFO(先进先出)算法,可以看到0先进来它就先出去出去之后2在进来1再出去…依次类推我们可以得到发生缺页中断的有13

    所以我们用 13/20=0.65 则我们缺页中断率为0.65

    第二问使用同样的方法

    01420265123212621362
    00022221133322
    1110055551113
    444666222666
    xxxxxxxxxxxxxx

    这次我们使用的是LRU(最近最久未使用)算法可以看到0就久没有使用2就替补了他的位置然后是1…依次类推我们可以得到发生缺页中断的有14个

    所以我们用 14/20=0.7 则我们缺页中断率为0.7

    缺页中断

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

    系统可调度的限制条件计算公式

    求和1~m(处理时间/周期时间)<=1 m为周期个数

    展开全文
  • 1. 缺页中断 2. 缺页中断的断点 缺页中断是指令执行过程中产生的中断,而非(一般的中断)在一条指令执行完成后产生的。 3. 缺页中断的断点压入 当CPU执行指令希望访问一个不在内存的页面时,将产生缺页中断,系统...

    1. 缺页中断

    在这里插入图片描述

    2. 缺页中断的断点

    在这里插入图片描述
    缺页中断是指令执行过程中产生的中断,而非(一般的中断)在一条指令执行完成后产生的。

    3. 缺页中断的断点压入

    • 当CPU执行指令希望访问一个不在内存的页面时,将产生缺页中断,系统开始运行中断处理程序。
    • 此时指令计数器(PC) 的值尚未来得及增加就被压入堆栈,因此压入的断点必然是本次被中断的指令地址,而非下一条指令的地址。

    4. 缺页中断处理过程

    (1) 保留进程上下文
    (2)判断内存是否有空闲可用帧?若有,则获取一个帧号No,转(4) 启动I/O过程。若无,继续(3)
    (3)腾出一个空闲帧,即:
    (3)-1调用置换算法,选择一个淘汰页PTj。
    (3)-2 PTj(S)=0 ; //驻留位置0
    (3)-3 No= PTj (F); //取该页帧号
    (3)-4 若该页曾修改过,则
    (3)-4-1 请求外存交换区上一个空闲块B ;
    (3)-4-2 PTj(D)=B ;//记录外存地址
    (3)-4-3启动I/O管理程序,将该页写到外存上。
    (4)按页表中提供的缺页外存位置,启动I/O,将缺页装入空闲帧No中。
    (5)修改页表中该页的驻留位和内存地址。PTi(S)=1 ; PTi(F) =No。
    (6)结束。

    5.包含缺页中断的地址重定位

    在这里插入图片描述

    展开全文
  • Linux缺页中断处理

    2021-05-17 19:27:23
    Linux缺页中断处理在i386 CPU将一个线性地址映射为物理地址的过程中,如果该地址的映射已经建立,但是发现相应的页面表项或目录项中的P(Present)标志为0,则表明相应的物理页面不在内存.此时,CPU将错误的请求地址放在...
  • 缺页中断与缺页异常

    千次阅读 2020-07-04 21:40:57
    在请求分页的过程中,如果访问的页面不再内存中,会产生一次缺页中断,在外存中找到所缺的一页将其调入内存。 步骤: 保护cpu现场 分析中断原因 转入缺页中断处理函数 恢复cpu现场,继续执行 LRU算法 最近最久未使用...
  • 缺页中断算法

    2021-11-21 13:36:43
    缺页中断 在请求分页系统中,可以通过查询页表中的状态位来确定所要访问的页面是否存在于内存中。每当所要访问的页面不在内存时,会产生一次缺页中断,此时操作系统会根据页表中的外存地址在外存中找到所缺的一页,...
  • 操作系统页式虚拟存储管理中地址转换和缺页中断55 解析
  • 缺页中断&页缺失

    2021-07-23 15:45:49
    缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。在这个时候,被内存映射的文件实际上成了一个分页交换文件。 页缺失 页缺失(缺页中断)指的是当软件试图访问已映射在虚拟地址空间中,...
  • Linux虚拟内存和缺页中断

    千次阅读 多人点赞 2020-08-02 21:46:06
    因此,与一般的中断存在区别: 1、在指令执行期间产生和处理缺页中断信号 2、一条指令在执行期间,可能产生多次缺页中断 3、缺页中断返回是,执行产生中断的一条指令,而一般的中断返回是,执行下一条指令。
  • 学习笔记 | 操作系统中的缺页中断

    千次阅读 2020-06-28 12:07:27
    操作系统中的缺页中断 malloc()和mmap()等内存分配函数,在分配时只是建立了进程虚拟地址空间,并没有分配虚拟内存对应的物理内存。当进程访问这些没有建立映射关系的虚拟内存时,处理器自动触发一个缺页异常。 ...
  • 缺页中断的定义

    2021-05-30 19:36:34
    是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。 ...
  • 缺页中断的次数

    2021-05-30 19:37:05
    中断次数=进程的物理块数+页面置换次数。
  • 请求页式管理缺页中断模拟设计FIFO,OPT.而我选择的是FIFO,OPT调度算法。主要考虑三种情况:1.不缺页,此时我不需要从外存中调入新的页面进入内存;2.缺页,但是内存空间块数没有满,不需要淘汰内存中的页面,把缺页...
  • 缺页中断和一般中断的区别

    千次阅读 2020-07-18 14:41:27
    缺页中断和一般中断的区别 1.在指令的执行期间产生和处理缺页中断。通常,CPU是在指令执行完毕后检查是否有中断请求到达,若有,便响应。而缺页中断是在一条指令的执行期间发现要访问的指令和数据不在内存时产生和...
  • 操作系统之缺页中断

    千次阅读 2018-10-03 18:28:47
    用最近最少用(LRU)页面调度算法处理缺页中断 1.实验目的 加深对于存储管理的了解,掌握虚拟存储器的实验原理;观察和了解重要的页面置换算法的置换过程. 2.实验原理及相关提示 在分页式虚拟存储系统中,当硬件发出...
  • 模拟分页式存储管理中硬件的地址转换和产生缺页中断.------很好用的程序和源代码
  • 什么会产生页面中断呢?因为指令和数据事先并没有在内存中,所以要调入内存,才能被CPU读取、执行。 答: 1、应该访问 4 * 3 = 12 次内存。 2、产生5次页面中断。 2021.02.24 按字节编址,意味着一个地址存放8bit...
  • 实现功能: 1、模拟分页式存储管理中硬件的士转换和产生缺页中断 2、用先进先出(FIFO)页面调度算法处理缺页中断 3、用最近最少用(LRU)页面调度算法处理缺页中断
  • 请你说一说操作系统中的缺页中断

    千次阅读 2019-06-25 20:13:35
    参考回答: malloc()和mmap()等内存分配函数,在分配时只是建立了进程虚拟地址空间, 并没有分配虚拟内存对应的物理内存。当进程访问这些没有建立映射...缺页中断,此时操作系统会根据页表中的外存地址在外存中找到...
  • 缺页中断的分类

    2021-05-29 19:00:24
    软性 硬性 无效
  • malloc()和mmap()等内存分配函数,在分配时只是建立了进程虚拟地址空间,并没有分配...每当所要访问的页面不在内存是,会产生一次缺页中断,此时操作系统会根据页表中的外存地址在外存中找到所缺的一页,将其调入内...
  • 操作系统 缺页中断

    2013-05-17 23:39:01
    操作系统 缺页中断 含代码(请求页式管理缺页中断模拟设计--FIFO、OPT)
  • 计算机操作系统–缺页中断与越界中断 缺页中断 通俗点讲就是在利用逻辑地址计算物理地址时,在得出的页号合法,却不在页表内时,由操作系统引发的中断 越界中断 和缺页中断类似,在判断合法时,若为非法,则发生越界...
  • 虚拟内存缺页中断

    千次阅读 2017-07-17 23:27:41
    虚拟内存缺页中断在做了09年408的一道关于求虚存访存时间的os题,发现了一些问题:跟书上讲的流程不太一样。具体在,缺页中断流程和求EAT的部分。思考后,发现课本上的地址转换有点问题。
  • 缺页中断和缺页异常

    千次阅读 2018-02-02 12:33:00
    缺页异常 会出现缺页异常的情况: 线性地址不在虚拟地址空间中 线性地址在虚拟地址空间中,但没有访问权限 接上一条,没有与物理地址建立映射关系 fork等系统调用时并没有映射物理页,写数据->缺页...
  • 页表的创建 kmalloc内存使用了...例如 用户态通过brk申请了一块内存,后续访问这块内存的0x00007F88F16A4690这块地址会发生什么? 首先,X64内核是4级页表,根据X64对线性地址的划分,可以计算出0x00007F88F16...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,321
精华内容 7,728
关键字:

缺页中断属于什么中断

友情链接: analog-devices.zip