请问多任务操作系统如何编写任务调度部分?

huangguan 2006-05-04 11:55:51
我在保护模式下写了一个单任务的系统,要使它支持多任务,必然对任务状态描述符和局部描述符进行设置,请问设计一个多任务系统,至少会用到什么结构?如何使用这些结构,还有怎么进行任务切换?
...全文
196 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Peter_Cheung 2006-05-10
  • 打赏
  • 举报
回复
for IA32, 任务管理器is timer handler, which is IRQ 0.
you can write your 任务管理器 in there.
from Peter
tb01412 2006-05-09
  • 打赏
  • 举报
回复
去看LINUX0.11版的内核,推荐一本书:LINUX内核完全注释
WYlslrt 2006-05-07
  • 打赏
  • 举报
回复
你可以使用软件切换或者硬件切换,在我们经常使用的cpu上,自己写的操作系统使用任务切换是比较好的,你可以去好好的看下x86的任务切换机制,必须得数据结构为TSS:任务状态段,可以看看清华的80x86汇编语言程序设计
glietboys 2006-05-04
  • 打赏
  • 举报
回复
如果是你自己编写的,如果你的任务没有运行过程中,不响应除了时钟中断之外的中断的话,那很简单,只要搞懂任务状态描述符和局部描述符怎么设置就可以了;如果还响应其他中断的话,那会相当复杂.
至于数据结构,只要保存任务的TSS_SEL,LDT_SEL就可以了,当然,还有一个全局的维护任务的链表,其他的就没有什么必要添加了.
至于共享,互锁,饿死 等问题,是不用考虑的,因为这些问题涉及到I/O问题和算法问题.
如果能做到那个地步,估计你也不用在这问问题了.
大熊猫侯佩 2006-05-04
  • 打赏
  • 举报
回复
系统里必须支持一个任务管理器,功能是为每个任务分配时间片,处理各个
任务的共享,互锁,饿死 等问题,并且使用特定算法决定不同任务的的分配
时间片长度,在任务切换时保留每个任务的特定信息。多任务的要用到什么
结构依你的要实现的功能而定,比如上面说的就要有一个结构元素来存放任务
的特定优先级别。

21,499

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧