Symbian OS高级开发内核篇之中断与Nanokernel
来源:互联网 发布:linux如何修改静态ip 编辑:程序博客网 时间:2024/05/21 09:25
中断
中断是挂起CPU正常执行的程序,进入中断处理状态,并跳转到处理中断的代码段。中断源是指可以迫使CPU进入中断处理状态的一个硬件设备或软件行为,中断源用一个TInt类型数字来标示, 这个数字通常作为中断ID,中断控制器来监控中断源。硬件给CPU产生中断信号通知,并提供挂起的中断信息。
ISR
中断服务程序或叫ISR(Interrupt Service Routine)是处理中断的代码,Symbian OS Kernel 调用ISR来响应中断通知,调用ISR的过程称为中断调度。ISR是一个单一的函数,并非类的成员函数。每个ISR携带一个32位的TAny*参数,它可以指向任何值,所以经常会有类型转换,具有代表性的是它通常指向一个类。ISR通常在中断向量表中维护。
每个中断源只能分配或绑定一个ISR,ISR可以在正常运行时绑定和释放,但每次只能绑定到一个中断源。设备驱动程序可以通过中断源ID来绑定和解绑定ISR。
中断向量表定义了哪些中断源绑定了哪些ISR,这个表必须有足够的空间来存放这些。在Symbian OS中,中断向量表就是一个数组。中断服务请求IRQ和快速中断请求FIQ需要区别开来,尽管中断向量表一个元素对应一个中断源,但在构建中断向量表时还是应将IRQ和FIQ分组,这样就可以通过中断ID号快速决定是IRQ还是FIQ。如下图所示:
图1 中断向量表示意图 (源:SDL)
Nanokernel
Nanokernel是Kernel的内核,它是一个小型的RTOS(real-time operation system)用来运行Symbian OS。 Nanokernel线程 Nanokernel线程是最基本的执行单元,具有线程优先级,范围为0到64,调度时基于优先级的高低,高优先级的先调用。0优先级系统保留,为idle线程使用。优先级1到27及48,为Symbian OS 线程使用,其中优先级12是为前台应用程序使用,剩下的35个优先级为实时程序所用。 Nanokernel线程可以动态创建和销毁,但是它不做任何内存管理工作,线程对象及线程堆栈的内存都由线程调用者提供,其实这个规则不仅是对线程,而是遍布整个Nanokernel,所有动态创建的对象的内存,都必须由调用者来创建和销毁。 Nanokernel同步 Nanokernel提供了如下的同步对象: 线程同步时可以通过调用NKern::DisableAllInterrupts()来禁用中断,还可以调用NKern::Lock()来禁止抢占。当然,要谨慎使用这两个功能,因为它会影响到系统各个方面。 Nanokernel线程处理器 每一个Nanokernel线程可以定义以下的处理: 时钟管理 Nanokernel提供了基本的时钟对象,NTimer,可以生成一次性或周期性中断。当时钟到期时会从时钟ISR或Nanokernel时钟线程调用超时处理,时钟对象可以在任何上下文中操作。时钟由系统周期性脉冲中断驱动,通常是1毫秒一次。
- Symbian OS高级开发内核篇之中断与Nanokernel
- Symbian OS高级开发内核篇之中断与Nanokernel
- Symbian OS高级开发内核篇之EKA2
- Symbian OS高级开发内核篇之电源管理
- Symbian OS高级开发内核篇之EKA2
- Symbian OS高级开发篇之文件服务器
- Symbian OS高级开发篇之Ecom
- Symbian OS高级开发篇之系统引导
- Symbian OS高级开发篇之Ecom(1)
- Symbian OS控件开发之CCoeControl
- Symbian OS控件开发之CCoeControl
- Symbian OS控件开发之对话框
- Symbian OS控件开发之对话框
- Symbian OS控件开发之对话框
- Linux内核开发之中断与时钟(一)
- Linux内核开发之中断与时钟(二)
- Linux内核开发之中断与时钟(三)
- Linux内核开发之中断与时钟(四)
- 浪潮凭什么收购奇梦达?
- C++中extern “C”含义深层探索
- 注册的麻烦
- Introduction to Linux Intel Assembly Language
- pku 1017 水题不水
- Symbian OS高级开发内核篇之中断与Nanokernel
- flash位图技术研究篇(2):渲染缓冲区
- 杂碎00
- asp.net的页面状态保存与恢复
- 学生分配管理系统逻辑思想
- StringBuffer
- seam 注解(一)
- VC调试入门
- 能救自己性命的知识,一般人还真不知道,非常有用