Vxworks学习(四)_内核
声明本学习记录为笔者的学习记录笔记,其中大量借鉴了多本已出版书籍与网络资料,并会在文章末尾注明出处,同时笔者无虚拟机镜像。
本文参与于《VxWorks高级程序设计》-李方敏 进行整理。
一、实时内核
1.1 实时
实时表示控制系统能够计时处理系统中发生的要求控制的外部事件。
实时操作系统==性能评价指标: ==
- 中断延迟时间
- 任务切换时间
- 系统响应时间
实时操作系统必须满足的条件:
- 可抢占的内核
- 可抢占的优先级调度
- 中断优先级
- 中断可嵌套
- 系统服务的优先级由请求该服务的任务的优先级确定
- 优先级保护(优先级翻转保护)
- 前述实时操作系统性能评价指标具有固定上界;
Wind内核采用单一实时地址空间,任务切换开销非常低。
1.2 微内核
从内核功能和结构特点来看,具有整体式内核、层次式内核、微内核三种不同形式。
嵌入式操作系统大多采用微内核结构,具有以下优点:
- 统一的接口,在用户态和核心态之间无需进程识别;可伸缩性好,易于扩充,能适应硬件更新和应用变化;
- 可移植性好,操作系统要移植到不同的硬件平台上,只需修改微内核中极少代码即可;
- 实时性好,内核响应速度快,可以方便地支持实时处理;
- 安全可靠性高,微内核将安全性作为系统内部特性来进行设计,对外仅使用沙梁应用编程接口;
- 适合分布式计算环境。内核为进程传递消息的方式天然适合RPC这一计算模式。
为了提高微内核效率,有两种实现方式:受保护的虚地址空间模式和无保护的单一地址空间模式。
前者优势在于任务独立运行,可靠性高。
VxWorks 的 wind微内核采取单一实地址空间模式,所有任务在同一地址空间运行,不区分核心态和用户态。其优势在于:
- 任务切换时不需要进行虚拟地址空间切换;
- 任务间可以直接共享变量,不需要通过内核在不同的地址空间复制数据;
- 系统调用时不需要在核心态和用户态之间切换,相当于直接的函数调用。
1.3 任务调度
1.3.1 优先级调度
**不可抢占式调度: **需任务主动退出。
**抢占式调度: **注重实时响应。
Round-Robin调度
优先级翻转问题
task1 优先级: 1
task2 优先级: 2
task3 优先级: 3
task1与task3访问共享资源;
Begin: task1尝试访问资源,发现此时task3正在访问,因此task1被阻塞ÿ