Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
CreateFolder( имя каталога)
Создает каталог. Ошибка возникает, если каталог существует DeleteFile (полное имя файла ) Удаляет файл Полное имя файла может содержать символы маски в последней компоненте имени. Ошибка возникает, если файл не существует. DeleteFolder ( полное имя папки) Удаляет папку и ее содержимое. Полное имя папки может содержать символы маски в последней компоненте имени. Не делается различия между пустыми и не пустыми папками. Ошибка возникает, если папка не существует. FileExists( полное имя файла) Возвращает true, если файл существует и false в противном случае. FolderExists( полное имя папки) Возвращает true, если папка существует и false в противном случае. GetAbsolutePathName(путь) Возвращает полный путь. Предположим, что текущий каталог c:\mydocuments\reports, таблица иллюстрирует поведение метода GetAbsolutePathName
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 [= новоезначениеатрибутов] Новое значение атрибутов может быть только одним из следующих значений или их комбинацией:
Пример использования атрибута:
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"); }
Задания для выполнения
В зависимости от запроса в интерактивном режиме выбирается один из нескольких вариантов действий. Всю информацию, не заданную конкретными значениями, передавать через параметры при вызове командного файла. Предусмотреть реакцию на ошибочные ситуации (отсутствие нужных файлов или присутствие вновь создаваемых).
Варианты индивидуальных заданий.
лАБОРАТОРНАЯ РАБОТА №7-8 Планирование процессов Цель работы
Изучить как происходит планирование исполнения процессов в мультипрограммных вычислительных системах. Рассмотреть преимущества и недостатки различных алгоритмов планирования.
Общие сведения
Всякий раз, когда приходится иметь дело с ограниченным количеством ресурсов и несколькими их потребителями, занимаются распределением наличных ресурсов между потребителями или, другими словами, планированием использования ресурсов. Такое планирование должно иметь четко поставленные критерии (чего мы хотим добиться распределением ресурсов) и алгоритмы, соответствующие критериям и опирающиеся на параметры потребителей.
2.1. Уровни планирования
Существуют два вида планирования в вычислительных системах: планирование заданий и планирование использования процессора. Планирование заданий появилось в пакетных системах после того, как для хранения сформированных пакетов заданий начали использоваться магнитные диски. Магнитные диски, будучи устройствами прямого доступа, позволяют загружать задания в компьютер в произвольном порядке, а не только в том, в котором они были записаны на диск. Изменяя порядок загрузки заданий в вычислительную систему, можно повысить эффективность ее использования. Процедуру выбора очередного задания для загрузки в машину, т. е. для порождения соответствующего процесса, и называется планированием заданий. Планирование использования процессора впервые возникает в мультипрограммных вычислительных системах, где в состоянии готовность могут одновременно находиться несколько процессов. Именно процедура выбора из них одного процесса, который получит процессор в свое распоряжение, т.е. будет переведен в состояние исполнение, называется планированием процессов. Оба эти вида планирования и есть различные уровни планирования процессов. Планирование заданий выступает в качестве долгосрочного планирования процессов. Оно отвечает за порождение новых процессов в системе, определяя ее степень мультипрограммирования, т. е. количество процессов, одновременно находящихся в ней. Если степень мультипрограммирования системы поддерживается постоянной, т. е. среднее количество процессов в компьютере не меняется, то новые процессы могут появляться только после завершения ранее загруженных. Поэтому долгосрочное планирование осуществляется достаточно редко, между появлением новых процессов могут проходить минуты и даже десятки минут. Решение о выборе для запуска того или иного процесса оказывает влияние на функционирование вычислительной системы на протяжении достаточно длительного интервала времени. Отсюда и проистекает название этого уровня планирования — долгосрочное. В некоторых операционных системах долгосрочное планирование сведено к минимуму или совсем отсутствует. Так, например, во многих интерактивных системах разделения времени порождение процесса происходит сразу после появления соответствующего запроса. Поддержание разумной степени мультипрограммирования осуществляется за счет ограничения количества пользователей, которые могут работать в системе, и человеческой психологии. Если между нажатием на клавишу и появлением символа на экране проходит 20-30 секунд, то многие пользователи предпочтут прекратить работу и продолжить ее, когда система будет менее загружена. Планирование использования процессора выступает в качестве краткосрочного планирования процессов. Оно проводится, к примеру, при обращении исполняющегося процесса к устройствам ввода-вывода или просто по завершении определенного интервала времени. Поэтому краткосрочное планирование осуществляется весьма часто, как правило, не реже одного раза в 100 миллисекунд. Выбор нового процесса для исполнения оказывает влияние на функционирование системы до наступления очередного аналогичного события, т. е. в течение короткого промежутка времени, что и обусловило название этого уровня планирования — краткосрочное. В некоторых вычислительных системах бывает выгодно для повышения их производительности временно удалить какой-либо частично выполнившийся процесс из оперативной памяти на диск, а позже вернуть его обратно для дальнейшего выполнения. Такая процедура в англоязычной литературе получила название swapping, что можно перевести на русский язык как перекачка, хотя в профессиональной литературе оно употребляется без перевода — свопинг. Когда и какой из процессов нужно перекачать на диск и вернуть обратно, решается дополнительным промежуточным уровнем планирования процессов — среднесрочным.
2.2. Критерии планирования и требования к алгоритмам
Для каждого уровня планирования процессов можно предложить много различных алгоритмов. Выбор конкретного алгоритма определяется классом задач, решаемых вычислительной системой, и целями, которых мы хотим достичь, используя планирование. К числу таких целей можно отнести:
Независимо от поставленных целей планирования желательно также, чтобы алгоритмы обладали следующими свойствами:
Многие из приведенных выше целей и свойств являются противоречивыми. Улучшая работу алгоритма с точки зрения одного критерия, мы ухудшаем ее с точки зрения другого. Приспосабливая алгоритм под один класс задач, мы тем самым дискриминируем задачи другого класса.
2.3. Параметры планирования
Для осуществления поставленных целей разумные алгоритмы планирования должны опираться на какие-либо характеристики процессов в системе, заданий в очереди на загрузку, состояния самой вычислительной системы, иными словами, на параметры планирования. В этом разделе мы опишем ряд таких параметров, не претендуя на полноту изложения. Все параметры планирования можно разбить на две большие группы: статические параметры и динамические параметры. Статические параметры не изменяются в ходе функционирования вычислительной системы, динамические же, напротив, подвержены постоянным изменениям. К статическим параметрам вычислительной системы можно отнести предельные значения ее ресурсов (размер оперативной памяти, максимальное количество памяти на диске для осуществления свопинга, количество подключенных устройств ввода-вывода и т. п.). Динамические параметры системы описывают количество свободных ресурсов в текущий момент времени. К статическим параметрам процессов относятся характеристики, как правило, присущие заданиям уже на этапе загрузки:
Алгоритмы долгосрочного планирования используют в своей работе статические и динамические параметры вычислительной системы и статические параметры процессов (динамические параметры процессов на этапе загрузки заданий еще не известны). Алгоритмы краткосрочного и среднесрочного планирования дополнительно учитывают и динамические характеристики процессов. Для среднесрочного планирования в качестве таких характеристик может выступать следующая информация:
Рис 1. Фрагмент деятельности процесса с выделением промежутков непрерывного использования процессора и ожидания ввода-вывода. Для краткосрочного планирования нам понадобится ввести еще два динамических параметра. Деятельность любого процесса можно представить как последовательность циклов использования процессора и ожидания завершения операций ввода-вывода. Промежуток времени непрерывного использования процессора носит на английском языке название CPU burst, а промежуток времени непрерывного ожидания ввода-вывода – I/O burst. На рисунке 1. показан фрагмент деятельности некоторого процесса на псевдоязыке программирования с выделением указанных промежутков. Значения продолжительности последних и очередных CPU burst и I/O burst являются важными динамическими параметрами процесса.
2.4. Вытесняющее и невытесняющее планирование
Процесс планирования осуществляется частью операционной системы, называемой планировщиком. Планировщик может принимать решения о выборе для исполнения нового процесса, из числа находящихся в состоянии готовность, в следующих четырех случаях:
В случаях 1 и 2 процесс, находившийся в состоянии исполнение, не может дальше исполняться, и для выполнения всегда необходимо выбрать новый процесс. В случаях 3 и 4 планирование может не проводиться, процесс, который исполнялся до прерывания, может продолжать свое выполнение после обработки прерывания. Если планирование осуществляется только в случаях 1 и 2, говорят, что имеет место невытесняющее (nonpreemptive) планирование. В противном случае говорят о вытесняющем (preemptive) планировании. Термин “вытесняющее планирование” возник потому, что исполняющийся процесс помимо своей воли может быть вытеснен из состояния исполнение другим процессом. Невытесняющее планирование используется, например, в MS Windows 3.1 и ОС Apple Macintosh. При таком режиме планирования процесс занимает столько процессорного времени, сколько ему необходимо. При этом переключение процессов возникает только при желании самого исполняющегося процесса передать управление (для ожидания завершения операции ввода-вывода или по окончании работы). Этот метод планирования относительно просто реализуем и достаточно эффективен, так как позволяет использовать большую часть процессорного времени на работу самих процессов и до минимума сократить затраты на переключение контекста. Однако при невытесняющем планировании возникает проблема возможности полного захвата процессора одним процессом, который вследствие каких-либо причин (например, из-за ошибки в программе) зацикливается и не может передать управление другому процессу. В такой ситуации спасает только перезагрузка всей вычислительной системы. Вытесняющее планирование обычно используется в системах разделения времени. В этом режиме планирования процесс может быть приостановлен в любой момент своего исполнения. Операционная система устанавливает специальный таймер для генерации сигнала прерывания по истечении некоторого интервала времени — кванта. После прерывания процессор передается в распоряжение следующего процесса. Временные прерывания помогают гарантировать приемлемые времена отклика процессов для пользователей, работающих в диалоговом режиме, и предотвращают “зависание” компьютерной системы из-за зацикливания какой-либо программы.
2.5. Алгоритмы планирования
Существует достаточно большой набор разнообразных алгоритмов планирования, которые предназначены для достижения различных целей и эффективны для разных классов задач. Многие из них могут быть использованы на нескольких уровнях планирования. В этом разделе рассмотрены некоторые наиболее употребительные алгоритмы применительно к процессу кратковременного планирования.
|
|||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-04-12; просмотров: 529. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |