close

Вход

Забыли?

вход по аккаунту

?

Пояснительная записка (3)

код для вставкиСкачать
Министерство образования и науки Российской Федерации
КНИТУ - КАИ имени А.Н.Туполева
---------------------------------------------------------------------------------------
Кафедра ПМИ
Пояснительная записка к курсовой работе
по дисциплине "Операционные системы"
Вариант 3
Выполнил: студент группы 4311
Лисютин А.П. Проверил: Урахчинский И.Н.
Оценка_________________ Подпись________________ "___" _____________2013г. КАЗАНЬ 2013
Содержание
1.Постановка задачи3
2.Описание метода решения задач4
3.Описание алгоритма решения задачи5
4.Описание процедур6
5.Описание ошибок, фиксируемых процедурами8
6.Руководство пользователя9
7.Описание тестов11
1. Вычислительная процедура:11
2. Процедура обработки текстового файла:13
8.Список литературы18
9.Приложения19
9.1 Листинг вычислительной процедуры19
9.2 Листинг процедуры обработки текстового файла21
Постановка задачи
Вариант № 3.
Разработать две процедуры на JavaScript .
1) Вычислительная процедура, выполняющая задачу из "Сборника задач и упражнений по математическому анализу" Демидовича, согласно индивидуальному заданию.
2) Процедура обработки текстового файла. В качестве текстового файла использовать результат работы системного монитора Windows. С трассой событий в соответствии со второй частью индивидуального задания.
При вызове каждой из процедур предлагать возможность задания не менее трех необязательных параметров. Один параметр для вывода справочной информации. Два параметра конкретизирующие выводимую информацию.
Задание 1: Оценить абсолютную погрешность приблизительной формулы:
sin⁡〖(x)≈〗 x- x^3/6
Задание 2: Вывести заданное количество процессов с минимальным процессорным временем
Описание метода решения задач
Оценить абсолютную погрешность приблизительной формулы, которая для разложения в ряд Тейлора функции sin(x)вычисляется по формуле: |R_2m |≤ 〖|x|〗^(2m+1)/(2m+1)!
Во втором задании необходимо обработать файл отчета работы системного монитора <*.tsv>и вывести заданное количество процессов минимальным процессорным временем. Для этого выберем из файла отчетаминимальным процессорным временем и выведем заданное количество процессов в порядке возрастания
Описание алгоритма решения задачи
Алгоритм решения первой задачи выглядит следующим образом:
Определяем число m- количество определенных при вычислении формулы Тейлора членов.
Определяем |x| - модуль аргумента функции.
Рассчитываем оценку абсолютной погрешности и выводим ее на экран.
Алгоритм решения второй задачи выглядит следующим образом:
Определяем обрабатываемый файл.
Сохраняем названия процессов, которые записаны в первой строке обрабатываемого файла.
Обрабатываем строки, в которых хранятся значения процессорного времени процессов.
Выбираем из значений приоритетов минимальные.
Выводим заданное количество минимальныхзначений на экран.
Описание процедур
Вычислительная процедура: В начале процедуры определяется объект arg=WScript.Arguments, который содержит параметры командной строки. Далее в зависимости от количества введенных параметров вычисляется число m - количество определенных при вычислении формулы Тейлора членов и |x| - модуль аргумента функции. Если параметры не введены, то они определяются по умолчанию как: m=2;|x|=1;. Если введен параметр help, то программа выводит справочную информацию. Так же проверяется допустимость значений параметров. Если введены недопустимые параметры, то программа выводит ошибку, а вслед за ней справочную информацию. После вычисления оценки погрешности ее значение выводится на экран. Процедура обработки текстового файла:Вначале программы определяются путь к обрабатываемому файлу, по умолчанию "time.tsv". Если сценарий запущен с параметром "help" то вызывается функция help(), которая осуществляет вывод справочной информации.
Далее из файла считывается первая строка, содержащая имена процессов, и организуется цикл до конца строки, которая выделяет имя каждого следующего процесса и сохраняет его в массиве. В этом же цикле определяется общее количество процессов. После завершения цикла выводится информация о количестве процессов.
Далее организуется цикл для обработки строк, содержащих значение приоритетов для каждого момента времени. Каждая строка обрабатывается следующим образом:
- из начала строки удаляется время;
- организуется цикл для считывания значения параметра для каждого процесса и замена им предыдущих результатов. Далее организуется цикл от 1 до n - количества выводимых процессов. В каждой итерации цикла выполняются следующие действия:
- проверка процесса на минимальное процессорное время;
- вывод информации о данном процессе, если он имеет минимальное процессорное время;
- опциональные возможности - добавить количество всех процессов и выводить с процессами их процессорное время
Описание ошибок, фиксируемых процедурами
Вычислительная процедура:При запуске сценария проверяется количество и правильность введенных параметров. Если количество параметров больше двух, то выдается соответствующая ошибка. Параметры |x| и m должны быть больше или равны нулю. Если данные условия не выполняются, то выводится соответствующая ошибка и программа завершает свою работу.
Процедура обработки текстового файла: При запуске сценария проверяется количество и правильность введенных параметров. Если количество параметров больше четырех, то выдается соответствующая ошибка. В качестве параметра запрашивается имя обрабатываемого файла. Ошибки выводятся в случае отсутствия заданного файла или невозможности его открытия.
В случае использования двух параметров возможны следующие ошибки: неправильно указанный путь к файлу, неверно указан параметр количества выводимых процессов.
В случае использования трех параметров возможны следующие ошибки: неправильно указанный путь к файлу, неверно указан параметр количества выводимых процессов, неверно задан ключ опционального вывода общего количества процессов.
В случае использования четырех параметров возможны следующие ошибки: неправильно указанный путь к файлу, неверно указан параметр количества выводимых процессов, неверно задан ключ опционального вывода общего количества процессов, неверно задан ключ опционального вывода процессорного времени процессов.
Руководство пользователя
1. Вычислительная процедура.
Данная процедура предназначена для вычисления абсолютной погрешности формулы Тейлора для функции sin(x)
sin⁡〖(x)≈〗 x- x^3/6
Процедура имеет следующий формат:
prog1.js [help] | [m] [|x|]
где
help - вызов справки
m - порядковый номер остаточного члена ряда Тейлора
|x| - модуль аргумента х
Для запуска программы необходимо воспользоваться командной строкой. Либо находясь в операционной среде windows пуск->выполнить->cmd ->затем указать полный путь к файлу, с именем и расширением файла, а также указать параметры с которыми будет работать программа.
В средах с командной строкой, таких как NC, VC, Far и прочие, запуск программы осуществляется проще: необходимо зайти в каталог содержащий программу в командной строке набрать полное имя программы (часто это можно сделать нажатием ctrl+enter), после чего указать параметры.
Если пользователь желает работать с программой в оконном интерфейсе то необходимо просто вызывать программу как описано выше, но если необходимо, чтобы программы выводила результаты в командную строку, то перед именем файла нужно написать <СScript>.
2. Процедура обработки текстового файла.
Данная процедура выводит информацию о процессе с минимальным процессорным временем. Для её запуска необходимо написать в командной строке имя программы с расширением, в данном случае это prog2.js, а также необходимо описать параметры, которые описаны в справке. Также можно воспользоваться программами типа VC или NC (где имеются командные строки).
Процедура имеет следующий формат:
Prog2.js [help] | [<filename>] [n] [number] [time]
где
filename - имя обрабатываемого файла
help - вызов справки
number - количество процессов всего(y/n)
time - показывать ли процессорное время процессов (y/n)
n - количество выводимых процессов.
Описание тестов
1.Вычислительная программа:
Запускаем программу без параметров. Программа запускается с параметрами по умолчанию. Программа выполняется без ошибок. Запускаем программу с параметром help:
Выводится справочная информация
Запускаем программу с одним неверным параметром:
Выводится ошибка и справочная информация.
Запускаем программу с параметрами |x|=1m=2:
Параметры являются допустимыми. Программа выполняется.
Запускаем программу с тремя параметрами :
Количество параметров недопустимо. Выводится ошибка и справочная информация.
2.Программа обработки текстового файла:
Запускаем программу без параметров:
Программа открывает файл по умолчанию. Данный файл найден, программа выполняется без ошибок.
Запускаем программу с неверным параметром unknown.tsv: Данный файл не найден. Выдается ошибка и справочная информация.
Запускаем программу с параметром time.tsv:
Файл найден. Программа работает, не выдавая ошибок.
Запускаем программу с параметром help: Выводится справочная информация.
Запускаем программу с параметрами time.tsv и 10:
Параметры являются допустимыми. Выведено 10 процессов без времени выполнения.
Запускаем программу с параметрами:time.tsv 10 y
Параметры являются допустимыми. Выведено 10 процессов и отражено общее количество процессов.
Запускаем программу с неверным третьим параметром: time.tsv 10 sdf
Программа не выполнена, последний параметр недопустимый. Выводится справочная информация.
Запускаем программу с параметрами: time.tsv 10 y y Параметры являются допустимыми. Выведено 10 процессов с процессорным временем и отражено общее количество процессов
Запускаем программу с параметрами: time.tsv 10 n y Параметры являются допустимыми. Выведено 10 процессов с процессорным временем но не отражено общее количество процессов
Список литературы
1. Демидович Б.П., Сборник задач и упражнений по математическому анализу: Учебное пособие для студентов - 9-е изд. - М.: Наука, 1977-527стр. 2. Колмогоров А.Н., Фомин С.В., Элементы теории функций и функционального анализа - 3-е издание- M.: Наука,1972 - 496 стр.
3.Джесси М. Торрес. Сценарии администрирования Microsoft Windows. Справочник администратора.: Пер. с англ. - М.: Издательство - торговый дом "Русская редакция", 2005. - 384 с.
4.http://www.pm298.ru/tei2.php
Приложения
9.1 Листинг вычислительной процедуры
arg=WScript.Arguments;
var m;
var x; var num="0123456789";
var fact = function(x) {
if (x <= 1) return 1;
return x * fact(x - 1);
}
if(arg.Count() == 0) {
m = 2;
x = 0.5;
} else if (arg.Count() == 1) {
if(arg(0).toLowerCase()=="help") {
help();
} else {
m = arg(0);
for(i=0; i < m.length; i++) {
if (num.search(m.charAt(i))==-1) {
WScript.Echo("Ошибка: m должно быть целым числом больше нуля");
help();
}
}
x = 0.5;
}
} else if (arg.Count() == 2) {
m = arg(0);
for(i=0; i < m.length; i++) {
if (num.search(m.charAt(i))==-1) {
WScript.Echo("Ошибка: m должно быть целым числом больше нуля");
help();
}
}
x = arg(1);
for(i=0; i < x.length; i++) {
if (num.search(x.charAt(i))==-1) {
WScript.Echo("Ошибка: |x| должен быть целым числом больше нуля");
help();
}
}
} else {
WScript.Echo("Ошибка: Неверное количество параметров");
help(); }
var mod = Math.pow(x, 2 * m + 1)/ fact(2 * m + 1);
var result = "Погрешность вычисления функции sin x по формуле Тейлора с " + m + " первыми членами при |x| = " + x + " не превышает: " + mod.toFixed(7);
WScript.Echo(result);
function help(){
WScript.Echo("Программа расчета абсолютной погрешности формулы sin x ~ x - x^3/6...\n\
Она расчитывается по формуле |R[2m](x)| <= |x|^(2m+1) / ((2m+1)!)\n\
Разработал студент гр. 4311 Лисютин Андрей \n\n\n\
Использование:\n\
prog1.js [help] | [m] [|x|]\n\n\n\
Параметры:\n\
help - вызов справки\n\
m - порядковый номер остаточного члена ряда тейлора, по умолчанию 2\n\
|x| - модуль аргумента х, по умолчанию 0.5\n");
WScript.Quit();
}
9.2 Листинг процедуры обработки текстового файла
fso=WScript.CreateObject("Scripting.FileSystemObject");
arg=WScript.Arguments;
num="0123456789";
var result = "";
var number = false;
var time = false; switch (arg.Count()){
case 0:{
// без указания параметров
path="time.tsv";
n=5;
break;
}
case 1:{
// с указанием одного параметра
if (arg(0).toLowerCase()=="help"){help();}
path=arg(0);
n=5;
break;
}
case 2:{
// с указанием двух параметров
path=arg(0);
n=arg(1);
// проверка допустимости второго параметра
for(i=0;i<n.length;i++){
if (num.search(n.charAt(i))==-1){
WScript.Echo("Ошибка: n дожно быть целым числом больше нуля");
help();
}
}
if ((n%1)!=0){
WScript.Echo("Ошибка: n дожно быть целым числом больше нуля");
help();
}
break;
}
case 3:{
// с указанием 3 параметров
path=arg(0);
n=arg(1);
// проверка допустимости второго параметра
for(i=0;i<n.length;i++){
if (num.search(n.charAt(i))==-1){
WScript.Echo("Ошибка: n дожно быть целым числом больше нуля");
help();
}
}
if ((n%1)!=0){
WScript.Echo("Ошибка: n дожно быть целым числом больше нуля");
help();
}
if (arg(2) != "y" && arg(2) != "n") {
WScript.Echo("Ошибка: Некорректный третий параметр");
help();
}
number = arg(2).toLowerCase() == "y" ? true : false;
break;
}
case 4:{
// с указанием 3 параметров
path=arg(0);
n=arg(1);
// проверка допустимости второго параметра
for(i=0;i<n.length;i++){
if (num.search(n.charAt(i))==-1){
WScript.Echo("Ошибка: n дожно быть целым числом больше нуля");
help();
}
}
if ((n%1)!=0){
WScript.Echo("Ошибка: n дожно быть целым числом больше нуля");
help();
}
if (arg(2) != "y" && arg(2) != "n") {
WScript.Echo("Ошибка: Некорректный третий параметр");
help();
}
number = arg(2).toLowerCase() == "y" ? true : false;
if (arg(3) != "y" && arg(3) != "n") {
WScript.Echo("Ошибка: Некорректный четвертый параметр");
help();
}
time = arg(3).toLowerCase() == "y" ? true : false;
break;
}
default:{
// введено неверное количество параметров
WScript.Echo("Ошибка: неверное количество аргументов");
help();
break;
}
}
// проверка существования указанного файла
if (fso.FileExists(path)==true){
file=fso.GetFile(path);
} else {
WScript.Echo("Ошибка: неверный путь к файлу");
help();
}
// открытие файла
text=file.OpenAsTextStream(1);
str=text.ReadLine();// Строка с именами процессов
proc= new Array;//Массив имен процессов
i=0;//Текущий процесс
while (str.indexOf("\"")!=-1){
fi=str.indexOf("\"");
si=str.indexOf("\"",fi+1);
proc[i]=str.slice(fi+1,si);//Выделяем имя процесса с номером i
proc[i]=proc[i].slice(0,proc[i].lastIndexOf("\\")); // удаляем надпись "Прошло времени секунд" из имени процесса
i++;
str=str.slice(si+1);//Удаляем из строки имя процесса с номером i
}
kol=i;// Количество процессов
if (number) result += "Процессы с нименьшим временем(" + n + "/" + (kol - 1) + "): \n\n";
else result += "Процессы с нименьшим временем\n\n";
sum = new Array;//Массив для хранения суммы времени
pros = new Array;
// указываем что массив состоит из чисел с плавающей запятой
for (i=1;i<kol;i++){
sum[i]=0.0;
}
while (!text.AtEndOfStream){
str=text.ReadLine();//считываем следующую строку с данными
fi=str.indexOf("\"");// удаляем si=str.indexOf("\"",fi+1);//время
str=str.slice(si+1);//из начала строки
for(i=1;i<kol;i++){
fi=str.indexOf("\"");//Считываем время
si=str.indexOf("\"",fi+1);//для текущего temps=str.slice(fi+1,si);//процесса
if (temps==" ") temps="0";
sum[i]=sum[i]+parseFloat(temps);//Суммируем время текущего процесса
str=str.slice(si+1);//Удаляем из строки время текущего процесса
}
}
for (i=1;i<=kol;i++){
pros[i]=0;
}
// проверка на соответствие количества выводимых процессов и общего количества процессов.
if (n>kol-1) n=kol-1;
// вывод информации о процессе с минимальным процессорным временем
for(j=1;j<=n;j++){ // определяем процесс с min временем
imax=1;
for(i=1;i<kol;i++){
if (sum[i]<sum[imax] && sum[i] > 0){
imax=i;
}
}
// выводим информацию о данном процессе
if (time)
result += j + ". Процесс " + proc[imax].substring(proc[imax].indexOf("(") + 1, proc[imax].length - 1) + " с процессорным временем: "+sum[imax]+"\n";
else
result += j + ". Процесс " + proc[imax].substring(proc[imax].indexOf("(") + 1, proc[imax].length - 1) + "\n";
// обнуляем время данного процесса, для правильного определения следующего процесса
sum[imax]=number.POSITIVE_INFINITY;
}
WScript.Echo(result);
// Справочная информация
function help(){
WScript.Echo("Программа вывода процессов с минимальным процессорным временем.\n\
Разработал студент гр. 4311 Лисютин Андрей\n\n\
Использование:\n\
Prog2.js [help] | [<filename>] [n] [number] [time]\n\
Параметры:\n\
filename - имя обрабатываемого файла\n\
help - вызов справки\n\
number - количество процессов всего(y/n)\n\
time - показывать ли процессорное время процессов (y/n)\n\
n - количество выводимых процессов\n "
);
WScript.Quit();
}
25
Документ
Категория
Разное
Просмотров
22
Размер файла
597 Кб
Теги
пояснительная, записка
1/--страниц
Пожаловаться на содержимое документа