嵌入式实时操作系统uc/os-ii 原理及应用 读书笔记

简介: 对任务就绪表的操作理解:将优先级别为prio的任务置为就绪状态,可使用如下代码OSRdyGrp |= OSMapTbl[prio >>3];//将prio任务所在的组状态置为1,表示该组有任务就绪。

对任务就绪表的操作理解:

将优先级别为prio的任务置为就绪状态,可使用如下代码

OSRdyGrp |= OSMapTbl[prio >>3];//将prio任务所在的组状态置为1,表示该组有任务就绪。

OSRdyTbl[prio>>3] |= OSMapTbl[prio&0x07];//将就绪表中prio任务对应的位置为1,表示该优先级为prio的任务就绪。

其中OSMapTbl[]是uc/os-ii为加快运算速度定义的一个数组,它的各元素值为:

OSMapTbl[0] = 00000001B

OSMapTbl[1] = 00000010B

OSMapTbl[2] = 00000100B

OSMapTbl[3] = 00001000B

OSMapTbl[4] = 00010000B

OSMapTbl[5] = 00100000B

OSMapTbl[6] = 01000000B

OSMapTbl[7] = 10000000B

要使优先级为prio的任务脱离就绪状态,可使用如下代码

if ((OSRdyTbl[prio>>3] &= ~OSMapTbl[prio&0x07]) == 0)

{

       OSRdyGrp &= ~OSMapTbl[prio >>3];

}

其中OSRdyTbl[prio>>3] &=~OSMapTbl[prio&0x07]是将就绪表OSRdyTbl中优先级为prio的任务所在的元素OSRdyTbl[prio>>3]对应优先级为prio的任务的位([prio&0x07)

置为0,与上面的OSRdyTbl[prio>>3] |= OSMapTbl[prio&0x07]操作功能刚好相反。

改操作执行完毕后判断就绪表元素OSRdyTbl[prio>>3]是否为0,如果等于0,表示该元素对应的组的8个任务全部没有就绪,于是将OSRdyGrp对应的表示该组就绪状态的位

置为0,表示该组没有任务处于就绪状态,与上面的OSRdyGrp |= OSMapTbl[prio >>3]操作功能刚好相反。

 

 

 

目录
相关文章
|
20天前
|
安全 算法 Unix
深入浅出操作系统:从基础概念到实践应用
【10月更文挑战第22天】本文旨在以浅显易懂的语言,为读者揭开操作系统的神秘面纱。我们将从操作系统的基本概念出发,逐步深入其核心功能与设计哲学,并通过具体代码示例,展示操作系统如何在实际中发挥作用。无论你是计算机科学的学生,还是对技术有浓厚兴趣的爱好者,这篇文章都将为你提供一次轻松愉快的操作系统之旅。
34 4
|
5月前
|
传感器 网络协议 物联网
嵌入式开发中的常用实时操作系统(RTOS)介绍
选择合适的RTOS是嵌入式开发中的关键步骤,不同的RTOS具有各自的优势和适用场景。开发者需要根据项目需求综合考虑硬件平台、实时性要求、开发资源和支持等因素,选择最合适的RTOS系统。例如,如果需要开源和灵活的解决方案,可以选择Zephyr或RT-Thread;如果需要高性能和商业支持,可以选择VxWorks或ThreadX。希望本文能帮助您更好地了解各类RTOS,并为您的嵌入式开发项目提供参考。
308 1
|
2月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
2月前
|
Java 开发工具 Android开发
移动应用开发之旅:探索移动操作系统与应用构建的奥秘
【8月更文挑战第33天】在数字时代的浪潮中,移动应用已成为我们日常生活的一部分。本文将带您深入理解移动操作系统的工作原理,并揭示如何在这个多姿多彩的平台上开发出引人入胜的应用。我们将从基础概念出发,逐步深入到高级编程技巧,最终通过一个实际的代码示例,展示如何将理论应用于实践。无论您是初学者还是有经验的开发者,这篇文章都将为您提供宝贵的见解和灵感。让我们一起踏上这场激动人心的移动应用开发之旅吧!
|
3月前
|
Rust 安全 编译器
【颠覆传统】Rust跨平台开发秘籍:如何轻松驾驭多操作系统,打造无缝兼容应用?
【8月更文挑战第31天】Rust语言凭借其内存安全、卓越性能及丰富的标准库支持,正逐渐成为跨平台开发的新宠。本文通过具体代码示例,展示如何用Rust编写可在多种操作系统上无缝运行的应用程序。Rust通过所有权、借用和生命周期等机制提升代码安全性,并在编译时检测潜在错误。其编译器支持广泛平台,包括Windows、macOS和Linux等,非常适合跨平台开发。此外,Rust还可用于开发复杂的GUI应用,利用GTK、Qt等成熟框架实现跨平台图形界面。无论开发命令行工具还是图形界面应用,Rust均能提供高效稳定的解决方案。
192 1
|
2月前
|
消息中间件 程序员 数据处理
探究操作系统中的进程间通信(IPC)机制及其在现代软件开发中的应用
本文深入探讨了操作系统中的核心概念——进程间通信(IPC),揭示了其在现代软件开发中的关键作用。通过对各种IPC机制如管道、消息队列、共享内存等的详细分析,本文旨在为读者提供一个清晰的理解框架,帮助他们掌握如何在实际应用中有效利用这些技术以实现进程间的协同工作。此外,文章还将探讨IPC在高并发环境下的性能优化策略,以及如何避免常见的IPC编程错误。通过结合理论与实践,本文不仅适合希望深入了解操作系统原理的技术人员阅读,也对那些致力于提升软件质量和开发效率的程序员具有重要参考价值。
45 0
|
3月前
|
机器学习/深度学习 网络安全 TensorFlow
探索操作系统的心脏:内核与用户空间的奥秘云计算与网络安全:技术挑战与未来趋势深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【8月更文挑战第29天】在数字世界的每一次点击与滑动背后,都隐藏着一个不为人知的故事。这个故事关于操作系统——计算机的灵魂,它如何协调硬件与软件,管理资源,并确保一切运行得井井有条。本文将带你走进操作系统的核心,揭示内核与用户空间的秘密,展现它们如何共同编织出我们日常数字生活的底层结构。通过深入浅出的讲解和代码示例,我们将一同解锁操作系统的神秘面纱,理解其对现代计算的重要性。 【8月更文挑战第29天】本文将深入探讨卷积神经网络(CNN)的基本原理和结构,以及它们如何被广泛应用于图像识别任务中。我们将通过代码示例来展示如何使用Python和TensorFlow库构建一个简单的CNN模型,并训练
|
4月前
|
Python
智能卡系统工程是一个涉及多个方面的复杂系统,包括硬件(如读卡器、智能卡)、软件(如读卡器驱动程序、智能卡操作系统和应用软件)以及网络通信等。
智能卡系统工程是一个涉及多个方面的复杂系统,包括硬件(如读卡器、智能卡)、软件(如读卡器驱动程序、智能卡操作系统和应用软件)以及网络通信等。
|
5月前
|
存储 安全 调度
深入理解操作系统:从基础概念到高级应用
本文将深入探讨操作系统的基本概念、功能和特性,以及其在现代计算环境中的应用。我们将从操作系统的定义和历史开始,然后详细介绍其主要组件和工作原理,包括进程管理、内存管理、文件系统和设备管理等。最后,我们将讨论一些高级主题,如操作系统的安全性、性能优化和虚拟化技术。无论您是计算机科学的学生,还是对操作系统有兴趣的技术人员,这篇文章都将为您提供深入理解和应用操作系统所需的知识和技能。
|
6月前
|
JSON 数据管理 测试技术
自动化测试工具Selenium Grid的深度应用分析深入理解操作系统的内存管理
【5月更文挑战第28天】随着互联网技术的飞速发展,软件测试工作日益复杂化,传统的手工测试已无法满足快速迭代的需求。自动化测试工具Selenium Grid因其分布式执行特性而受到广泛关注。本文旨在深入剖析Selenium Grid的工作原理、配置方法及其在复杂测试场景中的应用优势,为测试工程师提供高效测试解决方案的参考。

热门文章

最新文章