多任务系统概念

原理:

严格意义上来说,多任务系统在同一时刻执行多个任务是不正确的。事实上,多任务系统只是加载任务到内存,执行它一段时间然后挂起它,并开始执行另一个程序,如果这一切换的时间足够短,就会造成多个任务同时执行的假象。多任务系统通过在内存中创建CPU寄存器的快照或者镜像来挂起任务。在x86体系中,CPU的镜像保存在由Task State Segment指向的特殊段中。

通过有效的保存挂起时刻的cpu寄存器镜像,操作系统可以选择另一任务执行,然后选择在某一时刻挂起它。而且,操作系统可以选择在某一时刻回复之前挂起的任务,系统将内存中保存的CPU状态恢复,然后处理器取出CS:EIP中的指令,继续执行挂起的程序。

CPU选择挂起任务的标准有很多,常见的有时间片轮转法。每一个任务被允许执行一个固定的时间间隔,在时间片消耗完后,系统会挂起当前任务,并选择其他任务启动或恢复。系统可能会给任务分配优先级,这样高优先级的任务就可以抢占正在运行的低优先级的任务。


例子:时间片

为了启动或恢复一个任务,系统会初始化一个硬件时钟在一定时间间隔后产生中断,中断将使CPU跳转到操作系统的任务调度程序,调度程序将决定下一个要运行的任务。


例子:等待事件

  1. 任务发起了一个读磁盘的系统服务
  2. 系统挂起任务
  3. 系统发起读磁盘操作
  4. 系统在事件队列中插入条目(为了后面恢复挂起的任务)
  5. 系统启动或恢复其他任务
  6. 磁盘产生中断
  7. 系统检查事件队列
  8. 系统恢复发起读磁盘操作的任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值