中断、异常、内存碎片以及减少碎片的方法

  在操作系统中引入核心态和用户态这两种工作状态后,就需要考虑这两种状态之间如何切换,操作系统内核工作在核心态,而用户程序工作在用户态,但系统不允许用户程序实现核心态的功能,而他们又必须使用这些功能,因此,需要在核心态建立一些"门",实现从用户态进入核心态,CPU运行上层程序时唯一能进入这些门的途径就是中断或异常

  • 当中断或异常发生时,运行用户态的CPU会立即进入核心态(用一个寄存器的以为表示CPU所处的工作状态,0表示核心态,1表示用户态)若要进入核心态,就将该位置0
    中断
    也称外中断,指来自CPU执行指令以外的时间的发生,设备发出的IO结束中断,表示设备输入输出处理已经完成,希望处理机能够像设备发下一个输入输出请求,同时让完成输入输出的程序继续运行
    时钟中断,表示一个固定的时间片已到,让处理机处理计时,启动定时运行任务等
    这一类中断通常是与当前程序运行无关的事件

异常
内中断,指源自CPU执行指令内部的事件
程序的非法操作码,地址越界,算术溢出,虚存系统的缺页以及专门的陷入指令等引起的
对异常的处理一般要依赖于当前程序的运行现场,而且异常不能被屏蔽,一旦出现应立即处理。
缺页中断
要访问的业不在主存,需要操作系统将其调入主存后在进行访问

当一个进程发生缺页中断的时候,进程就会陷入内核态,执行下列操作:
1 检查要访问的虚拟地址是否合法
2 查找 分配一个物理页
3 填充物理页内容 读取磁盘majflt 或者直接置0 啥也不干 ( minflt)
4 建立映射关系
重新执行发生缺页中断的那条指令

内存碎片
内部碎片是由于采用固定大小的内存分区,当一个进程不能完全使用分给他的固定内存区域时就产生了内部碎片,通常内部碎片难以完全避免
外部碎片是由于某些未分配的连续内存区域太小,以至于不能满足任意进程的内存分配请求,从而不能被进程利用的内存区域
减少碎片内存的方法
  现在普遍采用的段页式内存分配方式就是将进程的内存区域分成不同的段,然后将每一段由多个固定大小的页组成,通过页表机制,使段内的页可以不必处于连续同一内存区域,从而减少了外部碎片。

.

你可能感兴趣的:(中断、异常、内存碎片以及减少碎片的方法)