我已经为微控制器编写了许多C程序,但从来没有一个在像
linux这样的操作系统上运行的程序. linux如何确定为我的应用程序提供多少处理时间?当我有空闲时间告诉操作系统去做其他事情并稍后再回到我身边以便其他进程也有时间运行时,我需要做些什么吗?或者OS是否只是自动执行此操作?
编辑:添加更多详细信息@H_403_3@我的c程序有一个任务调度程序.有些任务每100毫秒运行一些,有些任务每50毫秒运行一次,依此类推.在我的主程序循环中,我调用ProcessTasks来检查是否有任何任务准备好运行,如果没有准备就绪它会调用空闲函数.空闲功能除了它之外什么都不做,所以我可以用Ocope窥镜切换GPIO引脚并监视空闲时间…或者如果我愿意的话.所以也许我应该在这个空闲函数中调用sched_yield()???
解决方法
How does linux decide how much processing time to give my application
每个调度程序都有自己的想法.有些人奖励你没有用完你的份额,有些掷骰子试图预测你会做什么等等.在我看来你可以认为它是魔术.在我们进入循环之后,调度程序神奇地决定我们的时间到了等等.
Is there something I need to do when I have idle time to tell the OS@H_403_3@ to go do something else
你可能会打电话给sched_yield
.我从来没有打电话给它,也不知道为什么会有人想要的原因.该手册确实说它可以改善性能.
Or does the OS just do that automatically
它肯定会.这就是为什么他们称之为“preemptive”多任务处理.