- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
μCOS-II笔记
μCOS-II常用概念理解
μCOS-II系统创建-标准-常用
句柄
首先我人为,句柄不是指针(哪怕说是指针的指针,要知道指针包含了太多的信息),若说句柄含有指针的某些意思(或在某种模式情况下就是指针)似乎更好; 而把句柄当做一个人的名字,并可以通过名字(句柄),实现对句子的引用和访问,感觉这种比喻好象贴近,但问题是可能有许多人叫同一个名字,但句柄所以有意义正因为它具有唯一性,所以这种比喻也有问题,如果换个说法,说句柄是表示你的进程与外界的i/o连接,把它当作是一个连接的名字是不是更恰当些? 至于文件句柄么,记得曾有资料给出这样的解释(大意):它类似于门把手,有它你可找到“门”这个对象,就可以控制对象门了,但觉得把它类比于门把手似乎并不贴切,感觉象是直译句柄这个词的词意,我们知道,其实文件句柄是一个十六位长度的二进制代码(Windows95后为32位无符号整数),代表一个已被打开文件的通道号,借助于这个句柄,你的应用程序即可使用这个相应的句柄对文件进行随意存取操作,说白了文件句柄其实是一串代表着特殊含义的号码; 当然其实系统是用句柄与一些资源联系起来的,当由系统管理,动态分配给你应用程序的某些资源的代
句柄和指针的区别
打个比方: 你朋友给你写信,他直接写你名字邮局是找不到你的,他就写出你家的门牌号,邮局通过门牌就能找到你了,那么门牌就是指针,而你本身就是指针指向的内存值. 你由于去砸110车窗户被关进局子(打比方呵呵,别打我~),和你一起的有老外,有外星人,大家名字都很长,很难记,监狱长为了方便,给每个犯人一个标号,比如你是0001,而另一个火星人是0002,那么以后监狱长碰到0001就知道是你了,不会去找火星人麻烦的.那么这个编号就是句柄,而你就是0001所代表的资源. 一个是指向,一个是代表,2个有很大的区别.代表的话,我用0001是代表,用abcdef还是代表,而门牌,就要按照规矩来,你不能用0003来代表XX街XX号的门牌 就是这个意思呵呵,希望我的比方对LZ有帮助
Z::就是将线程的物理地址映射为唯一的句柄,知道句柄后,可以在某一固定的列表里查到到与之对应的线程物理地址
与句柄相关的函数
得到当前线程句柄: GetCurrentThread(void)得到当前线程ID: GetCurrentThreadId(void)根据句柄得到线程ID: GetThreadId根据窗口句柄得到此窗口所在线程的ID(同时得到进程的ID): GetWindowThreadProcessId根据ID得到线程句柄: OpenThread(unsigned long)挂起用SuspendThread唤醒用ResumeThread(强制)结束TerminateThread
主线程切换上下文
事件的流水账记录如下:
(1)任务A呼叫SVC来请求任务切换(例如,等待某些工作完成)
(2)OS接收到请求,做好上下文切换的准备,并且悬起一个PendSV异常。
(3)当CPU退出SVC后,它立即进入PendSV,从而执行上下文切换。
(4)当PendSV执行完毕后,将返回到任务B,同时进入线程模式。
(5)发生了一个中断,并且中断服务程序开始执行
(6)在ISR执行过程中,发生SysTick异常,并且抢占了该ISR。
(7)OS执行必要的操作,然后悬起PendSV异常以作好上下文切换的准备。
(8)当SysTick退出后,回到先前被抢占的ISR中,ISR继续执行
(9)ISR执行完毕并退出后,PendSV服务例程开始执行,并且在里面执行上下文切换(10)当PendSV执行完毕后,回到任务A,同时系统再次进入线程模式
时间调度
假如:有两个任务:任务1的优先级高于任务2任务1void Task1(void *pdata){??pdata = pdata;???// 避免编译警告??while(1)??{????GPIO_SetBits(GPIOF, GPIO_Pin_6);????OSTimeDly(100);???????????}}任务2void Task2(void *pdata){??pdata = pdata;???// 避免编译警告??while(1)??{????GPIO_ResetBits(GPIOF, GPIO_Pin_6);????OSTimeDly(80);???????????????????}}开始执行任务1 当执行到???OSTimeDly(100);??时,将任务挂起,然后每个OSTimeDly进行任务调度,查找当前最高优先级的任务,即任务2,那么当执行到任务2的 OSTimeDly(80);??时,此时任务一的OSTimeDly(100); 和OS
您可能关注的文档
- zijde2-2_民主决策:作出最佳选择.ppt
- Y M L 投影仪 操作手册.doc
- ZP16090220第一炼铁厂(炼铁事业部)等燃料第一烧结原料高线压力表.doc
- z c s(一年级上人教版新教材2016).ppt
- XAFS应用介绍.ppt
- z地下森林8373.ppt
- [BBG]2017版高考语文(全国复习)(讲义):散文阅读+专题一读懂散文.doc
- zh-ch-sh-r(一年级上人教版新教材2016).ppt
- _监狱企业发展问题思考.doc
- [中学联盟]福建省莆田市第八中学岳麓版高中历史必修一课件:第12课 鸦片战争(共68张PPT).ppt
- 中考历史论述题专题复习课件.pptx
- 2022-2023学年浙江省杭州市钱江城东片七年级(上)期中道德与法治试卷解析.pdf
- 幼儿良好生活习惯培养的探究9200字.pdf
- 语文与其他学科协同教学的策略与方法 .pdf
- 第七单元《红楼梦》同步训练(含答案)统编版高中语文必修下册 .docx
- 慢性胰腺炎患者行全胰腺切除术联合胰岛自体移植的研究进展 .pdf
- 校园安全评估与整改机制 .pdf
- 2024年“中银杯”安徽省职业院校技能大赛(高职组)轨道交通运营管理综合应用赛项竞赛规程 .docx
- 2024人教版九年级英语上册期末正确形式填空专项复习练习题 .pdf
- 良性阵发性位置性眩晕的诊疗2024(全文) .docx
文档评论(0)