缺页中断:
malloc()等内存分配函数,分配时只是建立了进程的虚拟地址空间,并没有分配对应的物理内存(没有建立虚拟内存与物理内存的映射关系)。
当进程访问这些没有建立映射关系的虚拟内存时,处理器会触发缺页异常。
在请求分页系统中,通过查询页表中的状态位可以确定要访问的页是否在内存中。每当要访问的页不在内存中时,就会引发缺页中断,此时操作系统会根据页表的外存地址到外存中找到所缺的页调入内存。
与一般中断的异同:
缺页中断与一般中断一样都需要经过4个处理步骤:
1.保护CPU现场
2.分析中断原因
3.转入缺页中断处理程序
4.恢复CPU现场, 继续执行
但缺页中断是由于访问页面不在内存时,由硬件产生的特殊中断,与一般中断存在区别:
1.在指令执行区间产生和处理缺页中断信号
2.一条指令执行期间可能产生多次缺页中断
3.缺页中断返回后执行产生中断的指令,一般中断返回后执行下一条指令。