- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JAVA虚拟机线程机制的实现
孙毅夫王楠杨利
(宝钢东软集团软件中心 沈阳llO006:r
摘要本文从线程及进程的角度对JAVA虚拟机进行了剖析,针对在无法提供线程支持
的系统上创建虚拟线程机制提出解决构想,从线程的调度策略、堆栈设计等方面进行了阐述,:牛
结合嵌入式系统中创建JAVA虚拟机张程的应用提出解决方案。
关键字线程、线程堆栈、嵌入式系统、ITRON规范
引言
支持多线程是JAVA的特性之一,它要求虚拟机本身建立一套标准的线程机制来支持线
程并发、同步等诸多特性。支持虚拟机多线程机制,JAVA虚拟机所依赖的操作系统至少满
足F列的要求:支持多进程或单进程、实时时钟读取。
在不完全遵循POSIX规范且无法提供线程API的操作系统上,虚拟机的线程机制在单
进程的基础上创建。本文在第一节中介绍虚拟机中线程实现的三种构想,第二节具体阐述在
无法支持线程机制的系统中创建线程的方法,最后结合应月j介绍嵌入式系统中虚拟机线程的
实现。
一、虚拟机中线程实现的三种构想
运行于系统e3的非JAVA进程(任务)、JA、,A虚拟机及虚拟机中的线程三者结构如下图
所示:
件
(1)利用系统提供的线程API。
(2)将系统所提供的进程(任务)作为线程,
(3)在系统的进程(任务)级之上创建线程机制。
方法(1)受到操作系统是否可提供线程API的限制;方法2仅完成虚拟机对线程管理及
的负荷和开销;方法(3)无法满足实时性系统的要求。
二、实现线程机制
2.1线程调度策略选择
线程的运行具有并发性和动态性的特点,即在一段时问内可以有多个线程在虚拟机上
运行.线程的执行是无序的.运行次序是由操作系统的调度策略决定的。线程的同步或互斥
发生时,线程的执行顺序会发生改变。在无法支持线程的系统中,首先要建立虚拟机本身的
线程调度策略。
调度的策略可以分为基于优先级和基于时间片两种基本方式。基于优先级方式的调度
系统的开销小,较高优先级的线程独占虚拟机得到运行。基于时间片的调度方式为每个线程
分配相等的运行时间片.而使具有同样优先级的线程得其机会均等的运行。
综合上述方法,根据线程优先级的权值选择时问片的大小,实现不同优先级线程间运
行的机会均等。
2.2线程私有数据区设计
线程的私有数据区根据刷新频率可分为堆栈和上下文两种类型。堆栈是线程动态管理
并存储数据的一段连续的内存空间。线程的本质是多个相对独立的程序段的随机运行。每个
程序段都具有独立的内存区域(堆栈),用来保存程序段中使用的链接数据、形式单元、局
部变量或数组等数据结构内情向量。创建堆栈要综合考虑操作系统内存管理、编译器的编译
在状态迁移时(向消亡状态迁移除外)需要将一些必要的数据(包括寄存器的状态断点位置
等数据)保存起来。
2.3线程基本类型
用2.1节的方法自Ⅱ建的虚拟机线程机制需要建立下列类型的系统线程,实现JAVA虚拟机
的部分功能以及构造线程的体系结构:
(1)主线程(Mainthread)。在虚拟机创建时建立,虚拟机退出时消亡,用于完成虚
拟机启动所需要数据的初始化、处理并建立本地方法接口(JNI)、监测虚拟机状
态、退出时完成存储空间等资源的释放。
(2)空闲线程(Idlethread)。空闲线程的建立基于下列的情况:当虚拟机系统中的线
程因同步或其他原因处于非运行状态时,虚拟机会出现暂时的空闲状态(否则为
死锁),这时启动空闲线程进行已经消亡线程在虚拟机中所用堆栈的释放。
13l·
GC
(3)异步垃圾收集线程(Asynchronousthread)。而异步垃圾收集的任务是:主动
进行虚拟机的垃圾回收工作,提高虚拟机的内存利用效率。进行异步垃圾回收还
文档评论(0)