Linux 2.6 内核阅读笔记 中断和异常

2014年7月24日 中断门、陷阱门及中断门

中断是可以禁止的,可以通过告诉PIC停止对某个中断的发布。被禁止的中断是不会丢失的,在解除禁止后又会发送到CPU上。

禁止中断和屏蔽(mask)中断的不同之处是屏蔽是忽略掉某个中断,而禁止相当于延迟发送。

Intel提供了三种类型的中断描述符:任务门、中断门及陷阱门描述。linux使用与inten稍有不同的细分分类和术语,把他们进行如下分类:

中断门:用户态进程不能访问的一个intel中断门(DPL为0),所有的linux中断处理程序都通过中断门在内核态进行调用。

系统门:用户态进程可以访问的一个intel陷阱门(DPL为3),通过系统门来访问三个linux异常处理程序,在用户态下可以通过三个汇编指令来访问:into,bound,int $0x80。

系统中断门:用户态进程主要通过这个门来使用系统调用(DPL为3),通过int $3汇编指令来进入。

陷阱门:用户态进程不能访问的intel陷阱门(DPL为0),大部分linux异常处理程序通过这个门进入。

任务门:用户态进程不能访问的intel任务门(DPL为0),“Double Fault”(通常表示内后有严重的错误)异常使用通过这个门进入的。

Linux 2.6 内核阅读笔记 中断和异常,布布扣,bubuko.com

时间: 2024-12-21 12:54:55

Linux 2.6 内核阅读笔记 中断和异常的相关文章

Linux 2.6 内核阅读笔记 信号

2014年8月3日 信号处理程序调用过程 当一个进程接收到一个信号时,需要暂停进程执行转去执行专门的信号处理函数(如果定义了这个信号的专门处理函数的话),然后再继续执行进程代码. 所有的信号处理都是通过内核函数do_signal进行的,do_signal如果发现需要处理的信号,并且这个信号有专门的处理函数,就需要调用这个用户态的函数,这是通过handle_signal来处理的.执行信号处理函数是非常复杂的任务,因为在用户态和内核态来回切换需要特别谨慎地处理栈里的内容,在当前进程恢复"正常&quo

Linux 2.6 内核阅读笔记 内存管理

2014年7月29日 buddy分配算法 内核需要为分配一组连续的页框提供一种健壮.高效的分配策略.分配连续的页框必须解决内存管理中的外碎片(external fragmentation).频繁的请求和释放不同大小的一组连续页框,必然导致分配页框的块分算来许多小块的空闲页框无法被一次性大量分配使用. linux内核采用著名的伙伴系统算法来解决外碎片问题.该算法的核心思想是把所有的空闲页框分成11个链块表.每个链块表的大小分别为1,2,4,8,16,32,64,128,256,512和1024个连

Linux 2.6 内核阅读笔记 内核同步

2014年7月26日 内核抢占和内核控制路径的设计 内核抢占的一种定义:如果进程正在内核态执行内核函数时,允许发生内核切换(就是被替换的进程是内核函数所在进程),这个内核就是抢占的. linux内核提供了内核抢占的开启和关闭功能,在current_thread_info的preempt_count字段大于0时,内核就是不能抢占的.可以通过preempt_disable和preempt_enable来增加这个字段来控制这个开关. 中断和软中断和抢占的控制主要使用到current_thread_in

Linux概念与体系阅读笔记

[Linux概念与体系教程http://www.cnblogs.com/vamei/archive/2012/10/10/2718229.html] 1.Linux开机启动(bootstrap) 启动顺序:BIOS -> MBR -> boot loader -> kernel -> init process -> login BIOS:Basic Input/Output System MBR :Master Boot Record 2.Linux文件管理 (1)文件附件信

《Linux权威指南》阅读笔记(4)

第十五章  TCP/IP和PPP <DNS与BIND>,见转帖的读书笔记. TCP和UDP数据单位被称为分组包(packet),包头中指定了目的和源端口地址. 互联网协议(IP)在协议层次中位于TCP和UDP下面,将TCP和UDP分组包封装在另一个分组包中(被称为IP报文),

《Linux权威指南》阅读笔记(3)

第十三章 程序设计语言 Linux共享函数库使用一种叫跳跃表格(jump table)的数据结构 gcc -o 执行链接,指定文件名,-c不执行链接,-O优化,-g调试信息放入目标文件, 建立和使用静态函数库的方法: 先gcc -c将含目标函数源码(多个文件也可以)编译为.o文件,然后用ar程序 ar -r 建立.a静态库, 然后用ranlib命令产生索引,然后为该函数库建立头文件 gcc  -I../include -L../lib  -o  wibble  wibble.c  -lstuff

Linux kernel源码阅读笔记2-2.6版本调度器sched.c功能

来自:http://www.ibm.com/developerworks/cn/linux/l-scheduler/ 2.6 版本调度器的源代码都很好地封装到了 /usr/src/linux/kernel/sched.c 文件中.我们在表 1 中对在这个文件中可以找到的一些有用的函数进行了总结. 表 1. Linux 2.6 调度器的功能 函数名 函数说明 schedule 调度器主函数.调度优先级最高的任务执行. load_balance 检查 CPU,查看是否存在不均衡的情况,如果不均衡,就

中断和异常的处理

本文为<x86汇编语言:从实模式到保护模式> 第17章笔记 中断和异常 中断和异常概述 中断和异常的作用是指示系统中的某个地方发生一些事件, 需要引起处理器(包括正在执行中的程序和任务)的注意. 当中断和异常发生时, 典型的结果是迫使处理器将控制从当前正在执行的程序或任务转移到另一个历程或任务中去. 该例程叫做中断处理程序, 或者异常处理程序. 如果是一个任务, 则发生任务切换. 1. 中断(Interrupt) 中断包括硬件中断和软中断. 硬件中断是由外围硬件设备发出的中断信号引发的, 以请

《Linux内核设计与实现》学习笔记——中断、中断处理程序

中断和中断处理程序 中断随时可能产生,打断CPU的执行,CPU转而处理中断. 不同的设备对应的中断不同,每个中断都通过一个唯一的数字标志. 这些中断值称为中断请求(IRQ)线,每个irq线关联一个数值. 中断处理程序 响应中断时,内核会执行一个函数,中断处理程序/中断服务例程ISR, 一个设备的中断处理程序是他的设备驱动的一部分. IO资源包括 : 中断,I/O端口,共享RAM,DMA.驱动程序需要管理注册释放这些资源. 上半部:接收到中断就立即执行,只做有严格时限的工作,如对中断应答或复位硬件