易截截图软件、单文件、免安装、纯绿色、仅160KB

linux 2.6源代码情景分析笔记之中断与异常2

高级可编程控制器
如果系统只有一个cpu,主pic输出线以直截了当的方式连接到cpu的intr引脚。如果系统中包含两个或多个cpu,就需要更加复杂的pic.
intel从p3开始引入i/o高级可变成控制器(APIC)组件。80x86微处理器当前所有的cpu都含有一个本地apic。每个本地apic都有32位寄存器,一个内部时钟,一个本地定是设备以及为本地apic中断保留的两条额外的irq线lint0和lint1。所有本地apic都连接到一个外部i/o apic,形成一个多apic系统。
i/o apic的组成:一组24条irq线,一张24项的中断定向表(interrupt redirection table),可编程寄存器,以及通过apic总线发送和接收apic信息的一个信息单元,中断优先级并不与引脚号相关联:中断重定向表中的每一项都可以被单独变成以指明中断向量和优先级,目标处理器以及选择处理器的方式。重定向表中的信息用于把每个外部irq 信号转换为一条消息,通过apic总线把消息发送给一个或者多个本地apic单元。
来自外部硬件设备的中断请求以两种方式在可用cpu之间分发:
1静态分发:irq信号传递给重定向表相应项中所列出的本地apic。中断立即传递给一个特定的cpu,或者一组cpu,或者所有cpu.
2动态分发:如果处理器正在执行最低优先级的进程,irq信号就传递给这种处理器的本地apic.
每个本地apic都有一个可编程任务优先级寄存器(task priority register)trr用来计算当前运行进程的优先级。intel希望在操作系统内核中通过每次进程切换对这个寄存器进行修改。
如果两个或者多个cpu共享最低优先级,就利用仲裁技术在这些cpu之间分配负荷。在本地apic的仲裁优先级寄存器中,给每个cpu都分配一个0-15范围内的数值。
每当中断传递给一个cpu时,其相应的仲裁优先级就自动设置为0,而其他每个cpu的仲裁优先级都增加1.当仲裁优先级寄存器大于15时,就把它设置为获胜cpu的前一个仲裁优先级加1.因此,中断以轮转方式在cpu之间分发,且具有相同的任务优先级。
除了在处理器之间分发中断外,多apic系统还允许cpu产生处理器间中断。当一个cpu希望把中断发给另一个cpu时,就在自己本地apic的中断指令寄存器(interrupt command register,ICR)中存放这个中断向量和目标本地 APIC标识符。然后通过apic总线向目标本地apic发送一条消息,从而向自己的cpu发出一个相应的中断。
异常:80x86微处理器发布了大约20种不同的异常。内核必须为每种异常提供一个专门的异常处理程序。
中断向量表(interrupt descriptor table IDT)是一个


相关文档:

实战Linux Bluetooth编程(三) HCI层编程

1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI)  就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......

实战Linux Bluetooth编程 (七) SDP协议

Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......

Linux各发行版本简介

转载自:http://bbs.dp168.com/thread-23703-1-1.html
Redhat
简介:
Red Hat Linux是商业上运作最成功的一个Linux发行套件,普及程度很高,由Red Hat公司发行。
Red Hat
Linux可算是一个“中年的”Linux发行套件,1.0版本于1994年11月3日发行。虽然其历史不及Slackware般悠久,但比起很多的
Linux发行套件 ......

WinCE Eboot中加入Linux boot的支持

Index: flash.c
===================================================================
--- flash.c    (revision 1804)
+++ flash.c    (working copy)
@@ -26,6 +26,8 @@
#include "ebootnand.h"
#include "ll_nand.h"
#includ ......

Linux中文件的压缩与解压缩

对许多用户来说,在DOS和Windows环境下利用工具软件ARJ、Winzip等,压缩或解压文件是比较容易的事。但是,在Linux中如何对文件进行压缩与解压呢?本文基于Red Hat 6.0,介绍了压缩与解压文件的几种方法与技巧,希望对读者有一定的帮助。
命令:
compress
格式:
compress 选项 文件列表
功能:
用Lempel-ziv压缩方法 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号