人生处万类,知识最为贤。这篇文章主要讲述Linux2.4 任务响应模型相关的知识,希望能为你提供帮助。
任务2优先级高于任务1。
- t0 — 任务1处于运行状态,任务2处于睡眠状态,等待被中断唤醒。
- t1 — 任务1请求系统服务完成某些操作,此时开始,系统进入内核空间运行。
- t2 —产生一个中断信号,并且此中断的中断服务程序唤醒任务2。但是由于系统在内核空间所进行的某些操作不可以被中断,CPU 的处理中断被禁止,中断没有立即响应(中断延迟是由于内核在进入临界区之前关闭CPU的中断响应所引起的)。CPU 将继续在内核空间执行任务1的系统服务。
- t3 — 内核代码使能中断响应,Linux 内核退出临界区,CPU 开始响应 t2 时刻产生的中断信号。
- t4 — 中断服务程序开始执行。当中断服务程序执行完后,中断服务程序唤醒了任务2。
- t5 — 返回被中断的代码,由于此时系统运行在内核态执行任务1的系统服务请求,任务2无法抢占任务1的控制权,所以执行任务1的系统服务请求。
- t6 — 中断返回结束。
- t7 — 由于任务1的系统调用完成返回或者执行系统服务的过程中主动请求任务调度,系统开始进行任务调度。
- t8 — 运行任务2。
任务响应延迟时间,以下各值的累加:
- 中断延迟时间【包括硬件延迟和软件延迟,一般研究涉及到如何最大限度地减少软件所造成的延迟时间】。从中断产生到CPU开始响应的时间段。中断延迟是由于内核在进入临界区之前关闭CPU的中断响应所引起的,此时间段内,虽然外部设备使CPU的中断请求有效,但CPU并不立刻响应中断,而是继续执行临界区的内核代码,直至退出临界区使能中断请求,才开始进行中断响应。
- 中断分派阶段【对于具体的平台时间确定】。CPU开始响应中断,到开始执行中断服务程序之间的时间段。查找中断号、保存寄存器、定位中断服务程序等。
- 中断服务阶段【时间段的长度可控】。系统开始执行中断服务程序到中断服务程序执行完地时间段。
- 中断返回阶段【对于具体的平台时间确定】。主要操作是恢复寄存器的值。
- 调度延迟。需要进行进程调度到实际开始进行调度的时间段。
- 进程调度时间【延迟时间可以设计】。系统开始进行调度到最高优先级的进程开始被调度运行的时间段。根据资源的利用情况、进程的优先级、进程的运行情况、选择合适的进程进行调度。
推荐阅读
- Linux C进程内存占用查看
- ensp综合端口基础配置(Hybird+access+Trunk)
- 3种方式!让你3秒在51CTO博客快速发布一篇博文
- PL/SQL集合(table)嵌套表操作实例讲解实例
- PL/SQL 用户自定义异常操作实例
- PL/SQL系统定义的异常操作实例讲解
- PL/SQL包(package)操作实例讲解
- PL/SQL字符串声明字符串函数和操作符实例源码说明
- 测试点先发散后收敛思考