Chinaunix

标题: 进程调度 [打印本页]

作者: liyunchongs    时间: 2012-04-25 10:19
标题: 进程调度
想问一下    用户程序可以控制进程的切换吗
比如说我写了一个程序,在这个程序中可以调用进程1(init进程,肯定已经启动)吗
也就说是用户程序可以让cpu切换到指定的进程执行吗
作者: MagicBoy2010    时间: 2012-04-25 11:51
想问一下    用户程序可以控制进程的切换吗
比如说我写了一个程序,在这个程序中可以调用进程1(init进程,肯定已经启动)吗
也就说是用户程序可以让cpu切换到指定的进程执行吗

=============================
理论上控制进程切换(调度)只能由内核来完成,除非内核提供一些API(但是显然内核不会这样做)。不明白你说的你的程序要调用进程1是什么意思?
作者: GFree_Wind    时间: 2012-04-25 12:34
二楼的老哥,已经说了。进程调度是内核干的事情。
应用层不能越俎代庖的。。。
作者: 瀚海书香    时间: 2012-04-25 13:28
回复 1# liyunchongs
用户程序可以让cpu切换到指定的进程执行

这个工作通用的内核是无法实现的。如果真的需要这个功能,需要自己改内核了。

   
作者: accessory_cu    时间: 2012-04-25 13:32
不行。
不过看LZ的要求,有点象IPC。你可以自己写2个进程之间通信的接口,然后等着另外一个进程啥时被调度吧。如果在多核上面,系统不忙的话,被调度一下还是很快的。
作者: linuxfellow    时间: 2012-04-25 14:01
回复 3# GFree_Wind

应用程序可以主动放弃运行
   
作者: testh    时间: 2012-04-25 14:53
这个有点像RTOS,lz可以参考下实时操作系统相关部分
作者: GFree_Wind    时间: 2012-04-25 16:39
回复 6# linuxfellow

这个应该可以。
作者: amarant    时间: 2012-04-25 19:05
应用程序只能通过系统调用改变进程状态,有一个yield是出让处理器
作者: jzwxh77    时间: 2012-04-25 19:59
一种方法是在父进程中,直接在需要的时间运行子进程;
一种是两个进程都开始都运行,其中一个运行后,马上睡眠,等待另一个进程在需要的时间给他一个激活信号,使他开始运行。
这些两种方法都不涉及内核。在用户空间就能实现。
)
作者: whxlovehy    时间: 2012-04-25 23:21
设置将被调度的进程的调度策略或实时优先级,下次调度的时候就会运行指定进程吧!
作者: MagicBoy2010    时间: 2012-04-26 11:34
whxlovehy 发表于 2012-04-25 23:21
设置将被调度的进程的调度策略或实时优先级,下次调度的时候就会运行指定进程吧!


用户空间只能sleep或者改变一些调度参数,但调度的最终决策会有内核来做。所以下次调度是否运行指定进程,答案是不一定,也许会也许不会。
作者: whxlovehy    时间: 2012-04-26 11:44
回复 12# MagicBoy2010


    我是这么想的,具体我也不确定!不过要是可以写代码验证一下就好了!
    有没有显示当前各个cpu上运行的进程的方法啊?
作者: MagicBoy2010    时间: 2012-04-26 11:49
whxlovehy 发表于 2012-04-26 11:44
回复 12# MagicBoy2010

内核空间很容易做,但是user space不是很清楚
作者: 灌水菜鸟    时间: 2012-04-28 14:45
部分可以,比如,啥也不干就肯定是idle了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2