免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-08-02 10:57 |只看该作者 |倒序浏览
之前在LPC3250裸机上实现的嵌入式程序,现在要上Linux操作系统,我想问的是裸机程序已经模拟的任务调度(自己定义了任务优先级、任务队列等等)在Linux系统中怎样处理, 一秒钟分成50份,每份20ms,在这20ms时间内处理任务,如果20ms没用完还可以处理其他

任务,到20ms就转去处理下一个任务,这样一种任务调度。
在Linux中任务调度怎样处理,是不是用多线程来处理,还是定时器什么的。之前的任务调度是否可以交给操作系统来调度,如果可以这一步怎么来做?
刚刚接触LINUX,高手们帮忙看看,提供一些思路?

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

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

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

论坛徽章:
0
3 [报告]
发表于 2011-08-02 13:29 |只看该作者
回复 2# nazily2150


    硬件操作都通过设备驱动,驱动程序涉及I2C,UART,定时器,什么的,象I2C,UART这些都是私有协议,驱动搞好以后,加载到内核,应用程序操作硬件不也是和文件操作一样,open,什么的,用这些驱动(/dev下),那些任务调度通过多线程或者什么实现,是不是移植到Linux系统中,不用考虑裸机下任务调度的问题,还是比裸机任务调度要方便。--

论坛徽章:
0
4 [报告]
发表于 2011-08-02 15:34 |只看该作者
回复 2# nazily2150


我现在的任务调度情况是这样的:
有20个任务需要在1s内按顺序执行,并且每两个任务之间有空闲时间来接收UART的数据并处理任务,这样一种任务调度。
在Linux中任务调度怎样处理,是不是用多线程来处理,还是定时器什么的。

论坛徽章:
0
5 [报告]
发表于 2011-08-02 16:51 |只看该作者
回复 4# xingfuhaitun


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

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

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

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

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

论坛徽章:
0
6 [报告]
发表于 2011-08-02 17:21 |只看该作者
回复 5# nazily2150


   1)这20个任务在1s内必须且只能执行一次,并且是按顺序执行的。如在1s内先执行了任务1、才能执行任务2。。。。
  2)当让每个任务不会超过20ms的执行时间;
  3)在每两个任务之间都需要有时间来处理串口的数据。

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

论坛徽章:
0
8 [报告]
发表于 2011-08-02 19:14 |只看该作者
回复 7# nazily2150


    谢谢你呀。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP