免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4426 | 回复: 2
打印 上一主题 下一主题

[操作系统] (求助)Linux下任务调度 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2011-08-02 13:20 |显示全部楼层
你把你的裸机程序当作是单个程序来看,如果涉及到硬件操作那就相对复杂好多了(估计你要问的是这个吧?),LINUX不太允许你直接在应用层操作底层的东西。
LINUX就把你这个单个程序进行执行。

像说所说的这种分时间片的任务调度,如果单单是不涉及硬件,完全可以把它写在单个应用程序上,然后进行编译运行。
如果涉及到一些硬件的操作,不妨通过加载一层底层的驱动,把相关的寄存器remap到应用层上,这样用户程序就可以操作了。这是其中一个思路吧。

这是裸机和LINUX的最大区别之一。

论坛徽章:
0
2 [报告]
发表于 2011-08-02 16:51 |显示全部楼层
回复 4# xingfuhaitun


你这样一种情况就把你单片机的整个任务调度写成一个多线程,一旦写成这个样子(单个程序,其实就是单个程序),LINUX就会对它进行调度。

而LINUX中的调度和你改写成单程序后的调度是不同的两个东西,LINUX的调度是在程序与程序之间,而你改写后的是一个多线程的东西,是线程和线程的切换,由LINUX进行管理,不需要你去考虑。而你所说的有足够时间去等待一些数据,这可以通过NEW几个线程,各个线程分配各自的功能模块(相当于是你裸机下的任务),它们之间是通过相关的信号量来进行通讯的。这样完全可以改写。

而且改写的时候不需要考虑切换的东西,只需要考虑上层的东西。例如:线程1:等待N个数据,线程2:从硬件接收N个数据。

这时,线程1如果没有接收到数据的话,则由LINUX自动管理去休眠
线程2从硬件收到N个数据,由LINUX发送给正在等待的线程

这就是你裸机下所做的任务了吧?

论坛徽章:
0
3 [报告]
发表于 2011-08-02 18:40 |显示全部楼层
1)第一个问题归结于时钟(可软可硬)和进程之间的通讯
2)不会超过多少时间看你写的怎么样吧(你不要for()100000000000000000000这么多次就可以了),还有中断不会多就1000%都可以
3)这个不用担心,操作系统执行完你所说的任务,就不管,肯定有时间去做其它的事情。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP