当前位置:首页 > 虚拟机 > 正文

虚拟机的处理器是动态分配吗(虚拟机的处理器数量怎么选)


一、Java应用程序中如何动态的分配CPU资源?方案选择
在考虑动态分配CPU资源的实施方案时,往往有两个要求:
1.必须充分利用现有的硬件资源,当需要时必须使用低优先级的资源。系统空闲。任务也可以获得系统所能给出的最快响应。
2、当硬件资源过载时,虽然系统中有大规模、大量的任务无法处理,但应该不受影响,可以顺利处理最重要的高层可以处理的任务。优先任务。
在多任务系统中实现多线程最简单的方法就是将线程和任务一一映射,动态调整线程优先级,利用线程调度在不同线程间动态分配CPU资源。任务。基于之前使用本地化代码(NativeCode)并充分利用特定硬件和操作系统技能,这个想法基本上是可行的。然而,在跨平台的Java环境中,这种想法只适用于只有少量任务的简单系统。原因如下:
1、虽然从编程的角度来看Java线程与平台(API)无关,但是它的运行效果与不同的操作密切相关系统平台。为了利用更多的CPU资源,Java中的一个线程(Thread)在不同的操作系统下对应着一个真实的线程。由于Java虚拟机没有实现线程调度,因此这些Java线程在不同操作系统调度下的运行差异是比较明显的。例如,在Windows系统中,不仅线程优先级低于JavaAPI参数指定的十个优先级,而且微软明确反对程序员动态调整线程优先级。即使操作系统中有足够的优先级使得线程优先级参数对应真实的线程优先级,不同操作系统的调度方式也会有很多差异。这最终会导致代码在不同平台上的行为变得不可预测。这使得难以满足复杂、大规模并发任务的多优先级要求,难以达到用户业务需求所需的结果。
2、由于在Java系统中,线程被封装在一个Java语言对象类——Thread中,为了完成Java语言对象与操作系统线程的对应关系,Java线程系统开销仍然是比较大(在NT4.0中,每个线程平均占用内存约30KB)。因此,让Thread对象的数量与数以万计的任务数量同比例增长,显然是不合理的。
摘要:本文使用协调多任务模型提出了一种独立于平台的解决方案,可以在任务之间动态分配CPU资源。
综上所述,根据并发多任务的大规模需求以及Java平台的固有特性,利用JavaThread对象优先级来调整CPU资源分配是非常困难的。因此,应该尽量避免线程和任务直接对应,并尽量避免使用操作系统的线程优先级调度机制。
解决方案
根据以上分析,问题的症结在于:Java语言中任务的对应系以及多任务中任务的相互调度系统。
本质上,任务是一系列对象方法调用,它与JavaThread对象或其他类的对象没有必然的联系。为了避免在不同的操作系统中使用线程调度,同时Java虚拟机不具备线程调度能力,构建一个协调的多任务系统,让各个任务相互协作是最直接的想法。协同多任务系统一般具有以下特点:
1、任务由消息驱动,消息响应码完成任务逻辑处理;
2、消息队列完成消息存储和管理,从而利用消息处理顺序来体现不同的任务优先级;
3、任务中耗时的消息响应逻辑可以主动让出CPU资源让其他任务执行(如Windows3.1中的Yield函数,VisualBasicDoEvents语句)。
也许是巧合,Java语言具备了构造协调多任务系统的天然条件。Java对象方法不仅仅是一个函数调用,它也是一个类对象。所有对象方法都可以通过Method类的invoke方法来调用。如果可以将每个任务对应的一系列方法以对象的形式封装成消息,放入消息队列中,然后根据自己的优先级算法从队列中取出消息,执行其Method对象invoke调用,那么一个基本的协调公式就形成了多任务系统。其中,任务优先级和线程优先级没有绑定关系。系统的主要调度功能可以设置为“无限循环”,按照所需的优先级算法处理消息队列。对于有多个循环、外设等待等耗时操作的消息响应函数,可以在响应函数内部递归调用主调度函数。这次的调用将原来的“死循环”改为消息队列长度减少到一定程度(或者为空)。)并退出。退出后函数返回并执行刚才未完成的消息响应逻辑。这样,协调系统中的任务就很自然地主动放弃了CPU资源需求。


二、什么是虚拟机

虚拟机是一种类似于计算机系统的软件技术。它运行在物理计算机系统上,允许用户在同一台​​计算机上运行多个独立的操作系统,同时保证系统隔离和安全。虚拟机模拟硬件设备和软件环境,使操作系统和应用软件可以在虚拟环境中运行,就像在真实的物理计算机上一样。下面详细介绍虚拟机的概念和功能。

虚拟机技术通过软件模拟计算机的各种硬件资源,如CPU、内存、硬盘等。这样就可以在一台物理计算机上创建一个或多个独立的虚拟计算机环境。每个虚拟机都可以有自己的操作系统和软件应用程序,多个虚拟机不会互相干扰。该技术广泛应用于开发测试、云计算、服务器集成等领域。例如,开发者可以在虚拟机上模拟不同的操作系统环境来测试云计算领域不同平台上的软件兼容性,虚拟机可以实现动态分配和灵活的资源扩展;

虚拟机具有以下主要特点:

1隔离性:虚拟机提供独立的行环境,各个虚拟机的运行和系统配置相互隔离。确保系统的安全性和稳定性。

2.资源模拟:虚拟机可以模拟真实的计算机硬件环境,包括处理器、内存、硬盘等,使操作系统和应用软件能够在虚拟环境中正常运行。

3.灵活性:通过虚拟机技术,用户可以根据需要创建各种虚拟环境,在不同的环境中运行不同的操作系统和应用软件,实现灵活多变的工作模式。

简而言之,虚拟机是一种功能强大的软件技术,通过模拟计算机的软硬件环境,使得能够在同一台物理计算机上运行多个独立的操作系统。广泛应用于开发测试、云计算、服务器集成等领域,为用户提供灵活多变的工作模式。