-
一些例子中,pna-x矢量网络分析仪能够对噪声系数进行精确测量
资源介绍
6.10 一些例子
6.10.1 进程优先级的调整
对进程的优先级进行调整是 clock函数的一个重要功能,这里举两个例子。
1)例 1
系统在初始化时创建了两个进程:0号调度进程和 1号初始进程。假定从main函数中打开
时钟中断开始到调用 sched前,这些操作花了 2个时钟滴答,即 clock函数被调用了两次,但由
于调度进程是系统进程,而唯一的用户进程——初始进程其优先级为 0、高于 PUSER,所以
它们的优先级都没有调整。调度进程是当前进程,所以它的 p_cpu字段得到更新,系统中进
程状态如下。
进程 ID p_cpu(滴答) p_time(秒) p_pri p_flag p_stat
调度进程 0 2 0 0 系统、加载 运行
初始进程 1 0 0 0 用户、加载 就绪
系统时间 time[1] = 0,lbolt=2。调度标记 runrun=0,当前优先级 curpri=0。
进入到 sched函数后,交换器并没有找到换出进程,则调用 sleep挂起在 runout锁变量上,
进而调用分派切换器切换到初始进程运行,这一过程并不需要 1个时钟滴答。
进程 ID p_cpu(滴答) p_time(秒) p_pri p_flag P_stat
调度进程 0 2 0 -100 系统、加载 睡眠
初始进程 1 0 0 0 用户、加载 运行
系统时间 time[1] = 0,lbolt=2。调度标记 runrun=0,当前优先级 curpri=0。
初始进程在用户模式下执行数组 icode中的机器指令,即调用系统接口 execl运行可执行
文件“/etc/init”,至此初始进程真正开始运行。假设这个过程花了 10个时钟滴答,则此时系统
中进程状态如下。
进程 ID p_cpu(滴答) p_time(秒) p_pri p_flag p_stat
调度进程 0 2 0 -100 系统、加载 睡眠
初始进程 1 10 0 0 用户、加载 运行
系统时间 time[1] = 0,lbolt=12。调度标记 runrun=0,当前优先级 curpri=0。
到目前为止,由于系统时间还没有过去 1秒(lbolt < 60),所以尽管 clock函数已经被调
用 12次,但各进程的优先级和年龄并没有得到调整,调度标记 runrun也依然是 0。
初始进程在运行过程中,又创建子进程—shell进程,作为终端和用户交互。同时初始进
程挂起自己,等待 shell进程退出。所以分派切换器被调用,切换至 shell进程运行。假设内存
足够使用,且该过程又花费了 10个时钟滴答。则系统进程状态如下。
进程 ID p_cpu(滴答) p_time(秒) p_pri p_flag p_stat
调度进程 0 2 0 -100 系统、加载 睡眠
初始进程 1 20 0 40 用户、加载 等待
shell进程 2 0 0 0 用户、加载 运行
系统时间 time[1] = 0,lbolt=22。调度标记 runrun=0,当前优先级 curpri=0。
如果用户在 shell终端进行操作,则 shell进程处于运行状态,否则处于挂起状态。假
- 上一篇: cdd2021
- 下一篇: QNX虚拟机_Neutrino650