Ch7 uC/OS-II分析(2) 宋健建 南京大学软件学院 2006/11.

Slides:



Advertisements
Similar presentations
100 學年度 勞委會就業學程 國際企業管理學系-物業管理學程介紹. 何謂物業管理? 以台灣物業管理學會 所述,物業管理區分為 「物」、「業」、「人」三區塊。台灣物業管理學會 「物」係指傳統的建物設備、設施 「業」為不動產經營的資產管理 「人」則以生活服務、商業服務為主,並以人為 本位連結物與業,形成今日物業管理三足鼎立新.
Advertisements

高级服务器设计和实现 1 —— 基础与进阶 余锋
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
Linux 系统. 操作系统发展需求 1 没有操作系统 2 简单批处理操作系统 3 多道程序设计的批处理 4 多道程序设计的分时操作系统 5 多处理机并行系统 6 网络操作系统 7 分布式操作系统.
行政命令.
共产党领导的多党合作和政治协商制度: 中国特色的政党制度.
普通高中新课程实验 若干问题 广东省教育厅教研室 吴惟粤 2004年4月29日 广州.
前言 採購程序每一環節所涉及人員,無論是訂定招標文件、招標、審標、決標、訂約、履約管理、驗收及爭議處理,如缺乏品德操守,有可能降低採購效率與品質,影響採購目標之達成,甚有違法圖利情事發生,致阻礙政府政策之推動並損害公共利益。因此,較之一般公務人員,採購人員更需遵循較高標準之道德規範。 主講人:林中財.
欢迎新同学.
2015年新课标高考历史试题分析 暨考试方向研判 李树全 西安市第八十九中学.
课题四 以天池、博斯腾湖 为重点的风景旅游区
“健康的基督徒” 入门.
南台科技大學電子工程系 指導老師:楊榮林 老師 學生姓名:蔡博涵 巨物索餌感測裝置(第II版)
2015年汕头一模质量分析会 34(1)题分析 濠江区河浦中学 詹金锋 34(2)题分析 汕头市实验学校 董友军
士師逐個捉(II) 石建華牧師 24/07/2016.
宣讲数学课程标准 增强课程改革意识.
班級經營之再思 香港班級經營學會 黃鳳意
佛法原典研習 五陰誦 (II) 2007/5/13 整理此報告的方式 : 主要節錄 果煜法師說法之重點.
2014年度合肥市中小学生学业质量 绿色指标测试相关情况说明及考务工作要求
普通高中课改方案介绍.
Memory Pool ACM Yanqing Peng.
曾一 陈策 重庆大学计算机学院基础科学系 重庆
高三物理后期复习策略 秦皇岛市实验中学 刘苏祥.
101學年度第二學期 呼吸治療學系 師生座談會 102年5月15日.
压缩语段 II.
高校人才培养与学科建设的一些探索 徐哲峰 西北大学数学学院 2015年6月30日.
实用操作系统概念 张惠娟 副教授 1.
營建自動化 -營建管理資訊化 授課老師:劉俊杰 副教授 中華民國89年9月27日.
新课程背景下 高中教务主任工作的思考 南京市教学研究室 陆静.
精彩纷呈的 桂剧和彩调 ——桂林地方戏曲赏析.
網路填報系統學生異動轉銜操作及科技化評量6月 成長測驗施測說明
機械工程學系課程地圖 先進材料與精密製造組 設計分析組 校訂共同必修課程 機械系訂 必修課程 組訂 必修課程 畢業專題 工學院訂必修課程
生命轉化 (II) 天父的心 石建華牧師 13/09/2015.
全国高考语文试卷解析 与备考建议 张彬福.
Oracle数据库 Oracle 子程序.
嵌入式系统概论 —基于32位微处理器与实时操作系统 第五讲实时操作系统C/OS-Ⅱ分析 北京航空航天大学 机器人研究所 魏洪兴.
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
Operating System Concepts 作業系統原理 Chapter 3 行程觀念 (Process Concept)
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
嵌入式系统课程简介 宋健建 南京大学软件学院 2004/02/10.
嵌入式系统及应用.
Chapter 3 行程觀念 (Process Concept)
嵌入式系统及应用.
UCOS -II的使用 撰写:李湧 2006-06-29.
辅导课程六.
UcOS-II内存管理.
《手把手教你学STM32-UCOS》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
临界区软件互斥软件实现算法.
进程操作.
嵌入式系统 —嵌入式实时操作系统C/OS-Ⅱ分析 2006年5月.
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
临界区软件互斥软件实现算法 主讲教师:夏莹杰
ΜC/OSⅡ中的任务调度 Group01小组 柴永锋 李逢春 苗 冬.
組合語言和程式範例.
《手把手教你学STM32-UCOS》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
3. µC/OS-II内核 2019/4/11.
第十二章 財務報表的窗飾與舞弊.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
UcOS-II任务之间的通讯与同步.
Ch6. uC/OS-II分析 宋健建 南京大学软件学院.
信号量(Semaphore).
《手把手教你学STM32-UCOS》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
Visual Basic程序设计 第13章 访问数据库
临界区问题的硬件指令解决方案 (Synchronization Hardware)
Google的云计算 分布式锁服务Chubby.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
《手把手教你学STM32-UCOS》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 SEMAPHORE 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
Presentation transcript:

Ch7 uC/OS-II分析(2) 宋健建 南京大学软件学院 2006/11

Content 任务间通信 内存管理

任务间通信的机制 POSIX IPC uC/OS-II

1、两个实体之间,不管是进程还是线程,要通信就必须有共享资源。 2、在象uC/OS-II这样全部代码都在同一个空间中运行的系统,这似乎易如反掌,因为每个全局量都是所有任务(以及中断服务程序)能访问的共享资源。 发送端、接收端。发送端不会阻塞,接收端可能因受阻要进入等待态。这样的设计简化了任务间通信机制的实现。 发送端:任务、中断服务程序 接收端:任务(注意:接收端不能是ISR。Why?提问)

ECB OS_EVENT (ucos-ii.h) #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0) typedef struct { INT8U OSEventType; INT8U OSEventGrp; INT16U OSEventCnt; void *OSEventPtr; INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; } OS_EVENT; #endif 该结构两个主要部分: 1、事件本身的定义; 2、等待该事件的任务的列表

uC/OS-II IPC类型 Event Types (ucos-ii.h) #define OS_EVENT_TYPE_UNUSED 0 #define OS_EVENT_TYPE_MBOX 1 #define OS_EVENT_TYPE_Q 2 #define OS_EVENT_TYPE_SEM 3 #define OS_EVENT_TYPE_MUTEX 4 #define OS_EVENT_TYPE_FLAG 5

ECB的操作 数据结构 操作 空余事件控制块列表 初始化一个事件控制块 使一个任务进入就绪态 使一个任务(当前任务)进入等待某事件发生的状态 OSEventFreeList (ucos-ii.h) OSInit() 操作 初始化一个事件控制块 OS_EventWaitListInit() (OS_Core.c) 使一个任务进入就绪态 OS_EventTaskRdy() (OS_Core.c) 使一个任务(当前任务)进入等待某事件发生的状态 OS_EventTaskWait() (OS_Core.c) 由于等待超时而将任务置为就绪态 OS_EventTO() (OS_Core.c) 针对每一项操作可以问很多问题,让学生思考该项操作怎么实现。

Semaphore 创建一个信号量 删除一个信号量 等待一个信号量 发出一个信号量 无等待地请求一个信号量 OSSemCreate() (OS_sem.c) 删除一个信号量 OSSemDel() 等待一个信号量 OSSemPend() 发出一个信号量 OSSemPost() 无等待地请求一个信号量 OSSemAccept()

MBox OSMboxCreate() (os_mbox.c) OSMboxPost() OSMboxPend() Addition: OSMboxAccept() OSMboxQuery()

Message Queue (Queue) 数据结构OS_Q (os_q.c) OSQCreate() OSQPost() OSQPend()

Mutex Semaphore的“优先级倒转”问题 Priority Inheritance Priority (PIP) OSMutexCreate (os_mutex.c) PIP作为参数传入 OSMutexPend OSMutexPost

Event Flags 功能最强的同步机制 进程同步 逻辑或同步 逻辑与同步 UNIX中的select系统调用 对多个共享资源的互斥访问,为预防死锁,“全有或全无” 逻辑与同步,预防死锁,all or nothing.

内存管理 Malloc()和free()动态分配内存 不足 内存碎片 执行时间不确定 嵌入式系统软件教程7.4

按分区进行内存管理 每个分区包含整数个大小相同的块; 不同分区块的大小可能不同 特定的内存块在释放时必须重新放回它以前所属于的内存分区

内存控制块 数据结构 操作 内存控制块OS_MEM OSInit() -> OSMemInit() OSMemCreate() 建立一个内存分区 OSMemGet() 分配一个内存块 OSMemPut() 释放一个内存块 OSMemQuery() 查询一个内存块

内存控制块 OS_MEM typedef struct { void *OSMemAddr; void *OSMemFreeList; INT32U OSMemBlkSize; INT32U OSMemNBlks; INT32U OSMemNFree; } OS_MEM; typedef struct { /* MEMORY CONTROL BLOCK */ void *OSMemAddr; /* Pointer to beginning of memory partition */ void *OSMemFreeList; /* Pointer to list of free memory blocks */ INT32U OSMemBlkSize; /* Size (in bytes) of each block of memory */ INT32U OSMemNBlks; /* Total number of blocks in this partition */ INT32U OSMemNFree; /* Number of memory blocks remaining in this partition */ } OS_MEM;