计算机专业“信息技术”方向操作系统实验的教学改革

摘要:计算机教育专家按计算机专业从业人员解决问题的空间、要求的知识结构及其人才培养的课程设置把计算机专业人才培养分为四类:计算机科学与技术、计算机工程、软件工程、信息技术。信息技术人才是国民经济需要最多的人才,本文通过分析信息技术类人才的特点,提出信息技术方向应选择Java作为主流语言,进而施行操作系统实验的改革。

关键词:分类培养;信息技术;计算机语言;操作系统

中图分类号:G642文献标识码:B

1信息技术类人才特点

计算机专业人才分类培养的目的是合理设置不同分类人才培养的课程体系,构建不同分类人才的知识结构、素质要求、专业能力。逐步改变目前课程偏多、内容偏旧、专业不专、能力不强、人才市场适应性差的局面。信息技术人才是我国大量需要的计算机专业人才。信息技术从业人员解决的核心问题空间、需要的知识体结构分别如图1 、图2所示。

传统的计算机应用专业、近几年新增的电子商务技术专业、电子政务技术、网络工程专业、企业信息管理系统等大都归于“信息技术”方向,其人才的知识体结构可以借鉴“信息技术”人才知识结构。由图1、图2可以看出信息技术从业人员解决的问题空间倾向于应用,大量的需要解决的问题涉及的是组织系统的行为、应用技术、软件开发。显然,这种知识结构与传统的计算机应用专业是不同的,它突出了“应用”。

2信息技术类人才的语用能力

当今计算机应用从系统行为分析、系统逻辑设计到系统实现都和计算机语言密切联系在一起。支持软件系统建模的UML语言,它可以描述系统分析与设计,面向对象的程序设计语言(C++、Java、C#)、支持Web应用的HTML语言、脚本语言(Script等)、网络数据表达语言XML、动态网页语言(JSP、ASP.Net)是当今实现应用系统的主要语言。如果把这些语言和图1和图2联系起来,也就是说把信息技术方向人才的核心问题空间与解决问题主要选择的语言联系起来,我们得到图3 。这里仅列举了当代IT使用最广、最有代表性的语言。从图3可以看出:信息技术方向从业人员一般选择Java、C#、UML、XML,一般选择基于Web的框架,它成为从事信息技术人才必备语言。

当今一门语言往往与一种IT理论与技术体系联系在一起,C#和Windows 操作系统、.Net可视化开发环境密不可分;Java语言和J2SE、J2EE、J2ME及其集成开发环境联系在一起;语用能力成了专业能力特色的体现。这样一来,对于计算机专业语言教学面临如何最优地选择一种语言作为主流语言,即作第一语言、它涉及后续专业基础课程、专业课程的教学。

我国多数高校计算机专业以往不管什么人才培养方向,一般开设的第一门语言是C或C++。目前越来越多高校计算机专业信息技术方向选择Java语言或C#作为主流语言,许多专家在探索Java或C#作主流语言的“操作系统”的教学改革。

3信息技术方向“操作系统”实验的改革

选择Java语言作为信息技术方向主流语言就必须研究、实践“操作系统”等课程实验如何利用Java开发环境来完成。由图2看出,信息技术方向的操作系统的内容包含在“平台技术”中。平台技术是支持“应用”必须技术的有机集合。这里指的必须技术主要包括计算机硬件系统、操作系统、中间件技术。这里讲授的平台技术应该是为理解、开发、维护“应用”的专业基础理论与技术。为了节约篇幅,下面以java.util.concurrent 包为例描述它支持操作系统的进程、线程管理(并行计算)实验。

操作系统的进程、线程管理涉及中断、原语、进程(线程)、互斥、同步、进程(线程)调度等重要概念,java.util.concurrent 包可以说是上述概念的Java抽象。

(1) 原子变量

java.util.concurrent.atomic包含原子变量类。它支持读取和写入原子变量与读取和写入对一般变量的访问具有相同的存取语义。 原子变量的操作会变为平台提供的用于并发访问的原语。原子变量屏蔽变量操作中断,降低锁定对象的粒度。中断是把单CPU虚拟成多CPU的物理条件,是程序并发的基础,也是导致破坏顺序程序封闭性的直接原因。

(2) 互斥机制

java.util.concurrent.locks包提供了锁类或接口,Lock接口的主要实现是ReentrantLock,它是指可重入的锁,多个线程可以并发对锁发出请求,但同一时刻只能有一个线程持有该锁。一个ReentrantLock将被最近成功获得锁,且还没有释放的线程所拥有。当锁没有被其它线程占有时,一个申请锁的线程将成功获得锁并返回,可以通过isHeldByCurrentThread和getHoldCount方法来检查此情况是否发生。

该类的构造方法接收一个可选的参数:fairness(表示公平地分配锁)。当设置fairness为true(即采用公平分配锁的方式)时,在多个线程的争夺下,获取锁的访问将花费很长时间。否则该锁将无法保证任何有序的访问。使用公平锁(即使用公平的方式分配锁)开发的程序在多线程并发访问时与采用默认的设置(使用不公平锁)相比,表现为很低的吞吐量,但是有时在获取锁和保证锁分配的均衡性时有些小的差异。公平锁不能保证线程的计划性和有序性。例如,一个在许多使用公平锁的线程中的一员可能获得多倍的获得锁的机会,这种情况发生在其它激活线程没有被处理而且不持有锁时。

ReadWriteLock接口定义的锁可以在读者之间共享,但与写者互斥。它只有一个实现ReentrantReadWriteLock.

Condition接口描述了与锁相关的条件变量,可能多个条件对应一锁。

AbstractQueuedSynchronizer类是定义依赖阻塞队列线程的锁和其它同步的父类。

(3) 同步接口

Sync接口提供获取acquire()、尝试attempt()、释放release()方法,以便实现同步操作,以实现更加灵活的代码同步。Sync接口至少要提供acquire() 和release() 两种方法。试图占有Sync对象的线程调用acquire()方法,然后等待,直到轮到它们掌控Sync对象。处理完毕后,占有Sync的线程必须调用sync上的release()方法。Sync接口与其实现类的类图如图4所示。

当多个线程同时在等待获取Sync接口时,线程占有权的最后次序取决于被选Sync的实现。Sync接口上线程占有权的策略包括先到先服务(first come first served,FCFS)和基于线程优先级(thread priority based)。Sync也可以定义attempt()方法,它考虑了线程等待Sync的最大持续时间。

Semaphore:可用于pool类实现资源管理限制。提供了acquire()方法,允许在设定时间内尝试锁定信号量,若超时则返回false。

Mutex:Mutex对象可以作为参数在方法间传递,所以可以把同步代码范围扩大到跨方法甚至跨对象。

NullSync:其方法的内部实现都是空的,可能是作者认为如果你在实际中发现某段代码根本可以不用同步,但是又不想过多改动这段代码,那么就可以用NullSync来替代原来的Sync实例。此外,由于NullSync的方法都是synchronized,所以还是保留了“内存壁垒”的特性。

ObservableSync:把sync和observer模式结合起来,当sync的方法被调用时,把消息通知给订阅者。

TimeoutSync:可以认为是一个adaptor,可以位于Sync的外层,实现上锁超时控制的类,其构造函数如下:public TimeoutSync(Sync sync, long timeout){…}。

(4)Executor/ThreadFactory接口

该把相关的线程创建/回收/维护/调度等工作封装起来,而让调用者只专心于具体任务的编码工作(即实现Runnable接口),不必显式创建Thread类实例就能异步执行任务。

使用Executor还有一个好处,就是实现线程的“轻量级”使用, 包括线程池,任务队列等。

ThreadFactory主要实现有: ThreadFactoryUser.Default ThreadFactory。

类关系图如图5所示。

java.util.concurrent除包含上述支持同步计算的类外,它还包括其他层次更高的线程同步类。不难看出利用java.util.concurrent包认真选择、设计,完全可以完成操作系统的并行计算部分的实验。同时这个过程也是提高学生面向对象分析、设计、实现的过程,提高Java语言应用能力的过程。

同样利用Java可以很好地支持操作系统文件管理实验。

4总结

计算机专业人才分类培养是提高计算机专业人才质量的需要。信息技术人才是国民经济需要最多的人才,信息技术人才培养应该按自己需要选择主流语言,Java语言信息技术人才的主流语言,有利于掌握Java技术,也完全满足信息技术人才操作系统实验需要。

参考文献:

[1] 教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)[M]. 北京:高等教育出版社,2006.

[2] 殷兆麟,姜利群,朱长征. 面向对象语言教学中一些问题的探讨[C]//全国计算机课程教学改革论坛论文集.北京:高等教育出版社,2005.

[3] 殷兆麟,张永常,范宝德,等. 以创新精神贯彻“高等学校计算机科学与技术专业发展战略研究报告暨专业规范”[C]//全国计算机课程教学改革论坛论文集.北京:高等教育出版社,2006.

推荐访问:信息技术 教学改革 计算机专业 操作系统 方向