Операционные системы

Автор работы: Пользователь скрыл имя, 30 Июня 2011 в 19:40, курсовая работа

Описание работы

В курсовой работе разработаны две процедуры на языке Java Scripts:
1-ая процедура выполняет заданные расчеты;
2-ая процедура производит обраотку текстового файла;
Задание: 1. Характеристика потока с минемальным процессорным временем
2. С помощью формулы Лейбница приближенно вычислить

Файлы: 1 файл

Операционные системы.docx

— 646.64 Кб (Скачать файл)

       В случае указания трех параметров (включая  имя файла) <параметр2> и <параметр3> считаются номерами начальной и конечной засечек времени соответственно.

       Возможные значения <параметр2> и соответствующие форматы приведены ниже:

    1. all_streams - Выводятся значения всех потоков на всех засечках заданного интервала времени.
    2. all_streams_interval - Выводится имя потока с минимальным процессорным временем, его среднее значение процессорного времени и его значения на всех засечках заданного интервала времени.
    3. min_stream - Выводится имя потока с минимальным процессорным временем, его среднее значение процессорного времени и его среднее значение с временем, где оно было зафиксировано
    4. отсутствие знасения - Выводится имя потока с минимальным процессорным временем и его среднее значение процессорного времени
    5. любое, кроме выше указанных - Выводится имя потока с минимальным процессорным временем и его среднее значение процессорного времени.

       Номера  начальной и конечной засечек  времени должны удовлетворять следующим  условиям:

    1. Оба числа положительные;
    2. Первый номер меньше или равен второму;
    3. Оба не должны превосходить общего числа засечек, присутствующих в файле.
 
  1. Листинги  программ
    1. Программа по организации вычислений

var fso=WScript.CreateObject('Scripting.FileSystemObject');

var Accuracy=0.001;

var arg1;

var arg2;

var a=1/2;

var b=1/3;

var n;

var i=1;

var F=0;

var k=WScript.Arguments.Count();//количество аргументов

var detail=0;

var help=0;

var x=0;

var Arr=new Array();

 

function Leibnic()

{

F=4*(1/2)+4*(1/3);

   do

     {

       var S = F;

       a = a*(1/2)*(1/2);

       b = b*(1/3)*(1/3);

       arg1 = a/(2*i+1);

       arg2 = b/(2*i+1);

       var j = i;

       j%=2;

       if (j != 0)

         {

           arg1 = -arg1;

           arg2 = -arg2;

         }

       F = S + (4*arg1 + 4*arg2);

       if (detail==1) {Arr[i]=F;}

       i++;

     }  

   while (Math.abs(S - F) >= Accuracy);

  i = i - 1;

}

 

for (var j=0;j<k;j++)

  {

   if ((escape(WScript.Arguments(j))!=escape("detail"))&&(escape(WScript.Arguments(j))!=escape("help")))

     { if (WScript.Arguments(j) < 1)

        { Accuracy = WScript.Arguments(j);}

       else {WScript.Echo("Задано неправильное значение точности! \nПроверьте правильность задав в параметрах только аргумент help!")} //если один из аргументов находится в пределах от 0 до 1, то этот аргумент принимается за точность

 }

   if (escape(WScript.Arguments(j))==escape("detail")) { detail=1; };

   if (escape(WScript.Arguments(j))==escape("help")) { help = 1 };      //если один из аргументов help то выведется окно          помощи

   }

 

if (help==1) {

WScript.Echo("   Help:");

WScript.Echo(" Данная  программа вычисляет значение  функции pi. \n Используется формула  Лейбница arctg(x)=x[1-1/3*x^2+1/5*x^4-1/7*x^6+...].\n Программа  запускается следующим образом\n cscript 1.js [параметр(ы)]\n В командной  строке можно ввести 4 вида аргумента:\n 0.точность вычисления (кол-во знаков  после запятой): от 0,1 до 0,00000000001\n 1.запрос  на пошаговое выведение каждой  итерации: detail \n 2.запрос на помощь: help\n 3.отсутствие параметров \n Если  аргумент help - единственный параметр, то выводится только помощь  по вычислению функции \n Если  параметры отсутствуют то выводится  результат процедуры - значение pi с точностью по умолчанию 0.001\n Если аргументы введены в неправильном  диапазоне или повторяются, выводится  сообщение об ошибке\n Параметры  точности и deital могут вводится  отновременно\n Аргументы можно вводить  в произвольном порядке. ");}

 

if (help==0)

{

    Leibnic();

    if (detail==1)

     {

      for (var l=1;l<i+1;l++)

       { WScript.Echo ('Итерация №',l,'.Значение PI= \n',Arr[l]);}

     }

    WScript.Echo('Число Пи равно: '+F+'\nКоличество итераций: '+i+'\nЗаданa точность: '+Accuracy);

}

    7.2. Программа по обработке  текстового файла

var countstr;   //Количество  строк в обрабатываемом файле

var countpot;  //количество  присутствующих в файе потоков

var mas;        //двумерный массив, содержащий все  данные из файла.

var t1=2;

var t2=12; 

function MakeMas(filename)       //запоминается количество присутствующих  потоков и число засечек времени,  на которых зафиксированы 

{                                //проценты процессорного времени  и заполняется двумерный массив  соответствующими данными из  файла.

      var f = fso.OpenTextFile(filename);

      mas= new Array();

 

      var i,j;

      countpot=0;

      var str1=f.ReadLine();                  //Считывает одну строку текста  из потока и возвращает строку. Передвигает указатель.

      for(i=0;i<str1.length;i++)  //Определение количества

      {      //потоков

            if (str1.charAt(i)==",")

       countpot++;   

      }

 

      f.Close();     //Обнуление указателя

      var f = fso.OpenTextFile(filename); //текущей строки

      countstr=0;

      while (!f.AtEndOfStream)  //Определение количества

      {      //временных засечек

            mas[countstr]=new Array(countpot+1);

            countstr++;

            str1=f.ReadLine();

      }

 
 

      f.Close();

      var f = fso.OpenTextFile(filename);

      for (i=0;i<countstr;i++)   //Заполнение массива

      {

            str1=f.ReadLine();

            var ind1=1;

            var ind2=1;

            for (j=0;j<countpot+1;j++)

            {

                  ind2=str1.indexOf(",",ind1)-1;

                  if (ind2>0)

                        mas[i][j]=str1.substring(ind1,ind2);

                  else

                        mas[i][j]=str1.substring(ind1,str1.length-1);

                  ind1=ind2+3;

            }

      }

      f.Close();

}

 

function Minpotok(outputformat,t1,t2)            //Эта процедура обрабатывает заполненный массив, определяет поток

{                                                //с минимальным средним процессорным  временем на заданном параметрами  t1 и t2 интервале  

                                               //времени и выводит информацию  об этом потоке в соответствующем  формате, переданном процедуре  

                                                 //через параметр outputformat

      if (((t1<=t2)&&(t1<countstr))&&(t2<countstr)&&(t1>0)&&(t2>0))  

      {

      var i,j;

      var indmin=0;

      var sum=0;

        for (j=t1;j<=t2;j++)

       sum=sum+parseFloat(mas[j][1]);

        var min= (sum/(t2-t1+1));          

      for (i=1;i<countpot+1;i++)  //Определение потока

      {      //с минимальным

            sum=0;    //процессорным временем

            for (j=t1;j<=t2;j++)

                  sum=sum+parseFloat(mas[j][i]);

              

            if (((sum/(t2-t1+1))<min)||(i==1))

            

                  min=sum/(t2-t1+1);

                  indmin=i;

            }

               

      }

 

      switch(outputformat)

      {

      case 'all_streams':

            WScript.Echo(mas[0]);

            for (i=t1;i<=t2;i++)

                  WScript.Echo(mas[i]);

            break;

      case 'min_stream':

            WScript.Echo("Поток  с минимальным средним процессорным  временем: "+mas[0][indmin]+" "+min);

            var minval=parseFloat(mas[t1][indmin]);

            var indminval=0;                       

            for (i=t1;i<=t2;i++)   //Нахождение

                  if (mas[i][indmin]<minval) //минимального значения

                  {

                        minval=parseFloat(mas[i][indmin]);

                        indminval=i;

                  }

            WScript.Echo("Минимальное  значение его процессорного времени  : "+mas[indminval][0]+" "+minval);

            break;

      case 'all_streams_interval':

            WScript.Echo("Поток  с минимальным средним процессорным  временем: "+mas[0][indmin]+" "+min);

            WScript.Echo("Значения  его процессорного времени");

            for (i=t1;i<=t2;i++)

                  WScript.Echo(mas[i][0]+" "+mas[i][indmin]);

            break;

      default:

            WScript.Echo("Поток  с минимальным средним процессорным  временем: "+mas[0][indmin]+" "+min);

      }

      }

      else

            WScript.Echo("Неправильно  введены параметры. Введите help в качастве параметра для вывода  справки по процедуре.");

}

 

if(WScript.Arguments.Count()>0)

{

      if (WScript.Arguments(0)!="help")

      {

            var fso=WScript.CreateObject("Scripting.FileSystemObject");

            MakeMas(WScript.Arguments(0));

            if(WScript.Arguments.Count()==4)

            Minpotok(WScript.Arguments(1), Math.floor(WScript.Arguments(2)), WScript.Arguments(3));

            else

<

Информация о работе Операционные системы