close

Вход

Забыли?

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

?

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

код для вставкиСкачать
Министерство образования и науки Российской Федерации
КНИТУ - КАИ имени А.Н.Туполева
---------------------------------------------------------------------------------------
Кафедра ПМИ
Пояснительная записка к курсовой работе
по дисциплине "Операционные системы"
Вариант 7
Выполнил: студент группы 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
Постановка задачи
Вариант №7.
Разработать две процедуры на JavaScript .
1) Вычислительная процедура, выполняющая задачу из "Сборника задач и упражнений по математическому анализу" Демидовича, согласно индивидуальному заданию.
2) Процедура обработки текстового файла. В качестве текстового файла использовать результат работы системного монитора Windows. С трассой событий в соответствии со второй частью индивидуального задания.
При вызове каждой из процедур предлагать возможность задания не менее трех необязательных параметров. Один параметр для вывода справочной информации. Два параметра конкретизирующие выводимую информацию.
Задание 1: С помощью формулы Тейлора приблизительно вычислить:
√(5&250)
Задание 2: Вывести заданное количество процессов с минимальным временем в пользовательском режиме.
Описание метода решения задач
В первом задании необходимо вычислить значение выражения √(5&250)
При разложении в ряд Тейлора оно вычисляется по формуле:
√(5&x)=y∙(1+1/5∙z+ ( 1/5 (1/5-1))/2!∙z^2+(1/5 (1/5-1)(1/5-2))/3!∙z^3+...),
где √(5&x)=y∙√(5&1+z), y - натуральное число.
Во втором задании необходимо обработать файл отчета работы системного монитора <*.tsv> и вывести заданное количество процессов минимальным временем в пользовательском режиме. Для этого выберем из файла отчета процессы с минимальным временем в пользовательском режиме и выведем в консоль заданное количество процессов в порядке возрастания.
Описание алгоритма решения задачи
Алгоритм решения первой задачи выглядит следующим образом:
Определяем число е - точность вычисления значения по формуле Тейлора (величина, которую не должны превосходить все слагаемые в формуле Тейлора по модулю).
Определяем x - аргумент функции.
Рассчитываем значение искомой функции для заданных аргумента и точности и выводим их на экран.
Алгоритм решения второй задачи выглядит следующим образом:
Определяем обрабатываемый файл.
Сохраняем названия процессов, которые записаны в первой строке обрабатываемого файла.
Обрабатываем строки, в которых хранятся значения времени в пользовательском режиме процессов.
Выбираем из значений приоритетов минимальные.
Выводим заданное количество минимальных значений на экран.
Описание процедур
Вычислительная процедура:В начале процедуры определяется объект arg=WScript.Arguments, который содержит параметры командной строки. Далее в зависимости от количества введенных параметров вычисляется число е - точность вычисления значения по формуле Тейлора и x - аргумент функции. Если параметры не введены, то они определяются по умолчанию как: е=0,00001; x=250. Если введен параметр help, то программа выводит справочную информацию. Так же проверяется допустимость значений параметров. Если введены недопустимые параметры, то программа выводит ошибку, а вслед за ней справочную информацию. После вычисления оценки погрешности ее значение выводится на экран. Процедура обработки текстового файла:Вначале программы определяются путь к обрабатываемому файлу, по умолчанию "time.tsv". Если сценарий запущен с параметром "help" то вызывается функция help(), которая осуществляет вывод справочной информации.
Далее из файла считывается первая строка, содержащая имена процессов, и организуется цикл до конца строки, которая выделяет имя каждого следующего процесса и сохраняет его в массиве. В этом же цикле определяется общее количество процессов. После завершения цикла выводится информация о количестве процессов.
Далее организуется цикл для обработки строк, содержащих значение приоритетов для каждого момента времени. Каждая строка обрабатывается следующим образом:
- из начала строки удаляется время;
- организуется цикл для считывания значения параметра для каждого процесса и замена им предыдущих результатов. Далее организуется цикл от 1 до n - количества выводимых процессов. В каждой итерации цикла выполняются следующие действия:
- проверка процесса на минимальное время в пользовательском режиме;
- вывод информации о данном процессе, если он имеет минимальное время в пользовательском режиме;
- опциональные возможности - добавить количество всех процессов и выводить с процессами их время в пользовательском режиме
Описание ошибок, фиксируемых процедурами
Вычислительная процедура:При запуске сценария проверяется количество и правильность введенных параметров. Если количество параметров больше двух, то выдается соответствующая ошибка. Параметры х и е должны быть неотрицательными, причем х должно быть целым числом. Если данные условия не выполняются, то выводится соответствующая ошибка и программа завершает свою работу.
Процедура обработки текстового файла: При запуске сценария проверяется количество и правильность введенных параметров. Если количество параметров больше четырех, то выдается соответствующая ошибка. В качестве параметра запрашивается имя обрабатываемого файла. Ошибки выводятся в случае отсутствия заданного файла или невозможности его открытия.
В случае использования двух параметров возможны следующие ошибки: неправильно указанный путь к файлу, неверно указан параметр количества выводимых процессов.
В случае использования трех параметров возможны следующие ошибки: неправильно указанный путь к файлу, неверно указан параметр количества выводимых процессов, неверно задан ключ опционального вывода общего количества процессов.
В случае использования четырех параметров возможны следующие ошибки: неправильно указанный путь к файлу, неверно указан параметр количества выводимых процессов, неверно задан ключ опционального вывода общего количества процессов, неверно задан ключ опционального вывода времени в пользовательском режиме процессов.
Руководство пользователя
1. Вычислительная процедура.
Данная процедура предназначена для вычисления значения выражения
√(5&250)
с использованием формулы Тейлора. Процедура имеет следующий формат:
prog1.js [help] | [x] [e]
где
help - вызов справки
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=33 е=0,001:
Параметры являются допустимыми. Программа выполняется.
Запускаем программу с тремя параметрами : Количество параметров недопустимо. Выводится ошибка и справочная информация.
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 e = 0.00001;
var x = 250; var num="0123456789";
var fact = function(x) {
if (x <= 1) return 1;
return x * fact(x - 1);
}
var getNextFactor = function(i, balance) {
var result = 1;
for (var j = 0; j < i; j++) {
result *= (0.2 - j) * balance;
}
return result / fact(i);
}
if (arg.Count() == 0) {
//ничего
} else if (arg.Count() == 1) {
if(arg(0).toLowerCase()=="help") {
help();
} else {
x = arg(0);
for(i=0; i < x.length; i++) {
if (num.search(x.charAt(i))==-1) {
WScript.Echo("Ошибка: число x должно быть целым числом больше нуля");
help();
}
}
}
} else if (arg.Count() == 2) {
x = arg(0);
for(i=0; i < x.length; i++) {
if (num.search(x.charAt(i))==-1) {
WScript.Echo("Ошибка: число x должно быть целым числом больше нуля");
help();
}
}
e = arg(1);
for(i=0; i < e.length; i++) {
if (num.search(e.charAt(i))==-1) {
WScript.Echo("Ошибка: e должен быть больше нуля");
help();
}
}
} else {
WScript.Echo("Ошибка: Неверное количество параметров");
help(); }
//множитель
var mult = 0;
//находит ближайшее число, меньшее х и являющееся 5 степенью var closer = 0;
for (mult = 0; mult<= 1000; mult++) {
if (Math.pow(mult, 5) > x) {
closer = Math.pow(mult - 1, 5);
break;
}
}
var mod = --mult;
var counter = 1;
while(Math.abs(getNextFactor(counter, (x - closer) / Math.pow(mod, 5))) > e) {
mod += mult * getNextFactor(counter++, (x - closer) / Math.pow(mod, 5));
}
var result = "Приближенное значение корня пятой степени из " + x + " с точностью " + e + " равно: " + mod.toFixed(10);
WScript.Echo(result);
function help(){
WScript.Echo("Программа расчета приближенного значения корня пятой степени..\n\
Разработал студент гр. 4311 Минхаеров Марат \n\n\n\
Использование:\n\
prog1.js [help] | [x] [e]\n\n\n\
Параметры:\n\
help - вызов справки\n\
x - аргумент функции, по умолчанию 250\n\
e - точность вычисления, по умолчанию 0.00001\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("Ошибка: Некорректный третий параметр");
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("Ошибка: Некорректный третий параметр");
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);
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[imax] == 0) {
imax = i;
continue;
}
if (sum[i] < sum[imax] && sum[i] != 0){
imax=i;
}
}
if (sum[imax] != Number.POSITIVE_INFINITY) {
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();
}
24
Документ
Категория
Разное
Просмотров
13
Размер файла
595 Кб
Теги
пояснительная, записка
1/--страниц
Пожаловаться на содержимое документа