
正文
Linux中进程调度命令 linux进程调度命令有哪些
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Linux进程调度的概述
Linux的调度程序是一个叫Schedule()的函数,由它来决定是否要进行进程的切换。而所谓的调度时机则是在什么情况下执行调度程序。
Linux进程调度采用的是抢占式多任务处理,所以进程之间的挂起和继续运行无需彼此之间的协作。
主要分为以下几种情况:
1、进程状态转换的时刻:进程终止、进程睡眠
进程要调用sleep()或exit()等函数进行状态转换,这些函数会主动调用调度程序进行进程调度。
2、当前进程的时间片用完时(current-counter=0)
由于进程的时间片是由时钟中断来更新的,因此,这种情况和时机4是一样的。
3、设备驱动程序
当设备驱动程序执行长而重复的任务时,直接调用调度程序。在每次反复循环中,驱动程序都检查need_resched的值,如果必要,则调用调度程序schedule()主动放弃CPU。
4、进程从中断、异常及系统调用返回到用户态时
不管是从中断、异常还是系统调用返回,最终都调用ret_from_sys_call(),由这个函数进行调度标志的检测,如果必要,则调用调度程序。
相关问答
Q1: linux进程、线程及调度算法(二)
执行一个 copy,但是只要任何修改,都造成分裂如,修改了chroot,写memory,mmap,sigaction 等。
p1 是一个 task_struct, p2 也是一个 task_struct. linux内核的调度器只认得task_struck (不管你是进程还是线程), 对其进行调度。
p2 的task_struck 被创建出来后,也有一份自己的资源。但是这些资源会短暂的与p1 相同。
进程是区分资源的单位,你的资源是我的资源,那从概念上将就不叫进程。
其他资源都好分配,唯一比较难的是内存资源的重新分配。
非常简单的程序,但是可以充分说明 COW。
结果:10 - 20 - 10
COW 是严重依赖于CPU中的MMU。CPU如果没有 MMU,fork 是不能工作的。
在没有mmu的CPU中,不可能执行COW 的,所以只有vfork
vfork与fork相比的不同
P2没有自己的 task_struct, 也就是说P1 的内存资源 就是 P2的内存资源。
结果 10,20,20
vfork:
vfork 执行上述流程,P2也只是指向了P1的mm,那么将这个vfork 放大,其余的也全部clone,共同指向P1,那么就是线程的属性了。
phtread_create - Clone()
P1 P2 在内核中都是 task_struct. 都可以被调度。共享资源可调度,即线程。 这就是线程为什么也叫做轻量级进程
不需要太纠结线程和进程的区别。
4651 : TGID
4652, 4653 tid 内核中 task_struct 真正的pid
linux 总是白发人 送 黑发人。如果父进程在子进程推出前挂掉了。那么子进程应该怎么办?
p3 - init, p5 - subreaper
每一个孤儿都会找最近的火葬场
可以设置进程的属性,将其变为subreaper,会像1号进程那样收养孤儿进程。
linux的进程睡眠依靠等待队列,这样的机制类似与涉及模式中的订阅与发布。
睡眠,分两种
每一个进程都是创建出来的,那么第一个进程是谁创建的呢?
init 进程是被linux的 0 进程 创建出来的。开机创建。
父进程就是 0 号进程,但在pstree,是看不到0进程的。因为0进程创建子进程后,就退化成了idle进程。
idle进程是 linux内核里,特殊调度类。 所有进程都睡眠停止 ,则调度idle进程,进入到 wait for interrupte 等中断。此时 cpu及其省电,除非来一个中断,才能再次被唤醒。
唤醒后的任何进程,从调度的角度上说,都比idle进程地位高。idle是调度级别最最低的进程。
0 进程 一跑,则进入等中断。一旦其他进程被唤醒,就轮不到 0进程了。
所有进程都睡了,0就上来,则cpu需要进入省电模式
Q2: Linux进程的查看和调度分别使用什么命令
进程查看Linux中进程调度命令的命令是ps和top。
ps 命令用于查看当前正在运行Linux中进程调度命令的进程。
进程调度Linux中进程调度命令的命令有atLinux中进程调度命令,crontabLinux中进程调度命令,batch,kill。
Q3: Linux内核设计与实现 进程调度1: 基本概念
进程大致可分为I/O密集型和 CPU密集型。
调度依据 动态优先级 ,所谓动态优先级就是初始化时给出一个基础优先级,随后优先级可被调度程序动态的增减。高优先级进程也获得较长的时间片。I/O密集型通常被提升优先级,而CPU密集型则被降低。
Linux系统有两种独立的优先级范围。第一种是 Nice 值,返回是[-20, 19],默认值为0。数值越高优先级越低。Nice值影响了时间片的分配。如果进程拥有-20的Nice值,那么该进程将被分配理论最长的时间片。Nice值是所有Unix系统的标准优先级。
Linux的第二种优先级范围是 实时优先级 。这个优先级的值是可配置的。通常来说范围在[0,99]。 所有实时进程的优先级都高于普通进程 。(实时进程是什么?)
时间片是一个数值,决定了进程被抢占前可运行的时间。必须为进程分配合适长度的时间片。时间片太长会影响系统的交互性,时间片太短则会导致系统花费大量的时间用于进程的切换。同时还要兼顾I/O密集型和 CPU密集型进程的矛盾。因为I/O密集型无需长时间片,却渴望经常运行。而Linux却提供了相对较长的默认时间片——100毫秒。
注意到,进程不必在每次被调度运行后就花光自己所有的时间片。举例来说,如果一个进程拥有长达100毫秒的时间片,那么它可以在五个不同时段运行,每次花费20毫秒的时间片。这么做的好处是,一个拥有长时间片的进程(尽管它本身不需要如此长的时间片),可以尽可能长时间的保持运行状态。而不会过早地被丢入等待调度的队列中(稍后说到)。这就好比键盘驱动进程的实现方法。
当某进程的状态变为TASK_RUNNING的时候,内核会检查它的优先级是否高于当前正在执行的任务。如果是,调度进程就会使该进程抢占CPU。另外,如果一个进程的时间片变成0(意味着用尽了所有时间片,只能等待所有进程时间片为0才会重新分配),调度进程会被再次调用,选择一个新的进程运行。
个人猜测 :这里拿文字软件和音乐播放软件来举例。CPU在每条指令执行结束后检查中断引脚。如果检测到键盘的活动,就会引发中断而将键盘输入程序的状态设置为TASK_RUNNING,然后执行上述的检查程序。因为文字软件的优先级高于音乐播放软件,所以文字软件将立即得到执行,将键入字符输入在屏幕中。完成这一工作后,文字软件将设置自身状态或是其他方法,使得音乐播放软件可以抢占CPU?
Q4: 什么命令查看linux当前进程调度策略
输入下面Linux中进程调度命令的ps命令,显示所有运行中Linux中进程调度命令的进程: # ps aux | less 其中, -A:显示所有进程 a:显示终端中包括其它用户Linux中进程调度命令的所有进程 x:显示无控制终端的进程
Linux中进程调度命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux进程调度命令有哪些、Linux中进程调度命令的信息别忘了在本站进行查找喔。







