当前位置: 东星资源网 > 高考资料 > 高考时间 > 正文

【操作系统中线程概念的教学方法研究】

时间:2019-01-08 来源:东星资源网 本文已影响 手机版

  摘 要: 在《操作系统》课程中,线程是一个非常重要的概念,一直都是该课程的授课难点。结合几年来的教学经验,作者对其教法进行探讨和总结,提出了教授该概念的技巧和方法,实践证明学生可彻底掌握线程的概念。
  关键词: 《操作系统》 线程 教学方法
  
  1.引言
  在《操作系统》课程中,线程是非常重要的概念之一,但由于其抽象性,学生在掌握理解时有一定难度,历来都是教学难点。我在参加全国高校操作系统课程培训交流时,发现很多授课老师对线程的概念很含糊,解释不清为何线程切换付出的时空代价比进程切换小,学生更是一头雾水。本文有针对性地采用实例教学和原理比较教学,注重对学生兴趣的培养,采用将理论与实践相结合的教学方法,打开学生的谜团,彻底理解线程的概念。授课中先以生活中生动的实例解释概念,使学生产生最直观的认识和理解,然后从原理出发,揭开线程的面纱。
  理解线程,必须首先掌握程序、进程的概念,本文首先介绍程序、进程和线程的关系与区别,其次进一步从原理出发解释进程和线程切换过程及切换中系统付出的代价,最后提出通过线程仿真编程使学生彻底掌握线程的概念。
  2.程序、进程和线程的关系与区别
  2.1程序和进程
  程序(Program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合,是存储在外存储器的,是静态的。而进程(Process)则是程序的一次执行过程,是动态的。对此概念的理解可以使用例子:可以把一首歌曲的曲谱看成是程序,根据曲谱演奏音乐就是进程,曲谱可以长期保存,而演奏是个动态的过程,同一个曲谱可以多次演奏,一次演奏也可以综合多个曲谱。
  关于进程的进一步讲解如下。
  程序在运行过程中需要占有计算机的各种资源才能运行。如果任一时刻,系统中只有一道程序,即单道程序系统,程序则在整个运行过程中独占计算机全部资源,整个程序运行的过程就非常简单,管理起来也非常容易。比方说当今的房价和租金都非常高,如果一个职员A独自租了一套房子,他想看电视就看电视,想去卫生间就去卫生间,就没人和他抢占资源。但为了提高资源利用率和系统处理能力,现代计算机系统都是多道程序系统,即多道程序并发执行。程序的并发执行带来了一些新的问题,如资源的共享与竞争,它会改变程序的执行速度。好比上例中由于租金过高,A经济压力过大,只好和B合租一套,当A想去卫生间的时候,如果此时B在使用卫生间,则A只得等待,影响了A的节奏。如果程序执行速度不当,就会导致程序的执行结果失去封闭性和可再现性,这是我们不希望看到的。因此应该采取措施制约、控制各并发程序段的执行速度。由于程序是静态的,我们看到的程序是存储在存储介质上的,它无法反映出程序执行过程中的动态特性,而且程序在执行过程中不断申请资源,程序作为共享资源的基本单位是不合适的,需要引入一个概念,它能描述程序的执行过程而且可以作为共享资源的基本单位,这个概念就是进程。
  2.2进程和线程
  在操作系统中引入进程的目的是使多个程序并发执行,改善资源利用率及提高系统的吞吐量;再引入线程(Thread)则是为了减少程序并发执行时付出的时空开销,使操作系统具有更好的并发性。
  “线程”其实并不是一个新的概念,实际上它是进程概念的延伸。如果一个程序只有一个进程就可以处理所有的任务,它就是单一线程的。如果一个程序可以被分解为多个进程共同完成程序的任务,这个程序被分解的不同进程就叫做线程(如图1),也叫轻量级进程(Light Weight Processes)。线程有几种模式,如单线程、单元线程模式和自由线程模式。
  为了使学生理解线程概念,可以将程序比喻成一个搬家的过程:将所有物品从一所房子搬到另外一所房子。如果采用单线程方法,就需要你自己完成从打包到扛箱子、运输再到拆包的所有工作。如果使用多线程的单元模式,表示邀请了几位朋友来帮忙,每个朋友都负责一个单独的工作,并且不能帮助其他人,他们各自负责自己空间内的物品搬运。如果采用自由线程模式,邀请来的所有朋友就可以随时在任何一个房间工作,共同打包物品。例子中搬家就是运行所有线程的进程,参与搬家的每个朋友所承担的工作都是一个线程。显然使用线程能够更有效、更迅速地执行程序。
  3.对线程的进一步理解
  线程为轻量级进程,也是CPU调度和分派的基本单元,线程不能够独立执行,必须依存在某个进程中;进程则被称为重量级进程,它是系统分配资源的单位,可拥有多个线程,能同时执行多个任务,他们之间的关系可以简单地由图2表示。
  线程和进程的关系如下:线程是属于进程的,线程运行在进程空间内,同一进程产生的线程共享同一内存空间,当进程退出时该进程产生的线程都会被强制退出并清除。线程可与属于同一进程的其他线程共享进程拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一些在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。此外,由于一个进程中的多个线程具有相同的地址空间,在同步和通信的实现方面线程也比进程容易。在一些操作系统中,线程的切换、同步和通信都无须操作系统内核的干预。
  由于进程是一个资源的拥有者,因而在创建、撤销和切换中,系统必须为之付出较大的时空开销。在系统中设置的进程,其数目不宜过多,进程切换的频率也不宜过高,这就限制了并发程度的进一步提高。引入线程后,因线程基本不携带资源,切换时系统付出的时空代价远小于进程的切换,在这点上,很多老师讲解不清为何线程携带资源少,切换时付出的时空代价也小,下面分别介绍进程切换和线程切换的过程,以便帮助老师和学生理解线程切换的代价为何远小于进程切换,进而对线程有更深入的认识。
  3.1进程的切换过程
  进行进程切换就是从正在运行的进程中收回处理器,然后使待运行的进程占用处理器。这里所说的从某个进程收回处理器,实质上就是把进程存放在处理器的寄存器中的中间数据找个地方存起来,从而把处理器的寄存器腾出来让其他进程使用,被中止运行进程的中间数据则被存在进程的私有堆栈中。让进程占用处理器,则是把该进程存放在私有堆栈中寄存器的数据(前一次本进程被中止时的中间数据)再恢复到处理器的寄存器中,并把待运行进程的断点送入处理器的程序指针PC,于是待运行进程就开始被处理器运行了,也就是这个进程已经占有处理器的使用权了。这好比教室的切换,第一大节课结束后,正在使用教室的老师和学生带着自己的物品离开教室,老师会记住这堂课讲到课本的第几页,然后第二大节课在该教室上课的老师和学生进入该教室,开始上课,这就是教室使用权切换的过程。
  在切换时,一个进程存储在处理器各寄存器中的中间数据叫做进程的上下文,所以进程的切换实质上就是被中止运行进程与待运行进程上下文的切换。在进程未占用处理器时,进程的上下文是存储在进程的私有堆栈中的。
  在进程切换时,被中止进程保护断点和待运行进程恢复断点的示意图,见图3,被终止进程需将处理器PC寄存器、PSW等寄存器的值保存至被中止进程的私有堆栈,SP寄存器等值则保存至进程控制块;待运行进程则从进程控制块和私有堆栈中取出PC值、SP值、PSW值等上次被中断时各寄存器的值并送入处理器的各个寄存器。在该过程中,需要保存和恢复的数据很多,系统付出的时间和空间代价比较大。
  3.2线程切换过程
  线程作为独立调度和分派的基本单位,只拥有在运行中必需的少量资源(程序计数器,一组寄存器和栈),它和同属一个进程的其他线程共享进程拥有的全部资源。
  在进程切换时,涉及当前进程CPU环境的保存及新被调度运行进程的CPU环境的设置,需要保存和恢复大量的数据。而同一进程的线程切换则仅需保存和设置少量寄存器内容,程序和数据的地址空间不变,即不涉及存储器管理方面的操作,故其切换代价远低于进程。但如果从一个进程中的线程切换到另一个进程中的线程,就会引起进程的切换。
  4.通过仿真实验掌握线程的概念
  在深入理解线程的概念后,对于程序设计基础比较好的学生,使用VC或JAVA语言多线程技术编写线程的同步与互斥程序,使他们通过学习和实际动手编写程序更好地掌握线程的概念,提高思考和编程能力。
  5.结语
  线程是操作系统非常重要的概念,但因其概念抽象,不易理解,一直是教学难点之一,本文的实例教学和原理比较教学,可以使学生在短时间内深入了解线程的概念,实践证明了该方法的有效性,实例教学提高了学生对操作系统学习的兴趣,后期的编程仿真增强了学生的编程能力,教学效果显著。
  参考文献:
  [1]汤子赢,哲凤屏,汤小丹.计算机操作系统[M].西安电子科技大学出版社,2006.
  [2]陈渝,操作系统-精髓与设计原理[M].电子工业出版社,2006.
  [3]赵正德,吴绍春,陶永振等.“操作系统”课程教学改革与建设的研究与实践[J].计算机教育,2009,(14):16-18.
  [4]徐钦桂,杨桃栏.比较教学法在操作系统教学中的应用与实践[J].计算机教育,2010,(10):95-99.
  [5]叶保留,费翔林,葛季栋等.“操作系统”实验课程建设与教学探讨[J].计算机教育,2009,(14):122-125.
  
  基金项目:上海市教委重点课程建设项目(A-2601-12-0009)。

标签:教学方法 线程 操作系统 概念