Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

CreateFolder( имя каталога)




Создает каталог. Ошибка возникает, если каталог существует

DeleteFile (полное имя файла )

Удаляет файл Полное имя файла может содержать символы маски в последней компоненте имени. Ошибка возникает, если файл не существует.

DeleteFolder ( полное имя папки)

Удаляет папку и ее содержимое. Полное имя папки может содержать символы маски в последней компоненте имени. Не делается различия между пустыми и не пустыми папками. Ошибка возникает, если папка не существует.

FileExists( полное имя файла)

Возвращает true, если файл существует и false в противном случае.

FolderExists( полное имя папки)

Возвращает true, если папка существует и false в противном случае.

GetAbsolutePathName(путь)

Возвращает полный путь. Предположим, что текущий каталог c:\mydocuments\reports, таблица иллюстрирует поведение метода GetAbsolutePathName

 

Путь Результат выполнения метода
"c:" "c:\mydocuments\reports"
"c:.." "c:\mydocuments"
"c:\\" "c:\"
"c:*.*\\may97" "c:\mydocuments\reports\*.*\may97"
"region1" "c:\mydocuments\reports\region1"
"c:\\..\\..\\mydocuments" "c:\mydocuments"

GetDrive(спецификация устройства)

Возвращает объект Drive, соответствующий аргументу.

Спецификация устройства может быть буквой устройства (c), буквой устройства с двоеточием (c:), буквой устройства с двоеточием и разделителем \ (c:\). Для вызова метода GetDrive обычно используется такой контекст:

 

DriveSpec = GetDriveName(GetAbsolutePathName(Path))

 

Пример -вывод вложенных папок данной папки.

 

var Text="Folders\n\n",

        wsh=WScript.CreateObject("WScript.Shell");

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

var path=fso.GetSpecialFolder(0);//1-System Folder

Text=Text+path+"\n";

var oFolders=fso.GetFolder(path);

var oSubFolder=new Enumerator(oFolders.SubFolders);

for( ; !oSubFolder.atEnd(); oSubFolder.moveNext()) {

       oFolder=oSubFolder.item();

       Text=Text+oFolder.Name+"\n";

}

WScript.Echo(Text);

 

ОбъектыFileиFolderимеютсвойствоAttributes, котороеустанавливаетиливозвращаетатрибутыфайлаилипапкиobject.Attributes [= новоезначениеатрибутов]

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

 

Атрибут Значение Описание
Normal 0 Нет атрибутов
ReadOnly 1 Атрибут может изменяться
Hidden 2 Атрибут может изменяться
System 4 Атрибут может изменяться
Volume 8 Атрибут не может изменяться
Directory 16 Атрибут не может изменяться
Archive 32 Атрибут может изменяться
Alias 64 Ссылка. Атрибут не может изменяться

Пример использования атрибута:

 

function ToggleArchiveBit(filespec) {

       var fso, f, r, s;

       fso=new ActiveXObject("Scripting.FileSystemObject");

       f = fso.GetFile(filespec);

       if ( f.attributes&&32 ) {

                   f.attributes = f.attributes-32;

                   s = "Archive bit is cleared.";

       } else {

                   f.attributes = f.attributes+32;

                   s ="Archive bit is set";

       }

       return(s);

}

 

Примерфайласкрипта

//inputdata:

// first argument - operation: delete - delete all files with extension followed after delete

//                              sort - sort file followed after sort

var mbOk = 0;

var mbOkCancel = 1;

var mbQuestion = 32;

var mbExclamation = 48;

var mbInfo = 64;

var mbOkOnly = 1;

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

function mySort(l1, l2) {

var temp1 = l1.substring(l1.lastIndexOf(" "), l1.length);

var temp2 = l2.substring(l2.lastIndexOf(" "), l2.length);

if (temp1 == temp2)

       return 0;

else if (temp1 > temp2)

       return 1;

else

       return -1;

}

function WriteToFile(filename, text, bool) {

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

var f1 = fso1.CreateTextFile(filename, bool);

f1.WriteLine(text);

f1.Close();

}

function delFile(fname) {

try {

       fso.DeleteFile(fname);

} catch (e) {

       var strErr = "No Info";

       if (e.description.length != 0)

       strErr = e.description;

       WScript.Echo(strErr);

}

}

var objArgs = WScript.Arguments;

if (objArgs.length == 0) {

WScript.Echo("Missing arguments. You can use following parametr:\ndelete extensions\nsort name_of_file");

WScript.Quit();

}

if (objArgs(i) == "delete") {

var i = 1;

if (objArgs.length == 1) {

                   delFile("*.");

}

for (; i < objArgs.length;i++)

delFile("*." + objArgs(i));

} else if (objArgs(i) == "sort") {

var inp;

if (objArgs.length > 1 )

                   inp = objArgs(1)

else

                   inp = "";

var bool = true;

do {

       if ( !fso.FileExists(inp)) {

       WScript.Echo("Invalid filename " + inp);

       var ie = WScript.CreateObject("InternetExplorer.Application");

       ie.Visible = 0;

       ie.navigate("about:blank");

       inp = ie.Application.Document.Script.prompt("Enter the file name", "");

       if (inp == null)

                   WScript.Quit();

       } else

                   bool = false;

} while (bool);

var textStream = fso.OpenTextFile(inp, 1); //Open file for reading

var strings = new Array(textStream.Line); //Create array of file's lines

var i = 0;

for (; i < textStream.Line; i++) {

       try {

                   strings[i] = textStream.ReadLine();

       } catch (e) {

                   var strErr = "no info";

              if (e.description.length != 0)

                              strErr = e.description;

                   WScript.Echo(strErr);

       }

}

textStream.Close();

strings.sort(mySort); //Sorting

var text = "";

for (i = 0; i < strings.length; i++)

text += strings[i] + "\n";

var wshshell = WScript.CreateObject("WScript.Shell");

wshshell.Popup(text, 0, "The result of sorting", mbOk+mbInfo);

 if (objArgs.length > 2) {

if (fso.FileExists(objArgs(2))) {

                   var done = wshshell.Popup("File already exist. Rewrite it?", 0, "File already exist", mbOkCancel + mbQuestion);

       if (done == mbOkOnly)

                              WriteToFile(objArgs(2), text, true);

       else

                              wshshell.Popup("File hasn't been created", 0, "File already exist", mbOk + mbExclamation);

} else

                              WriteToFile(objArgs(2), text, false);

}

 } else {

       WScript.Echo("Invalid arguments");

}

 

Задания для выполнения

 

В зависимости от запроса в интерактивном режиме выбирается один из нескольких вариантов действий. Всю информацию, не заданную конкретными значениями, передавать через параметры при вызове командного файла. Предусмотреть реакцию на ошибочные ситуации (отсутствие нужных файлов или присутствие вновь создаваемых).

 

Варианты индивидуальных заданий.

 

  1. В зависимости от запроса
    1. отсортировать файлы заданного каталога, созданные до указанной даты, по расширению;
    2. удалить файлы с указанным расширением в указанном каталоге.
  2. В зависимости от запроса
    1. удалить подкаталог текущего каталога с указанным именем (если он пуст);
    2. удалить из непустого подкаталога текущего каталога файлы с расширениями PAS,BAS и TXT.
  3. В зависимости от запроса
    1. для каждого типа файлов -TXT,INF,ASM - выдать число строк с заданным текстом;
    2. отсортировать файлы заданными именами по убыванию 3-го символа.
  4. В зависимости от запроса
    1. создать подкаталог текущего каталога с заданным именем и переместить в него из текущего каталога все файлы с расширением TXT, сделав их скрытыми;
    2. в каждом файле с расширением PAS или C заданного каталога найти и выдать на экран строки с определенным текстом, подсчитать количество таких строк.
  5. В зависимости от запроса
    1. подсчитать число файлов заданного каталога, созданных или модифицированных в заданную дату;
    2. выдать на экран список имен файлов текущего каталога, содержащих заданную строку.
  6. В зависимости от запроса
    1. объединить три файла с заданными именами в один и скопировать этот файл в заданный каталог;
    2. выдать на экран перечень всех подкаталогов заданного каталога.
  7. В зависимости от запроса
    1. заданный файл в заданном каталоге, имеющий содержание: ФИО- 20 символов, адрес- 30 символов, N телефона- 6 символов отсортировать по возрастанию N телефона.
    2. в зависимости от значения параметра отсортировать заданный каталог либо по возрастанию имени, либо по убыванию расширения, либо по возрастанию размера.
  8. В зависимости от запроса
    1. удалить из заданного каталога все файлы, имеющие расширение на заданную букву;
    2. выдать на экран содержимое файла с заданным именем заданного каталога, если он не пуст;
    3. переименовать файлы заданного каталога с именами, начинающимися на заданную букву.
  9. В зависимости от запроса
    1. скопировать в файл с указанным именем указанного каталога те строки заданного файла текущего каталога, которые содержат заданный текст;
    2. переместить файл с заданным именем из одного каталога в другой.
  10. В зависимости от запроса
    1. скопировать заданный файл текущего каталога в указанный каталог;
    2. отсортировать указанный файл указанного каталога по 10 символу, записать в файл с указанным именем;
    3. вывести на экран содержимое файлов указанного каталога с именем на заданную букву, затем эти файлы удалить.
  11. В зависимости от запроса
    1. найти в заданном каталоге все файлы в названии которых содержится заданная строка и выдать их содержимое на экран;
    2. создать в заданном каталоге файл с заданным именем, содержащий текущую дату.
  12. В зависимости от запроса
    1. заданный файл в текущем каталоге, содержит разделённые пробелами записи вида: дата звонка, телефонный номер вызывающего абонента, телефонный номер вызываемого абонента. Отсортировать данный файл по номеру вызывающего абонента;
    2. скопировать заданный файл из текущего каталога во все его подкаталоги, имена которых начинаются на заданную букву.

 

лАБОРАТОРНАЯ РАБОТА №7-8

Планирование процессов


Цель работы

 

Изучить как происходит планирование исполнения процессов в мультипрограммных вычислительных системах. Рассмотреть преимущества и недостатки различных алгоритмов планирования.

 

Общие сведения

 

Всякий раз, когда приходится иметь дело с ограниченным количеством ресурсов и несколькими их потребителями, занимаются распределением наличных ресурсов между потребителями или, другими словами, планированием использования ресурсов. Такое планирование должно иметь четко поставленные критерии (чего мы хотим добиться распределением ресурсов) и алгоритмы, соответствующие критериям и опирающиеся на параметры потребителей.

 

2.1. Уровни планирования

 

Существуют два вида планирования в вычислительных системах: планирование заданий и планирование использования процессора. Планирование заданий появилось в пакетных системах после того, как для хранения сформированных пакетов заданий начали использоваться магнитные диски. Магнитные диски, будучи устройствами прямого доступа, позволяют загружать задания в компьютер в произвольном порядке, а не только в том, в котором они были записаны на диск. Изменяя порядок загрузки заданий в вычислительную систему, можно повысить эффективность ее использования. Процедуру выбора очередного задания для загрузки в машину, т. е. для порождения соответствующего процесса, и называется планированием заданий. Планирование использования процессора впервые возникает в мультипрограммных вычислительных системах, где в состоянии готовность могут одновременно находиться несколько процессов. Именно процедура выбора из них одного процесса, который получит процессор в свое распоряжение, т.е. будет переведен в состояние исполнение, называется планированием процессов. Оба эти вида планирования и есть различные уровни планирования процессов.

Планирование заданий выступает в качестве долгосрочного планирования процессов. Оно отвечает за порождение новых процессов в системе, определяя ее степень мультипрограммирования, т. е. количество процессов, одновременно находящихся в ней. Если степень мультипрограммирования системы поддерживается постоянной, т. е. среднее количество процессов в компьютере не меняется, то новые процессы могут появляться только после завершения ранее загруженных. Поэтому долгосрочное планирование осуществляется достаточно редко, между появлением новых процессов могут проходить минуты и даже десятки минут. Решение о выборе для запуска того или иного процесса оказывает влияние на функционирование вычислительной системы на протяжении достаточно длительного интервала времени. Отсюда и проистекает название этого уровня планирования — долгосрочное. В некоторых операционных системах долгосрочное планирование сведено к минимуму или совсем отсутствует. Так, например, во многих интерактивных системах разделения времени порождение процесса происходит сразу после появления соответствующего запроса. Поддержание разумной степени мультипрограммирования осуществляется за счет ограничения количества пользователей, которые могут работать в системе, и человеческой психологии. Если между нажатием на клавишу и появлением символа на экране проходит 20-30 секунд, то многие пользователи предпочтут прекратить работу и продолжить ее, когда система будет менее загружена.

Планирование использования процессора выступает в качестве краткосрочного планирования процессов. Оно проводится, к примеру, при обращении исполняющегося процесса к устройствам ввода-вывода или просто по завершении определенного интервала времени. Поэтому краткосрочное планирование осуществляется весьма часто, как правило, не реже одного раза в 100 миллисекунд. Выбор нового процесса для исполнения оказывает влияние на функционирование системы до наступления очередного аналогичного события, т. е. в течение короткого промежутка времени, что и обусловило название этого уровня планирования — краткосрочное.

В некоторых вычислительных системах бывает выгодно для повышения их производительности временно удалить какой-либо частично выполнившийся процесс из оперативной памяти на диск, а позже вернуть его обратно для дальнейшего выполнения. Такая процедура в англоязычной литературе получила название swapping, что можно перевести на русский язык как перекачка, хотя в профессиональной литературе оно употребляется без перевода — свопинг. Когда и какой из процессов нужно перекачать на диск и вернуть обратно, решается дополнительным промежуточным уровнем планирования процессов — среднесрочным.

 

2.2. Критерии планирования и требования к алгоритмам

 

Для каждого уровня планирования процессов можно предложить много различных алгоритмов. Выбор конкретного алгоритма определяется классом задач, решаемых вычислительной системой, и целями, которых мы хотим достичь, используя планирование. К числу таких целей можно отнести:

  • Справедливость: гарантировать каждому заданию или процессу определенную часть времени использования процессора в компьютерной системе, стараясь не допустить возникновения ситуации, когда процесс одного пользователя постоянно занимает процессор, в то время как процесс другого пользователя фактически не приступал к выполнению.
  • Эффективность: постараться занять процессор на все 100% рабочего времени, не позволяя ему простаивать в ожидании процессов готовых к исполнению. В реальных вычислительных системах загрузка процессора колеблется от 40 до 90 процентов.
  • Сокращение полного времени выполнения (turnaround time):обеспечить минимальное время между стартом процесса или постановкой задания в очередь для загрузки и его завершением.
  • Сокращение времени ожидания (waiting time): минимизировать время, которое проводят процессы в состоянии готовность и задания в очереди для загрузки.
  • Сокращение времени отклика (response time): минимизировать время, которое требуется процессу в интерактивных системах для ответа на запрос пользователя.

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

  • Были предсказуемыми. Одно и то же задание должно выполняться приблизительно за одно и то же время. Применение алгоритма планирования не должно приводить, к примеру, к извлечению корня квадратного из 4 за сотые доли секунды при одном запуске и за несколько суток при втором запуске.
  • Имели минимальные накладные расходы, связанные с их работой. Если на каждые 100 миллисекунд, выделенных процессу для использования процессора, будет приходиться 200 миллисекунд на определение того, какой именно процесс получит процессор в свое распоряжение, и на переключение контекста, то такой алгоритм, очевидно, использовать не стоит.
  • Равномерно загружали ресурсы вычислительной системы, отдавая предпочтение тем процессам, которые будут занимать малоиспользуемые ресурсы.
  • Обладали масштабируемостью, т. е. не сразу теряли работоспособность при увеличении нагрузки. Например, рост количества процессов в системе в два раза не должен приводить к увеличению полного времени выполнения процессов на порядок.

Многие из приведенных выше целей и свойств являются противоречивыми. Улучшая работу алгоритма с точки зрения одного критерия, мы ухудшаем ее с точки зрения другого. Приспосабливая алгоритм под один класс задач, мы тем самым дискриминируем задачи другого класса.

 

2.3. Параметры планирования

 

Для осуществления поставленных целей разумные алгоритмы планирования должны опираться на какие-либо характеристики процессов в системе, заданий в очереди на загрузку, состояния самой вычислительной системы, иными словами, на параметры планирования. В этом разделе мы опишем ряд таких параметров, не претендуя на полноту изложения.

Все параметры планирования можно разбить на две большие группы: статические параметры и динамические параметры. Статические параметры не изменяются в ходе функционирования вычислительной системы, динамические же, напротив, подвержены постоянным изменениям.

К статическим параметрам вычислительной системы можно отнести предельные значения ее ресурсов (размер оперативной памяти, максимальное количество памяти на диске для осуществления свопинга, количество подключенных устройств ввода-вывода и т. п.). Динамические параметры системы описывают количество свободных ресурсов в текущий момент времени.

К статическим параметрам процессов относятся характеристики, как правило, присущие заданиям уже на этапе загрузки:

  • Каким пользователем запущен процесс или сформировано задание.
  • Насколько важной является поставленная задача, т. е. каков приоритет ее выполнения.
  • Сколько процессорного времени запрошено пользователем для решения задачи.
  • Каково соотношение процессорного времени и времени, необходимого для осуществления операций ввода-вывода.
  • Какие ресурсы вычислительной системы (оперативная память, устройства ввода-вывода, специальные библиотеки и системные программы и т. д.) и в каком количестве необходимы заданию.

Алгоритмы долгосрочного планирования используют в своей работе статические и динамические параметры вычислительной системы и статические параметры процессов (динамические параметры процессов на этапе загрузки заданий еще не известны). Алгоритмы краткосрочного и среднесрочного планирования дополнительно учитывают и динамические характеристики процессов. Для среднесрочного планирования в качестве таких характеристик может выступать следующая информация:

  • Сколько времени прошло со времени выгрузки процесса на диск или его загрузки в оперативную память.
  • Сколько оперативной памяти занимает процесс.
  • Сколько процессорного времени было уже предоставлено процессу.

Рис 1. Фрагмент деятельности процесса с выделением промежутков непрерывного использования процессора и ожидания ввода-вывода.

Для краткосрочного планирования нам понадобится ввести еще два динамических параметра. Деятельность любого процесса можно представить как последовательность циклов использования процессора и ожидания завершения операций ввода-вывода. Промежуток времени непрерывного использования процессора носит на английском языке название CPU burst, а промежуток времени непрерывного ожидания ввода-вывода – I/O burst. На рисунке 1. показан фрагмент деятельности некоторого процесса на псевдоязыке программирования с выделением указанных промежутков. Значения продолжительности последних и очередных CPU burst и I/O burst являются важными динамическими параметрами процесса.

 

2.4. Вытесняющее и невытесняющее планирование

 

Процесс планирования осуществляется частью операционной системы, называемой планировщиком. Планировщик может принимать решения о выборе для исполнения нового процесса, из числа находящихся в состоянии готовность, в следующих четырех случаях:

  1. Когда процесс переводится из состояния исполнение в состояние завершение.
  2. Когда процесс переводится из состояния исполнение в состояние ожидание.
  3. Когда процесс переводится из состояния исполнение в состояние готовность (например, после прерывания от таймера).
  4. Когда процесс переводится из состояния ожидание в состояние готовность (завершилась операция ввода-вывода или произошло другое событие).

В случаях 1 и 2 процесс, находившийся в состоянии исполнение, не может дальше исполняться, и для выполнения всегда необходимо выбрать новый процесс. В случаях 3 и 4 планирование может не проводиться, процесс, который исполнялся до прерывания, может продолжать свое выполнение после обработки прерывания. Если планирование осуществляется только в случаях 1 и 2, говорят, что имеет место невытесняющее (nonpreemptive) планирование. В противном случае говорят о вытесняющем (preemptive) планировании. Термин “вытесняющее планирование” возник потому, что исполняющийся процесс помимо своей воли может быть вытеснен из состояния исполнение другим процессом.

Невытесняющее планирование используется, например, в MS Windows 3.1 и ОС Apple Macintosh. При таком режиме планирования процесс занимает столько процессорного времени, сколько ему необходимо. При этом переключение процессов возникает только при желании самого исполняющегося процесса передать управление (для ожидания завершения операции ввода-вывода или по окончании работы). Этот метод планирования относительно просто реализуем и достаточно эффективен, так как позволяет использовать большую часть процессорного времени на работу самих процессов и до минимума сократить затраты на переключение контекста. Однако при невытесняющем планировании возникает проблема возможности полного захвата процессора одним процессом, который вследствие каких-либо причин (например, из-за ошибки в программе) зацикливается и не может передать управление другому процессу. В такой ситуации спасает только перезагрузка всей вычислительной системы.

Вытесняющее планирование обычно используется в системах разделения времени. В этом режиме планирования процесс может быть приостановлен в любой момент своего исполнения. Операционная система устанавливает специальный таймер для генерации сигнала прерывания по истечении некоторого интервала времени — кванта. После прерывания процессор передается в распоряжение следующего процесса. Временные прерывания помогают гарантировать приемлемые времена отклика процессов для пользователей, работающих в диалоговом режиме, и предотвращают “зависание” компьютерной системы из-за зацикливания какой-либо программы.

 

2.5. Алгоритмы планирования

 

Существует достаточно большой набор разнообразных алгоритмов планирования, которые предназначены для достижения различных целей и эффективны для разных классов задач. Многие из них могут быть использованы на нескольких уровнях планирования. В этом разделе рассмотрены некоторые наиболее употребительные алгоритмы применительно к процессу кратковременного планирования.

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 485.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...