仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2051|回复: 19
打印 上一主题 下一主题

[学习教程] IOS编程:经由过程义务支解进步嵌进式体系的及时性仓酷云

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:51:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
init指的是所有前面是init的方法比如UIView的初始化方法是-(id)initWithFrame:(CGRect)aRect在Objc里有很多这样关于函数命名的约定弁言
跟着产业的飞速开展,人们对体系及时性的请求愈来愈高。盘算机手艺的前进客不雅上也为进一步进步及时性供应了大概。因而最近几年来,嵌进式及时体系的研讨已成为单片同使用范畴的又一年夜热门,实编排软件也愈来愈多,有贸易软件,也有收费的代码。但是影响体系及时性的要素良多,有硬件,也有软件的。这就决意了进步体系的及时性并非一件非常简单的事变,除利用高功能的CPU和高效的及时内核外,在及时体系使用的过程当中,还要分离详细情形举行详细剖析,充实使用CPU的效力,发掘内核的及时潜能。
1义务与嵌进式多义务及时体系
1.1义务与多义务
在嵌进式多义务及时体系时,义务是指一个程序分段。这个分段被操纵体系看成一个基础单位来调剂。
典范地,每一个义务都是一个无穷的轮回,并且在统一时候只能处于以下5种形态之一。这5种形态是休眠态、停当态、运转态、守候态和被中止态,如所示。
多义务体系的实行历程实践上就是一系列任在这5种形态中轮回活动、轮番被内核调剂的历程。多义务运转使CPU的使用率失掉最年夜的发扬,并使使用程序模块化。
1.2嵌进式多义务及时体系
RTOS实质上就是嵌进的及时内核,它卖力办理各个义务,大概说是为每上义务分派CPU工夫,而且卖力义务之间的通讯。及时内核可分为可褫夺型和分歧褫夺型两类。因而,依照所利用内核的分歧,嵌进式及时体系也可分为两类:利用不成褫夺型内核的嵌进式及时体系和利用可褫夺型内核的嵌进式及时体系。
2及时体系中的长义务成绩
2.1长义务的界说
在RTOS中,长义务就是指全部义务的实行工夫较长,超越了RTOS中别的某一个或某几个义务的及时请求容限,而对全部RTOS的及时性组成威逼的那些义务。
2.2长义务对RTOS的影响
当利用可褫夺型及时内核时,长义务因为实行的工夫较长,因此更简单被高优先级的义务打断;一旦高优先级的义务进进了停当态,以后义务的CPU利用权就被褫夺了,大概说义务被挂起了,谁人高优先级的义务立即失掉了CPU的把持权。如许会呈现两个成绩:一是长义务大概在一次实行的过程当中被频敏打断,长工夫得不到一次完全的实行;二是长义务被打断时,大概要保留大批的现场信息,其目标是为了包管在高优先级的义务实行完前往后,长义务能得以持续实行。但是,如许做要占用必定的体系资本,同时保留现场自己也是要占用CPU工夫的,因而,及时性也会下落。

当利用不成褫夺型及时内核时,长义务对RTOS的影响更加分明,由于在这类内核中,义务级呼应工夫取决于最长的义务实行工夫。这也就是说因为长义务的存在,义务级的呼应工夫要变长。其了局是CPU长工夫停止在长义务中,别的的义务得不到及时的呼应,乃至于基本得不到实行,体系的及时性必将要下落。

总之,不管是利用可褫夺型内核,仍是利用不成褫夺型内核,长义务城市对RTOS组成严峻的威逼。
3长义务成绩的办理
办理长义务成绩最无效的路子是举行义务支解。所谓义务支解指将影响体系及时性的长义务支解成多少个小义务。如许单个义务的实行工夫变短,体系的义务级呼应工夫变短,及时性进步。
3.1对RTOS的剖析与盘算
固然,长义务的支解必需分离体系中所利用的内核,和各义务对及时性的请求情形,举行需要的剖析盘算,才干包管支解的公道性和无效怀,详细的步骤以下:
①剖析体系共有几个义务,这些义务对及时性的请求有多高,求出各个义务所请求的最小实行频次f1,f2,f3……fn。
②盘算今朝各义务的实践实行工夫t1,t2,t3……tn。
③断定体系中的长义务
假如max(t1,t2,t3……tn)≤min(1/f1,1/f2,1/f3……1/fn)
则此体系中不存在长义务。
假如max(t1,t2,t3……tn)>min(1/f1,1/f2,1/f3……1/fn)
则存在长义务,并且实行工夫为max(t1,t2,t3……tn)的谁人义务就是要找的长义务。
④剖析此长义务是不是必要支解
剖析一下是甚么缘故原由招致实行的工夫太长,这个工夫还可以经由过程程序的优化来延长?假如能,则不必要举行义务支解;不然要对这个长义务举行支解。

3.2义务支解

经常使用的义务支解的办法有以下两种:
①将长义务按功效分为多少个小模块,每个模块组成一个小义务,每一个小义务实行一个绝对自力的功效,且要包管实行工夫t<min(1/f1,1/f2,1/f3……1/fn)。各个义务被内核按次挪用,合起来完成全部义务的功效。
②有的长义务对照特别,比方键盘义务和静态LED显现义务,很难依照办法1所说的把它分红多少个功效绝对自力的小模块。这时候,通常为依照便利保留现场信息准绳,强迫将其支解成多少个小义务,每一个义务在min(1/f1,1/f2,1/f3……1/fn)工夫内自动保留现场信息、保持CPU的把持权,比及再次被内核调剂时持续实行。
这类支解办法绝对庞大,各义务之间界线不是很分明,看似未经支解,但实践上它的确是由屡次义务中止来完成。上面就以这类支解办法为例详细申明。
4实例剖析
4.1体系先容
在此,体系的硬件基本是基于MC68HC908GP32单片机体系的,用其一般I/O口作为矩阵式键盘的输出输入引脚;软件基本是在MC68HC908GP32中运转Motorola公司的JoanneSantangeli编写的基于工夫片的不成褫夺的及时内核,如所示。

此内核次要是使用微把持器外部的工夫模块发生恒定的及时中止,将CPU的运转工夫分红一个个工夫片。内核的义务调剂事情都是在工夫片的入手下手阶段完成的,而每一个义务都必需在单个工夫片内完成。

在这个内核中,每0.5ms产生1次时钟中止,而每10次时钟中止构成了1个工夫片(5ms)。义务1的优先级最高,每2个工夫片(10ms)会实行1次,义务2每4个工夫片(20ms)实行1次,优先级最低的义务6则每64个工夫片(320ms)会实行1次。
4.2体系中的键盘义务成绩
在单片机体系中,键盘次要用于输出数据、代码和命令,因而体系必需轮回一直地扫描扫描;一是有键波按下,CPU当即做出呼应。键盘义务子程序也是依据这个请求而计划的。一样平常有两种处置体例:一是中止体例,二是查询体例。从有键按下时入手下手,到按键开释并转响应子程序而停止。该义务被内核调剂的情形如所示。
中,&Delta;t是人手按键的工夫,通常是100~300ms。为了能申明成绩,这里取100ms。
令t1"-t1=&Delta;t1,t2"-t2=&Delta;t2
则一次键盘义务的实行工夫
&Delta;t"=t"2-t"1=t2+(t"2-t2)-[t1+(t"1-t1)]=
t2+&Delta;t2-t1-&Delta;t1=
t2-t1+(&Delta;t2+&Delta;t1)=
&Delta;t+(&Delta;t2-&Delta;t1)
由可知
&Delta;t1&le;tms&Delta;t2&le;5ms
实践上,因为两次义务实行的情形不完整不异,&Delta;t1与&Delta;t2大概会有相称于几个指令周期的工夫差别,但也只是&mu;s级的偏差。并且,这里是以工夫片的情势来盘算的,以是仍然能够以为
&Delta;t2-&Delta;t1=0
因此有
&Delta;t"=&Delta;t+(&Delta;t2-&Delta;t1)=&Delta;t=100ms(20个工夫片)
也就是说,在这20个时钟片内只实行1次键盘义务,年夜部分的工夫都在空守候。在此时代,体系中会有20-1=19次别的义务的实行被错过,中虚线所示就是在此100ms时代被错过实行的19个义务。明显,这在年夜多半多义务体系中都是不同意的。
因而,在这个多义务及时体系中,键盘义务是个典范的长义务,要使别的19次义务中止都有被使用的时机,必需对该键盘义务举行支解。
4.3键盘义务的支解
键盘支解的办法是将一次键盘义务分红多个小义务,经由过程屡次义务中止来完成。我们将其放在义务4中(80ms实行1次)。如许有ttask4&le;ttask&le;2ttask4,便可以包管键盘义务完全牢靠地实行,又进步了CPU的效力。是支解后的键盘义务的实行历程。

从能够看出,1次完全的键盘义务是由2~3次义务中止来完成的。情形a中,每次义务中止产生在ta1时候,在接上去的一个工夫片(5ms)内,检测到有键按下,挪用查询值义务;第一次义务中止产生在ta2时候,在接上去的一个工夫片(5ms)内,检测到按键已开释,跳转并实行响应键处置程序。

情形b中,第二次义务中止时(tb2时候),键还没有松开,因而实践上甚么也不做;第三次中止(tb3时候)才跳到与键值对应的子程序。
经由过程如许的支解,每一个子义务都能够在5ms内完成。假如体系中另有年夜于5ms的长义务的话,可按此法持续举行支解;假如没有的话,体系义务级呼应工夫必定小于5ms。如许,此体系的及时性年夜年夜进步,由100ms进步到5ms。本刊收集增补版(http://www.dpj.com.cn)中,先容了此义务改善后的部分源程序。
结语
经由过程义务支解,能够明显地进步多义务体系的及时性。本文改善后的源程序已在基于MC68HC908GP32的温室把持器中乐成地运转过。除此之外,还乐成地对LED和SCI义务举行了支解。改善后,除及时性年夜年夜进步外,CPU的实行效力也有明显进步。

继承自相应的不可变类比如NSMutableArray继承自NSArray他们都添加了可以改变对象内容的方法比如-(void)addObject:(id)anObject添加对象-(void)removeObject:(id)anObject删除对象上面只是一个大概的总结
透明 该用户已被删除
沙发
发表于 2015-1-19 17:32:20 | 只看该作者
AD: iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。
乐观 该用户已被删除
板凳
发表于 2015-1-24 15:06:44 | 只看该作者
培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。
灵魂腐蚀 该用户已被删除
地板
发表于 2015-1-29 16:28:31 | 只看该作者
好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。
蒙在股里 该用户已被删除
5#
发表于 2015-2-1 10:06:43 | 只看该作者
从C语言入门,因为IOS开发用的是OC语言,是在C基础上的,不过也跟C不是很搭界,你可以直接学习OC语言也可以,
海妖 该用户已被删除
6#
发表于 2015-2-2 21:54:17 | 只看该作者
才在自己的Windows电脑上安装配置成功了一个完美的Mac OS X Lion(10.7.4)系统,而且下载了Xcode4.5的最新版本。虽然不能实机调试,但是作为iOS开发学习已经非常完美了。
活着的死人 该用户已被删除
7#
发表于 2015-2-8 07:50:28 | 只看该作者
同很多iOS开发者一样,我也是通过培训进入到iOS开发这个行业,开始没有打算培训,只准备自己学习一些计算机编程相关的知识,毕业时找一份编程相关工作(本人是信息与计算科学这个专业,是数学系)。
飘灵儿 该用户已被删除
8#
发表于 2015-2-13 16:59:14 | 只看该作者
重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。
爱飞 该用户已被删除
9#
发表于 2015-3-3 23:50:01 | 只看该作者
以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。
因胸联盟 该用户已被删除
10#
发表于 2015-3-11 14:00:50 | 只看该作者
特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地
精灵巫婆 该用户已被删除
11#
发表于 2015-3-18 16:38:43 | 只看该作者
首先是基础,在汉昌的课程非常全面。从object—c到最后的毕业项目,基本上方方面面都涉及到了,我是一名非计算机专业的学生,起初学习还有点吃力,因为基础知识薄弱。经常像听天书
12#
发表于 2015-3-18 21:03:27 | 只看该作者
看完这个你就可以有多种选择来踏入做应用的阶段
飘飘悠悠 该用户已被删除
13#
发表于 2015-3-24 14:10:23 | 只看该作者
培训的时候很痛苦,每天要待12个小时,上午讲课,下午和晚自习解决作业,看文档,学习的时候感觉就是资料太少,而且看着资料也不明所以,非常痛苦,
柔情似水 该用户已被删除
14#
发表于 2015-3-27 08:10:07 | 只看该作者
在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解
老尸 该用户已被删除
15#
发表于 2015-4-7 23:48:17 | 只看该作者
特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地
山那边是海 该用户已被删除
16#
发表于 2015-4-14 01:33:43 | 只看该作者
同很多iOS开发者一样,我也是通过培训进入到iOS开发这个行业,开始没有打算培训,只准备自己学习一些计算机编程相关的知识,毕业时找一份编程相关工作(本人是信息与计算科学这个专业,是数学系)。
小女巫 该用户已被删除
17#
发表于 2015-4-20 10:17:03 | 只看该作者
要学会通过各种方法将面前的事情变成自己感兴趣的,那专研起来就不会是无聊和折磨了。
愤怒的大鸟 该用户已被删除
18#
发表于 2015-4-28 09:15:37 | 只看该作者
同很多iOS开发者一样,我也是通过培训进入到iOS开发这个行业,开始没有打算培训,只准备自己学习一些计算机编程相关的知识,毕业时找一份编程相关工作(本人是信息与计算科学这个专业,是数学系)。
只想知道 该用户已被删除
19#
发表于 2015-5-5 02:04:03 | 只看该作者
iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。
谁可相欹 该用户已被删除
20#
发表于 2015-5-6 19:10:33 | 只看该作者
iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 19:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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