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”(通常表示内后有严重的错误)异常使用通过这个门进入的。

2014年7月25日 中断处理

中断处理程序能够共享同一条IRQ线,每个从这条线来的中断。内核会调用每个注冊这条线上的全部的IRQ线,由中断处理程序推断是否是自己期望的设备的中断并处理这个中断。

在SMP架构上。中断的分发能够有两种方式:

静态分发:把中断信号传递给重定向表对应项所列出的本地APIC。中断马上传递给一个特定的cpu,或一组cpu或全部cpu。

动态分发:选择一个正在执行进程优先级最低的cpu。

每一个cpu的本地APIC里都有一个仲裁优先级寄存器。假设同一时候存在两个以上同样优先级的cpu,内核通过仲裁(arbitration)技术来分发中断给某个CPU来添加公平性和负载均衡,每其中断传递给一个cpu时,其对应的仲裁优先级自己主动置为0,其它每一个cpu都优先级都添加1。当仲裁优先级寄存器大于15时,就把它置为获胜cpu前一个仲裁优先级加1。

2014年7月26日 工作队列

在linux2.6的内核中引入了工作队列,用来取代2.4的任务队列,工作队列和中断的可延迟函数类似,都仅仅能执行在内核态而且不能訪问用户态地址空间。主要不同在于可延迟函数执行在中断上下文中。工作对列则是执行在进策划那个上下文中(确切的说应该是内核线程的上下文)。工作队列通过内核线程(kthread)和等待队列(wait_queue)来实现。

因为工作队列的手动创建开销比較大,内核引入了叫做events的内核提前定义工作队列,事实上就是一个包包含不同内核层函数和i/o驱动程序的标准工作队列和进行了一些简单封装,并提供了一些wapper函数(schedule_work,schedule_delayed_work,schedule_delayed_work_on,flush_scheduled_work)来方便高速使用工作队列。

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

  1. linux内核分析笔记----中断和中断处理程序【转】

    转自:http://www.cnblogs.com/hanyan225/archive/2011/07/17/2108609.html 中断还是中断,我讲了很多次的中断了,今天还是要讲中断,为啥呢?因 ...

  2. linux内核分析笔记----中断和中断处理程序

    中断还是中断,我讲了很多次的中断了,今天还是要讲中断,为啥呢?因为在操作系统中,中断是必须要讲的.. 那么什么叫中断呢, 中断还是打断,这样一说你就不明白了.唉,中断还真是有点像打断.我们知道linu ...

  3. LINUX0.11 内核阅读笔记

    一.源码目录 图1 二.系统总体流程: 系统从boot开始动作,把内核从启动盘装到正确的位置,进行一些基本的初始化,如检测内存,保护模式相关,建立页目录和内存页表,GDT表,IDT表.然后进入main ...

  4. linux中断与异常

    看了<深入理解linux内核>的中断与异常,简单总结了下,如果有错误,望指正! 一 什么是中断和异常 异常又叫同步中断,是当指令执行时由cpu控制单元产生的,之所以称之为异常,是因为只有在 ...

  5. 《Tsinghua os mooc》第1~4讲 启动、中断、异常和系统调用

    资源 OS2018Spring课程资料首页 uCore OS在线实验指导书 ucore实验基准源代码 MOOC OS习题集 OS课堂练习 Piazza问答平台 暂时无法注册 疑问 为什么用户态和内核态 ...

  6. 《深入理解Linux内核》阅读笔记 --- 第四章 中断和异常

    1.中断的作用:中断信号提供了一种方式,使处理器转而去运行正常控制流之外的代码.当一个中断信号到达时,CPU必须停止它当前所做的事,并切换到一个新的活动.为了做到这一点,就要在内核态堆栈保存程序计数器 ...

  7. [置顶] Linux协议栈代码阅读笔记(一)

    Linux协议栈代码阅读笔记(一) (基于linux-2.6.21.7) (一)用户态通过诸如下面的C库函数访问协议栈服务 int socket(int domain, int type, int p ...

  8. Linux 0.11源码阅读笔记-中断过程

    Linux 0.11源码阅读笔记-中断过程 是什么中断 中断发生时,计算机会停止当前运行的程序,转而执行中断处理程序,然后再返回原被中断的程序继续运行.中断包括硬件中断和软件中断,硬中断是由外设自动产 ...

  9. Linux 0.11源码阅读笔记-总览

    Linux 0.11源码阅读笔记-总览 阅读源码的目的 加深对Linux操作系统的了解,了解Linux操作系统基本架构,熟悉进程管理.内存管理等主要模块知识. 通过阅读教复杂的代码,锻炼自己复杂项目代 ...

随机推荐

  1. C++成员函数的存储方式

    用类去定义对象时,系统会为每一个对象分配存储空间.如果一个类包括了数据和函数,要分别为数据和函数的代码分配存储空间. 按理说,如果用同一个类定义了10个对象,那么就需要分别为10个对象的数据和函数代码 ...

  2. 浅谈HTTP中Get与Post的区别_转

    可参考:HTTP请求中POST与GET的区别 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个UR ...

  3. PHP+jquery+ajax实现分页

    HTML <div id="list"> <ul></ul> </div> <div id="pagecount&q ...

  4. 关于Unity5.5中2D动画的制作

    1.首先要创建一个精灵 GameProject--2Dproject--Sprite 叫bird 2.给这个精灵附加纹理,并让它显示自己想让它显示的场景层中,一般它的静止纹理就是动画的第一张图片 3. ...

  5. ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...

  6. 【BZOJ】1697: [Usaco2007 Feb]Cow Sorting牛排序(置换群)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1697 置换群T_T_T_T_T_T_T 很久以前在黑书和白书都看过,,,但是看不懂... 然后找了本 ...

  7. iframe超时处理。。。。

    function iframeTimeOut(url, timeOut_callback, width, height) { /// <summary> /// iframe超时处理 // ...

  8. bootstrap基础学习八篇

    bootstrap辅助类 a.对于文本颜色 以下不同的类展示了不同的文本颜色.如果文本是个链接鼠标移动到文本上会变暗: 类 描述 .text-muted "text-muted" ...

  9. 多线程编程(三)--创建线程之Thread VS Runnable

    前面写过一篇基础的创建多线程的博文: 那么本篇博文主要来对照一下这两种创建线程的差别. 继承Thread类: 还拿上篇博客的样例来说: 四个线程各自卖各自的票,说明四个线程之间没有共享,是独立的线程. ...

  10. 探索PowerShell----函数

    http://marui.blog.51cto.com/1034148/294775/