close

Вход

Забыли?

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

?

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

код для вставкиСкачать
Министерство образования и науки Российской Федерации
КНИТУ - КАИ имени А.Н.Туполева
---------------------------------------------------------------------------------------
Кафедра ПМИ
Пояснительная записка к курсовой работе
по дисциплине "Операционные системы"
Вариант №4
Выполнил: студент группы 4311
Лисютин С.П. Проверил: Урахчинский И.Н.
Оценка_________________ Подпись________________ "___" _____________2013г. КАЗАНЬ 2013
Содержание
1.Постановка задачи3
2.Описание метода решения задач3
3.Описание алгоритма решения задачи3
4.Описание процедур4
5.Описание ошибок, фиксируемых процедурами5
6.Руководство пользователя6
7.Описание тестов7
1. Вычислительная процедура:7
2. Процедура обработки текстового файла:9
8.Список литературы15
9.Приложения16
9.1 Листинг вычислительной процедуры16
9.2 Листинг процедуры обработки текстового файла18
Постановка задачи
Вариант№4
Разработать две процедуры на JavaScript .
1) Вычислительная процедура, выполняющая задачу из "Сборника задач и упражнений по математическому анализу" Демидовича, согласно индивидуальному заданию.
2) Процедура обработки текстового файла. В качестве текстового файла использовать результат работы системного монитора Windows. С трассой событий в соответствии со второй частью индивидуального задания.
При вызове каждой из процедур предлагать возможность задания не менее трех необязательных параметров. Один параметр для вывода справочной информации. Два параметра конкретизирующие выводимую информацию.
Задание 1: Оценить абсолютную погрешность приблизительной формулы:
tg⁡〖x≈〗 x+ x^3/3
Задание 2: Вывести заданное количество процессов с максимальным временем в привилегированном режиме.
Описание метода решения задач
Оценить абсолютную погрешность приблизительной формулы, которая при разложении в ряд Тейлора функции tgx вычисляется по формуле: |R|≤ 16/(〖cos〗^2 x)+(120〖sin〗^2 x)/(〖cos〗^6 x)
Во втором задании необходимо обработать файл отчета работы системного монитора <*.tsv> и вывести заданное количество процессов с максимальным временем в привилегированном режиме. Для этого выберем из файла отчета процессы с максимальным временем в привилегированном режиме и выведем заданное количество процессов в порядке убывания времени в привилегированном режиме.
Описание алгоритма решения задачи
Алгоритм решения первой задачи выглядит следующим образом:
Определим число е - точность результата вычисления (количество знаков после запятой).
Определим |x| - модуль аргумента функции.
Рассчитаем оценку абсолютной погрешности и выведем ее на экран.
Алгоритм решения второй задачи выглядит следующим образом:
Определим обрабатываемый файл.
Сохраним названия процессов, которые записаны в первой строке обрабатываемого файла.
Обработаем строки, в которых хранятся значения приоритетов для каждого момента времени.
Выбираем из них строки с максимальным приоритетом.
Выводим заданное количество процессов на экран в виде строк "Процесс <Название процесса> с временем в привилегированном режиме <время в привилегированном режиме>".
Описание процедур
Вычислительная процедура: В начале процедуры определяется объект arg=WScript.Arguments, который содержит параметры командной строки. Далее в зависимости от количества введенных параметров вычисляется числа |x| - модуль аргумента функции и е - точность результата вычисления (количество знаков после запятой). Если параметры не введены, то они определяются по умолчанию как: |x|=0.1, e=7. Если введен параметр help, то программа выводит справочную информацию. Если были введены параметры |x| или e, проверяется допустимость их значений, а именно: |x| должен быть неотрицательным числом, не превосходящим 0.1; параметр e должен быть неотрицательным целым числом. Если введены недопустимые параметры, программа выводит ошибку, а вслед за ней справочную информацию. Если все параметры введены корректно, вычисляется значение абсолютной погрешности формулы и выводится на экран. Процедура обработки текстового файла:Вначале программы определяются путь к обрабатываемому файлу, по умолчанию "time.tsv". Если сценарий запущен с параметром "help" то вызывается функция help(), которая осуществляет вывод справочной информации. Производится проверка на корректность введенных параметров. Если введены недопустимые параметры, программа выводит ошибку, а вслед за ней справочную информацию.
Далее, если ошибок в описании параметров не найдено, из файла считывается первая строка, содержащая имена процессов, и организуется цикл до конца строки, который выделяет имя каждого следующего процесса и сохраняет его в массиве. В этом же цикле определяется общее количество процессов. После завершения цикла выводится информация о количестве процессов.
Далее организуется цикл для обработки строк, содержащих значение приоритетов для каждого момента времени. Каждая строка обрабатывается следующим образом:
- из начала строки удаляется время;
- организуется цикл для считывания значения параметра для каждого процесса и замена им предыдущих результатов. Далее организуется цикл от 1 до n - количества выводимых процессов. В каждой итерации цикла выполняются следующие действия:
- проверка процесса на максимальное время в привилегированном режиме;
- вывод информации о данном процессе, если он имеет максимальное время в привилегированном режиме;
- опциональные возможности - показать количество всех процессов и выводить с процессами их время в привилегированном режиме.
Описание ошибок, фиксируемых процедурами
Вычислительная процедура:
При запуске сценария проверяется количество и корректность введенных параметров. Если количество параметров больше двух, то выдается соответствующая ошибка. Параметр |x| должен быть неотрицательным числом, не превосходящим 0.1; параметр e должен быть неотрицательным целым числом. Если данные условия не выполняются, выводится сообщение об ошибке, а вслед за ним справочная информация и программа завершает свою работу.
Процедура обработки текстового файла:
При запуске сценария проверяется количество и корректность введенных параметров. Параметры введены некорректно, выдается сообщение об ошибке и справочная информация. В случае использования одного параметра им является имя обрабатываемого файла (filename). Сообщение об ошибке и справочная информация выводятся в случае отсутствия заданного файла или невозможности его открытия.
В случае использования двух параметров возможны следующие ошибки: некорректный путь к файлу (filename), ошибка при открытии файла, некорректное значение параметра "количество выводимых процессов" (n, он должен быть положительным целым числом).
В случае использования трех параметров возможны следующие ошибки: некорректный путь к файлу (filename), ошибка при открытии файла, некорректное значение параметра "количество выводимых процессов" (n, он должен быть положительным целым числом), некорректное значение параметра "вывод общего количества процессов" (number, он может принимать только 2 значения: 'y' или 'n').
В случае использования четырех параметров возможны следующие ошибки: некорректный путь к файлу (filename), ошибка при открытии файла, некорректное значение параметра "количество выводимых процессов" (n, он должен быть положительным целым числом), некорректное значение параметра "вывод общего количества процессов" (number, он может принимать только 2 значения: 'y' или 'n'), некорректное значение параметра "вывод времени процессов в привилегированном режиме" (time, он может принимать только 2 значения: 'y' или 'n').
В случае использования более четырех параметров возникает ошибка количества параметров.
Руководство пользователя
1. Вычислительная процедура.
Данная процедура предназначена для вычисления абсолютной погрешности формулы:
tgx⁡≈ x+ x^3/3
Процедура имеет следующий формат:
Teilor.js [help] | [|x|] [e] help - вызов справки,
|x| - модуль аргумента, |х| <= 0.1, по умолчанию 0.1,
e - точность результата (количество знаков после запятой), по умолчанию 7.
Для запуска программы необходимо воспользоваться командной строкой. Находясь в операционной среде Windows, Пуск->Выполнить->cmd. Затем указать полный путь к файлу с именем и расширением файла, а также указать параметры, с которыми будет работать программа, перечислив их через пробел.
В средах с командной строкой, таких как NC, VC, Far и прочие запуск программы осуществляется проще: необходимо зайти в каталог, содержащий программу в командной строке, набрать полное имя программы (часто это можно сделать нажатием ctrl+enter), после чего указать параметры.
Если пользователь желает работать с программой в оконном интерфейсе, необходимо просто вызывать программу как описано выше. Но если необходимо, чтобы программы выводила результаты в командную строку, то перед именем файла нужно написать 'cscript'.
2. Процедура обработки текстового файла.
Данная процедура предназначена для вывода информации о процессах с максимальным временем в привилегированном режиме. Для её запуска необходимо написать в командной строке имя программы с расширением (File.js), а также указать параметры, необходимые для работы программы, перечислив их через запятую. Также можно воспользоваться программами типа VC или NC (где имеются командные строки).
Процедура имеет следующий формат:
File.js [help] | [<filename>] [n] [number] [time]
help - вызов справки,
filename - имя обрабатываемого файла,
n - количество выводимых процессов,
number - показывать ли количество процессов всего (y/n),
time - показывать ли время процессов в привилегированном режиме (y/n).
Описание тестов
1.Вычислительная программа:
Запускаем программу без параметров. Программа запускается с параметрами по умолчанию, выполняется без ошибок. (Рис 1)
Рис 1. Запуск программы без параметров.
Запускаем программу с параметром help. Параметр является допустимым. Программа выполняется без ошибок. Выводится справочная информация. (Рис 2)
Рис 2. Запуск программы с параметром help.
Запускаем программу с одним параметром |x|=1. Параметр является недопустимым. Выводится сообщение об ошибке и справочная информация. (Рис 3)
Рис 3. Запуск программы с параметром |x|=1.
Запускаем программу с параметром |x|=0. Параметр является допустимым. Программа выполняется без ошибок. (Рис 4)
Рис 4. Запуск программы с параметром |x|=0.
Запускаем программу с двумя параметрами |x|=0.08 е=10. Параметры являются допустимыми. Программа выполняется без ошибок. (Рис 5)
Рис 5. Запуск программы с параметрами |x|=0.08 е=10.
Запускаем программу с тремя параметрами. Количество параметров является недопустимым. Выводится сообщение об ошибке и справочная информация. (Рис 6)
Рис 6. Запуск программы с тремя параметрами.
2.Программа обработки текстового файла:
Запускаем программу без параметров. Программа запускается с параметрами по умолчанию, выполняется без ошибок. (Рис 7)
Рис 7. Запуск программы без параметров.
Запускаем программу с параметром help. Параметр является допустимым. Программа выполняется без ошибок. Выводится справочная информация. (Рис 8)
Рис 8. Запуск программы с параметром help.
Запускаем программу с параметром unknown.tsv. Параметр является допустимым, но данный файл не найден. Выдается сообщение об ошибке и справочная информация. (Рис 9)
Рис 9. Запуск программы с параметром unknown.tsv.
Запускаем программу с параметром time.tsv. Параметр является допустимым, файл time.tsv найден и ошибок при его открытии не произошло. Программа выполняется без ошибок. (Рис 10)
Рис 10. Запуск программы с параметром time.tsv.
Запускаем программу с параметрами time.tsv 10. Параметры являются допустимыми, файл time.tsv найден и ошибок при его открытии не произошло. Программа выполняется без ошибок. Выведено 10 процессов с максимальным временем в привилегированном режиме. (Рис 11)
Рис 11. Запуск программы с параметрами time.tsv 10.
Запускаем программу с параметрами time.tsv 10 y. Параметры являются допустимыми, файл time.tsv найден и ошибок при его открытии не произошло. Программа выполняется без ошибок. Выведено 10 процессов с максимальным временем в привилегированном режиме. Также указано общее количество процессов. (Рис 12)
Рис 12. Запуск программы с параметрами time.tsv 10 y.
Запускаем программу с параметрами time.tsv 10 е. Параметр number является недопустимым. Выводится сообщение об ошибке и справочная информация. (Рис 13)
Рис 13. Запуск программы с параметрами time.tsv 10 е.
Запускаем программу с параметрами: time.tsv 10 y y. Параметры являются допустимыми, файл time.tsv найден и ошибок при его открытии не произошло. Программа выполняется без ошибок. Выведено 10 процессов с максимальным временем в привилегированном режиме. Также указано общее количество процессов и время каждого процесса в привилегированном режиме. (Рис 14)
Рис 14. Запуск программы с параметрами time.tsv 10 y y.
Запускаем программу с параметрами: time.tsv 10 n y. Параметры являются допустимыми, файл time.tsv найден и ошибок при его открытии не произошло. Программа выполняется без ошибок. Выведено 10 процессов с максимальным временем в привилегированном режиме. Также время каждого процесса в привилегированном режиме, но не указано общее количество процессов. (Рис 15)
Рис 15. Запуск программы с параметрами time.tsv 10 n y.
Запускаем программу с параметрами time.tsv 10 y y y. Количество параметров является недопустимым. Выводится сообщение об ошибке и справочная информация.
Рис 16. Запуск программы с параметрами time.tsv 10 y y y.
Список литературы
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 e;
var x; var num="0123456789.";
// факториал числа
var fact = function(x) {
if (x <= 1) return 1;
return x * fact(x - 1);
}
// остаточный член
var dif = function(x) {
return 16/(Math.pow(Math.cos(x),2)) + 120 * Math.pow(Math.sin(x),2)/(Math.pow(Math.cos(x),6));
}
if(arg.Count() == 0) {
e = 7;
x = 0.1;
} else if (arg.Count() == 1) {
if (arg(0).toLowerCase() == "help") {
help();
} else {
x = arg(0);
e = 7;
for(i=0; i < x.length; i++) {
if (num.search(x.charAt(i))==-1 || x > 0.1) {
WScript.Echo("Ошибка параметра:|x| - число, может состоять только из цифр и символа '.', |x| <= 0.1\n");
help();
}
}
}
} else if (arg.Count() == 2) {
x = arg(0);
for(i=0; i < x.length; i++) {
if (num.search(x.charAt(i))==-1 || x > 0.1) {
WScript.Echo("Ошибка параметра: |x| - число, может состоять только из цифр и символа '.', |x| <= 0.1\n");
help();
}
}
e = arg(1);
for(i=0; i < e.length; i++) {
if (num.search(e.charAt(i))==-1 || e.charAt(i) == '.') {
WScript.Echo("Ошибка параметра: e - неотрицательное целое число\n");
help();
}
}
} else {
WScript.Echo("Ошибка параметров: неверное количество параметров\n");
help(); }
var mod = dif(x)/fact(5)*Math.pow(x, 5);
var result = "Абсолютная погрешность формулы tg x = x + x^3/3 при |x| = " + x + " не превышает " + mod.toFixed(e);
WScript.Echo(result);
function help(){
WScript.Echo(
"Программа расчета абсолютной погрешности формулы tg x = x + x^3/3 \n\
Разработал студент группы 4311 Лисютин Сергей \n\
Формула для расчета |R(x)| <= dif(x) * x^5 / 5!, где dif(x) - пятая производная функции tg(x)\n\n\
Использование:\n\
Teilor.js [help] | [|x|] [e] \n\n\
Параметры:\n\
help - вызов справки\n\
|x| - модуль аргумента, |х| <= 0.1, по умолчанию 0.1\n\
e - точность результата (количество знаков после запятой), по умолчанию 7\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:{
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("Ошибка параметра: number может принимать только два значения: 'y' и 'n'");
help();
}
number = arg(2).toLowerCase() == "y" ? true : false;
break;
}
case 4:{
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("Ошибка параметра: number может принимать только два значения: 'y' и 'n'");
help();
}
number = arg(2).toLowerCase() == "y" ? true : false;
if (arg(3) != "y" && arg(3) != "n") {
WScript.Echo("Ошибка параметра: time может принимать только два значения: 'y' и 'n'");
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("Ошибка параметра <filepath>: неверный путь к файлу");
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);
proc[i]=proc[i].slice(0,proc[i].lastIndexOf("\\")); i++;
str=str.slice(si+1);
}
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++){ imax=1;
for(i=1;i<kol;i++){
if (sum[i]>sum[imax]){
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]=0;
}
WScript.Echo(result);
function help(){
WScript.Echo(
"Программа вывода процессов с максимальным временем в привилегированном режиме.\n\
Разработал студент группы 4311 Лисютин Сергей\n\n\
Использование:\n\
File.js [help] | [<filename>] [n] [number] [time]\n\n\
Параметры:\n\
help - вызов справки\n\
filename - имя обрабатываемого файла\n\
n - количество выводимых процессов\n\
number - показывать ли количество процессов всего(y/n)\n\
time - показывать ли время процессов в привилегированном режиме (y/n)\n"
);
WScript.Quit();
}
22
Документ
Категория
Разное
Просмотров
59
Размер файла
538 Кб
Теги
пояснительная, записка
1/--страниц
Пожаловаться на содержимое документа