易截截图软件、单文件、免安装、纯绿色、仅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文件压缩和解压


1) .tar
解压:tar xvf filename.tar
解压:tar xjvf filename.tar.bz2
解压:tar xzvf filename.tar.gz
打包:tar cvf filename.tar dirname1 dirname2
打包:tar czvf filename.tar.gz dirname1 dirname2
2) .gz和.Z
解压:gunzip filename.tar.gz
解压:gunzip filename.Z
打包:gzip  ......

查看和启动linux的服务,如:nfs

启动94,95的nfs服务
方法一:到/etc/init.d/中运行 ./nfs start
       到/etc/rc.d/rc3.d察看控制台服务(K字母开头的话为未启动,S为启动,直接改名字也可以将服务启动)
方法二:打命令setup,将System service中的nfs打勾,然后退出 ......

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发行套件 ......

袁老谈linux的10年发展

 本世纪第一个十年,即将过去。回顾以往,才能看清现在,我有几句话要说。
      记得,在十年之前,人们只能玩玩美国红帽的 Linux 桌面(特别是 6.2 版本),整天 sudo (即 Super User do ),任凭激情泛滥。到了 2001 年 1 月, Linux 2.4 正式发布,首次支持 USB 和蓝牙技术,以及 ext ......

linux c mkdir创建递归目录

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define err(msg) perror(msg)
static void mkdirs(const char *dir)
{
        char tmp[1024];
        char *p;
 &nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号