操作任务范文

2024-06-07

操作任务范文(精选10篇)

操作任务 第1篇

信息技术课是一门实践性很强的课程, 在进行信息技术的教学时, 采用“任务驱动”教学法非常适宜。然而, 要达到预期的教学效果, 关键是“任务”的选择与设计。在进行“任务”设计时重点考虑以下几个方面的问题。

●“任务”设计要能体现教学目标

“任务”设计要有明确的目标, 要求教师要在学习总体目标的框架上, 把总目标细分成一个个的小目标, 并把每一个学习模块的内容细化为一个个容易掌握的“任务”, 通过这些小的“任务”来体现总的学习目标。例如, 四年级上册学习“Word的功能和使用”这一模块时, 我们设计的大任务是要求每一位同学学会编制一份精美的电子报刊。本章有以下5个知识点:1.Word的基本概念, 建立编辑文档;2.设置字体、字号, 段落排版;3.页面设置及文档的打印;4.Word的图形功能;5.Word的表格功能。我把大任务分成5个小任务, 每个小任务中隐含着其中的一个知识点, 每一节课完成一个小任务。教学时, 我又把一节课的小任务分成几个更小的任务。如第一节课的任务是按要求对现有文档进行修改。修改要求中隐含着3个知识点, 即:1.Word的基本概念;2.文档的建立、打开与关闭;3.编辑文档。这3个知识点分别隐含在3个小任务中。

●“任务”设计要注意分散重点、难点

掌握信息技术知识和技能是一个逐步积累的过程。“任务”设计时要考虑“任务”的大小、知识点的含量、前后的联系等多方面的因素。一般说来, 每个“任务”中涉及的知识点不宜过多, 最好不要有两个以上的重点、难点, 过多会增加学生学习的难度;“任务”的规模宜小不宜大, 规模过大, 会偏离“任务驱动”的本意;前后“任务”之间能有一定的联系是比较理想的, 但不要强求, 否则也会加大难度。任务是手段, 便于学生学习、掌握有关的知识、思想和方法才是“任务驱动”的目的。一般不提倡设计一个统领全局的“任务”, 而是要注意由点到面, 逐步介绍各知识点。例如, 如江苏版六年级下册, 设置超链接教学, 任务分解如下:

任务一:演示什么是超链接, 建文件夹。

任务二:运行Front Page, 建第一个网页, 为主页作简单编辑, 保存到建好的文件夹中, 预览看效果。

任务三:建第二个网页, 作为副页, 简单编辑。保存到建好的文件夹中, 预览看效果。

任务四:继续编辑第一个主页, 选中 (抹黑) 链接项目, 弹出菜单, 找到创建超链接命令并执行, 找到被链接网页, 并确认保存创建结果, 在Front Page预览看效果。

任务五:在浏览器中, 打开主页看效果, 交流、体会、答疑。

●“任务”设计要符合学生认知水平

“任务”设计时要注意学生特点、知识接受能力的差异。教师进行“任务”设计时, 要从学生实际出发, 充分考虑学生现有的文化知识、认知能力、年龄、兴趣等特点, 遵循由浅入深、由表及里、循序渐进等原则。例如, 在画图课程中的编辑颜色一课, 先设计简单的图块进行单一颜色的填充, 再逐层深入进入编辑颜色的设计, 最后对于完成较快的同学再进行一幅画的设计及颜色的填充, 这样教学内容逐步加深, 对于能力比较弱的学生只要求完成基本任务, 能力较强的学生就完成更高一层的任务, 根据学生的特点进行分层教学。

●“任务”设计要有层次性

任务大小要适当、要求应具体, 各任务之间还要相互联系。如《剪贴图形》, 主要学习对相同图形进行剪贴、复制的技巧, 从而简化作图的过程, 体现出计算机作图与普通作图的不同之处及其优越性。本课的重点是让学生掌握剪贴、复制与翻转/旋转的技巧, 难点是旋转技巧的掌握。由于教材一开始就出现画大风车, 重点和难点都集中到一起, 学生不可能同时解决几个问题, 不利于学生自主学习。为此, 首先出示大风车的动画, 学生通过观察、讨论得出:由相同图形构成的作品, 我们可以采用新的“画图”。这是本节课要学习的任务《剪贴图形》, 任务一:复制与粘贴。学生通过看书自学、小组讨论、尝试操作、反馈交流、概括总结这样几个环节, 顺利解决风车的第二、三、四片叶子。如何由第一片变成第二片叶子, 引出任务二:翻转/旋转。学生通过知识迁移、看书自学、试画风车、交流反馈, 在实践、总结中掌握这一技巧。有了这些知识, 提出任务三:创作图形。通过将任务巧妙化分, 层层展开, 形成循序渐进的梯度, 组成一个任务链, 以便学生踏着任务的阶梯去建构知识。

●“任务”的设计具有可操作性

可操作性是指“任务”适合在课程的一个周期内完成, 小的任务可以在一节课 (包括连堂课) 内完成, 大的任务可能通过一个教学单元完成 (应分解为若干个可以在一节课中完成的子任务) 。而对一些基本概念、基本操作等就不适宜使用任务驱动教学, 如计算机硬件的组成、病毒防范、操作系统、鼠标操作、资源管理器窗口组成、文件的有关操作、文字输入等有关知识。起始年级的教学也不适用任务驱动教学法, 因为起始年级的学生对有关的基本概念和基本操作尚没有任何相关的知识和经验, 要完成给定的任务会比较困难。只有当学生相关的知识和经验积累到一定的程度时, 使用任务驱动才能获得较好的效果。有一位老师在执教《文字的输入》时, 让甲组完成“单字输入”任务, 乙组完成“词组输入”任务, 两个任务同时进行。结果是甲组会输入单字, 却不会输入词组, 而乙组既不会输入单字, 也不会输入词组。而另外一位老师在执教该课时, 在学生会选择输入法的基础上, 出示“如何输入‘我’字”这个任务, 学生通过看书自学、尝试操作、小组合作、交流反馈概括出单字的输入方法。在练习时, 发现有同学利用词组进行输入, 教师因势利导, 出示任务二, 即如何输入词组。学生很快就掌握了输入词组的方法。相同的内容和任务, 由于呈现的时机不同, 导致截然相反的效果。

●“任务”的设计要与学生的生活实际密切结合

课程标准要求信息技术教材要密切联系实际, 结合学生的现实生活和学习需求以及当地的社会发展, 设置真实性的学习任务、典型案例和研究性课题, 以引导学生在动手操作、自主探究和解决问题的过程中把“学技术”与用“用技术”融合在一起, 主动理解知识、掌握技能、发展能力。从问题解决出发, 让学生亲历处理信息、开展交流、相互合作的过程, 在活动过程中掌握应用信息技术解决实际问题的思路和方法。例如, 通过美丽的海底世界、绿色家园等主题活动来完成画图的教学。海底世界是学生喜欢的, 可以发挥学生想象力;绿色家园是社区的建设, 利用社区整理为主线学习图形的选取和移动, 把脏乱的社区环境整理好, 环境问题是关于国家发展的, 又依托于社区, 这是学生比较熟悉的内容。

操作任务 第2篇

关键词:单片机;多任务;RTX51;任务队列

中图分类号:TP391文献标识码:A文章编号:1007-9599 (2010) 09-0000-02

The Multitask Processing Equipment Design Based on Real-time Operating System (RTOS) RTX51

Liu Rui

(North China Institute of Computing Technology,Beijing100083,China)

Abstract:The embedded and multitask processing equipments are widely used in the industrial control field.This thesis presents a implementation of design that is based on multitask RTOS RTX51 equipments.Especially it is a management system which adopts multitask programming and task queue in cooperating with RTX51 RTOS. It further improves the core capabilities of the equipment.This implementation can be used in various ways once making some small adjustments.

Keywords:SCM;Multitask;RTX51;Task queue

一、引言

基于嵌入式单片机系统的多任务处理设备在工业控制领域应用十分广泛,如现场数据采集、现场控制等等,在很多应用中需要并行执行多个任务,同时又要求设备在满足需求的基础上尽可能的经济耐用,采用MCS51内核系列单片机和能在其上运行的实时多任务操作系统RTX51实现该类设备是一个很好的解决方案。RTX51是美国Keil公司开发的一种小型的、应用于MCS51内核系列单片机的实时多任务操作系统,RTX51有完全(Full)和最小(Tiny)两种模式。Tiny模式短小精炼,完全集成在Keil C51编译器中,在不需要任何外部RAM的条件下,很容易地运行在8051系统上。比起其它小型操作系统来讲,RTX51 Tiny具有运行速度快、对硬件要求不高、使用方便灵活等优点,越来越广泛地应用到单片机的软件开发中。本文介绍的基于RTX51的多任务处理设备,是基于RTX51 Tiny操作系统,采用多任务规划和任务队列的方法,增强设备总体处理能力,这种设计方法丰富了RTX51 Tiny的功能,并且稍加适应性设计即可适用于多种应用。

二、多任务处理设备

多任务处理设备通过现场总线实现数据采集,采集到的数据经过单片机计算处理、存储,并通过外部总线上报,同时单片机还可以对采集到的数据进行计算判断,并按照预设算法驱动控制输出。数据采集现场总线可根据具体需求连接RS232、RS422、GPIO、SPI、CAN、I2C等,数据类型可以是各种总线连接的各类传感器数据,如烟雾传感器、红外对射检测装置、红外扰动检测等开关量传感器,下文简称单体传感器;温度、湿度、位移等简单数据量传感器,称为简单传感器;物品在位检测传感器等组合数据传感器,称为组合传感器。

多任务处理设备的数据采集、计算、存储、上报、控制输出等功能是并行工作的,如果采用传统的串行工作方式很难实现,因而采用基于RTX51操作系统,多任务规划和任务队列的方法,实现多任务处理设备的设计。

设备对硬件平台的要求不高,51系列单片机都适用,现场总线和上报总线形式可根据具体需求设计,硬件部分本文就不作详细介绍了,下面重点介绍设备软件设计。

三、软件设计

(一)多任务设计

软件设计要根据设备功能进行任务划分,设计信号处理和通信任务进程,包括系统资源镜像表访问维护进程、任务需求循环链队列维护进程、系统分时任务激发时钟维护进程、传感器维护进程、外部通信链路维护进程、现场通信总线通信链路维护进程。各个任务进程及与任务之间的通信相关进程关系如图1所示。

下面具体介绍每个进程的功能:

1.系统资源镜像表访问维护进程。

资源状态镜像表为每个传感器定义状态镜像,设定同各个检测传感器进行通信的时间间隔,并将其在设备内资源状态镜像表存储的状态信息进行更新维护。

系统资源镜像表访问维护进程是其它进程访问系统资源镜像表的统一接口。其它进程可以以统一或相近似的方式访问系统资源镜像表的内容;其中,按照各个传感器更新周期,发起更新需求的是传感器数据状态更新需求维护子进程,该子进程提供传感器数据状态更新需求,并将此更新需求推入任务队列中,以异步信号方式启动其它进程。

2.任务需求循环链队列维护进程。

任务需求循环链队列是逻辑上首尾相接的数据队列,各个进程将任务需求推入队列,维护进程负责任务需求处理,通过RTX51的任务消息触发相关进程。此队列长度以单片机能在设定周期内异步处理的通信访问任务最大处理能力来确定。在设定周期內未能完成全部推入的任务,队列头将被新的任务需求覆盖。

3.系统分时任务激发时钟维护进程。

系统分时任务激发时钟维护进程是由系统时钟(默认为TIMER0)作为时间基准(默认0.05s),通过维护各个进程的轮询周期时钟来提供其周期唤醒信号的进程。此外,还为各进程的延时等待提供时间基准。

4.传感器维护进程。

传感器维护进程的功能是周期更新检测传感器数据和状态,按照要求定时上汇检测传感器数据和状态,执行远程访问命令(调试、配置、检查、测试)。不同类型的传感器数据更新周期、数据计算方法、状态判断方法不同。

5.外部通信链路维护进程。

外部通信链路维护进程是设备对上进行数据交换和配置通信的唯一通信接口。实现报文上传下送、收发信号维护等功能,从而使相关进程从收发控制中解脱出来。为确保与上端通信连接,确定的时间间隔启动本子进程。

通过远程总线自动登录和登录状态维护,从RS232端口上向上以约定身份登录,定期检查登录状态,并在登录超时或错误退出后自动重建连接。

6.现场通信总线通信链路维护进程。

现场通信总线通信链路维护进程是设备同通过现场通信总线链路联接的各类型传感器达成通信的服务管理程序。自动发起同下联各传感器链路联接、传感器发现、注册、注销和状态维护,并将链路联接状况向相关进程报告。

通过现场总线对现场传感器进行参数配置、按照设定的时间间隔同各个检测传感器进行通信,采集数据、并对其工作状况进行监视。确定现场数据关联逻辑和算法,可在现场对各类检测传感装置和输出驱动进行有简单逻辑关系的连锁逻辑设置,实现控制功能。

(二)任务队列数据结构

任务需求循环链队列维护进程通过RTX51的任务消息触发相关进程,由于RTX51 Tiny操作系统短小精炼,任务调度仅支持单数据位消息机制,无法传递更多的参数,但是多任务处理设备的各个任务之间需要传递的参数信息比较多,采用任务队列和任务邮箱的方法,可以很方便的实现参数传递。

以设备实际功能为例,说明任务队列的工作方式。例如,更新单体传感器定时到,需求维护子进程将一个任务需求推入任务队列,并同时通过RTX51 Tiny发送一个系统消息给单体传感器维护进程;简单传感器维护进程收到系统消息后启动,并到任务队列中取出任务,打开任务邮箱,根据任务要求,更新单體传感器数据,并将更新资源镜像表的任务需求推入任务队列,并同时通过RTX51 Tiny发送一个系统消息给资源镜像表访问维护进程;资源镜像表访问维护进程收到系统消息后,到任务队列中取出任务,打开任务邮箱,将要更新的传感器数据写入资源镜像表。

任务队列是内存中的逻辑上首尾相接的数据队列。待执行的任务在任务队列中排队,单片机按照RTX51操作系统调度处理,处理完成的任务移除队列。任务队列数据结构定义如下:

struct Task_Loop_Queue {

unsigned int Queue_Head;

unsigned int Queue_Tail;

unsigned int Queue_Size;

struct Task_Queue_Member Member

[_Max_Task_Member ];

};

每个任务需求由任务ID、任务状态、访问类型、配属任务邮箱四段构成。任务状态表示任务未处理、处理中和处理结束;访问类型用来区分需要同一进程处理的不同类型的操作;任务邮箱是具体的任务需求。其数据结构如下:

struct Task_Queue_Member { unsigned char Task_ID;

unsigned char Task_State;

unsigned char Access_Type;

union Task_MailBox * ptMailBox;

/*任务会话邮箱指针*/

};

任务邮箱的定义概括了任务的各类信息和参数,每个任务利用任务邮箱交换信息。任务邮箱基本数据结构如下:

union Task_MailBox {

unsigned int Srouce_Task_ID;

/* 信件发送进程ID */

unsigned int Destination_Task_ID;

/* 信件接收进程ID */

unsigned char Length;

/* 邮箱内容实际长度 */

unsigned char Type;

/* 邮箱消息参数类型 */ union Dailogue_Contents Dailogue;

/* 邮箱消息参数 */

};

其中Dailogue_Contents消息参数用来传递各个任务之间需要交互的数据,根据传递参数的特点定义,由邮箱消息参数类型(Type)进行区别。例如前面例子中,简单传感器维护进程需要资源镜像表访问维护进程更新数据,那么简单传感器维护进程,将需要更新的简单传感器数据作为消息参数,传递给资源镜像表访问维护进程。消息参数可为简单传感器数据定义适合的数据结构。

四、结语

本文在实时操作系统RTX51基础上,按照多任务处理设备较为通用的功能需求,实现了任务规划以及管理任务执行、传递任务参数的任务队列,能够在简单、经济的硬件平台上实现相对丰富而强大的功能。本文介绍的方法稍加适应性设计即可适于多种应用。

参考文献:

[1]刘明路,王亮生,李世煜.基于RTX51的单片机软件设计[J].单片机与嵌入式系统应用,2005,3

[2]周程.RTX51 Tiny在核数据采集系统中的应用[J].核电子学与探测技术,2008,5,599-601

操作任务 第3篇

“任务驱动”教学法由两个主要阶段构成。第一阶段是设计阶段, 这一阶段教师应以“真实性、整体性、可操作性、适当性、开放性、层次性”为原则, 对课程任务、教学情境、教学环节、评价体系等内容进行设计。第二阶段是实施阶段, 是教师对设计方案的具体实施过程。在这两个阶段中, 设计阶段的成果是一个教师的创造能力的真实反映。下面以笔者对“任务驱动”教学法理论的认识和自身教学实践经验为基础, 对《电子操作》技能实训课程的任务和教学环节两个内容谈谈自己的设计思路。

一、《电子操作》技能实训课程任务的设计

根据课程教学目标, 选择合适任务。这是“任务驱动”教学法的关键环节。首先, 要正确理解任务和教学目标之间的关系。教学目标是对学生掌握知识、技能以及能力的要求, 是任务设计的出发点和依据。任务是教学目标的具体化, 通过具体的任务完成相应的教学目标。在确定总教学目标后, 再把总目标细分为若干个小目标, 并把每个学习内容细化为容易掌握的“任务”, 通过这些“任务”来体现总的学习目标。设计任务时, 应从学生的实际情况出发, 将总体目标层次化。对认知目标一般可以采用“了解、理解、掌握”三个层次。对操作技能目标一般可以采用“学会、掌握、熟练掌握”三个层次。以《电子操作》实训专周为例, 简述如何设计教学任务。

毫无疑问, 《电子操作》实训如果能结合具体的产品对象来实施的话, 对提高学生的学习兴趣会起很大的作用。但实际操作中存在的问题是: (1) 如果实训产品选择不当, 将会产生无用的“电子垃圾”, (2) 学生制作的产品不能过于简单, 否则不仅不能达到实训的教学目的, 还将使学生对实训以至对专业失去兴趣;当然难度过高又可能会使产品成功率太低, 导致学生缺乏成就感, 同时要学生自己承担部分材料成本而引起学生的反感。具体的考察指标应该有以下几项:一是元器件数量、焊点数量;二是产品类型, 学生是否有用;三是产品的调试难度、稳定性、可靠性及成功率;四是产品的有效工作时间及存留时间;五是在实训过程中学生的心理感受。我们根据电类职业岗位的能力目标, 在综合考虑任务的实用性、典型性、覆盖性、综合性和可行性等诸多因素的前提下, 确定以“指针式万用表的装配与校准”作为该课程的总任务。

1. 教学对象和教学内容分析

我系电类专业的学生, 在第一个学期完成了《电路基础》《电路实验》的学习, 并进行了《电工实训 (一) 》的基本技能的训练, 学生已掌握了电路基础中的电流、电压、电路等概念, 对一些元器件的知识, 如电阻、电容、电感、熔断器、导线、变压器等也有了基本的认识, 并且学会了万用表等常用仪器仪表的使用方法及电工常用工具使用, 初步掌握了手工焊接技术。《电子操作》实训专周, 安排在第二学期前半学期实施, 以指针式万用表的组装校准为课题, 指针式万用表 (MF47型) 元器件大约四十个, 近一百个焊点。对电类专业的学生, 在进校半年 (一年级下期) 时, 能有一块属于自己的仪表, 对提高专业学习兴趣有很大的帮助, 也为学生探索创新、课外制作提供了便利的条件。

2. 教学目标的确定

《电子操作》技能实训专周总教学目标:老师提供成套散件, 根据电路原理图及装配图完成指针式万用表的组装与校准。为了使学生能在专周结束时顺利完成这一目标, 我们对总目标进行层次分解为:

1) 知识目标

掌握常用电工测量仪表的知识, 熟悉指针式万用表的结构和工作原理。学习识读电路图。

2) 能力目标

进一步掌握万用表的使用方法;掌握常用电子元件的识别及判断其好坏的方法;掌握焊接技术及整机安装工艺;掌握万用表的装配与校准方法;学会用所学的理论知识分析和解决电子装调过程中出现的各种实际问题, 加强电子装配的综合技能训练。

3) 素质目标

培养严谨认真的工作态度与职业素养;建立质量意识、安全生产意识, 培养良好的心理素质和团结协作精神。

3. 将总目标层次化后变成为任务

1) 知识目标

任务1:熟悉指针式万用表的结构组成, 理解其各功能档的基本工作原理。

任务2:根据总电路图学会分析并画出各个功能档的电路图。

任务3:掌握仪表的准确度及误差的基本概念。

2) 技能目标

任务1:组装前的准备工作:即对电子元器件实物进行分类识别, 掌握用万用表对元器件好坏的检测方法。焊接基本功的强化训练。

任务2:能看懂装配电路图, 按照组装工艺说明书的工艺要求正确地进行组装。

任务3:完成万用表校准及调试, 并确定其准确度等级。

任务4:能对组装、校准过程中出现的故障进行正确的检查和调试。

二、《电子操作》技能实训教学环节的设计

环节1:创设实际情境, 提出任务

《电子操作》技能实训专周是在校内实训基地电子实训室进行的, 实训基地努力营造电子生产企业的氛围, 流水线式的工位布局, 在与工作现场相一致的仿真的职业环境中, 墙上挂着“实训室管理规定”、“实训室安全操作规程”等规章制度。实训时, 要求学生和在企业一样, 穿着工作服准时上下班, 让学生有很强的身临其境的感受。事实证明, 这种仿真的职业训练环境, 能激发学生学习兴趣, 可以让学生迅速地进入状态。学生在知道学习任务是进行电子产品的组装、校准时, 都有种兴奋和期待。想早点体验一下生产者与检验员的感受。

环节2:共同讨论, 分析任务, 发现问题

在发了产品套件后, 与学生共同讨论完成任务需要解决哪些问题。比如:拿到的套件都有什么器件, 数量够吗?它们都是好的吗?怎样准确无误地完成组装?组装后怎样测试才知道是合格的产品?如果我是生产组长, 我该怎样组织才能保证质量?等等。这些问题的提出, 可以引导学生结合已经学过的知识, 寻找解决问题的方法和思路。

环节3:针对问题, 明确思路, 提示重点

针对以上所发现的问题, 要不断引导学生提出解决问题的方法, 形成解决问题的思路和计划。对于一些关键、难点问题, 可以举出例子, 并做出示范, 利用作品样例启发学生思路, 使之抓住要领、少走弯路。

环节4:自主探索, 领会意图, 完成任务

在解决问题过程中, 要求学生领会教师的设计思路和方法及技巧, 观看样例作品, 鼓励学生创造性地发挥, 通过合作、讨论、交流, 互帮互学, 共同完成任务。在不同观点的交锋、补充、修正中, 学生在平等的氛围中对话, 有利于优势互补, 缩小个体差异, 加深每个学生对当前问题的理解。

环节5:检查结果, 发现不足, 总结经验

在每一个小任务完成后, 教师要及时根据事先设计好的评价体系对学生完成的任务做出反馈和评定, 并作相关记录, 帮助学生找出他们在完成任务时存在的问题和改进方法的地方, 不断发现并挖掘每位学生的闪光点, 及时做出评价和表扬。与此同时, 要对在完成任务过程中所使用的知识点进行系统梳理, 使学生获得到相对完整的、扎实的专业应用知识。通过这一环节, 可以有效地调动学生自主学习的兴趣, 不断增强学生的自信心, 从而为下一个任务的完成奠定了很好的基础。

我院从2006年05级开始, 进行此项教学法的实践, 三年来通过深入学习“任务驱动教学法”内涵, 逐步完善教学环节设计, 取得了一定的效果, 学生反映良好, 学生在总结中写道:“从习惯什么都不用考虑, 只是一味接受知识, 突然变成了主宰者, 什么都要自己考虑清楚了之后再去做, 对我们确实是一种挑战, 但是这样获得的知识和技能让我们记忆深刻。”

任务驱动是一种有效的学习方法。它从实例、任务入手, 带动理论的学习和技能训练, 大大提高了学习的效率和兴趣, 培养独立探索、勇于开拓进取的自学能力。一个“任务”完成了, 学生就会获得满足感、成就感, 从而激发了他们的求知欲望, 逐步形成一个感知心智活动的良性循环。同时教师的教学设计能力也得到了锻炼和提升。

摘要:“任务驱动”教学法是一种基于建构主义学习理论的教学方法, 它强调学生在真实情境中的任务驱动下, 在探究完成任务或解决问题的过程中, 在讨论和会话的氛围中进行学习。此教学法由设计和实施两个主要阶段构成, 其中, 设计阶段主要是对任务、教学情境、教学环节、评价体系等内容进行设计。本文以“任务驱动”教学法理论和教学实践经验为基础, 对《电子操作》技能实训课程的任务和教学环节两方面内容的设计进行了探讨。

关键词:任务驱动,教学方法,电子操作技能实训

参考文献

[1]任海鹰.浅谈“任务驱动式”教学模式中任务设置[J].网络科技时代.2001 (6)

[2]刘刚.任务驱动教学法在电子技术专业课程中的应用[J].中国科技信息.2005, (24) .

[3]刘梦龙.运用“任务驱动法”培养学生自主学习和协作学习能力[J].包头职大学报.2003, (02)

操作任务 第4篇

但是我们可以发现,在智能手机硬件配置不值一提的年代,所有的智能手机系统几乎都是多任务系统,也就是你通常程序最小化或者关闭后其实还在后台默默的运行着。但是无论是最新的IOS(苹果移动设备的操作系统)还是Wnidows mobile的接替者-windows phone,都开始纷纷采用伪多任务系统,笔者称之为“单任务”系统,具体表现为只有系统核心程序和限定类型的程序可以在后台运行,其他程序一律保留现场,暂停到后台,并不再继续运行。这是怎么回事?为什么硬件提升了反而系统却“退步”了?

我们不妨来看看SYBIAN和Windows Mobile的操作体验,这两款系统笔者曾今都长时间的使用过。笔者的第一部手机是著名的Nokia 3230,多任务系统的好处不言而喻,可以浏览网页的同时再挂个QQ,甚至再放首歌,

但是,这样的体验并不美妙,用户其实不知道是哪里做错了,只是觉得为什么系统会经常变得很慢,程序经常莫名的退出,有点经验的用户会装上一两个监控后台的软件,时不时的切过去看看还剩下多少内存,要不要杀掉一些程序。同样的体验和烦恼也会发生在Windows Mobile的平台上,甚至连现在势头很猛的Android系统由于完整的多任务特征,也面临着这样的问题。

我们再来看看IOS,我从来没有看到苹果商店里有哪款后台监控软件或者是内存优化软件有多少人使用和追捧。也很少看到有人没事会想着去关闭后台程序。在IOS中,除了官方的核心程序外,苹果公司还开放了音乐播放,GPS定位这些极其稀少的后台运行接口供似三方软件使用。但是用户很少在这方面抱怨过,相反,用过IOS的用户都会对这款系统的操作体验和系统稳定性赞不绝口。当用户发现他们从来没有担心过系统的崩溃和死机,从来不担心一款软件不会因为软件本身的问题而异常退出,且运行的每一款软件,整个系统都在全力以赴的聚集所有的硬件资源来最大化的满足软件的运行需求时,还有什么理由让用户想起那些老掉牙的多任务系统?

同样的觉悟也被应用在了最新的Windows Phone上,因为苹果已经印证了在移动设备上尚没有完美的方法解决在多任务的同时保证绝佳的用户体验之前,“单任务”显然是最合适的设计哲学,“单任务”系统让用户心无旁骛的处理当前的工作,也同时保障了整个系统的健壮性和用户体验。

操作任务 第5篇

关键词:任务驱动式;操作系统;实验教学

一、引言

操作系统是一门涉及知识面广的专业基础课,由于教学内容的原理性较强、知识体系繁杂,在实验教学中:由于理论教学与实验教学脱节,理论知识与实际操作系统的结合还存在一定距离,使得学生学与用之间缺乏联系。另外受课程自身特点的限制,理论教学占据了绝大部分时间,而实验教学学时数偏少,使得很多实验项目不能实施,学生只是了解了表层知识,根本达不到培养学生的科研能力和探索精神的目的。本文针对上面的问题,采用任务驱动式教学方法,对实验教学进行改革,并在实际教学中加以应用。

二、任务驱动式教学法

任务驱动教学法是一种建立在建构主义学习理论基础上的教学法,它将以往以传授知识为主的传统教学理念,转变为以解决问题、完成任务为主的多维互动式教学理念;将再现式教学转变为探究式学习,使学生处于积极的学习状态,每一位学生都能根据自己对当前问题的理解,运用共有的知识和自己特有的经验提出方案、解决问题。

围绕一个共同的任务活动中心,在强烈的问题动机驱动下,通过对学习资源的主动应用,进行自主探索和互动协作的学习,并在完成既定任务的同时,引导学生产生一种学习实践活动。

长期以来,操作系统实验主要是一些验证性实验,实验教学内容老化、手段单一,学生只是按部就班完成布置的任务,实验兴趣不大。使得实验效果不是太好,进而也影响了理论教学的效果。所以笔者就尝试着将这种教学方法应用到实际的实验教学中。首先,设计一些有特点的实验内容,不但符合教学任务要求还要吸引学生的兴趣。其次,在实际教学过程中,对实验任务进行科学的分解,精心设置一些小问题,使得这些问题能环环相扣,通过逐一解决而最终完成这个任务。最后,设计一些可自选的实验任务,学生可以根据自己的兴趣爱好以及对相关知识的理解程度,选做相关内容。这样,在整个实验过程中,学生在解决问题动机的驱动下,能主动地探索和同学相互协作来解决问题,以完成既定的任务,使学生由被动学习变成主动学习,激发了学生学习的兴趣。

三、在实验教学中的应用

在实际教学中采用模拟实验平台是在虚拟机上安装Linux操作系统,来完成设计的实验内容。在实验教学中,加大实验课时的比重,并且实验的考核成绩要占课程总成绩的30%以上,只有这样才能提高学生的动手操作能力。课程的实验教学要具有非常明确的实验目的、实验步骤和实验内容,减少实验时的盲目性和随意性。

在教学中,只选择了优秀理论教材,没有给学生订阅相应的实验教材。因为,每本实验教材不可能为我们量身定做,很多内容过于老化,没有精心处理,而且有的的内容也过于繁琐。所以,在实验教学中,参考多本相关的实验教程,精选一部分实验内容,并整理出一份电子版的实验指导书,给学生共享。同时,与教研室的教授该课程的其他教师,总体制订了以下几个实验项目,如表1所示:

为了方便学生灵活地进行实验练习,把操作系统的实验设计分成必做实验与选做实验。

必做实验:要求在Linux环境下,由教师指导,每个学生独立完成。使学生初步具有用所学的软件设计技术和程序设计语言知识,实现操作系统设计原理中的关键问题,如:进程控制、进程通信、进程(或者线程)同步和调度、存储器管理、文件系统。

选做实验:由于课时有限,不可能每位同学做完所有的选做实验,于是把学生分成若干组,每组布置一个实验项目。这样激发了学生学习的兴趣,提高了学生分析、解决问题的能力。上表中的高级实验设置为选做实验,其他为必做实验。

以上是实验课程的总体任务,针对不同的实验任务,分别进行设计。比如,进程管理的实验,就将其内容分成:进程创建、进程同步两部分,分两次实验来做。在进程创建中,练习使用系统调用fork(),创建一个子进程,使得系统中父进程和子进程活动。首先,获取两进程的ID号,观察它们之间的关系,分析原因,从而理解进程ID号特征和作用。接着,让父子进程分别完成输出一个字符的操作,将输出一个字符改为输出一串字符,观察输出结果,为什么程序在执行的过程中,会同时执行if-then-else的两个分支?分析原因,从而理解程序和进程的区别。然后,用fork()创建一个进程,再调用exec(?摇)用新的程序替换该子进程的内容,观察结果,分析原因,进而了解程序和进程的对应关系。最后,再用fork(?摇?摇)创建一子进程,让一父进程和两个子进程分别进行输出字符的操作,观察每次输出的顺序是否一致,若不一致,如何对它们的输出顺序加以控制,即如何实现进程的同步?而这个问题又是下次实验主要的任务,使得实验内容前后连贯。通过这样的设计,将一个大问题,分解成若干子问题,问题的难度由浅入深,循序渐进。问题与问题之间环环相扣,最后的一个问题还导出了下次实验的内容,激发学生带着问题,提前预习相关知识,以便更好地解决问题。并且将每个子问题都与具体的理论知识点相连,使得理论教学能与实验教学有机地结合。

类似以上的设计,就不一一列举了,这些实验的设置加深了对相关原理知识的理解。如果要深入地了解Linux,建议在教学计划中增加Linux作为计算机专业的选修课,这样可以弥补在实验教学有限课时内,对Linux操作系统及相关源码的介绍讲解不足的地方。

四、取得的教学效果及其评价

通过在教学中采取了一系列的改进措施,从学生的作业、实验报告、实验教学过程以及教学反馈中,可以看出实际的教学效果还是有很大成效的。有些同學不再厌倦或畏惧此课程,就连对考研专业课中的操作系统部分知识也信心十足。

但是,如前分析,操作系统课程内容丰富而且非常繁杂,所以要在有限的课时内做到面面俱到也是不现实的,所以,建议将Linux引入操作系统的教学,或者开设Linux的选修课程。

五、总结

本文主要分析了操作教学中存在的问题,针对问题结合实际教学提出了相应的改进措施,并且在实际教学实施也取得良好的成效。但是课程的教学改革是持久的工程,还需要不断地摸索和实践,以取得更好的成绩,让教与学达到更好的融合。

参考文献:

[1]翟高寿,姚毅,须德,等.浅谈计算机操作系统课程教学改革[J].交通高教研究,2002,(2).

[2]刘乃琦.操作系统课程的教学研究[J].计算机教育,2007,(10).

[3]汤小丹,梁红兵,哲凤屏,等.计算机操作系统[M].第3版.西安:电子科技大学出版社,2007.

操作任务 第6篇

在工业生产中, 流量是最基本的过程参数之一, 直接反映了生产效率和经济效益, 需要经常进行测量和控制, 以单片机为主体的智能化流量仪表得到了越来越广泛的应用。传统的仪表, 多采用单任务顺序执行的设计方案, 软件是一个无限循环, 各模块构成一个整体, 作为一个任务运行, 异步事件和时间相关性很强的关键操作靠中断服务来保证。这种设计方案的优势在于:程序较为直观, 但系统的实时性、稳定性较差, 完全依赖于设计工程师的经验和水平, 只要一个模块出错卡住, 整个系统工作就会被打乱, 只有等待看门狗进行硬复位。随着生产自动化程度的提高, 对仪表的精度和实时性的要求越来越高, 仪表所包含的功能和软件的复杂性成倍增长, 我们通过实地调研发现, 采用单任务机制设计的仪表, 当软件复杂性和规模超过一定程度后, 在实际运行中, 会出现人机界面响应迟缓, 看门狗频繁执行复位操作的现象, 严重影响仪表的正常使用。

针对这种情况, 我们通过引入多任务调度和RTOS对前述问题加以解决, 基于自主研发的FDCX08实时多任务操作系统, 在Freescale M68HC908AZ60单片机上设计并实现了一种新型的蒸汽流量表。除了流量积算功能, 我们还加入了控制输出功能和对CAN总线的支持, 可以对生产过程进行反馈控制, 并和CAN总线上其他节点进行通信, 充分做到了一表多用。工程实践表明, 这种设计方案较好地解决了仪器仪表实时性和稳定性的问题。

1总体结构设计

该仪表主要由温度、压力传感器、流量传感器、反馈输出电路和二次仪表组成, 支持CAN总线通信。系统的硬件结构图如图1所示。

作为通用型流量表, 为了配合各种常见的传感器, 我们为其设计了丰富的输入通道, 包括1路频率输入, 8路开关量输入和6路A/D输入。其中A/D输入通道支持4-20mA, 0-10mA, 0-5V, 热电阻Pt100, K、E分度热电偶以及半导体结等;频率通道输入范围从20Hz到200kHz, 使用AZ60的时钟模块的输入捕捉功能计算输入信号的周期, 然后通过周期计算频率。

输出部分设计了三种不同的输出通道:1路可控硅输出, 2路标准模拟量输出, 8路开关量输出。

12位A/D输入和D/A输出采用现成芯片, 通过SPI与MCU连接。考虑到仪表所处环境可能较为恶劣, 为了避免现场强电的干扰, SPI和开关量输入输出均采用光电隔离技术, 使MCU与现场信号之间完全隔离, 提高抗干扰能力。

核心MCU选用Freescale M68HC908AZ60。它是M68HC08系列高速8位微控制器的一种, 内置MSCAN08控制器, 支持CAN 2.0 A/B规程;内部总线频率高达8.4MHz;具有16位寻址模式, 16位变址寄存器和栈指针, 60KB闪速存储器 (具有在线编程能力和保密功能) , 1KB E2PROM, 2KB内部RAM, 保证性能的同时降低了成本。

2软件设计

2.1FDCX08实时操作系统概述

FDCX08 (Fudan Distributed Control eXecutive) , 是复旦大学嵌入式系统实验室专为单片机设计的, 具有自主知识产权的嵌入式实时多任务操作系统。和其他RTOS如μC/OS、μCLinux相比, FDCX08实时性好, 有针对CAN/LIN总线设计的通信设施, 小巧精悍, 整个系统完整编译的目标文件只有2KB多, 而μC/OS最少也需要6KB, 优势相当明显。相比之下, FDCX08更适合应用于工业控制领域和智能仪表中。

FDCX08采用基于优先级的抢占式调度, 不支持动态优先级。每个任务的TID即为其优先级, TID越大优先级越高, 最多可以支持16个任务同时运行, 每个任务都有自己的上下文, 包括寄存器堆、栈指针和堆栈区等。FDCX08的结构如图2所示 (图中虚线部分在软中断中实现, 其它部分在各自的中断服务子程序中实现) 。

邮局是FDCX08最具特色的部分, 它不仅支持同一现场节点内的任务之间进行通信, 还支持跨现场总线的两个不同节点内的任务进行通信。应用层的任务在使用邮局时, 完全可以忽略CAN/LIN总线的通讯规程细节。

除邮局外, FDCX08还提供了信号量、中断控制, 实时时钟等服务。信号量是实现任务间的同步或互斥, 对共享资源进行保护, 避免出现竞争或死锁的有效手段;时钟服务实现了对任务的定时、等待超时等功能, 它和中断处理服务一起, 是系统硬实时性的保证。

2.2任务划分

对于一个实时多任务系统, 考虑到系统重入问题, 在进行任务划分时, 一般将相同或者近似的功能尽量集中在同一个任务中实现, 各个任务之间彼此相对独立:

1) 数据采集任务InputTask, 负责按照各个输入通道的采样周期进行A/D采样和读取开关量;

2) 流量计算任务FlowCalcTask, 根据数据采集任务采集到的工况数据, 按补偿数学模型经计算得到流量;

3) 三个控制任务ControlTask1, 2, 3, 每个控制任务代表一种控制通道, 按预设的控制方式和控制参数计算控制输出, 支持的控制方式包括普通PID控制和程序PID控制;

4) 输出任务OutputTask, D/A输出直接在任务中实现, 继电器输出和可控硅输出必须通过定时器中断实现, 任务中只进行初始化和参数设置;

5) CAN 总线收发任务CANTask;

6) 按键扫描任务KeypadTask;

7) 显示任务DisplayTask;

8) 监控任务MonitorTask。

监控任务优先级最高, 它定时喂看门狗, 并监视其他任务是否工作正常;数据采集和计算、控制, 以及输出任务等需要较强实时性的任务, 占据除监控任务之外最高的优先级;作为人机接口的按键扫描任务和显示任务只要具有适中的优先级, 使操作员感觉不到明显的延迟就可以了;CAN总线收发任务只有在需要发送或者发生CAN接收中断的时候才唤醒执行, 平时处于睡眠状态, 给予最低的优先级。

任务总体结构图如图3所示。如果用户有需要, 可以很容易地增添其他任务以实现功能的扩充。

2.3流量计算任务的设计

流量计算是一个特殊的模块, 它作为仪表的核心, 主要是进行数学计算, 不需要直接和硬件打交道, 我们单独作为一个任务来实现。

按照预定设计, 本仪表的适用范围是0.1-22.064MPa, 0-600℃。这个区域涵盖了饱和蒸汽线和一部分过热蒸汽, 它在IAPWS-IF97公式中的位置如图4所示。

过热蒸汽和0-350℃这一段饱和曲线, 计算公式同属于IAPWS-IF97公式第2区。过热蒸汽的密度和比焓是温度和压力的二元函数, 要找到精度足够且形式简单的近似表达式相对困难, 因此直接采用IAPWS-IF97第2区公式, 这是目前精度最高的方法。

利用IAPWS-IF97第2区的导出公式, 可推导出密度表达式 (压强单位为MPa, 温度单位为℃, 密度单位为kg/m3) 如下式:

ρ (Τ, p) =pRΤ (1+πγπr) ×1000=1000RΤ[1p+i=143niΙipΙi-1 (τ-0.5) Ji] (1)

这里π=p1ΜΡa, τ=540ΚΤ+273.15, 称作相对压强和相对温度, R=0.461526 kJ/kg, K是水的气体常数, ni, IiJi是一组系数。

余下350-373.4℃这一段饱和曲线计算公式不属于IAPWS-IF97公式的第2区, 这一小段饱和曲线非常短, 实际使用中有很小的概率会碰到此状态下的蒸汽。为减少计算量, 我们用“基于Chebyshev多项式零点的Lagrange插值”作为逼近工具进行多项式逼近。这种逼近方法的余项收敛速度很快, 在插值多项式次数相等的情况下, 能得到比其他方法更好的逼近效果。其插值多项式如下式 (Tnn次第一类Chebyshev多项式) :

Ln (f, t) =k=1nf (tk) lk (t) lk (t) =Τn (t) (x-tk) Τn' (tk) (k=0, 1, 2, ..., n) (2)

插值用Matlab实现, 为了避免高次插值带来的振荡, 经反复试验, 将区间分为三段, 分段应用Lagrange插值。最终得到的拟合多项式系数如表1所示。

流量计算任务运行时, 先调用蒸汽状态判断子程序判断蒸汽状态, 以决定使用哪个公式。判断的方法是:根据当前工况状态下压力p或者温度t, 计算对应的饱和蒸汽温度ts或饱和蒸汽压ps, 再与tp对比, 若t>ts或者p<ps, 则为过热蒸汽;若t=ts或者p=ps, 则为饱和蒸汽, 除此之外说明已经进入过饱和蒸汽状态, 过饱和蒸汽极不稳定, 除非极度纯净, 否则只要有凝结核, 就会析出水后会变成饱和蒸汽, 工业用蒸汽一般都含有杂质, 故我们仍按照饱和蒸汽来对待, 同时设置报警位。

3系统运行过程

系统上电后, 首先对开关量输入输出、E2PROM和PLL进行初始化, 然后初始化CAN, 创建信号量和消息队列, 对全局变量进行初始值设定;接着初始化各任务堆栈, 依次创建各个任务并将所有任务都置为就绪状态, 最后启动FDCX08。

由于监控任务优先级最高, 得以最先执行, 监控任务分别查询每个被监控任务是否如期发来心跳包, 如果没有, 则该任务主动将自己挂起, 并设置超时时间。按照优先级顺序, 数据采样任务将投入运行, 执行A/D采样和读取开关量, 执行数字滤波和其他预处理后, 将结果送入公共缓冲区1, 通知计算任务就绪, 并向监控任务发送心跳包, 然后将自己挂起。

监控任务收到心跳包后转为就绪态, 抢占CPU得以运行, 继续查询其它被监视任务的运行状况, 如果没有, 则进入挂起态, 再次等待其它被监视任务的运行消息, 系统按任务优先级继续执行优先级高的就绪态任务, 在本系统中流量计算任务将投入运行。尽管控制任务优先级比流量计算任务优先级高, 但是控制任务必须等待流量计算任务的计算结果。流量计算任务在计算完成后, 结果送公共缓冲区2, 通知控制任务就绪, 并向监控任务发送心跳包。执行过程依此类推。由于系统监视任务正常情况下只是查询消息量, 程序执行时间很短, 甚至可以忽略, 所以并不影响其他任务的执行。

作为整个仪表的核心模块的流量计算任务, 其总流程图如图5所示 (kαkε分别为流量系数非线性补偿系数和差压式流量计气体流束膨胀系数补偿系数) 。

4结论

本文给出了一个基于自主研发的FDCX08嵌入式实时多任务操作系统的蒸汽流量表的实现方案。实验表明, 本系统相对任务切换时间仅为7.5μs, 相对中断延迟时间为1μs;仪表的误差集中于350-373.4℃区间, 在设计范围内的最大相对误差为-0.109962%, 发生在饱和蒸汽线的右端点处, 除此之外都在0.01%附近, 插值区间上的最小相对误差为-0.008595%, 加权平均误差为-0.024492%, 整体精度较好。插值区间绝对误差的分布如图6所示。

经过一段时间的实际使用表明, 这种在工控仪表中引入嵌入式实时多任务操作系统的设计方案, 解决了传统单任务设计下无法回避和解决的问题, 极大地提升了仪表的实时性、稳定性和测量精度, 为工控系统和智能仪表的设计提供了一种新的思路。

参考文献

[1]The International Association for the Properties of Water and Steam.Release on the IAPWS Industrial Formulation 1997 for the Thermody-namic Properties of Water and Steam[R]:Erlangen, Germany, 1997.

[2]Wagner W, Kruse A.Properties of Water and Steam[M].Berlin:Springer-Verlag, 1998.

[3]张友德, 涂时亮, 陈章龙.M68HC08系列单片机原理与应用[M].上海:复旦大学出版社, 2001.

[4]涂时亮, 张友德, 陈章龙.单片机微机软件设计技术[M].重庆:科学技术文献出版社重庆分社, 1988.

[5]Freescale Semiconductor, Inc.MC68HC908AZ60 Data Sheet.

操作任务 第7篇

实时操作系统内核的主要功能是在多任务环境下调度任务的执行,而调度机制是影响其性能的关键因素,对于系统资源相对来说比较有限的嵌入式实时操作系统,任务调度机制尤为重要,它直接影响系统的实时效率。MQX Lite实时操作系统是飞思卡尔推出的一款针对资源有限的MCU的轻量级MQX[1]。本文主要研究了MQX Lite的任务状态切换,对MQX Lite所实现的基于优先级的抢占式FIFO任务调度机制进行了详细的分析,并在Kinetis Design Studio 3.0.0集成开发环境和SD-FSL-KL25-EVB开发套件上进行了验证。

1 MQX Lite

MQX Lite实时操作系统是完整MQX的一个真正子集,支持多任务、可抢占调度、快速中断响应、多任务间通信,具有实时性高、内核精简、功能组件模块化等特点,其应用层代码与MQX兼容,基于MQX Lite开发的程序可以移植到MQX上运行[2]。

MQX Lite内核由FIFO调度、轻量级信号量、自动任务创建等核心组件和任务管理、轻量级消息、轻量级事件等可选组件组成。

与标准MQX相比,MQX Lite主要有以下几处不同:

(1)不支持使用动态内存分配,所有内核资源是静态分配的。但是,用户应用程序可通过轻量级内存分配组件分配使用动态内存;

(2)不包含标准MQX中所必须的板级支持包BSP,取而代之的是使用PE中提供的相应组件及逻辑设备驱动来实现板级初始化与对外设I/O的访问[3];

(3)只支持基于优先级的抢占式FIFO任务调度,以及轻量级信号量、轻量级事件、轻量级消息、轻量级定时器等标准MQX的轻量级子集[4];

(4)不允许动态任务创建,所有任务资源在编译时预先分配。

2 MQX Lite任务调度机制剖析

MQX Lite调度器不是通过某一具体任务或者某一实体函数实现的,而是一些跟任务调度有关的接口函数组成的集合,这些接口函数位于dispatch.s文件中,该文件由汇编语言实现,一方面考虑了调度器的执行效率,因为在嵌入式实时操作系统中效率最低的程序就是调度器;另一方面,使用汇编语言可以直接调用指令集中的指令,实现特权访问。dispatch.s文件中主要有以下5个与任务调度相关的接口函数:

//启动任务调度,该接口函数仅执行一次,之后调度器自动开始运行

ASM_PUBLIC(_sched_start_internal)

//MQX Lite中该接口函数与_sched_start_internal接口函数的实现完全一致

ASM_PUBLIC(_sched_run_internal)

//检查当前状态下是否需要执行任务调度

ASM_PUBLIC(_sched_check_scheduler_internal)

//执行任务调度

ASM_PUBLIC(_sched_execute_scheduler_internal)

//阻塞当前任务,将当前任务从就绪队列中移出

ASM_PUBLIC(_task_block)

MQX Lite通过以上接口函数,按照基于优先级的抢占式FIFO调度策略进行任务之间的切换,具体流程如图1所示。

(1)RUN_SCHED:在MQX Lite中,_sched_start_internal接口函数和_sched_run_internal接口函数的实现完全相同,首先都是执行GET_KERNEL_DATA r0指令,获得对系统内核注册表的访问,然后执行跳转指令b sched_internal,直接启动调度器开始上下文切换,并不像MQX那样使用SVC中断和Pend SV中断来执行上下文切换。对于在中断中触发了任务调度时,MQXLite也不像MQX那样延后执行,而是直接退出,这样减少了上下文切换对Cortex内核特性的依赖,同时,降低了实现上下文切换的复杂性,保证了调度效率。

(2)TASK_SWITCH:_sched_check_scheduler_internal接口函数首先执行ldrh r1,[r0,#KD_IN_ISR]与cmp r1,#0指令,检查当前是否有中断服务例程正在执行,若有,则直接返回,不执行任务调度;若没有,在启动任务调度前,执行指令检查当前任务是否是最合适任务,如果是,则不执行任务调度,继续执行当前任务,否则执行函数接口_sched_execute_scheduler_internal,启动任务调度。

_sched_execute_scheduler_internal接口函数执行过程如下,第一步:调用宏函数STORE_ALL_REGISTERS(该函数位于psp_prv.inc)按照psp_blocked_stack_struct结构体中寄存器顺序保存当前任务的上文;第二步:执行cpsid i关闭总中断,以防上下文切换过程被中断打断;第三步:执行sched_internal,先查找非空就绪任务队列find_noempty_que,如果该队列为空(甚至连idel任务都没有),那么将打开中断,使用低功耗模式指令“wfi”进入休眠模式,等待外部事件唤醒后关闭中断,继续查找非空就绪任务队列find_noempty_que,若该队列不为空,则该队列队首任务即为最合适任务(非空就绪任务队列find_noempty_que按照FIFO原则排队),开始执行switch_task[5]。

switch_task是MQX Lite调度器的核心,它会在中断返回和手动触发调度时调用,若是从中断返回,则转到return_from_in terrupt分支上,利用中断返回的自动还原现场机制,恢复下文;若是调用手动触发调度,则执行rest_of_stack_frame_restore分支,先在move_pc_at_the_start_of_stackframe中将新任务的PC值放到栈首,然后通过pop更新到PC寄存器。

(3)TASK_BLOCK:第一步:调用宏函数STORE_ALL_REGISTERS保存当前任务的上文;第二步:关闭总中断,执行GET_KERNEL_DATA r0指令,获得对系统内核注册表的访问,然后执行指令str r1,[r3,#TD_STACK_PTR],存储任务SP到任务描述符td中;第三步:在#TD_STATE字段中设置任务阻塞位;第四步:将任务从就绪队列中移除;第五步:执行b sched_internal,从当前任务就绪队列开始先后搜索新的就绪任务。

3 应用测试

3.1 测试工程开发环境

测试工程软件开发工具为Kinetis Design Studio 3.0.0集成开发环境,测试工程硬件开发平台为SD-FSL-KL25-EVB开发套件,该套件是苏州大学飞思卡尔嵌入式研发中心基于Kinetis L系列芯片MKL25Z128VLK4自行研制的,芯片采用ARM Cortex-M0+内核,工作频率支持48MHz,具有128KB的闪存、16KB的RAM,开发平台硬件实物如图2所示。

3.2 测试工程基本功能及任务设计

测试工程基本功能是利用GPIO口控制SD-FSL-KL25-EVB开发套件上红、绿、蓝三盏LED灯的交替闪烁,通过在任务模板列表中设置任务优先级及在自启动任务task_main()中设置创建任务的先后顺序,来验证MQX Lite所实现的基于优先级的抢占式FIFO任务调度的执行过程。

为实现上述测试工程基本功能,编写4个任务:自启动任务task_main(),主要功能为模块初始化及创建其他三个任务;task_Rlight()、task_Glight()和task_Blight(),这三个任务的主要功能为分别控制红、绿、蓝LED灯间隔1秒交替亮灭。任务体编写完成后,还需要对任务进行相应配置和创建。

第1步:在任务公共头文件中为各个任务定义任务编号、声明任务函数;

第2步:在任务模板列表文件中按任务模板格式为各任务登记任务编号、设置任务函数、任务栈大小、优先级、任务名、任务属性等,任务模板列表代码如下:

第3步:在自启动任务task_main()中创建其他3个LED灯任务,创建代码如下:

3.3 测试结果分析

(1)当任务优先级相同时(优先级都设置为8),先创建的任务先进入就绪队列,任务调度按照先进先出原则执行,任务执行顺序测试结果如表1所示。

(2)当任务创建顺序固定时,优先级高的任务先执行,任务调度按照优先级抢占式原则执行,任务执行顺序测试结果如表2所示。

4 结论

任务调度是实时操作系统内核的主要职责之一,它的主要目的是协调任务对系统资源的争夺使用,任务调度策略直接影响着实时操作系统的性能。MQX Lite实时操作系统是针对资源有限的MCU的MQX子集,它采用了基于优先级的抢占式FI-FO任务调度策略,本文主要对该任务调度策略的实现机制进行了详细分析,方便调试与开发基于MQX Lite的应用工程。

摘要:MQX Lite实时操作系统是针对资源有限的MCU的轻量级MQX,本文介绍了MQX Lite内核组成、任务状态和任务之间的状态切换,详细分析了MQX Lite所实现的基于优先级的抢占式FIFO任务调度机制,并通过测试工程验证了MQX Lite实时操作系统任务调度机制的执行流程。

关键词:MQX Lite,实时操作系统,任务调度,上下文切换

参考文献

[1]王宜怀,朱仕浪,郭芸.嵌入式技术基础与实践(第3版)ARM Cortex-M0+Kinetis L系列微控制器[M].北京:清华大学出版社,2013.

[2]Freescale.MQX User Guide Rev 12[EB/OL].[2014-02].http://www.freescal.com/mqx.

[3]朱仕浪,王宜怀,冯德旺.MQX实时操作系统构件化工程框架研究[J].武汉理工大学学报,2013,35(10):135-140.

[4]朱仕浪,王宜怀,冯德旺.MQX-RTOS底层设备驱动构件可复用性研究[J].计算机测量与控制,2014,22(5):1658-1660.

操作任务 第8篇

1 调度策略的改进

在多任务的实时操作系统中,调度是一个十分重要的功能,用来确定多任务下执行的顺序和在获得CPU资源后能够执行的时间长度,若调度不当,可能引起死锁,死锁就是死机,死机在嵌入式系统中是绝对不允许的[2,3]。绝大多数实时多任务操作系统RTOS(Real Time multi-tasking Operation System)采用基于优先级的抢先式调度方式;在这种机制下,系统中优先级最高进程总是占用处理器。如果多个进程具有同等优先级,这些进程一般通过时间片轮转调度方式实现对处理器的平均分配,但在给定的优先级条件下,时间片轮转调度方式并不能保证处理器时间被关键进程占用。假定系统包含两个具有同等优先级的进程。进程A是不重要的后台进程,而进程B则是至少需要40%处理器时间才能运行完成的关键进程。由于进程A和进程B分配了同等优先级,典型的调度程序将时间片分割,以保证每个进程都能获得50%的处理器的时间。此时,进程B能顺利完成。若进程A创建了一个具有同等优先级的新进程,则这3个进程将共享处理器,进程B只获得33%的处理时间,因而无法完成关键进程。在这种情况下,如果进程A的代码本身存在缺陷或受到病毒的影响,进程A可能会创建更多的进程,使进程B只能占用很少的运行时间。

在系统的调度策略中,在特定优先级条件下为进程增加一个“权重”参数,可以解决这个问题。当一个进程创建另一个具有同等优先级的进程时,该进程必须转让自身的部分权重给新创建的进程。在上例中,假定系统设计时预先分配进程的权重,进程A占用60%的时间,进程B占用40%的时间,当进程A创建新的进程时,必须转让部分权重,在此为设30%,则进程A和新的进程均占用30%处理器的时间,而进程B则不受影响仍为40%,这样就可以保证关键进程顺利进行,阻止了有缺陷的进程无限度地占用CPU,从而提高了系统的安全性。

2 软件分层防御

在以前的嵌入式实时操作系统中,为了确保实时性,通常采用函数调用的方式实现应用程序访问操作系统的服务,一旦应用程序出现错误往往会引起操作系统崩溃。为了解决操作系统数据安全性,使得应用程序、系统程序的错误不会引起蔓延,目前国际上在安全性实时操作系统中提出安全分层防御体系[4,5],其核心思想是根据应用任务的时间特性与空间特性,确保系统资源的可用性,最终实现系统的安全性。就是为每个任务都有自己的指定时间域和一个确定是存储空间域,该时间域和空间域是该任务所独有的,其他任务的破坏不会导致该任务的破坏,也就是说一个任务的破坏不会导致整个系统的其他任务的时间和存储空间的耗尽,从而导致整个系统的崩溃。采用软件分层结构来保护软件不受变化的影响,其实时操作系统的3层结构如图1所示。

应用层 包括所有应用软件的功能模块。

操作系统层 提供实时操作系统的一般服务,主要包括调度、通信、同步和异步操作、存储器管理、中断处理服务等。

模块支持层 主要实现硬件与操作系统间的隔离。

各层之间均有个接口,使各层的更新相互不影响,提高了系统的安全性。

3 Linux操作系统的安全性分析

Linux操作系统是一个开放源代码的、可以免费使用和自由传播的类Unix操作系统。Linux是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入Linux系统,或者盗取Linux系统上的重要信息。因此,要加强安全观念,最大限度的确保信息安全[1]。

3.1 控制超级用户的权限

系统管理员拥有其他用户所没有的特权,一旦获得超级管理员的权限,就获得对计算机系统的完全控制。因此,有必要对权限进行分割,将原有ROOT具有的特权按其功能的不同划分不同的类型,单独加以控制。按最小特权安全策略,对系统的用户权限和进程权限进行控制,将ROOT用户具有的特权细化,使系统中没有一个用户的权限是“超级”的。将Linux操作系统的系统调用分为受控与非受空2类,既满足控制特权又方便用户使用。由特权控制管理程序管理用户特权和文件特权,系统进程特权在执行程序后有进程特权计算公式计算它的新特权[6]。

3.2 加强身份认证技术

身份认证是对系统的主体进行验证,目的是防止数据被非法用户访问。除了口令认证外,采用数字签名技术可大大提高访问控制的力度,采用生理特征认证技术可获得最好的验证效果[1]。如生物识别技术,即基于指纹、声音、视网膜等独一无二的特征验证。

3.3 备份

在完成Linux系统的安装以后应该对整个系统进行备份,以后可以根据这个备份来验证系统的完整性,当然也可以用tripwire对照一个数据库来检查文件,这样就可以发现系统是否被非法篡改过。例如,tripwire可以很容易地确定入侵者是否已经把/bin/login的副本替换成了一个把口令记录在秘密文件中的程序。根据篡改过的文件可以判断系统哪些文件存在安全隐患,就可以加强这方面的管理,不断完善系统的安全性。同时,一旦系统文件被破坏也可使用系统备份来恢复到正常状态。

3.4 改进系统内部的安全机制

在编程时经常要考虑溢出问题,同样的Linux操作系统也要考虑此问题。Linux内核没有对存储在ISO9660文件系统上的符号进行正确长度检查,本地攻击者可利用这个漏洞获得root用户权限。通过改进Linux操作系统内部功能来防止Linux操作系统缓冲区溢出攻击这种破坏力极强却有最难预防的攻击方式,虽然这样的改进需要管理员具有相当丰富的经验和技巧,但对许多安全性级别要求高的Linux系统来讲是很有必要的[7,8]。

缓冲区溢出实施起来很困难,因为入侵者必须能够判断潜在的缓冲区溢出何时会出现以及它在内存中的什么位置出现,同时缓冲区溢出预防起来也十分困难,系统管理员必须完全去掉缓冲区逸出存在的条件才能防止这种方式的攻击。现在已经有使用SafeGuard的Linux版本,虽然使用SafeGuard会导致系统的性能下降,也可能会导致对执行栈的某些程序和库的依赖问题。但它能够防止整个缓冲区溢出这一类的攻击[8]。

4 结 语

一个实时操作系统的安全性所包含的范围很广,如文件系统的安全性、死锁、进程的调度等。限于篇幅,本文只对其中的几个进行了讨论分析。由于操作系统在整个计算机系统的重要性,尤其是在涉密网络中,要特别注意其安全性,因此,必须加强以安全操作系统为基础的整体安全保障设施的建设。

摘要:随着嵌入式技术的发展,嵌入式实时多任务操作系统已经被广泛使用,因为其安全性关系到整个信息系统,若处理不当可能引起系统的崩溃,因此很有必要研究其安全性。针对嵌入式实时多任务操作系统的安全性提出2点改进:调度策略的改进;软件分层。实践表明这2个方法能很好地保护系统的安全。当然,每个系统都有其固有的安全缺陷,这就需要在实践中不断摸索和积累经验。最后以Linux操作系统为例具体分析如何提高其安全性。

关键词:实时多任务操作系统,时间片轮转调度,Linux操作系统,权限分割,缓冲区溢出

参考文献

[1]蒋天发.Intranet关键技术及其信息安全新方案的研究[J].武汉理工大学学报:交通科学与工程版,2004,28(5):713 716.

[2]Intel.Intel PXA250 and PXA210 Applicaion Processors[R].Developr′s Manual,2002.

[3]罗蕾.嵌入式实时操作系统及应用开发[M].北京:北京航空航天大学出版社,2007.

[4]何小庆.微软嵌入式操作系统的分析和比对(下)[J].电子产品世界,2007(11):128 130.

[5]胡继阳.嵌入式系统导论[M].北京:中国铁道出版社,2005.

[6]吴健.基于嵌入式Linux的无线检测系统设计[J].现代电子技术,2006,29(13):78 80.

[7]岳浩.Linux操作系统教程[M].北京:机械工业出版社,2005.

操作任务 第9篇

在基于实时操作系统的嵌入式开发过程中,软件设计是实现嵌入式系统功能的关键。实时系统的软件设计,需要考虑任务的划分、任务间的通信同步、中断、时间上的实时响应性能、周期性活动等方面。家用播放器软件需要实时从光驱中读取信息并播放,还要实时响应用户动作,是典型的对实时性要求很高的系统。某一家用播放器的播放控制软件以实时操作系统T-Kernel为基础,实现了合理的任务划分和任务间通信同步等关键技术。以该播放控制软件为例,介绍如何进行基于实时操作系统的多任务软件设计。

1 T-Kernel

T-Kernel源自于日本东京大学坂村健博士于1984年提出的计算机操作系统规范ITRON(Industrial The Real-time Operating System Nucleus),具有实时性强、体积小和开源等优点,适用于任何规模的嵌入式系统。T-Kernel有统一的上层接口规范、对象数据格式以及标准的中间件结构,使上层应用软件能从底层硬件结构中独立出来,可以不依赖于硬件处理器而移植,因此大大加快了嵌入式软件的开发速度。目前国际上有很多基于T-Kernel的产品,其中消费电器较多,目前已成为日本事实上的工业标准。

下面就任务管理、同步和通信管理、中断处理3个方面进行介绍。

1.1 任务管理

任务通常被称作一个可调度单元,一个任务需要和承担其他功能的任务一起协同工作,形成一个整体,成为多任务系统。一般把任务设计成一段具有独立功能的无限循环的程序。操作系统的职责是控制任务的执行,在T-Kernel中,将任务划分为7个状态进行管理,在任意时刻,任务状态只能属于这7个状态之一。任务的调度示意图如图1所示。

未登录状态(non_existent):已经装配到内存中,但不受OS管理的任务状态。

休眠状态(dormant):已经从调度对象中删除掉的任务状态,即无法调度的任务。

就绪状态(ready):等待系统控制权到达的状态,一旦获得控制权,就迁移到run状态。

运行状态(run):得到了系统的控制权,正在处于运行处理中的任务状态。

等待状态(wait):正在等待必要运行条件到达的状态。

挂起状态(suspend):被其他任务中断执行(sus_tsk调用的发行)的状态。

双重等待状态(wait_suspend):由上面wait状态和suspend状态合成的状态,即处于wait状态时,系统通过sus_tsk调用,使任务进入到了suspend状态。

在T-Kernel中,为了进行任务管理,OS需要的主要信息包括TASK ID,TASK状态,TASK优先度等都被保存在TASK CONTROL BLOCK即TCB中。TASK ID在进行任务相关的系统调度发行时使用。RTOS对于任务的管理就是通过对任务TCB的管理来实现。

在T-Kernel中任务调度的实质是在不同的调度时机根据当前不同的状态对schedtsk进行赋值。一般在对互斥量、信号量、邮箱的操作等过程中和任务生命周期中,T-Kernel会进行任务调度。T-Kernel采用抢占式的基于优先级的调度方式,并且支持多任务具有相同优先级,对于拥有相同优先级的任务可以按照FCFS(FirstComeFirstServe)或时间片轮转的方法调度。

1.2 同步与通信管理

实时多任务系统的功能一般要通过若干任务与若干中断服务子程序共同完成。任务与任务之间、任务与中断服务子程序之间必须协调动作、互相配合。如果有多个任务访问共享资源而不使资源被破坏,或者一个任务需要将某个任务已经完成的情况通知另外一个或多个任务,任务之间就需要互相进行通信:

T-Kernel系统主要提供了下面几种通信同步机制。使用MailBox实现任务之间的信息通信,使用Event Flag实现任务间的协调功能,使用Semaphore实现系统资源的排他访问。

1.3 中断管理

为了提高中断的吞吐率,T-Kernel系统将中断分成两个处理等级来进行中断处理,一种是直接启动的中断Handler,另一种是中断任务Handler。

直接启动的中断Handler,处理时间可以在短时间内完成,并且要求响应速度的中断请求,这种中断Handler不需要通过OS的管理也能够启动中断处理专用程序。

中断任务Handler,需要的处理时间比较长,并且对中断响应要求不是特别严格的场合使用。所谓中断任务指被中断处理程序唤醒或启动的中断处理专用任务。

2 基于T-Kernel的多任务软件设计

2.1 播放器软件

家用播放机需要从碟片上读出媒体数据转化成音视频信息呈现给用户,而且还需要提供强大的导航功能。导航功能是播放软件根据碟片的规范,执行规范的各种播放跳转来实现的。因此,家用播放软件不仅需要控制数据的读取和解码,而且还要实现碟片的导航播放。

2.2 多任务的划分

一个采用多任务设计的软件,在划分任务的时候,一般遵循下面几个原则,比如,I/O依赖性、时间关键性的功能、计算量大的功能、功能内聚、时间内聚和周期执行的功能等等。设计时要避免将任务划分的过细或过粗,以及产生优先级倒置和发生死锁的情况。

根据以上原则,对于播放器产品的开发,主要从两方面考虑任务的划分,一方面是任务分割的角度,另一方面是周期性功能的角度。首先,任务分割的角度主要是根据播放器软件的功能逐步细化后进行分割。如将软件分成Driver、FrontEnd、BackEnd、PlayControl、InterFace等任务。其次,周期性功能的角度主要是考虑到系统处理中的一些时间限制和要求,例如一些定周期动作的功能或动作,比如定期更新显示信息和电源系统的监测等。

综上所述,对于此款播放器软件,主要分成如下几个任务,如表1所示。

2.3 多任务间通信和同步

播放器软件的任务设计中,数据的读取控制和播放等功能都需要遵循一定的时序。各任务为了遵循时序处理时,就必须在任务间进行同步通信,比如发送消息,设置Trigger等。T-Kernel系统提供了MailBox,EventFlag,信号量等机制来实现任务间的通信和同步。

在播放器产品的开发中,可以按照下面的方法实现任务间以及任务与事件间的通信和同步。Mailbox来进行任务和任务间的同步,EventFlag来实现任务和事件间的同步。

2.3.1 任务间通信

本播放器软件中,任务对任务间的同步通信采用Mailbox。因为发送Message是指定邮箱,而邮箱与任务是相关独立的两种对象,如图2所示为了保证发送的Message被正确的任务接受,所以规定邮箱和任务的关系为1对1对应。

下面以一个例子来说明如何通过邮箱实现任务间的通信。任务PlayBack和任务FrontEnd的一个读数据的处理流程,如下所示:

(1)任务PlayBack给任务FrontEnd发送Message,告诉FrontEnd读取某段数据。

(2)任务FrontEnd解除Message等待状态,解析Message的信息,根据解析内容进入处理阶段Process。

(3)处理阶段Process内实行各种处理,比如分析参数、清除FrontEnd和BackEnd的Buffer,向BackEnd申请RingIO Buffer,发消息给Deiver通过PATA/SATA总线读取碟片数据等,中间根据需要可能还要向别的任务发送消息或事件标志。

(4)全部处理完了后,任务FrontEnd再次进入Message等待状态。

2.3.2 任务间同步

通常在一些情况下,任务间以及处理程序或事件不仅需要进行通信,而且需要按照一定的时序进行作业。这时仅仅依靠邮箱机制就不能实现任务与任务处理程序间的同步,需要T-Kernel提供的EventFlag机制来实现处理的同步,如图3所示。

下面以一个例子来说明如何通过EventFlag实现任务间的同步,即任务PlayBack、任务FrontEnd和任务BackEnd的一个读数据的处理流程,如下所示:

(1)任务PlayBack给任务FrontEnd发送Message,告诉FrontEnd读取某段数据。

(2)任务FrontEnd解除Message等待状态,解析Message的信息,根据解析内容进入处理阶段Process。

(3)处理阶段Process内实行各种处理,比如分析参数,清除FrontEnd和BackEnd的Buffer,向BackEnd申请RingIO Buffer,RingIO没有空Buffer,FrontEnd就进行等待,等待event置位。

(4)任务BackEnd播放数据,并检测是否有与BackEnd有关的event,如果有,而且RingIO有一定的空Buffer,就置位event。

(5)任务FrontEnd收到event被置位,就继续申请Buffer,发消息给Deiver通过PATA/SATA总线读取碟片数据等。

(6)处理完这个Message后,任务再次进入等待状态,直到有新的消息或事件过来。这样就实现了任务与事件的同步。

2.3.3 任务间共享资源的保护

多任务系统中有些资源一次只能被一个任务使用,防止同时动作的多个任务出现资源争执,T-Kernel系统中提供了非负计数器Semaphore,由管理资源个数的计数器进行资源使用的调配,如图4所示。

下面以一个例子来说明如何通过Semaphore实现任务间共享资源的保护。即任务FrontEnd和任务BackEnd间Buffer的保护管理,如下所示:

(1)任务FrontEnd解除Message等待状态,解析Message的信息,根据解析内容进入处理阶段Process。

(2)处理阶段Process内实行各种处理,比如分析参数,清除FrontEnd和BackEnd的Buffer;向BackEnd申请RingIO Buffer,申请成功后,就申请信号量Semaphore,值设为1。

(3)发消息给Deiver通过PATA/SATA总线读取碟片数据,将读出的数据存放在申请的RingIO Buffer里面,然后把申请的Semaphore清零。

(4)这样就可以保证在写RingIO Buffer的时候不被别的任务打断,实现共享资源的保护。

3 多任务软件设计经验

基于实时操作系统的多任务软件与一般的软件不同,有一些特性需要注意,下面就一些开发经验进行介绍。首先,要注意函数的可重入性,尽量少使用全局变量,多使用局部变量。其次,不要频繁地发送无用的信息,频繁发送消息会使任务频繁切换,有可能导致该响应的消息被阻塞,影响系统的实时性能。再次,合理分配任务内存区域,划分的任务较多时,就会占用系统很大的ram量,可能导致系统ram溢出。但如果ram量分配过小,就可能有任务ram溢出情况出现。最后,注意任务状态的更新时机,不要出现任务间状态不同步的情况,从而导致系统混乱。

4 结语

以嵌入式实时操作系统T-Kernel为开发基础设计的播放器软件,是一个典型的多任务软件系统,并且在硬件平台上成功运行。以上通过描述该软件的设计过程,介绍了基于实时操作系统的多任务设计的关键技术,比如任务的合理划分,使用MailBox进行任务间通信和使用EventFlag进行任务和事件间同步等。本文所介绍的内容对于大多数嵌入式实时系统的设计,都有比较好的借鉴意义。

摘要:研究基于实时操作系统T-Kernel的多任务软件设计。首先介绍了实时操作系统T-Kernel的基础知识,包括任务管理、同步与通信管理和中断管理等。以一种基于T-Kernel的播放器软件设计为例,描述了进行多任务设计,主要是软件的多任务划分和设计编程,最后介绍开发播放器软件的经验并进行了总结。

关键词:T-Kernel,实时操作系统,播放器软件,多任务编程

参考文献

[1](日)坂村健,等.源码开放的嵌入式实时操作系统T-Kernel[M].北京:北京航空航天大学出版社,2005.

[2]Jean J.Labrosse.嵌入式实时操作系统uC/OS-II.邵贝贝,等,译.北京:航空航天大学出版社,2003.

[3]蒋句平.嵌入式可配置实时操作系统eCos开发与应用.北京:机械工业出版社,2004.

[4]Sakamura K.T-Kernel Specification(Version 1.1.02.01).T-Engine Forum,2006.

操作任务 第10篇

关键词:任务驱动式,操作系统,实验教学

一、引言

操作系统是一门涉及知识面广的专业基础课, 由于教学内容的原理性较强、知识体系繁杂, 在实验教学中:由于理论教学与实验教学脱节, 理论知识与实际操作系统的结合还存在一定距离, 使得学生学与用之间缺乏联系。另外受课程自身特点的限制, 理论教学占据了绝大部分时间, 而实验教学学时数偏少, 使得很多实验项目不能实施, 学生只是了解了表层知识, 根本达不到培养学生的科研能力和探索精神的目的。本文针对上面的问题, 采用任务驱动式教学方法, 对实验教学进行改革, 并在实际教学中加以应用。

二、任务驱动式教学法

任务驱动教学法是一种建立在建构主义学习理论基础上的教学法, 它将以往以传授知识为主的传统教学理念, 转变为以解决问题、完成任务为主的多维互动式教学理念;将再现式教学转变为探究式学习, 使学生处于积极的学习状态, 每一位学生都能根据自己对当前问题的理解, 运用共有的知识和自己特有的经验提出方案、解决问题。

围绕一个共同的任务活动中心, 在强烈的问题动机驱动下, 通过对学习资源的主动应用, 进行自主探索和互动协作的学习, 并在完成既定任务的同时, 引导学生产生一种学习实践活动。

长期以来, 操作系统实验主要是一些验证性实验, 实验教学内容老化、手段单一, 学生只是按部就班完成布置的任务, 实验兴趣不大。使得实验效果不是太好, 进而也影响了理论教学的效果。所以笔者就尝试着将这种教学方法应用到实际的实验教学中。首先, 设计一些有特点的实验内容, 不但符合教学任务要求还要吸引学生的兴趣。其次, 在实际教学过程中, 对实验任务进行科学的分解, 精心设置一些小问题, 使得这些问题能环环相扣, 通过逐一解决而最终完成这个任务。最后, 设计一些可自选的实验任务, 学生可以根据自己的兴趣爱好以及对相关知识的理解程度, 选做相关内容。这样, 在整个实验过程中, 学生在解决问题动机的驱动下, 能主动地探索和同学相互协作来解决问题, 以完成既定的任务, 使学生由被动学习变成主动学习, 激发了学生学习的兴趣。

三、在实验教学中的应用

在实际教学中采用模拟实验平台是在虚拟机上安装Linux操作系统, 来完成设计的实验内容。在实验教学中, 加大实验课时的比重, 并且实验的考核成绩要占课程总成绩的30%以上, 只有这样才能提高学生的动手操作能力。课程的实验教学要具有非常明确的实验目的、实验步骤和实验内容, 减少实验时的盲目性和随意性。

在教学中, 只选择了优秀理论教材, 没有给学生订阅相应的实验教材。因为, 每本实验教材不可能为我们量身定做, 很多内容过于老化, 没有精心处理, 而且有的的内容也过于繁琐。所以, 在实验教学中, 参考多本相关的实验教程, 精选一部分实验内容, 并整理出一份电子版的实验指导书, 给学生共享。同时, 与教研室的教授该课程的其他教师, 总体制订了以下几个实验项目, 如表1所示:

为了方便学生灵活地进行实验练习, 把操作系统的实验设计分成必做实验与选做实验。

必做实验:要求在Linux环境下, 由教师指导, 每个学生独立完成。使学生初步具有用所学的软件设计技术和程序设计语言知识, 实现操作系统设计原理中的关键问题, 如:进程控制、进程通信、进程 (或者线程) 同步和调度、存储器管理、文件系统。

选做实验:由于课时有限, 不可能每位同学做完所有的选做实验, 于是把学生分成若干组, 每组布置一个实验项目。这样激发了学生学习的兴趣, 提高了学生分析、解决问题的能力。上表中的高级实验设置为选做实验, 其他为必做实验。

以上是实验课程的总体任务, 针对不同的实验任务, 分别进行设计。比如, 进程管理的实验, 就将其内容分成:进程创建、进程同步两部分, 分两次实验来做。在进程创建中, 练习使用系统调用fork () , 创建一个子进程, 使得系统中父进程和子进程活动。首先, 获取两进程的ID号, 观察它们之间的关系, 分析原因, 从而理解进程ID号特征和作用。接着, 让父子进程分别完成输出一个字符的操作, 将输出一个字符改为输出一串字符, 观察输出结果, 为什么程序在执行的过程中, 会同时执行if-then-else的两个分支?分析原因, 从而理解程序和进程的区别。然后, 用fork () 创建一个进程, 再调用exec (%) 用新的程序替换该子进程的内容, 观察结果, 分析原因, 进而了解程序和进程的对应关系。最后, 再用fork (%%) 创建一子进程, 让一父进程和两个子进程分别进行输出字符的操作, 观察每次输出的顺序是否一致, 若不一致, 如何对它们的输出顺序加以控制, 即如何实现进程的同步?而这个问题又是下次实验主要的任务, 使得实验内容前后连贯。通过这样的设计, 将一个大问题, 分解成若干子问题, 问题的难度由浅入深, 循序渐进。问题与问题之间环环相扣, 最后的一个问题还导出了下次实验的内容, 激发学生带着问题, 提前预习相关知识, 以便更好地解决问题。并且将每个子问题都与具体的理论知识点相连, 使得理论教学能与实验教学有机地结合。

类似以上的设计, 就不一一列举了, 这些实验的设置加深了对相关原理知识的理解。如果要深入地了解Linux, 建议在教学计划中增加Linux作为计算机专业的选修课, 这样可以弥补在实验教学有限课时内, 对Linux操作系统及相关源码的介绍讲解不足的地方。

四、取得的教学效果及其评价

通过在教学中采取了一系列的改进措施, 从学生的作业、实验报告、实验教学过程以及教学反馈中, 可以看出实际的教学效果还是有很大成效的。有些同学不再厌倦或畏惧此课程, 就连对考研专业课中的操作系统部分知识也信心十足。

但是, 如前分析, 操作系统课程内容丰富而且非常繁杂, 所以要在有限的课时内做到面面俱到也是不现实的, 所以, 建议将Linux引入操作系统的教学, 或者开设Linux的选修课程。

五、总结

本文主要分析了操作教学中存在的问题, 针对问题结合实际教学提出了相应的改进措施, 并且在实际教学实施也取得良好的成效。但是课程的教学改革是持久的工程, 还需要不断地摸索和实践, 以取得更好的成绩, 让教与学达到更好的融合。

参考文献

[1]翟高寿, 姚毅, 须德, 等.浅谈计算机操作系统课程教学改革[J].交通高教研究, 2002, (2) .

[2]刘乃琦.操作系统课程的教学研究[J].计算机教育, 2007, (10) .

[3]汤小丹, 梁红兵, 哲凤屏, 等.计算机操作系统[M].第3版.西安:电子科技大学出版社, 2007.

上一篇:概念设计下一篇:鱼刺分析法