`
waterlife
  • 浏览: 67855 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Linux内核之中断向量的初始化

阅读更多

LInux内核在完成了对页式虚存的管理之后,调用trap_init()和init_IRQ()两个函数进行中断机制的初始化。其中trap_init()主要完成一些系统保留的中断向量的初始化,init_IRQ()则主要用于外设的初始化。

 

trap_init()首先设置中断向量表(IDT)开头的19个陷阱门,这些中断向量都是系统保留用于异常处理的。中断向量14就是用于页面异常保留的。然后是对系统调用向量的初始化,SYSCALL_VECTOR为0x80。

 

 

init_IRQ()中初始化一个结构数组irq_desc[],Linux系统为每个中断向量设置一个队列,根据每个中断源产生的中断向量将其挂载到相应的队列中。而数组irq_desc[],的每个元素则是这个队列的头部和控制结构。当中断发生时,首先执行一段总服务程序,根据具体的中断源设备号,在其所属的队列中找到特定的服务程序加以执行。

 

外设长生殿中断最后到要到common_interrupt()中,此前分别跑到IRQ0x01_interrupt或者IRQ0x02_interrupt的目的,只是由此得到一个与中断向量相关的数值压入堆栈中。

 

 

 

 

分享到:
评论

相关推荐

    linux中断向量的初始化.doc

    "Linux中断向量的初始化" Linux中断向量的初始化是Linux操作系统中的一种机制,用于处理中断请求。中断向量表是一个跳转表,用于存储中断向量的地址,每个中断向量都对应一个固定的PC地址,并且都对应一个特定的...

    linux内核软中断_linux内核源码详解.docx

    软中断在Linux内核中的实现是通过软中断向量(softirq_vec)来实现的。软中断向量是一个数组,数组元素是软中断处理函数和参数的结构体。软中断的处理函数是在软中断发生时执行的,它的参数是软中断的处理函数的指针...

    Linux 2.4内核中断之探析.pdf

    初始化中断描述符表是Linux内核启动过程中的重要环节,包括初步初始化和正式初始化。初步初始化通常由BIOS完成,但Linux接管后会将其移到RAM的另一区域并进行正式初始化,以适应内核的需求,避免使用任何BIOS例程。 ...

    深入分析Linux内核源码

    - **Linux内存管理的初始化**:解释Linux内核如何初始化内存管理机制,包括启用分页机制、探测物理内存等步骤。 - **内存的分配和回收**:介绍Linux内核如何使用伙伴算法、Slab分配机制等方法进行内存的分配和回收。...

    linux内核分析 赵炯 译

    BIOS进行系统检测和中断向量初始化,然后从启动设备如软驱或硬盘读取第一个扇区到内存特定位置。Linux的启动代码由两部分组成:boot/bootsect.S和boot/setup.S。前者被BIOS加载到内存,然后加载setup.S的代码,接着...

    Linux内核源代码情景分析 (上下册 高清非扫描 )

    - IDT(Interrupt Descriptor Table)用于描述每一个中断向量的属性。 - 初始化IDT是系统启动时的一项重要任务。 - **3.3 中断请求队列的初始化** - 中断请求队列用于保存等待处理的中断请求。 - 初始化队列是...

    深入分析Linux内核源码.pdf

    ### Linux内核源码核心知识点解析 #### 一、走进Linux **1.1 GNU与Linux的成长** - **背景介绍**:了解Linux的历史背景对于理解其设计哲学至关重要。GNU项目始于1983年,旨在创建一套完全自由的类Unix操作系统。而...

    arm linux内核源码剖析0

    这个过程从硬件初始化开始,通过Bootloader加载到内存,然后执行初始化代码,设置内存管理、中断处理、设备驱动等。此部分将详细解析从"start_kernel"函数开始到用户空间进程创建的全过程,涉及了BIOS或U-Boot的交接...

    Linux内核编程指南第3版

    开发者需要掌握如何编写一个内核模块,包括定义模块的初始化函数和清理函数,以及如何使用内核提供的接口来注册和注销模块。内核模块的编写涉及到对内核API的了解,以及对内核数据结构如链表、队列的熟练运用。 ...

    Linux内核源代码漫游[参照].pdf

    首先,PC机的BIOS将执行某些系统检测,在物理地址0处开始初始化中断向量。然后,它将启动设备的第一个扇区读入内存地址0x7C00处,并跳转到这个地方。 Linux内核的最前面部分是用8086汇编语言编写的(boot/bootsect....

    Linux中断详解.docx

    在Linux 0.11版本中,中断描述表的初始化是在内核引导阶段完成的。首先,所有的中断向量都被设置为指向一个简单的忽略中断的服务例程`ignore_int`,这意味着在初始阶段,系统对所有中断都不做任何处理。这通过汇编...

    linux内核编程技术

    在`traps.c`中定义了大部分中断处理程序,它们通过`set_trap_gate()`或`set_system_call()`等函数设置中断向量,使得内核能够响应不同类型的中断请求。 在Linux内核中,`kernel`目录包含了大量关键功能的实现,如...

    Linux内核源代码漫游.doc

    BIOS进行硬件检测和中断向量初始化,然后读取启动设备(如软盘或硬盘)的第一个扇区到内存的0x7C00地址。Linux的引导程序由两部分组成:bootsect.S和setup.S,前者由BIOS加载,后者负责读取内核的其余部分到内存中。...

    基于ARM Linux的中断、异常的处理分析

    本文通过详细探讨ARM架构下Linux 2.6内核中的中断和异常处理机制,不仅介绍了中断的基本概念、硬件机制,还深入分析了Linux 2.6内核如何初始化中断向量表并处理中断和异常的过程。这对于理解ARM平台上的嵌入式系统...

    linux内核源代码漫游

    PC机的BIOS会进行一系列基本的硬件检测和初始化,包括设置中断向量等。完成这些初步的准备后,BIOS会读取启动设备的第一个扇区(通常是软盘或硬盘)并将这些数据加载到内存中的某个地址(如0x7C00),然后跳转到该...

    Linux内核分析与应用课件第5章(二)中断处理理机制.pdf

    本资源主要讲述了Linux内核中的中断处理机制,包括中断描述符表的初始化、IDT的放置、陷阱门和系统门的设置、interrupt[]数组的使用、中断处理程序的入口地址、硬件处理中断请求队列的建立、中断处理过程中的堆栈...

Global site tag (gtag.js) - Google Analytics