|
Т/З
|
|
1. Модель виртуального процессора:
|
|
class VirtualP
|
|
{
|
|
/**
|
|
* @param clockSignal тактовая частота виртуального процессора в единицу времени
|
|
* @param algorithm алгоритм диспетчеризации
|
|
* @param intensity интенсивность работы пользователя (0; 100) ->
|
|
* -> @see интенсивность иcпользования PC можно взять из статистики, например,
|
|
* http://www.bls.gov/news.release/ciuaw.nr0.htm, если установить критерий интенсивности как
|
|
* порядок запущеноагруженности приложений для различных видов работ (работа с графикой > работа с web)
|
|
* @param workingHours время работы эмулятора
|
|
* @return @timeMean среднее время ожидания пользователя
|
|
*
|
|
*/
|
|
int VirtualPStart(int clockSignal, String algorithm, float intensity, int workingHours);
|
|
|
|
|
|
}
|
|
2. Обобщенная модель процесса :
|
|
|
|
class Process
|
|
{
|
|
/**
|
|
* @param inSleep количество тактов для выполнения фоновых операций
|
|
* @param inWork цена(в тактах) работы приложения в активном режиме
|
|
* @param popularityProbab вероятность того, что процесс будет запущено пользователем (0;100)
|
|
* @anotation если пользователь запускает приложение в активный режим, а оно в следующий момент времени
|
|
* не запускается, то считаем время простоя. Причем, если приложение до этого работало в фоновом режиме, то
|
|
* уходит меньше тактов на рабочий режим.
|
|
*/
|
|
Process(int inSleep, int inWork, int popularityProbab);
|
|
|
|
sleep();
|
|
work();
|
|
/**
|
|
* @param size количество информации которую, приложению надо считать
|
|
* @param device откуда ее надо считать (от этого зависит сколько будет ждать приложение)
|
|
*/
|
|
read(int size, String device);
|
|
}
|
|
|
|
/*
|
|
При попытке запуска работающего процесса, цена его работы и сна будет увеличиваться.
|
|
*/
|
|
3. Мы это все реализовываем.
|
|
|
|
4. Затем, запускаем с различными исходными данными.
|
|
|
|
5. Анализируем.
|
|
|