java

位置:IT落伍者 >> java >> 浏览文章

Java进阶 Java应用程序中动态分配CPU资源[1]


发布日期:2021年11月24日
 
Java进阶 Java应用程序中动态分配CPU资源[1]

Java的线程调度操作在运行时是与平台无关的一个多任务系统需要在任务之间实现QoS(Quality of Service)管理时如果CPU资源的分配基于Java线程的优先级那么它在不同平台上运行时的效果是很难预测的本文利用协调式多任务模型提出一个与平台无关并且能在任务间动态分配CPU资源的方案

现在由于计算机系统已经从人机交互逐步向机机交互转化计算机和计算机之间的业务对于时间的要求非常高软件系统对于业务的支持已经不仅表现为对不同业务的逻辑和数据(算法+数据结构)支持而且还表现为对同时处理不同任务的时效性 (任务响应速度)支持一般任务响应的速度可以通过算法优化及并行运算分担负载等手段来提高但是用户业务逻辑的复杂度决定了算法优化的发挥空间硬件规模决定了所能够承担负载的大小我们利用Java平台的特点借鑒协调式多任务思想使CPU资源能够在任务间动态分配从而为时间要求强的任务分配更多的CPU运行资源这也可以充分利用现有硬件为用户业务提供最大的保障

用Java解决问题

本着软件系统结构和现实系统结构一致的思想开发复杂业务服务的程序一般按照计算机任务和现实业务对应的思路最终形成一个大规模的多任务系统由于其跨平台性Java系统可以随着业务的扩大平滑地升级到各种硬件平台上由于 Java自身的发展及其应用场合的不断扩大用它实现多任务系统已经成为当前的应用方向在JEE(Java Enterprise Edition)推出以后Sun公司已经将Java的重心放在了服务器端(Server Side)系统的构造上由于客户/服务器模型固有的多对一的关系服务器端程序也必然是一个多任务系统

在Java多任务应用中动态地将CPU资源在任务间分配有很重要的意义比如一个 Internet服务商的系统往往有多种任务同时运行有HTTPFTPMAIL等协议的支持也有商务娱乐生活咨询等业务的服务在白天网站希望系统的CPU资源尽量保障网上用户的服务质量提高电子商务等任务的响应速度;晚上则希望让自己的娱乐服务和资料下载尽可能满足下班后人们的需要另外在新兴的网管(比如TMN Telecommunication Management Network)等应用领域中服务程序往往需要支持成千上万个并发响应事件的被管理对象(MOManaged Object)对于被管理对象执行的操作不同用户在不同时刻往往有不同的时间要求

方案选择

在考虑动态分配CPU资源的实施方案时往往有以下两点要求

须充分利用现有硬件资源在系统空闲时让低优先级任务也能够得到系统所能给予的最快响应

当硬件资源超负荷运行时虽然系统中有大规模多数量的任务不能处理但它不应受影响而能够顺利处理那些能够被处理的最重要的高优先级任务

多任务系统要用多线程实现的最简单方法就是将线程和任务一一对应动态调整线程的优先级利用线程调度来完成CPU资源在不同任务间动态分配这种思路在以前使用本地化代码(Native Code)充分利用特定硬件和操作系统技巧的基础上是基本可行的但在跨平台的Java环境中这个思路对仅有小规模任务数的简单系统才可行原因有以下两点

[] [] []

               

上一篇:Java进阶 Java应用程序中动态分配CPU资源[2]

下一篇:Java进阶 Java应用程序中动态分配CPU资源[3]