一个微内核操作系统消息传递及中断机制论文
毕业论文ARMCortexM0嵌入式微处理器中断控制系统研究

毕业设计 [论文]题目:ARM Cortex-M0 嵌入式微处理器中断控制系统研究学院:电气与信息工程学院专业:自动化摘要本文介绍了ARM Cortex-M0嵌入式微处理器中断控制系统的设计。
Cortex-M0是ARM公司开发的一款提供超低功耗、低成本微处理器,采用独特的中断控制系统,能够有效加速中断响应过程。
通过对M0处理器的中断控制系统研究,可以更深入的了解微处理器架构以及中断控制系统设计。
本文首先简述了嵌入式系统的结构、现状以及发展趋势,然后解释了中断和中断嵌套优先级的概念,重点介绍了ARM Cortex-M0的结构特点,总结了M0异常和中断的特点,并对M0的中断优先级、嵌套向量中断控制器(NVIC)和ARM Cortex微控制器软件接口标准(CMSIS)作说明,最后在ALTERA DE2-115上用按键边沿触发中断,通过观察LED的闪烁状态来验证编写的中断控制程序。
关键词:ARM Cortex-M0,中断,NVICABSTRACTThis article describes the ARM Cortex-M0 embedded microprocessor interrupt control system design. ARM Cortex-M0 is the development of a company to provide ultra-low-power, low-cost microprocessors, using a unique interrupt control system that can effectively accelerate the process interrupt response. By M0 processor's interrupt control system can be more in-depth understanding of microprocessor architecture and interrupt control system design.This paper outlines the structure of the embedded system, status quo and development trends, then explained the priority of interrupts and interrupt nesting concept, focusing on the ARM Cortex-M0 structural characteristics, summarized M0 exception and interrupt characteristics, and the interrupt priority for M0, nested Vectored Interrupt controller (NVIC) and the ARM Cortex microcontroller Software Interface Standard (CMSIS) for illustration, the last in ALTERA DE2-115 with the keypad on edge-triggered interrupts, by observing the status LED flashing to verify that implements interrupt control.Keywords: ARM Cortex-M0, interrupt, NVIC目录摘要 (I)ABSTRACT ............................................................................................................. I I 1 绪论 .. (1)1.1 研究背景 (1)1.2 研究内容 (1)1.3 研究成果 (1)1.4 论文结构 (2)2 嵌入式系统 (3)2.1 嵌入式系统简介 (3)2.2 嵌入式系统的组成与分类 (4)2.3 常见嵌入式处理器的体系结构 (5)2.4 嵌入式处理器的发展趋势 (6)3 中断 (8)3.1 中断的定义 (8)3.2 中断源 (9)3.3 中断分类 (9)3.4 中断应具有的功能 (10)3.5 中断嵌套与优先级 (10)3.5.1 中断优先级 (10)3.5.2 中断嵌套 (11)3.6 中断控制方式的优点 (12)4 ARM Cortex-M0的中断 (13)4.1 ARM Cortex-M0简介 (13)4.2 ARM Cortex-M0总线架构 (13)4.3 异常处理模型 (14)4.3.1 异常状态 (14)4.3.2 异常类型 (14)4.3.3 异常处理 (15)4.3.4 异常向量表 (15)4.3.5 异常优先级 (16)4.3.6 异常处理的进入与返回 (17)4.3.7 Cortex-M0异常处理机制 (20)4.4 嵌套向量中断控制器 (22)4.4.1 异常模式和系统中断映射 (23)4.4.2 操作描述 (25)4.4.3 Cortex-M0中断的特点 (27)4.5 CMSIS软件接口标准 (28)4.5.1 CMSIS标准的软件架构 (29)4.5.2 CMSIS规范 (30)5 实验 (33)5.1 控制要求 (33)5.2 实验准备 (33)5.2.1 Keil uVision4简介 (33)5.2.2 ALTERA DE2-115简介 (33)5.3 程序流程图 (35)5.4 程序代码及分析 (35)5.5 实验结果 (36)结论 (37)参考文献 (38)致谢 (39)附录 (40)1 绪论1.1研究背景随着半导体行业进入深亚微米乃至纳米时代,在单一集成电路芯片上就可以实现一个复杂的电路系统,即SoC系统。
中断是计算机系统中十分重要的一种机制

中断是计算机系统中十分重要的一种机制。
它是解决外部设备和系统连接的很好途径,有效地实现了外部设备与CPU的并行工作。
在实际应用中,除了要考虑如何对中断控制器编程进行的问题,还要对采用中断方式进行I/O控制的接口电路进行设计。
中断是一种信号,它告诉微处理器已发生了某种需要特别注意的事件,需要去处理或为其服务。
在本课题中我们深刻的了解到了8259A的工作方式,工作原理和工作状况;同时知道了中断存在的重要意义,中断通俗的理解可以认为是“异常”,在有异常发生的情况下产生的情况,在两件摆在眼前的事物中选择更需要立刻执行响应的程序,即是在中断中所说的优先级。
我们运用编程技术,将8259A芯片仿真式的展现出来,用C++结合程序结构,编程演示其内部的工作机理。
利用程序的设计,将芯片的工作原理通过实验平台给大家一个直观的演示,以便对中断的概念理解得更透彻。
现今社会,计算机越来越普及,我们只知道计算机的外部结构和某部分软件是远远不够的,至少我们要对和我们日常生活打交道的朋友的一些重要内部情况。
计算机有着许多的寄存器、接口器件、分析器等等。
其中中断接口是特别重要的一个概念。
每敲击一次键盘都相当于一次中断信号。
而主管这个中断信号的就是计算机中的8259芯片。
它最突出的特别是具有对中断服务程序入口地址的寻址能力,也就是当CPU响应中断申请后,通过8259A提供的中断类型号可以找到中断服务程序的入口地址,转移到中断服务程序去执行。
我们只有对8259A了解后才能进一步了解计算机系统。
而我们在最开始了解到的计算机系统中只是知道可一些表面上的东西,实质上计算机是如何工作、我们为什么能通过键盘向计算机发出命令、打印机是怎么打印文件的等都不明白,通过这个仿真式的实验我们对计算机的内部系统等做个详细的剖析。
键盘上的每一次击打键入都相当于一次信号的发出,对于计算机来说这每击一键都发出了一个中断信号,告诉CPU有“键盘输入”事件发生,要求CPU 读入该键的键值;而打印每一个字符也是一次中断的过程。
操作系统中断处理机制

操作系统的中断处理机制是一种负责响应和处理外部事件的能力,它使得操作系统能够实现并发、实时处理以及故障自动处理等功能。
中断处理机制主要包括以下几个部分:1. 中断请求:中断请求是外部事件向操作系统发出的请求,例如I/O操作完成、硬件故障、外部中断等。
这些请求会触发中断机制,使得操作系统暂停当前工作,转去处理中断请求。
2. 中断识别:操作系统需要识别来自不同中断源的中断请求,以便正确处理相应的事件。
识别中断源的方式包括查询中断向量表、中断号等。
3. 保护现场和断点:在响应中断之前,操作系统需要保存当前进程的执行状态,包括相关寄存器的值等。
这一过程称为现场保护。
处理完中断事件后,操作系统需要恢复原进程的执行状态,这一过程称为现场恢复。
4. 装入中断服务程序:操作系统根据中断类型和中断向量,将相应的中断服务程序的入口地址装入CPU的指令寄存器中,以便CPU能够执行中断服务程序。
5. 进入中断服务程序:CPU开始执行中断服务程序,用于处理中断请求。
在中断服务程序中,操作系统需要完成以下任务:保护被中断进程的现场信息、分析中断原因、处理发生的中断事件等。
6. 中断返回:中断服务程序处理完毕后,操作系统需要将CPU的状态恢复到原来的断点,并继续执行被中断的进程。
这一过程通过IRET(Interrupt Return)指令实现。
7. 交换指令执行地址:在中断处理过程中,操作系统需要交换CPU的执行地址,以便继续执行被中断的进程。
8. 交换CPU的态:操作系统需要将CPU的状态从中断态恢复到原来的工作态。
总之,操作系统的中断处理机制是一种负责处理外部事件的机制,它能够在保证系统稳定运行的同时,实现对各种中断事件的及时响应和处理。
这一机制依赖于硬件和软件的协同工作,使得操作系统能够实现高效的并发和实时处理能力。
操作系统中的中断机制

操作系统中的中断机制操作系统是整个计算机系统的管理者,它负责分配计算机资源,协调各个程序之间的运行。
而中断机制则是操作系统中一个极其重要的部分,它可以让操作系统实时响应硬件的事件和异常。
本文将详细介绍操作系统中的中断机制。
一、中断的概念中断是指在执行程序时,CPU停止当前程序的执行,转而去执行另一个程序,然后再返回原程序继续执行的一种机制。
其实质是CPU针对硬件的指令进行处理的一种机制。
中断可以分为软中断和硬中断两种类型。
软中断是在程序执行过程中,由程序自身发起中断请求;而硬中断则是由外部硬件发起中断请求。
后者被称为硬件中断。
二、中断的分类1. 硬中断硬件中断是由外部设备发出的,例如键盘、鼠标、磁盘等。
此时CPU会立刻停止当前的工作,处理中断,并将中断的类型、地址和数据等信息保存在中断向量表中,以备后续处理。
2. 软中断在程序执行的过程中,如果需要让CPU停下来处理某些事情,就需要使用软中断。
此时,CPU会保存程序当前执行的现场,同时将控制权交给操作系统内核,内核处理完毕后再将控制权返回程序。
三、中断的处理机制中断机制是操作系统的一个非常核心的功能,它可以及时地处理各种硬件或软件故障。
下面将对中断机制的处理流程进行详细介绍。
1. 用户态与内核态当程序运行时,CPU会在两种状态间进行切换:用户态和内核态。
用户态是指用户程序执行的状态,CPU只能访问用户态的内存和寄存器;而内核态是指操作系统内核执行的状态,CPU可以访问系统的全部资源,包括系统内存和设备寄存器等。
2. 中断处理程序当系统发生中断时,CPU会切换到内核态,并在内核态下执行中断处理程序。
中断处理程序首先会将中断请求信息放入中断向量表中,然后从中断向量表中找到相应中断请求处理程序的地址,并跳转到该地址。
中断请求处理程序会处理中断请求,并将控制权交还给操作系统内核。
3. 进程状态的保存和恢复当中断请求处理程序执行完毕后,操作系统内核需要将进程原来的状态恢复,使其可以继续执行。
微内核操作系统

微内核操作系统在当今科技飞速发展的时代,操作系统作为计算机系统的核心软件,其性能和架构直接影响着计算机的整体运行效率和稳定性。
其中,微内核操作系统作为一种新兴的操作系统架构,正逐渐引起人们的关注和研究。
要理解微内核操作系统,首先得知道什么是内核。
内核是操作系统的核心部分,负责管理系统的资源,如处理器、内存、输入输出设备等,并为应用程序提供基本的服务。
传统的操作系统通常采用宏内核架构,也就是说,内核包含了操作系统的大部分功能,例如文件系统、设备驱动程序、网络协议栈等。
这种架构虽然在一定程度上能够提高系统的性能,但也存在一些缺点。
比如,内核代码规模庞大,结构复杂,导致其维护和扩展变得困难,而且一个部分的错误可能会影响整个系统的稳定性。
微内核操作系统则采取了一种截然不同的设计理念。
它将内核的功能尽可能地精简,只保留了最基本的部分,如进程管理、内存管理和消息传递机制等。
而其他的功能,如文件系统、网络协议栈、设备驱动程序等,则作为一个个独立的服务进程运行在用户空间。
这些服务进程通过内核提供的消息传递机制与内核进行通信和交互。
这种设计带来了许多显著的优点。
首先,由于微内核的规模较小,代码相对简单,因此其可靠性和稳定性更高。
即使某个服务进程出现故障,也不会影响到内核的正常运行,从而大大提高了系统的容错能力。
其次,微内核操作系统的可扩展性更强。
新的服务可以方便地添加到系统中,而不需要对内核进行修改,这使得系统能够更好地适应不断变化的需求。
此外,微内核架构还提高了系统的安全性。
因为服务进程运行在用户空间,它们的权限受到严格限制,从而降低了系统受到恶意攻击的风险。
然而,微内核操作系统也并非完美无缺。
由于服务进程与内核之间的通信需要通过消息传递机制进行,这会带来一定的性能开销。
相比之下,宏内核架构中,由于许多功能都在内核中直接实现,不需要频繁的消息传递,因此在性能上可能会更有优势。
不过,随着计算机硬件性能的不断提升,以及优化技术的不断发展,微内核操作系统在性能方面的劣势正在逐渐减小。
操作系统内核中的中断处理技术研究

操作系统内核中的中断处理技术研究一、引言操作系统是管理计算机硬件与软件之间资源的软件程序,其主要任务是为应用程序提供抽象层以简化应用程序的开发,并为不同应用程序之间提供隔离和管理功能。
而中断处理技术是操作系统的一个重要组成部分,它是一种用于处理硬件设备故障、用户程序请求、异常条件等事件的机制。
本文将对操作系统内核中的中断处理技术进行研究,包括中断处理的基本原理、中断向量表的构建以及中断处理的分级技术等。
二、中断处理的基本原理当计算机硬件设备发生故障或用户程序请求服务时,需要向操作系统发送信号,告知操作系统需要进行相应的处理。
而计算机CPU处理的速度非常快,并不需要等待硬件设备或用户程序的响应信号,这样会严重浪费CPU的计算能力。
因此,中断处理技术应运而生。
中断处理技术的基本原理是在计算机运行过程中,当硬件设备或用户程序需要操作系统的处理时,它们会向CPU发送一个中断请求。
CPU接收到中断请求后,切换到相应的中断处理程序,并保存当前的程序计数器等上下文信息,以便在中断处理程序执行完毕后,CPU能够返回到原来的程序,并继续执行。
三、中断向量表在计算机中,有很多不同类型的中断请求,例如时钟中断、输入输出中断等。
操作系统需要能够识别并处理这些不同类型的中断请求。
由于中断请求信号的种类非常多,因此需要为每一种中断请求分配一个唯一的编号,称为中断向量号。
中断向量表是用于存储中断向量号和对应中断处理程序地址的数据结构。
它是操作系统内部的一张表格,当CPU收到中断请求后,根据中断向量号在向量表中查找对应的中断处理程序地址,并跳转到该程序开始执行。
中断向量表的大小是由计算机硬件最多支持的中断向量号的数量决定的。
四、中断处理的分级技术中断处理的分级技术是用于处理不同类型中断请求优先级的一种技术。
当多个中断请求同时到达时,操作系统需要根据中断类型和优先级来确定中断请求的处理顺序。
中断处理的分级技术可以通过将中断请求按照优先级划分为若干级别,并为每一级别分配一个处理程序来实现。
操作系统的中断处理与异常处理机制

操作系统的中断处理与异常处理机制在计算机系统中,操作系统是一个管理和协调系统资源的软件,中断处理和异常处理是操作系统的核心功能之一。
中断处理和异常处理机制使得操作系统能够及时响应硬件设备或软件程序的请求,并采取相应的措施进行处理,保证系统的稳定性和可靠性。
本文将详细介绍操作系统的中断处理与异常处理机制。
一、中断处理机制中断是指在计算机系统运行过程中,某个硬件设备或者软件程序发出的一种请求,通过打断正常的程序执行流程,通知操作系统去处理该请求。
中断可以分为硬件中断和软件中断两类。
1. 硬件中断硬件中断是由硬件设备发生的一种中断事件,比如外设设备的输入输出操作,时钟中断等。
当硬件设备发生中断事件后,会向处理器发送一个中断信号,处理器暂停当前的执行任务,保存当前的上下文信息,并转入中断处理程序来处理中断事件。
中断处理程序会根据中断类型来执行相应的操作,比如读取输入设备的数据,将数据写入输出设备等。
处理完中断事件后,处理器会恢复之前被中断的任务继续执行。
2. 软件中断软件中断是由软件程序主动触发的一种中断事件,也称为系统调用。
软件中断通常由用户态程序调用系统库函数来完成,通过系统调用指令将自己的执行权限转交给操作系统,由操作系统代为执行相应的操作。
常见的软件中断包括文件读写操作、进程创建与销毁等系统调用。
中断处理机制的优点在于能够及时响应外部设备和软件程序的请求,提高了系统的实时性和处理能力。
同时,使用中断处理机制可以实现很多复杂的功能,比如多任务处理、设备驱动程序等。
二、异常处理机制异常是指在程序执行过程中出现的一种非正常情况,例如非法指令、除数为零等。
异常处理机制能够捕捉这些异常事件并进行相应的处理。
异常处理机制主要分为硬件异常和软件异常两类。
1. 硬件异常硬件异常指的是由硬件设备产生的异常事件,如页错误、越界访问等。
当硬件设备检测到异常事件后,会向处理器发送一个异常信号,处理器会中断当前任务的执行,并把当前的上下文信息保存起来,然后转入异常处理程序去处理异常事件。
操作系统中的中断与异常处理机制

操作系统中的中断与异常处理机制在计算机系统中,操作系统起着至关重要的作用,它负责管理和控制计算机的资源,并提供给用户一个友好和高效的界面。
而在操作系统中,中断与异常处理机制是其中的重要组成部分。
一、什么是中断与异常处理机制中断与异常处理机制是操作系统用来响应特定事件或异常情况的方式。
当计算机系统发生某些事件,例如硬件故障、外部设备的请求等,操作系统会立即停止正在执行的任务,转而处理该事件。
在这种情况下,中断与异常处理机制起到了极为重要的作用。
二、中断与异常的区别尽管中断和异常都能够引发操作系统的响应,但两者之间存在一些区别。
1. 中断:中断是由外部设备发起的,例如键盘输入、鼠标点击等。
当外部设备需要与操作系统进行交互时,它会发出中断信号,这时操作系统会中断当前任务的执行,转而响应中断事件。
中断是一种在程序执行时突然发生的外部事件,需要处理器立即中断正在执行的任务并执行相应的中断处理程序。
2. 异常:异常是由程序内部产生的事件,也称为软中断。
当程序运行过程中出现错误、非法操作或者某些特殊事件时,会触发异常。
操作系统会根据异常的类型和优先级来处理该异常,进而采取相应的行动,例如打印错误信息、终止程序执行,或者进行异常处理。
三、中断与异常的处理流程中断与异常处理机制的处理流程如下:1. 中断发生:当外部设备产生中断信号时,处理器会暂停当前任务的执行,并将控制权交给操作系统。
2. 中断处理程序:操作系统会根据中断类型调用对应的中断处理程序。
中断处理程序会执行与中断相关的操作,例如获取键盘输入、响应鼠标事件等。
3. 中断处理完成:中断处理程序执行完毕后,操作系统会将控制权重新交还给之前的任务,使其继续执行。
4. 异常发生:在程序执行过程中,如果出现错误、非法操作或其他特殊事件,会触发异常。
5. 异常处理程序:操作系统会根据异常类型和优先级调用相应的异常处理程序。
异常处理程序会处理异常情况,例如打印错误信息、修复错误、终止程序执行等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个微内核操作系统的消息传递及中断机制摘要:微内核是一个最小化的软件程序,它具有完整的操作系统。
微内核组成部分包括一个非常简单的硬件抽象和一组比较关键的原语或系统调用。
微内核以完成系统服务的实现和系统的基本操作规则分离为目标,进而简化内核中最核心部分的设计。
本文提出了一个微内核的体系结构,并对其消息传递及中断机制做了分析。
abstract: a microkernel is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system(os). these mechanisms include process management, memory management, and inter-process communication (ipc). the goal of microkernel is to separated the implementation of system services and the basic operation of system separated, and this design makes the innermost part of the kernel is more simple.this text proposed to check a microkernel of architectures,and detail the mechanism of message passing and interrupt.关键词:操作系统;微内核;消息传递;中断机制key words: operating system;microkernel;messaging;interrupt mechanism中图分类号:tp392 文献标识码:a 文章编号:1006-4311(2012)30-0196-030 引言操作系统内核整体上可分为宏内核和微内核两类。
宏内核使全部内核功能和设备驱动在相同地址空间运行。
此方案强调效率(特别是在x86个人计算机体系结构上,一个任务转换需要不小的花销)。
不过,由于宏内核在相同地址空间里运行,一个设备驱动出现问题,整个系统就会瘫痪。
微内核的体系结构尝试把多数的服务进程和设备驱动放在用户空间运行。
这样一些高效的内存保护机制的机器的就会具有更强的稳定性和更高的安全性。
同时,更具灵活性、扩展性、兼容性[1]。
自从荷兰学者tanenbaum提出minix操作系统以来[2],微内核开始在操作系统内核体系中大展宏图。
当前,在微处理器技术不断发展的情况下,主要开发嵌入式系统。
我们要迫切解决的是怎样在性能上实现嵌入式实时、多样、高效的应用。
一个完整的操作系统内核包括三部分:进程管理、存储管理和设备驱动程序。
我们要注意的是,某种意义上来讲,虽然操作系统不包括引导部分,但是操作系统与它却紧密相关,因此,引导器也被看成是必不可少的一部分。
本文实现的操作系统微内核是基于intel x86个人计算机架构的。
本文仅论述内核中的消息传递和中断机制,内存管理的实现见参考文献[3],其它的实现将会在后续文章中提到。
1 内核系统体系结构[3][4][5]操作系统内核的结构模式主要有两种:整体式的单内核模式和层次式的微内核模式。
我们主要研究的是微内核模式,并将其命名为mkr(micro kernel for research)。
mkr主要包括:内存管理,进程管理,消息传递,中断机制,系统调用五个模式。
1.1 内存管理本设计系统只使用一个页目录,页大小为4kb,整个系统可访问4gb的线性地址空间。
系统进程不超过64个,每个进程地址空间不能超过64mb。
每个进程的代码段与数据段的基地址是一样的,而且大小也一样,段大小不超过64mb。
内核的代码段和数据段的基地址一样,其大小也一样,内核最多可管理64mb的物理内存,所以段大小为64mb,且线性地址和物理地址相对应。
1.2 进程管理系统包括四层。
第一层是内核,cpu特权值为0。
第二层包括i/o进程和系统任务,或称为任务,有很多的系统将i/o 任务称作设备驱动程序。
这两个名称可换用,cpu特权值为3,iopl 为3。
第三层包含向用户进程提供有用服务的服务器进程,cpu特权值为3,iopl为 0。
第四层包含所有的用户进程,cpu特权值为3,iopl为0。
图2展示了这四层结构。
依据进程表,内核管理进程,在进程表中,每个进程为一项,其中保存着用于控制和管理进程的全部信息。
进程调度使用一个三级进程队列,分别对应于系统的第2、3、4层的进程。
任务队列优先级最高,其次是服务器队列,最低的是用户进程。
同一级队列的进程用的是时间片为100ms轮转调度。
1.3 消息传递本系统用于发送和接收消息的函数有4个,它们均通过c库例程调用。
其中small msg send(dest,&msg);用来向进程dest发送一条4b 的小消息。
small msg receive(src,&msg);用来向进程src接收一条4b 的小消息。
big msg send(dest,&msg);用来向进程dest发送一条4kb的大消息。
big msg receive(src,&msg);用来向进程src接收一条4kb 大消息。
1.4 中断机制大多数的硬件中断,将转成消息发送给任务处理。
因为是硬件,所以不存在自己的地址空间,写时复制机制也不能用,这样一来,只能采用小消息来发送。
1.5 系统调用本设计的系统调用包括所有进程都能调用的系统调用和只有任务能调用的内核调用两大类。
内核调用是直接调用内核提供的服务,而系统调用将转成消息发送给系统任务,系统调用不一样,发送给系统任务的消息也不一样,再由系统任务来处理,系统任务实现系统调用,可通过内核调用或发送消息给其它进程。
2 消息传递系统中的进程实现通信依靠的是消息来,运用的是进程会合原理。
在发送消息的过程中,内核就会检查目标进程有没有等待发送者发来消息。
若在等待,则该消息从发送进程拷贝到接收进程,同时这两个进程都被标记为就绪态。
如果没有等待,则发送者被标记为阻塞,并挂入一个等待将消息发送的进程队列中。
当一个进程接收消息时,内核检查该队列中有没有向它发送消息的进程。
若果有向其发送消息的进程,则消息从被阻塞的发送进程拷贝到接收进程,并将两者均标记为就绪;若没有,则接收进程被阻塞,直到有消息出现。
大多数的硬件中断依靠硬件,大多数的软件中断依靠请求系统服务(也就是系统调用)转换为一条消息。
由于硬件中断产生的消息不是进程发的,所以不能使用写时复制机制,那么硬件中断产生的消息只能是小消息,大小为4 字节,它将发送给相应的设备驱动程序处理。
在 mkr系统中,系统调用(内核调用除外)是通过消息来实现的,不同的系统调用,发送不同的消息给系统任务,再由系统任务来处理,系统任务可以使用内核调用或发送消息给其它进程,来实现系统调用。
mkr使用四个消息等待队列来存放等待的消息,分别是小消息发送队列,小消息接收队列,大消息发送队列,大消息接收队列。
内核将通过这四个队列来交换消息,并对死锁进行排除。
struct msg_struct * small_send_head;struct msg_struct * small_send_tail;struct msg_struct * small_receive_head;struct msg_struct * small_receive_tail;struct msg_struct * big_send_head;struct msg_struct * big_send_tail;struct msg_struct * big_receive_head;struct msg_struct * big_receive_tail;内核是消息传递的中间过程,消息传递函数是通过直接调用中断int 0x80来使消息进入内核的,其中寄存器 eax、ebx、ecx的内容作为参数。
3 中断机制3.1 80x86微机的中断子系统[6] 在使用80x86组成的微机系统中采用了8259a可编程中断控制器芯片。
每个 8259a芯片可以管理8个中断源。
通过多片级联方式,8259a能构成最多管理64个中断向量的系统。
在pc/at 系列兼容机中,使用了两片8259a芯片,共可管理15级中断向量。
其中从芯片的int引脚连接到主芯片的ir2引脚上,即8259a从芯片发出的中断信号将作为8259a主芯片的irq2输入信号。
主8259a芯片的端口基地址是 0x20,从芯片是0xa0。
在总线控制器控制下,8259a芯片可以处于编程状态和操作状态。
编程状态是cpu使用in或out指令对 8259a芯片进行初始化编程的状态。
一旦完成了初始化编程,芯片即进入操作状态,此时芯片即可随时响应外部设备提出的中断请求(irq0-irq15),同时系统还可以使用操作命令字随时修改其中断处理方式。
通过中断判优选择,芯片将选中当前最高优先级的中断请求作为中断服务对象,并通过cpu引脚int通知cpu外中断请求的到来,cpu响应后,芯片从数据总线d7-d0将编程设定的当前服务对象的中断号送出,cpu由此获取对应的中断向量值,并执行中断服务程序。
3.2 中断向量表 cpu获取中断向量值,是以中断号为依据的,也就是说,对应中断服务程序的入口地址值。
80x86微机支持256个中断,每个中断都要有一个中断服务程序。
若intel cpu在32位保护模式下运行,需要使用中断描述符表idt来管理中断或异常。
mks系统工作于80x86的保护模式下,因此它使用中断描述符表来设置和保存各中断的“向量”信息。
bios进行初始化操作时,设置了两个8259a芯片支持的16个硬件中断向量和bios提供的中断号为0x10——0x1f的中断调用功能向量等。
那些在实际中没有应用的向量则填入临时的哑中断服务程序的地址。
以后若有需要,会根据实际情况变换某些中断向量的值。
而mkr系统,只在刚开始加载内核时需要用到bios提供的显示和磁盘读操作中断功能,在内核还未正常运行时,在setup.s[7]程序中会重新初始化8259a芯片并且重新设置一张中断向量表。
根本不在使用bios所提供的中断服务功能。
3.3 mkr的中断处理 mkr内核,中断信号一般包括硬件中断和软件中断两类。
每个中断都用数字标识,数字区间为0-255。
对于中断int0-int31(0x00-0x1f),每个中断的功能由intel公司固定设定或保留用,属于软件中断。