鱼C论坛

 找回密码
 立即注册
查看: 2997|回复: 10

一个关于while(1)的问题?

[复制链接]
发表于 2015-6-4 10:48:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 醉拳八哥 于 2015-6-8 17:29 编辑

    在51单片机编程中总是在main中用到while(1),是不是可以这么理解:单片机执行单一的任务,所以不停地循环执行同一个任务?如果换成arm芯片,是不是在没有ucos,Linux等嵌入式操作系统的情况下,芯片不具备多任务能力,所以主程序也要用到while(1)?如果有操作系统的话,是不是由操作系统来进行任务调配,不需要while(1)了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-4 12:55:46 | 显示全部楼层
不是的,当你的程序逻辑需要不断实现循环的话就用 while(1),比如你做一个游戏应用,那么游戏在进行的时候就永远在一个大循环中不断进行,例如不断有敌人出现啦......当你的男一号挂掉之后,就可以 break 跳出循环,结束游戏。

好像说跑题了,while(1) 只管你的程序逻辑,不需要考虑什么多任务系统,操作系统的作用就是隔绝应用层面和内核层面的逻辑。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-4 13:46:10 | 显示全部楼层
哇塞,鱼哥现身了,激动:shy::shy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-4 13:59:47 | 显示全部楼层
小甲鱼 发表于 2015-6-4 12:55
不是的,当你的程序逻辑需要不断实现循环的话就用 while(1),比如你做一个游戏应用,那么游戏在进行的时候 ...

鱼哥,谢谢您百忙之中的回复,“操作系统的作用就是隔绝应用层面和内核层面的逻辑”是不是可以这么理解:
应用层就行一个客户,操作体系统就像京东商城,底层就像各个工厂和物流还有仓储? 我某个时间需要用的一台电脑,我只需要按照京东商城的规则进行下订单支付(类似于应用层和操作系统之间的编程规约),然后京东商城在固定时间内将电脑送到我的手中(想要的运行数据),至于货物怎么下订单,怎么生产,怎么检验,怎么出厂,怎么运输,怎么交到我手中,全部由京东商城一手操(操作系统对访问底层寄存器,存储空间,外设等)?
   写着写着,我感觉自己的逻辑优点混乱,感觉倒像是在描述c语言 ,编译器,和底层机器码之间的关系,是不是描述的不是很恰当?{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-5 05:30:06 | 显示全部楼层
醉拳八哥 发表于 2015-6-4 13:59
鱼哥,谢谢您百忙之中的回复,“操作系统的作用就是隔绝应用层面和内核层面的逻辑”是不是可以这么理解: ...

其实我昨天下午午睡没睡醒,回答有点让你更糊涂了。

简单霸道的解释下,你所说的 while(1) 仅跟程序逻辑有关系,跟操作系统没有丝毫关系。

PS:多任务的操作系统也会让每个应用程序认为是“独享”整个系统资源的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-5 11:21:03 | 显示全部楼层
小甲鱼 发表于 2015-6-4 12:55
不是的,当你的程序逻辑需要不断实现循环的话就用 while(1),比如你做一个游戏应用,那么游戏在进行的时候 ...

鱼哥,小弟爱死你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-5 19:38:19 | 显示全部楼层
      像单片机或者ARM不带操作系统的时候是所谓的“裸编”方式。这时候没有了操作系统,一切的管理必须有你手动完成,所以必须用类似while(1){}的手段来防止程序跑飞;而ARM等带上操作系统后,操作系统会对程序(准确说是进程中的线程进行调度),所以可以不用while(1),或者说多个程序都含有whie(1)它们也能“并行执行”。
      事实上,在单片机裸编中,你完全可以把你的最外层while(1){}就看成操作系统。只不过这是一个很“简陋”的操作系统,很多任务调度等工作要由你手工完成。此时,单片机当然具有多任务的能力了,关键是看你怎么实现代码的(操作系统也是人写的,人家的代码可以多任务,你写的为什么就不可以?)。单片机软件编程在熟悉各个常用器件后,主要的学习课题就是多任务编程;用单片机来控制一个中规模的系统协调工作。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-6-5 21:36:14 | 显示全部楼层
仰望天上的光 发表于 2015-6-5 19:38
像单片机或者ARM不带操作系统的时候是所谓的“裸编”方式。这时候没有了操作系统,一切的管理必须有 ...

这个回答很牛逼啊,鱼哥怎么不说话了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-7 23:09:58 | 显示全部楼层
没鱼币啊~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-8 07:56:43 | 显示全部楼层
仰望天上的光 发表于 2015-6-5 19:38
像单片机或者ARM不带操作系统的时候是所谓的“裸编”方式。这时候没有了操作系统,一切的管理必须有 ...

版主的回复真的很给力,确实回答的我的心坎里面去了,是我想问的!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-8 09:51:36 | 显示全部楼层
好厉害的样子:call:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 01:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表