《一个多任务实时操作系统的实现.pdf》由会员分享,可在线阅读,更多相关《一个多任务实时操作系统的实现.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件 产业I 9 9 0年 I 1月 开发与应 用 一个 多任 务实时操 作 系统的实现 中科 院 成都计算 机应用研 究所时建 摘 要擞机 应 用 系统 的功 能 日益 复杂 沿 用常规 的 顺 序程 序加 中 断的 软件设 计 亏 法 在解 决 并 发赴 理、定 时操 作、程 序 结 构自爱 是 活性 等方 面 的 问题 时 已经越 来越 目难,引凡 岁任 务 实 时操 作 系 统 势在必 扦。即 使是 使 用功 能 比较 简单 的 多任 务 实时操 作 系妻 t-通 过 它所 提供 的应 用 程 序开 爱环 境,也 能十 分有 效地 解决 上述 问题 提 高程 序 质量,简l化程 序设
2、计。本 文在 分析 多任务 实时 操作 系统 P A XS fi 3 2的基础 上,介 绍 了一种 简_蔓有 效并 具有 普遍意 卫的 多任 务 实 时捶 作 系缱 的 实现。一、引 言 P A XS G 3 2是 一 种适 于 I B M P C系列微 机 的 多任 务实 时操 作 系统。它有 效地 利 用 了 P c软 件 的三 十 层次,即 D OS层、B O S层 和 机 器 层 来 实现 时 钟 管 理,任 务渊度 和 通 讯 文 件 系统 和 输 入 输 出 等 建 立 了实时 多任 务应用 程 序的 开发 环境。P A X 由 以下 四 个 可 由开发 者选 择和 剪裁 的模 块
3、组 成:1 内辕提 供任 务 饵 度 和 与应 用程 序 的接 口 系统 原语。P A X采 用分 时轮 转 方式,可 并发 地 马 E 动 3 2个任务。时 间片 为 5 5毫秒。2 P C设 备 驱 动 模 块它 是 外 设 与 p A X 的 接 口,支持 显 示器、键盘、打 印 机 和 中断缓 冲方 式 的异 步 通讯 等设 备 3 软件 工具包提 供 中断 向量管 理等 功能。d 初始化任务 T A S K O 用于初始化 队 x下运 行 的各 任务,引导 P AX。并 提 供 了可供 用 户 开发 的 定 时操作 接 口。这 些模 块 可作 为 织木 式 程 序 设计 的 构 件,
4、生 成 结构 较 复杂 的微机 多任 务实 时应 用 系统。以 F论 述 P A X 内核 的实 觋。这是 本 系统 的 精 华 具有 普墙 意义,易于移植 到 其它类 型 的微 机或 单 板 帆 中 二、P AX操 作 系统 的 内核 内梭 由四部 分组 成,E 任务 调 度、实 时时 钟处理 程序 S Y S R T I、系 统原 谱和 任务 控 制块 组:I 任 务控制 块 T C B 任务 是独 立地 被 P AX请 度的各 个 程序。为 跟踪 这些 并发 执行 前 程序,P A X 为每 个任 务 建 立 一个 任 务 控制 块 任 务管理 实 质就是 T C B的管理 3 2个 任
5、 务 的 T C B按 J 4 霁 序 排列 蜩 成 1 C B塑 TC B为 十 六 字 节 结 梅见 表】所示。表 1 T C B的 结构 字 节 解 释 宁 节 解释 0 任 务 号(0 3 1)69 起始 堆 栈指 针】任 劳状 态 1 O一1 3 当前 的堆栈 指针 2-5 任 务的 起始 地址 1 一1 5 系统 时钟参 照 P AX给 每个 任务 分 配 了 5 1 2字 节 的堆 栈空 间,用来 保 护 任 务运 行 现 场(即 切 换 处各 寄存 器 内容)。在任 务 启动 首 次运 行时,其 栈 顶地 址 被 放入 T C B的 起始 堆栈 指针 项 中 当任 务停 止 运
6、 行时,其现 场被压 入 自己的堆 栈,并把 堆 栈 指针 放 入 T C B的 当前 堆栈 指针项 中。系统 时钟 参照用 于记 录 任 务涉 及 的时 间 信息 如 唤醒 时刻。任 务建 立后 处 于五种 状 卷之 一:运 行志、就 绪 态、中断 态、睡 眠态 和终止 态。图 l展示 了任 务状 态转 变 及其条 件。囤】任务状 态的转 换 任 务 状 态字 节 的位 映 象 见 表 2,其 中禁 止 位 是 供开 发者 调试 程序 时使 用的。表 2 任务状 态 字节 位模 式 解 蒂 1 0 0 0 0 0 0 0 任务执行(被手动地)禁【卜 0 0 1 0 0 0 0 0 该 T C
7、 B未被指报(空 T C B)0 0 0 1 0 0 0 0 任务被中斯(时阿片耗尽)0 0 0 0 0 1 0 0 任 务 睡眠(S Y,f L p或 6 Y R P E R调 用)0 0 0 0 0 0 1 0 任 务从 睡眠 状态赦 唤醒 维普资讯 http:/ 开发 与应 用 2 o 软件产业1 9 9 0年 1 1月 0 o 0 o 0 0 o i 任务就 绪 2 任务 调 度 P AX的 任务 谓度 采 用 分 时轮 转方 式,选 定一 十 可 供 运行 的 任务 若 没 有 可供 运 行 的 任务,则 C P U 暂停 等待 时钟 中断。实现 调度 算法 使 用了下 面的 内 存
8、变 量(见 表 3)。表 3任务 管理 所使 用的 存储 变量 字 节 变量 名 解释 0 3 未甩 d 一5 S C T I ME 系统 的当前 对捌 6 S L I C E 给 任 务分配 的时 间 片数 7 E D T|允 许(O)或 禁止(1)任 务切 换 a C T N O 当前可供发 出的号码(0 2 5 5)9 C B S T N O 当前正被服务的号码 A VAR A 程序 变 量 B VAR B 程序 变 量 C VAR C 程序 变量 D 未用 E-F C T C B A 当前任务的 T C B的地址 利 用 P AX的系统 原语 如 睡 眠、队列、允许 或 禁 止任务切换
9、等 开发者可实现任务之 间的协调技术 如信号灯、信箱、队列和临界 区等。用信号灯可实现 任务问的同步I 用队列或信箱可实现任务之同的信 息 变换 用 临界 区能实 现 任务 对 不可 共 享 资 源 的互 斥访 问。圈 2自身终止 程 序 圈 3任_軎 调度 程序 3 实时时钟处理程序 S Y S R T I P C系列及 其兼 容 机产 生一 个 5 5毫秒 的高优 先 权 定 时硬件 中断,即 中断类 型 8 用于 系统 计 时。其 中断 服务 程序 除 更 新 系统 日历 时钟 计 数外,还 弓 f 发 一个 类型 1 c中断 供应 用 程序开 发 者使 用。B I O S使 类 型 1
10、 c中断 向 量指 向一 条 I R E T(中断 返 回)指令 不 执行 任何操 作。通 过重 定 向该 中断 向量 使可 利用 这 个 5 5毫秒 的定 时 中断。P A X 也 正是 通过 改变 类 型 1 c的 中断 向量 使指 向实时 时钟处 理 程序 S Y S R-n 来 实现分 时功 能,中断超 时的 任务 见 躅 4 图 5建立 一十 作 业(2)启 动 踌 止 一个任 务 S Y S S T R S Y S KI L S Y S S T R启 动 任务 使 之 处于 就 绪 状 态 即 夸 T C B中的任务状奋为就绪。相反,S Y S K I L把任务状 翼 一!|善 维
11、普资讯 http:/ 软件 产业1 9 9 0年 l 1月 2 1 开发 与应用 态置 为终 止。入 口参 数是 任 务号。(3)睡 眠一段 时问 S Y S S L P S Y S S L P提供 了任 务 延迟 的方便 力t 。E要 引起 任务 切换 使 C P U不 空等待 而 去执行 其它 任务。入 13参 数为睡 眠时 间(以毫 秒 为单 位)。任 务 的唤醒 时 问等 于系统 当前 时问 加睡 眠时 间。囤 6睡 眠 一 段 时 问(4)禁止 光 许任 务 切换 S Y S D T I S Y S E T I 这 两十 原 语 总是 成对 地 使 用,在 确 保 关 键 数据 不受
12、 破 坏 时 非 常 有 用。S Y S D T 1禁止 任 务 切 换,置 E l Y r I 不等 于零 相 反 S Y S E T I 把 E D T 1 清为 零。(5)DOS功 能 调 用 S YSD OS p A X 推 荐使 用 S Y S l X 3 S来请 求 DO S坍 能调 用。P A X把 D O S功能调用(I N T 2 1 H)当成临界资源来管 理,通 过临 界 区来 实 现任 务 对 它 的互 斥 访 问 因为 DO S功 能 调 用程 序是 不重 入 的,即如 果 一个 任 务 开 图 7 DO S砷 能 调 用 始 使用 D O S功 能调 用 程序 后 中
13、途 被 中断,另 一个 任 务也要求使用 DO S功能调用程序,这时若允许它也 使用,那 么第 一个 任 务所 用 的 某些 数 据 就可 能 被 第 二 十 任 务 所 改变,从而 得 到错 误 的结 果。为 此,对 D O S功能 调用 的请 求必 须 实行先 来先 服 务。在 s Y D O S中 建造 了一 条 通 向 D O S功 能 调 用 程 序 的 有序 路径 路径给每十请求 D OS功能调用的任务指定一 十 编号,然 后 通过“喊号 的 办法 依 次让 任务 进 入 临 界 区。未被 允许 的 任务进 入 睡艉。见 圉 7 注意:圉 中 的 T F ,MV A R 必 须是
14、一 个 寄存 器 变 量,否 则,S Y S-DO S也 是不 可重 入 的。(6)建 立一个 队 列 S Y Q C R E P AX 系统 预 留 了 3 2个 队列 的 内存 空 问,每 十 队列可 容纳 6 4个双 字 长讯号。在 每个 队列 的末 尾建 立 了 队列控 制块 Q c B 其结构 见表 4。同时,P AX还 提供 了队列 支持 的一 组 系统原语。衰 4 Q c lB的结 构 字 节 变量 名 解释 0 S Z E Q 队列长度,位 7 一】表示队列未用 1 MNQ 队列 中的 讯号 个数 2 c I O Q 当前 可供 发 出的号 码 3 c B 洲0 口当前 正被
15、服务 的号 玛 4 5 )N P T R 输 指 针 6 7 O UT P T R输 出指 针 S Y Q C R E用于 建 立 一个 队列。入 口参 数 为拟 建 队 列的 长度。国 8建 立一 个队 列(7)发送 讯 号到队 列 S y Q P S T S YQ P S T把 一 个讯 号放 入 队 列并 修 改 队 列中 讯 号 的计 数和 输入 指针。入 13参 数是 队列 号和 待放 入 的 讯号 在存取 队列 时须 采取 互斥 措施 避 免 冲突 在程 序 中调 用 S Y S D T I来蘩止 任务 切换。(8)等待一个 讯 号 S Y Q P N D S YQ P N D 用
16、 于在 一指 定 的时 间间 隔 内等待 讯 号 在 队列上 出现。若 不 出现则 S y Q P N D 会 因超 时而 出 错 退 出。见 圉 1 0 入 1 3参数 为 队 号和 指 定 的时 间 间隔。在进 入 S gOP t I D 时就 进行 一次 讯号 检 查 若 无讯 号 则任 务 睡 眠 睡 眠唤 醒詹 再 进 行 一 次检 查。S Y Q P ND的 实 现 也 使用 了路 径t 通 过 喊号 办法 实行 先 来先 服务 的管 理(9)多任 务 系统 引导 退 出S Y S I N I S Y S E XT S Y S I NI 用 于 引导 p A X 系统。初 始 化
17、任务 控 制 块和 队列控制 块,用中断 类型 6 1 H 来指 向 DO S功 能 调 用 然 后按 控 制 权 交 给 T A S K0,由 T A S K 0完 成 其 它 的一些 栅 始化和 引导 工 作,如:安 装实 时 时钟处 理 程序和建立并启动各任务等。S Y S E X T完 成 系统 退 出。其代 码 在 T A S K0中 孕 叵 面 垂 维普资讯 http:/ 开发与应 用 软 件产业1 9 9 0年 1 1月 厦巫亟圃 蓝 匿要 L一 疆 面 卫 幽 垂童D 匝 豇 画 堑 壶 回幽 匝匝 囹 藿 囹 匝圃 厦匪互堑固 画 画 豆 西甄 j!:l l l i :(;f
18、 罨i 重 要 厂 一 一 L 哑 空!I l 困 l 0等待一个 队 州讯 号 匹 霹 r i i j i 图 1 l 系统 引导 可 由开 发者按 需要 修 改。三、讨 论 在 p A X 中 除 主 任 务(包 含 S Y S I N I调 用)是 由 D O S启动外 其 它任 务都随 主任 务编 制在 同一 程序 文件 中,由主 任务 启动 T A S K 0任 务,再 由 P A S K 0启 动其 它任 务。困此 各任 务 占用的 内存 空间 厦它 们之 间 的共 享 区域都 由程序 自己定 义管理。各 任务 可独 立 编程、调 试 使 得 程序结 构 清晰 并 通 过增 加或
19、修 改任 务,可随 时扩 展或 改进 系统 功能。对 于 大 多 数 I B M P C及 其兼 容 机,操 作 系 统 可 使 用的唯一 实时 时钟 中断是 5 j毫秒 的定 时 中断。在 无 须 添加 硬件 或 作硬 件 修 改 的情 况 下 分 时 轮 转 系 统具 有重 要意 义,它 只需很 少 的 系统 开 销。在 P AX曲 内核 中 除 S Y S D O S原 语 建 立 在 D O S 基础 之上 其它 都 自成 体 系,不 依赖于 D O N 尽管 实 时时钟 中断是 利用 B I O S的接 口,但 在任何 县有 汁教 定时 器 的计 算机 中都能 建立 个 实 时时 钟
20、 D O S 的功 能调 用 是 一组 鞍 高级 的设 备管 理、进 程管 理 和 内存管理 的程序,根 据 特定 的微 机系 统和应 用 目的 一 这 部分 可 能 并 不需 要,也 可 能 用对 应 的功 能 调 用 来 替换 可见 p A X 易于 移植 到其 它类 型 的微 机、单 板 机或 单 片讥 上。(上接 第 2 6而)符号来 表示 这些 门 就 应 设置 管脚 分配 值可 变。在 使 用时,系统 会给 出管脚 分 配 的提 示。由 于 At t t o C A D 2 1 上 版 本允 许 用 户 在 其 它 目录 下运 行,并 可 以寻 找二 级 库(即 不在 当前 目录,
21、也不 在 A u t o C A D 目录 中),本 系统 继 承 了 这一 灵 活 性,把绘 制 印制板 图软 件 部 分 和绘 制 逻 辑 图软 件 部 分 放到 不 同的 目录 中,利 用文 献(4 把 所 有的 命令 联 系到 一起。这 样在 同一 台机器 上 每个 用 户都 可以 在 自己的子 目录 下运 行本 系统。四、结束语 P A D S软件 系 统 运 行 已近 一 年 时 间,共 辅助 设 计 了七 十多块 印 制板 咱 大 多数是 双 面板)这 些板 子 有 些 已用 在设 备中 有 些正 在调 试,昔遍 认 为经计 算机 辅助 设计 的板 子 质量 比手工 贴 图高。走 线规 整 易于 谓试 修 改方 便。本 系坑操 作也 般 为简单 容易掌 握,不 懂计算 机 的技 术人 员,学 习二 至三天 就能 操 作。在完 成的七 十 多块 印 制板 辅助 设 计 中,大 多 数是 由二 名 高 中生 完 成 的,还有 一些 是设 计 人员 自己上机 画 出的 诚 然 t 作 为印 制 电路 板 辅助 设计 系 统 P AD S正 在 不 断 地 完 善过 程 中,我 们将 进 一步扩 大 它的 功能,使之在 各 细 节上 更精 致,成 为较理 想 的 P C B C A D 系统。维普资讯 http:/
限制150内