М операционные системы етодические указания по контрольной работе по дисциплине icon

М операционные системы етодические указания по контрольной работе по дисциплине


Смотрите также:
М операционные системы етодические указания по контрольной работе по дисциплине...
Методические указания для выполнения Курсовой работы по дисциплине «Операционные системы»...
Методические указания к выполнению контрольной работы №2 по предмету «Операционные системы»...
Конспект лекций по учебной дисциплине «Операционные системы...
К контрольной работе по дисциплине «информационно-поисковые системы» для студентов заочной формы...
Методические указания к контрольной работе по учебной дисциплине Международные стандарты учета и...
Учебная программа...
Методические указания по проведению самостоятельной работы студентов по дисциплине Операционные...
Методические указания и задания к контрольной работе По дисциплине «Экология»...
Рабочая программа По дисциплине «Операционные системы» По специальности 230102...
Методические указания к контрольной работЕ по дисциплине «основы авторского и патентного права»...
Методические указания к контрольной работе по дисциплине «Иностранный язык» (французский)...



Загрузка...
скачать



Министерство образования и науки Российской Федерации

ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ


ФАКУЛЬТЕТ КИБЕРНЕТИКИ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ


УТВЕРЖДАЮ

Председатель Методической комиссии факультета Кибернетики


__________ (_А.В. Петров_)

"___"____________ 200__г.


М
ОПЕРАЦИОННЫЕ СИСТЕМЫ


етодические указания по контрольной работе по дисциплине



Направление подготовки: 230100 – Информатика и вычислительная

техника


Специальность _230102 – Автоматизированные системы обработки

информации и управления (АСУз)


Иркутск 2009


Операционные системы. Лабораторный практикум для выполнения лабораторных и контрольных (домашних) работ дисциплин "Операционные системы", "Операционные системы, среды и оболочки" и "Операционные системы и системное программирование" для студентов специальнос­тей факультета Кибернетики. Составитель С. К. Скрипкин. - Иркутск, Изд-во Иркутского государственного технического университета, 2003. - 29 с.

Лабораторный практикум содержит описание лабораторных работ для дисциплины "Операционные системы" и факультативных индивидуальных заданий для углубленного освоения дисциплины и интеграции с курсом “Системное программное обеспечение”, а также основные учебно-методические материалы с примерами выполнения.. Даны методические указания по их выполнению. Описанию каждой работы предшествует формулировка ее цели и задание для самостоятельной подготовки к ее проведению. Приведены контрольные вопросы для контроля глубины и степени понимания студентами соответствующего раздела дисциплины и достижения целей контрольной работы. К сложным элементам решений лабораторных работ добавлены теоретические комментарии и разъяснения вариантов решения. Практикум содействует освоению теоретических разделов дисциплины и приобретению практических навыков путем самостоятельного выполнения полного цикла лабораторных работ индивидуально или небольшими рабочими группами (2-5 чел.) в компьютерных залах или самостоятельно на домашних ПЭВМ.

Практикум предназначен для студентов специальностей 230102 (220200) - "Автоматизированные системы обработки информации и управления", 351400 «Прикладная информатика (по областям)», 071900 - "Информационные системы в наукоемких технологиях" дневного и заочного отделения.

____________________________________________________

План 2009. 1,25 печ. л., 1, 5 уч. -изд. л.. Тираж 30 экз.

Содержание

5

^ ОБЩИЕ УКАЗАНИЯ
к выполнению контрольных работ 5

1. Цель 5

2. Языки командного управления в ОС. 5

3. Порядок выполнения работ 16

4. Защита отчета 17

Контрольная работа N 1
Создание и проверка работы виртуальных устройств 18

1. Цель работы 18

2. Темы для теоретического изучения 18

3. Общее задание 18

4. Индивидуальные задания 18

5. Примеры выполнения задания 18

6. Вопросы к контрольной работе 20

Контрольная работа N 2
Установка и настройка операционной системы и ее компонентов, проверка средств системного программирования и администрирования 21

1. Цель работы 21

2. Темы для теоретического изучения 21

3. Общее задание 21

4. Индивидуальные задания 21

5. Примеры выполнения задания 21

6. Вопросы к контрольной работе 25

Контрольная работа N 3
Создание командного файла для взаимного преобразования архивов 26

1. Цель работы 26

2. Темы для теоретического изучения 26

3. Общее задание 26

4. Индивидуальные задания 26

5. Примеры выполнения задания 26

6. Вопросы к контрольной работе 29

Контрольная работа N 4
Создание системной утилиты обхода дерева каталогов c поиском лексем в файлах 30

1. Цель работы 30

2. Темы для теоретического изучения 30

3. Общее задание 30

4. Индивидуальные задания 30

5. Примеры выполнения задания 30

6. Вопросы к контрольной работе 34

Контрольная работа N 5
Структура и способы работы с реестром Windows, в том числе средствами сервера скриптов WSH 35

1. Цель работы 35

2. Темы для теоретического изучения 35

3. Общее задание 35

4. Индивидуальные задания 35

5. Примеры выполнения задания 35

6. Вопросы к контрольной работе 37

Контрольная работа N 6
Реализация множественного поиска и замена лексем в смешанных архивах 38

1. Цель работы 38

2. Темы для теоретического изучения 38

3. Общее задание 38

4. Индивидуальные задания 38

5. Примеры выполнения задания 38

6. Вопросы к контрольной работе 39

Контрольная работа N 7
Создание модели распределенной файловой системы 41

1. Цель работы 41

2. Темы для теоретического изучения 41

3. Общее задание 41

4. Индивидуальные задания 41

5. Примеры выполнения задания 42

6. Вопросы к контрольной работе 44

Контрольная работа N 8
Создание модели XML-репозитария и пакета скриптов для работы с ним 46

1. Цель работы 46

2. Темы для теоретического изучения 46

3. Общее задание 46

4. Индивидуальные задания 46

5. Примеры выполнения задания 46

6. Вопросы к контрольной работе 51

Контрольная работа N 9
Создание моделей операционных оболочек 52

1. Цель работы 52

2. Темы для теоретического изучения 52

3. Общее задание 52

Индивидуальные задания 52

5. Примеры выполнения задания 53

6. Вопросы к контрольной работе 60

Контрольная работа N 10
Создание модели распределенной операционной системы в среде Internet 62

1. Цель работы 62

2. Темы для теоретического изучения 62

3. Общее задание 62

4. Индивидуальные задания 62

5. Примеры выполнения задания 62

6. Вопросы к контрольной работе 84

Литература 85

Приложение 1. Пример Теста 86

Приложение 2. Разделы “Операционные системы”: 88
^

ОБЩИЕ УКАЗАНИЯ
к выполнению контрольных работ

1. Цель


Контрольные работы выполняются при изучении курса "Операционные системы" и имеет целью выработку у студентов навыков в трех основных направлениях:

  1. эффективное применение команд и командных файлов операционных систем;

  2. средства управления вычислительными ресурсами на низких и средних уровнях;

  3. использование глобальных и распределенных операционных сред и оболочек .

В соответствии с указанными целями работы разбивается на три части:

контрольные работы 1-4; лабораторные работы 5-7; лабораторные работы 8-10.

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

В лабораторных работах 5-7 предлагается изучение новейших средств управления ОС – языков скриптов, пакетов скриптов и скриптовых приложений, которые также применяются для выполнения в завершающей части.

Лабораторные работы 8-10 позволяют освоить основные средства и механизмы администрирования сетевыми операционными системами, организации прикладных сред и сетевых оболочек, диалоговые и программные интерфейсы, глобальные и распределенные программные системы.

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

В "Общие указания" вынесены некоторые общие для выполнения лабораторных работ требования и правила.

^

2. Языки командного управления в ОС.


В последнее время в связи развитием глобальных Интернет-технологий, широким распространением высокопроизводительных компьютеров и рядом других факторов получили распространение так называемые скриптовые языки. Эта языки первоначально ориентировались на использование в качестве внутренних управляющих языков во всякого рода сложных системах, в том числе и для управления в операционных системах. Многие из них вышли за пределы сферы своего изначального применения и используются ныне в совсем иных областях. Характерными особенностями данных языков являются, во-первых, их интерпретируемость (компиляция либо невозможна, либо нежелательна), во-вторых, простота синтаксиса, а в-третьих, легкая расширяемость. Таким образом, они идеально подходят для использования в часто изменяемых программах, очень небольших программах в среде операционных систем или в случаях, когда для выполнения операторов языка затрачивается время, несопоставимое со временем их разбора. Было создано достаточно большое количество таких языков, перечислим лишь основные и наиболее часто используемые.

JavaScript был создан в компании Netscape Communications в качестве языка для описания сложного поведения веб-страниц и управления браузером. Первоначально назывался LiveScript, причиной смены названия получили маркетинговые соображения. Интерпретируется браузером во время отображения веб-страницы и сервером скриптов Windows Script Host. По синтаксису схож с Java и (более отдаленно) с C/C++. Имеет возможность использовать встроенную в браузер объектную функциональность и возможности операционной системы, однако подлинно объектно-ориентированным языком не является.

VBScript был создан в корпорации Microsoft во многом в качестве альтернативы JavaScript. Имеет схожую область применения и возможности. Синтаксически схож с языком Visual Basic (и является усеченной версией последнего). Так же, как и JacaScript, исполняется браузером при отображении веб-страниц, и сервером скриптов Windows Script Host и имеет ту же степень объектно-ориентированности.

Perl создавался в помощь системному администратору операционной системы Unix для обработки различного рода текстов и выделения нужной информации. Развился до мощного средства работы с текстами и языка Web-приложений. Является интерпретируемым языком и реализован практически на всех существующих платформах. Применяется при обработке текстов, а также для динамической генерации веб-страниц на веб-серверах.

Python - интерпретируемый объектно-ориентированный язык программирования. По структуре и области применения близок к Perl, однако менее распространен и более строг и логичен. Имеются реализации для большинства существующих платформ.

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

Джон Бэкус, автор Фортрана и формы описания синтаксиса BNF (форма Бэкуса—Наура), писал (1977): «По-видимому, с языками программирования происходит что-то неладное. Всякий новый язык включает с небольшими изменениями все свойства своих предшественников плюс кое-что еще. Руководства по некоторым языкам занимают более 500 страниц... В течение двадцати лет языки программирования неизменно развивались в одном и том же направлении, пока не дошли до нынешнего состояния «ожирения»... Теперь это излюбленная область тех, кто предпочитает возиться с пухлыми перечнями подробностей вместо того, чтобы бороться за новые идеи. Дискуссии о языках программирования часто напоминают средневековые диспуты о числе ангелов, которые могут разместиться на кончике иглы, а не волнующие споры о фундаментально различающихся понятиях... Достойно удивления, почему столь многие из нас, изучив отвратительные структуры типов традиционных языков с помощью изящного инструментария, разработанного Д. Скоттом, пассивно сохраняют верность этим структурам...»

В 1952 г. в швейцарском Базеле была издана работа Х. Рутисхаузера «Автоматическая разработка плана с помощью программно-управляемых вычислительных машин» (Automatische Rechenplanfertigung bei program-gesteuerten Rechenmaschinen, Birkhauser Verlag), с которой и ведет отсчет история языков программирования. За полвека появились тысячи языков, различных по своей природе и охватывающих разные модели и парадигмы программирования, включая программирование процедурное, функциональное, символьное, логическое, продукционное, реляционное, параллельное, объектно-ориентированное, модульное (компонентное) и др. Но по сути можно выделить два четких полюса притяжения языков: императивный и декларативный. Именно они и задают основу деления языков. Императивные языки скорее отвечают на вопрос «как?», тогда как декларативные — на вопрос «что?». В 1960 г. возникла идея увеличения общности, заключающаяся в том, чтобы воспользоваться логикой для такого описания фактов, которое не зависело бы от того, как эти факты будут использоваться впоследствии. Джон Маккарти, автор языка Лисп, вспоминает: «Тогда мне казалось (как, впрочем, и сейчас), что люди по объективным причинам предпочитают общаться с помощью декларативных предложений, а не языков программирования, все равно, является ли субъект общения человеком, существом с Альфы Центавра или компьютерной программой... Основным преимуществом декларативной информации является ее общность».

Дж. Бэкус (IBM) и Дж. Маккарти (Массачусетский технологический институт), создавшие знаменитые языки Фортран (1954, Fortran) и Лисп (1958, Lisp) соответственно, задали точку отсчета эволюции языков программирования. Но если традиционные языки, пошедшие по стопам императивного Фортрана, известны достаточно хорошо и применяются весьма интенсивно, то языки другого направления с течением времени стали уходить в тень. Дж. Саммит, известный специалист по языкам программирования, как-то заметила, что все языки программирования грубо можно разбить на два класса. В одном находится Лисп, а в другом — все остальные. С этим трудно не согласиться, ведь Лисп и тогда, и сейчас заметно отличается от традиционных языков своими синтаксисом и семантикой, природой и реализацией.

Бестиповый язык Лисп задумывался Дж. Маккарти как средство для рекурсивных построений. В его основе лежит строгий математический аппарат лямбда-исчисления Чёрча, алгебра списочных структур (S-списки) и теория рекурсивных функций. Процедуры в нем могут служить в качестве данных, подставляемых на место других аргументов. В результате каждого действия возникает некое значение. Значения становятся аргументами следующих действий и т. д. Композиция и рекурсия — основные средства функционального программирования. Необычный синтаксис (скобочная префиксная запись) стал одной из причин сравнительно редкого использования Лиспа и его потомков в наши дни. В этом языке впервые нашли свое воплощение идеи интерпретатора, сборщика мусора, перегрузки операций и других хорошо сейчас известных механизмов. Числовая и символьная обработки стали одними из первых классов задач, для которых создавались языки программирования. Но если Фортран ориентируется на работу с числами, Си — на работу с символами и указателями, то Лисп — на работу с программами. Его структуры данных особенно полезны для представления и манипулирования исходными текстами программ. Это дает огромный потенциал для развития идей, но нередко затрудняет понимание сути для людей непосвященных.

Менее известен тот факт, что Лисп создал почву (идейную и операционную) для появления объектно-ориентированного программирования (ООП), ставшего едва ли не обязательной парадигмой для современных сценарных языков. Принято считать, что истоки ООП лежат в языках Симула (Кристен Нигаард, Оле-Йохан Даль, 1966) и Smalltalk (Алан Кей, 1971). Однако крестный отец языка Паскаль, известный английский ученый Тони Хоар, отмечая сильное влияние Лиспа на свои идеи концепции атрибутивных классов (record classes), уже в 1966 г. достаточно четко изложил суть ООП. Он писал [2]: «Фундаментальная особенность нашего понимания мира заключается в том, что мы систематизируем свой жизненный опыт, представляя его в виде отдельных понятий или объектов (столы и стулья, банковские займы и алгебраические выражения, многочлены и люди, транзисторы и треугольники и т. п.), и наше мышление, язык и действия основываются на обозначении, описании и манипуляциях с этими объектами, с каждым в отдельности или в связи с другими объектами... Всякий объект, представленный в запоминающем устройстве вычислительной машины в виде записи (record), будет обладать одним или более атрибутами (attributes), с которыми и приходится иметь дело при решении задачи... Объекты реального мира часто удобно классифицировать с помощью определенного числа классов (classes), причем любой класс обозначается некоторым собирательным именем, таким как «человек», «банковский заем», «выражение» и т. д.

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

Лисп, по всей видимости, праотец сценарных языков. Но что же такое сценарные языки? Это, пожалуй, ключевой вопрос, ответить на который отнюдь не просто. В отношении сценарных языков уже сформировались ложные стереотипы. В частности, это касается таких критериев оценки, как компиляция/интерпретация кода, система типов, быстродействие, требования к памяти, надежность. Склонность к поддержке интерпретации, а не компиляции кода считается едва ли не первым признаком сценарных языков. Интерпретаторы проще в исполнении, нежели компиляторы, и к тому же покрывают более широкий спектр языков. Однако те же традиционные языки Лисп, Снобол, Пролог, Форт и даже «пограничный» Бейсик чаще всего имеют реализации в виде интерпретаторов. Тогда как среди сценарных языков, хоть и нечасто, но можно встретить компиляторы. Например, на платформе Microsoft .NET реализованы компиляторы Perl и Python, порождающие промежуточный MSIL-код, исполняющая (с динамической компиляцией) в рамках среды Common Language Runtime. В настоящее время все чаще используют смешанные схемы, когда код частично компилируется, частично интерпретируется.

Принято считать, что сценарные языки либо имеют слабую типизацию, либо вообще бестиповые. Это справедливо для части языков, но далеко не для всех. Более того, можно привести примеры бестиповых языков, не являющихся сценарными, взять хотя бы тот же BCPL, прародитель языка Си. Представляет интерес проведенное в университете Карлсруэ эмпирическое сравнение языков Си, Си++, Java, Perl, Python, Rexx и Tcl по быстродействию и требованиям к памяти. Как отмечает Лутц Прехельт [3], «между средним временем выполнения программ на Java и сценариев нет существенной разницы. С вероятностью 80% сценарий будет выполняться в 1,29 раза дольше, а программа на Java по меньшей мере в 1,22 раза дольше, чем программа на Си или Си++». Что касается требований к оперативной памяти, то данные Прехельта тоже дают немалую пищу для размышлений: «Типичный сценарий занимает примерно вдвое больше памяти, чем программа на Си или Си++. Программы на Java занимают в три-четыре раза больше памяти, чем программы на Си и Си++».

Недостаточная надежность сценарных языков — тоже из разряда заблуждений. Так, яркий представитель сценарных языков 1990-х гг. — язык Python обладает средствами обработки исключений, построенными по образу и подобию аналогичного механизма в языке Modula-3. А ведь именно из него были заимствованы решения структурной обработки исключений (SEH), внедренные корпорацией Microsoft сначала в Си и Си++, а затем и в среду CLR (Common Language Runtime) платформы .NET.

Главная характерная черта для сценарных языков — динамическая природа, нередко позволяющая трактовать данные как программный код (и наоборот), а также простота освоения тех средств, которые буквально тут же дают видимый результат. Но это поверхностное наблюдение. Чтобы глубже разобраться в сути, необходимо выяснить, откуда пошли сценарные языки, для каких целей их создавали и что послужило катализаторами их развития.

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

  1. Простые операционные модели (языки, основанные на конечных автоматах, машине Тьюринга);

  2. Аппликативные модели (языки на основе лямбда-исчисления Чёрча, системы комбинаторов Карри, чистого Лиспа);

  3. Модели фон Неймана (традиционные языки программирования).

Cценарные языки ближе всего к категории B. Если составить несколько таблиц, куда будут сгруппированы наиболее значимые и известные языки, которые по тем или иным причинам можно назвать сценарными, то получится четыре класса таких языков: командно-сценарные; прикладные сценарные; языки разметки; универсальные сценарные.

^ Командно-сценарные языки зародились еще в 1960-х гг., когда возникла острая потребность в языках, обеспечивающих управление программами, иначе говоря, языках управления заданиями. Среди них наиболее известен JCL, разработанный для OS/360. Менее знаком Pilot, ставший, пожалуй, первой ласточкой среди сценарных языков. Он поддерживает всего два типа данных (строки и числа) и имеет крайне ограниченный набор команд (TYPE, ACCEPT, MATCH, JUMP, USE, COMPUTE, END, YES, NO). Что касается JCL, то, по словам Фредерика Брукса [5], «если бы нужно было привести пример наихудшего из когда-либо созданных языков, это был бы OS/360 Job Control Language... Крупнейшей ошибкой было создание одного языка заданий для системы, предназначенной для работы многих различных языков программирования, вместо того, чтобы сделать по одному для каждого из языков... Однако когда мы переходили к высокоуровневым языкам программирования, то мы сделали JCL на уровне ассемблера... Я не был проектировщиком JCL. Но его делали под моим руководством... и я несу за него ответственность».

К командно-сценарному классу относятся многочисленные интерпретаторы команд CLI (command language interpreter), так называемые языки пакетной обработки (batch language) и языки для построения системных командных оболочек (яркий пример — sh, csh и их вариации для UNIX). Как правило, такие языки ориентируются не на интерактивный, а на пакетный режим обработки, когда участие человека на этапе выполнения сведено к нулю и все работает в непрерывном потоке. Эти языки не только могли непосредственно взаимодействовать с соответствующей операционной системой, но и снабжались средствами грамматического разбора программ и трансформации данных. С их помощью можно было создавать различные программные фильтры, используемые, в частности, в конвейере (pipe) системы UNIX. В число известных языков такого типа входят Awk, впервые появившийся в AT&T UNIX Version 7, а теперь ставший частью стандарта POSIX Command Language and Utilities. К ключевым особенностям языка, нашедшим впоследствии широкое применение в среде универсальных сценарных языков, можно отнести механизм регулярных выражений, без которого разбор текста производится не очень эффективно.

Языки этого класса ориентировались также на обработку системных событий, генерирование текста и высокоуровневый доступ к базам данных. Здесь стоит отметить язык RPG (Report Program Generator). Он до сего времени успешно применяется для создания отчетов из корпоративных БД, работающих преимущественно на мэйнфреймах (RPG/400 для компьютеров IBM AS/400). Наиболее активно из языков этого класса в наши дни используется Rexx, созданный в исследовательских лабораториях IBM. По набору средств он мало чем отличается от универсальных сценарных языков, однако выполнен в виде классического блочно-структурированного процедурного языка и предназначен преимущественно для интеграции и расширения функциональности приложений.

^ Прикладные сценарные языки зарождались в 1980-е гг., в эпоху появления промышленных ПК, когда на первый план стали выходить задачи интерактивного общения с ОС, а также доступа к данным электронных таблиц и БД. Отличительная особенность сценарных языков данного класса — ориентация на клиентскую часть ПО. Использование объектной модели в языках данного класса уже становится нормой, а не исключением. Их еще нельзя назвать полноправными языками ООП, однако они в значительной мере стараются воспользоваться удобствами объектного подхода.

Среди прикладных сценарных языков резко выделяется Visual Basic, в том числе и такая его разновидность для офисного программирования, как VBA (Visual Basic for Applications). Visual Basic — это «пограничный» язык, который скорее относится к сценарным, чем к традиционным. Работа с пользовательским интерфейсом и встраивание программных компонентов (VBX, OCX, ActiveX) стали едва ли не визитной карточкой данного языка. В ходе эволюции VBA поглотил другие специфические языки, в частности Word Basic и Excel Macro Language, взяв на себя их задачи. Под его влиянием были созданы такие языки, как VBScript (особый диалект языка Visual Basic, ориентированный на создание OLE-компонентов и на работу в рамках браузеров) и LotusScript (своего рода аналог языков VBA и CorelScript, предназначенный для решения задач автоматизации офиса в рамках Lotus Notes).

Особо в этом ряду стоит JavaScript, ставший стандартом де-факто в Web-программировании при реализации клиентской части. Его прототипом был язык LiveScript, являвшийся частью серверного продукта LiveWire компании Netscape и первоначально встроенный в Netscape Navigator 2.0. После появления языка Java корпорации Sun Microsystems он начал играть роль самодостаточной надстройки над этим языком, и его название сменилось на JavaScript. Диалекты этого языка — JScript корпорации Microsoft и ECMAScript (стандарт ECMA-262).

Из новичков в данном классе языков упомянем экспериментальный язык Pnuts, основная идея которого — дать в рамках сценариев наиболее полный доступ к Java API. Его можно использовать для самых разных задач, но прежде всего для оперирования компонентным ПО (подробнее см.: http://javacenter.sun.co.jp/pnuts).

^ Языки разметки, или тегированные языки, стоят несколько поодаль от магистральной линии развития сценарных языков. Им ближе всего по своей природе системы макрообработки (всевозможные макропроцессоры), столь популярные в 1960—1970-е гг. Их главная отличительная черта - встраивание специального кода (в виде обособленных «команд» - тегов) непосредственно в обычные тексты. Им родственны такие языки, как Postscript и RTF (чаще воспринимаемый просто как особый формат представления документов). Теги стали использоваться для самых разных целей: для отделения структуры информации от ее содержания, для вкрапления команд форматирования и даже для задания динамического поведения встроенных в документ интерактивных объектов.

Идея отделения структуры информации от содержания возникла давно. Но, пожалуй, первым осознанным решением стал запуск проекта GenCode. В сентябре 1967 г. Уильям Танниклифф, председатель Комитета по композиционным решениям ассоциации GCA (Graphic Communications Association), предложил провести четкую границу между содержанием и форматом представления информации. Руководитель GCA Норман Шарпф принял решение приступить к реализации соответствующего проекта GenCode. Под влиянием GenCode в 1969 г. американский ученый Чарльз Гольдфарб возглавил работу исследовательской группы в IBM, целью которой была проработка принципов интегрированных информационных систем в области законодательства. Плодом усилий этого коллектива, куда входили также Эдвард Мошер и Реймонд Лори, стал GML — обобщенный язык разметки (Generic Markup Language, Goldfarb-Mosher-Lorie). Многие решения этой группы нашли применение в различных издательских системах IBM. На основе GML и идей системы Scribe, разработанной Брайаном Рейдом, Международная организация по стандартизации (ISO) разработала метаязык SGML (стандарт ISO-8879:1986).

Наиболее значительными достижениями в области языков разметки стали TeX, HTML и XML. Язык TeX (1979) Дональда Кнута на три года опередил Postscript, созданный Джоном Уорноком и др. в компании Adobe и предназначенный для точного описания внешней формы документов с композицией произвольной сложности. В отличие от низкоуровневого Postscript, язык TeX ориентировался на работу пользователей, не имеющих навыков программирования. Наиболее широко этот язык стал применяться в научной среде, где предъявляются самые высокие требования к качеству построения формул сложной структуры.

Язык HTML, с появлением которого понятие «гипертекст» стало простым и обыденным, создавался на базе SGML путем максимального упрощения его структуры и свойств. Вряд ли имеет смысл описывать его подробно: это основной язык представления информации в Web-среде, включая Интернет.

Метаязык XML, созданный во многом с подачи Джона Босака (Sun Microsystems), руководителя рабочей группы SGML ERB, также основывался на SGML, но для него характерно куда более бережное отношение к идеям своего предка, да и выполняет он совсем иную роль, нежели HTML. Это своего рода язык транспортирования и промежуточного хранения данных при обмене ими между разнородными и распределенными системами. На его основе можно проводить сколь угодно сложные преобразования документов и текстовой информации, а главное, в унифицированном виде хранить данные реляционно-иерархической структуры, в том числе по настройкам и программированию компонентов. Это, правда, не мешает использовать его и не совсем по назначению — для задания динамики поведения всевозможных объектов. В 2001 г. появилась ревизия HTML, которая получила название XHTML, где были учтены требования XML.

CFML (Cold Fusion) и DHTML — языки разметки, напрямую предназначенные для динамического создания Web-страниц и доступа к БД. Оба они являются расширениями HTML, но CFML — чисто коммерческий язык компании Allaire, не имеющий других реализаций, а DHTML, возникший из Dynamic HTML, — результат многочисленных компромиссов и конкуренции Netscape и Microsoft, которые были подытожены консорциумом W3C. Близкие им ASP (Active Server Pages, Microsoft) и JSP (Java Server Pages, Sun) — уже не языки, а, скорее, технологические «плавильные печи». Тот же ASP по сути не что иное, как сценарий на VBScript, который исполняется на сервере.

^ Универсальные сценарные языки чаще всего и ассоциируют с термином «сценарный язык», причем применительно к Web-среде. При этом нередко упускается из виду тот факт, что создавались самые популярные из них совсем не для Web-программирования: - языки Perl, Tcl и Python появились еще тогда, когда не было даже первой версии HTML. Все они вышли из операционной системы UNIX.

Язык Perl (Practical Extraction and Report Language), что и отражено в расшифровке его названия, выполнял функции, сходные с тем, на что ориентирован RPG: управление данными и генерирование отчетов. Такой известности и популярности Perl достиг во многом благодаря тому, что с появлением спецификации CGI (Common Gateway Interface) он стал главным поставщиком серверных скриптов для формирования Web-страниц по запросу. К тому же в нем прямо под рукой оказались такие удобные средства, как ассоциативные массивы (хеш-структуры) и регулярные выражения, выполняемые для традиционных языков в виде вспомогательных библиотек. Именно регулярные выражения автор языка Ларри Уолл отметил как важнейшее достоинство Perl.

Язык Python задумывался для обеспечения удобного доступа к системным средствам экспериментальной операционной системы Amoeba. Его автор Гвидо ван Россум под влиянием синтаксиса языка ABC и механизмов языков Modula-2+ и Modula-3, разработанных в исследовательском центре Systems Research Center корпорации Digital, к 1991 г. создал объектно-ориентированный язык сценарного характера. Его особенностями стали механизм лямбда-вычислений, заимствованный из языков функционального программирования, и расширенная обработка строк. Интерпретатор Python позднее получил версию компилятора в Java-код (JPython), а затем и компилятор в MSIL-код для платформы Microsoft .NET.

Цель создания языка Tcl (Tool Command Language) была совсем иной — интенсивная обработка строк и тесная интеграция с пакетом Tk, обеспечивающим удобное построение пользовательского интерфейса для любых интерактивных приложений. Он позиционируется как язык расширения приложений (application extension language). Джон Устерхаут, автор языка Tcl и инструментария Tcl/Tk, создавал эти средства для решения конкретной задачи (проектирование СБИС), находясь под влиянием работ исследовательской лаборатории Western Research Lab корпорации Digital. В отличие от Perl и Python язык Tcl в значительной мере опирается на подключение расширений, написанных на языках Си и Си++. Язык Tcl за счет подключаемого модуля SafeTcl нашел свое применение и в Web-программировании для поддержки в рамках браузера специальных аплетов, названных тиклетами (Tclets).

Остальные универсальные сценарные языки - PHP, Ruby, Lua, Mawl, Pike, Curl принадлежат ко второй волне, возникшей при появлении HTML и Web-серверов. Самым известным из них является PHP (Personal Home Pages). При его создании Расмус Лердорф опирался на идеи JavaScript, Си и Bourne shell — известной командной оболочки ОС UNIX. Подавляющее большинство универсальных сценарных языков используются для реализации серверной части Web-систем, причем поддержка классов и объектов в том или ином виде присутствует практически во всех этих языках.

Дихотомия Устерхаута — принцип классификации языков, предложенный Джоном Устерхаутом [8], автором языка Tcl. В соответствии с его подходом высокоуровневые языки делятся на языки системного программирования и на сценарные. Последние, называемые также языками склейки (glue languages), либо слабо типизированные, либо вообще бестиповые. Они не имеют средств для представления сложных структур данных и обычно интерпретируются. Сценарии, как правило, взаимодействуют либо с другой программой (зачастую как склейка), либо с набором функций, предоставляемых интерпретатором. Склейка (glue) на компьютерном жаргоне обозначает любую интерфейсную логику или протокол для взаимодействия двух компонентных блоков.

Ларри Уолл, автор языка Perl, исповедует иной подход - сценарные языки должны формировать «свободную от этики артистическую обстановку». «Сценарий, — подчеркивает он, — это то, что вы передаете актеру, а программа — это то, что передается зрительному залу». Продолжая мысль Уолла, можно провести простую аналогию между созданием Web-программ, театральным спектаклем и съемкой кинофильма. Сценарий —> спектакль. Сценарий в театре «интерпретируется» актерами. В итоге зрительный зал видит спектакль. Сценарий —> кинофильм. Сценарий в кино «компилируется» в съемочный материал, который монтажер компонует в фильм. В итоге зрительская аудитория видит кинофильм. Сценарий —> программа. Сценарий в Web-программировании автоматически (путем интерпретации/компиляции) превращается в программу. В итоге пользователь видит результат работы программы.

Какие же требования предъявляются к сценарному языку? Он должен служить средством быстрого макетирования. Грань между сценарием (рассматриваемым как полуфабрикат программы) и законченным продуктом должна быть столь незаметной, что только сам автор смог бы понять, когда макет превратился в конечный продукт (в зависимости от соответствия начальным требованиям). Сценарный язык должен ориентироваться на скорость и простоту освоения базовых возможностей, быстро дающих видимый результат. Но из этого не следует, что язык должен быть примитивным. Путь к решению обычных типовых задач даже для начинающего должен быть коротким, простым и понятным. В этом отношении он должен напоминать родной язык: освоить несколько слов и фраз бывает достаточно, чтобы тебя понимали, однако научиться четко, грамотно и красиво выражать мысли на родном языке не всем и не всегда удается даже к глубокой старости. Сценарный язык должен в меньшей степени опираться на создание конечного продукта с нуля и в большей степени — на использование тех мощностей, которыми обладает операционная система, графическая среда, прикладная сервисная машина и прочие подобные компоненты, вокруг которых строится «обвязка» в виде сценариев. Он в первую очередь обеспечивает удобную работу на уровне текстовых строк, стараясь по возможности не прибегать к интенсивному использованию сложных типов данных.

Итак, в дополнение к привычным понятиям алгоритма и программы добавилось новое — сценарий. В этой связи логично делить языки на алгоритмические, программные и сценарные. Как программные и сценарные языки могут сосуществовать друг с другом в разработке ПО? По оценке CI Labs Meta Group (1994), от 70 до 90% функциональности нового приложения обеспечивается за счет готовых модулей, тогда как для настройки и привязки приложения требуется всего 10–30% дополнительного программирования. Напрашивается вполне очевидный вывод, что наиболее критичные модули и сервисные машины должны выполняться на программных языках, тогда как использование их возможностей и встраивание в реальную среду разумнее производить с помощью сценарных. Аргументом в защиту такой позиции может служить вывод, сделанный Л. Прехельтом [3] в ходе проведенного им исследования: «Проектирование и составление программ на языках Perl, Python, Rexx и Tcl занимает не более половины времени, необходимого для программирования на Си, Си++ и Java, а длина исходного текста вдвое меньше». Это лишний раз подтверждает правило Барри Боэма, согласно которому количество строк исходного теста, создаваемого программистом в единицу времени, не зависит от языка программирования.

Любая программа строится на трех образующих – данных, логике и внешнем интерфейсе. Если взять за основу популярную концепцию MVC (Model/View/Controller), то данные, логика и интерфейс отобразятся соответственно на модель, контроллер и вид. Модель обычно выступает в одном экземпляре, видов может быть много, а контроллер играет роль связующего слоя между первым и вторым. По аналогии с концепцией MVC все модули программной системы при таком подходе могут быть разбиты на три вида:

  • машины (системный слой, модель);

  • преобразователи (связующий слой, контроллер);

  • сценарии (прикладной слой, вид).

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

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

  • синтезирующее (формирование программных фрагментов/компонентов);

  • сборочное (сборка программы из готовых фрагментов/компонентов);

  • конкретизирующее (адаптация многопараметрической программы к особым условиям ее применения).

Традиционные языки доминируют в синтезирующем программировании, тогда как сценарные — в конкретизирующем. Их соприкосновение происходит в сборочном программировании, которое становится пограничной зоной двух разных языковых миров. Многочисленные попытки создать единый всеобъемлющий язык программирования закончились неудачно. Но это касалось именно языка, а не языковой среды и не лингвистической системы. А.П. Ершов был автором не менее интересной идеи — лексикона программирования, который он понимал как «лингвистическую систему с фразовой структурой, содержащую в себе формальную нотацию для выражения всех общезначимых конструкций, употребляемых при формулировании условий задачи, при синтезе и преобразовании программ». Сценарные языки на их нынешнем этапе развития, пожалуй, ближе всего к этой идее.

Что касается формы сценарных языков (их синтаксиса), то немалое влияние на нее оказал и продолжает оказывать язык Си. Заимствование содержательных идей сценарными языками ведется по широкому фронту:

  • языки функционального программирования (Лисп, Scheme);

  • языки обработки строк (Snobol, Icon);

  • объектно-ориентированные языки (Smalltalk, Java, Eiffel, C#);

  • языки управления заданиями, командные языки (csh, Rexx);

  • языки управления средой (Tcl, VBA);

  • языки разметки/макрообработки (SGML, TeX, XML);

  • языки моделирования дискретных систем (GPSS, SIMSCRIPT, SLAM II).

Развитие сценарных языков идет по трем основным направлениям:

  1. использование ООП (любой новый сценарный язык поддерживает объектную модель);

  2. использование идей старых языков (Лисп, Снобол; языки функционального программирования и языки обработки строк по своей динамической природе наиболее близки сценарным);

  3. язык Java (ряд сценарных языков тесно интегрируется с Java).

Для примера перечислим примеры скриптовых языков последнего направления:

^ Jickle - Java Control Language - язык и среда выполнения, позволяющие приложениям предоставлять неограниченный контроль над собой для пользователей. Jickle это то же самое, что и макро язык для приложений.

Yoix - скриптовой интерпретируемый язык, использующий функции и синтаксис хорошо знакомый пользователям C и Java. Он поддерживает указатели, адресацию, декларации, глобальные и локальные переменные. Он поддерживает так же регулярные выражения и полезные функции типа fprintf и fscanf. Кроме этого пользователи имеют возможность добавлять сови собственные функции написанные на Java. В добавок проект поставляется с открытым исходным текстом.

Simkin это высокоуровневый, легковесный, встраеваемый скриптовый язык работающий с Java[tm]/XML или C++.

^ Bean Scripting Framework (BSF) - архитектура для внедрения скриптов в аплеты и приложения Java.

Dawn - динамический скриптовый язык основанный на RPN, поддерживающий динамическое именование для создания переменных и имен методов из строк. Скрипты могут динамически переопределять функции по умолчанию языка, а сам язык основан на наборе пакетов. Пакеты включают по одному для ввода/вывода, ошибок, циклов, тестирования, утилит, математики, стека и строк (io, err, loops, test, util, math, stack, string).

DynamicJava - интерпретатор исходного кода Java, выполняющий программы написанные на Java с дополнительными скриптовыми возможностями. DynamicJava расширяет грамматику Java для поддержки множества скриптовых возможностей: операторы и выражения могут быть описаны вне класса, на более высоком уровне. Объявления переменных - опциональны. Когда левая часть равенства - неизвестный идентификатор, то определяется переменная. Ее тип будет равен типу правой части равенства. Динамическое приведение к типам так же опционлаьно. Выражения пакетов могут быть использованы везде на верхнем уровне текущего пакета. Синтаксис этого выражения был расширен.

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

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

Rhino реализация JavaScript написанная полностью на Java. Доступен так же и исходный код Rhino. Проект Rhino был начат в Netscape осенью 1997. До недавнего времени Netscape планировала произвести версию Navigator написанную полностью на Java и поэтому им нужна реализация JavaScript на Java. Когда же была приостановлена работа Netscape над "Javagator", как он назывался, каким-то образом Rhino сумел избежать топора, и остался жив. С этого момента, некоторые крупные компании (включая Sun) лицензировали Rhino для использования его в своих продуктах и платили за это компании Netscape, поэтому работы над Rhino продолжались. Теперь же Rhino будет частью серверных продуктов, в часности Netscape.

BeanShell - маленький, бесплатный, встраиваемый интерпретатор исходного кода Java с возможностями объектного скриптинга. BeanShell выполняет стандартные выражения Java в дополнение к очевидным криптовым командам и синтаксису.

^ PolyJsp - расширенная реализация JSP
разработанная для поддержки нескольких скриптовых языков и нескольких версий JSP. Полностью основанный на XML и XSL, PolyJsp в настоящее время полностью поддерживает Java и Javascript в качестве скриптовых языков. Поддержка осуществлена для последней спецификации JSP (0.92).

^ Resin вплетает компоненты Java в HTML с JavaScript и с интерфейсом Java Server Pages (JSP). Resin соответствует интерфейсу сервлетов и может быть использован с основными веб серверами, включая Apache. Из числа других возможностей, он реализует массу ECMA-262, стандарта EcmaScript, реализует возможности JavaScript 1.3, расширяет регулярные выражения Perl 5 и компилирует скрипты напрямую в байткоды JVM.

Iava - интерпретатор, который воспринимает подмножество языка программирования Java, включая объявления методов, все операторы блоков, все операторы и все выражения языка. Интерпретатор не поддерживает объявления классов или интерфейсов. Iava написан на Java и может быть внедрен в любое приложение Java или аплет. Он предлагает высоко эффективный механизм интеграции (разделение private полей между классами и скриптами), определение "методов" в скрипте, которые могут быть в последствии использованы в приложении или аплете, разделение контекста объекта и т.д.

WebL (произносится как "веббле") это скриптовой язык для автоматизации задач во всемирной сети. Это необходимый, интерпретируемый язык, который имеет встроенную поддержку для основных протоколов типа HTTP и FTP, а так же популярных типов данных типа HTML и XML.

^ FESI, бесплатный интерпретатор EcmaScript - полная реализация языка EcmaScript, определенного в стандарте ECMA 262 доступного с http://www.ecma.ch. EcmaScript это большой эквивалент языка JavaScript версии 1.1 или часть ядра JScript, но без специфических расширений для браузеров.

iScript платформенно независимый скриптовой язык написанный полностью на Java для создания расширяемого серверного объектно ориентированного решения.

JPython - реализация объектно ориентированного скриптового языка Python, интегрированного с платформой Java. Его основные преимущества - высокоуровневые встроенные типы данных, динамическое типизирвоание, пакеты, классы и интерактивная компиляция в байткоды Java.

^ Pnuts - скриптовый язык для среды Java. С его помощью можно осуществлять взаимодействие со средой Java, простое скриптование GUI и настройку программ Java.

Yassl - еще одни расширяемый скриптовый язык работающий с классами Java. Yassl это не объектный язык с синтаксисом похожим на C. Некоторые из его возможностей: функции доступны как обычные типы и могут быть переданы и обработаны в любом полезном приспособлении. Реализованы лексические области, украденные из Scheme. Переменные типизированы (но интерпретатор не производит статической проверки типов).

По какому же пути пойдет развитие сценарных языков, какие идеи будут служить катализаторами процесса дальнейшего их совершенствования? В определенном смысле ответы на эти вопросы содержатся в словах знаменитого Дж. Бэкуса (1977): «Имеются многочисленные свидетельства того, что функциональный стиль программирования может по своей мощи превзойти стиль фон Неймана. Поэтому представляет большое значение разработка нового класса исторически чувствительных моделей компьютерных систем, которые воплощают такой стиль и не страдают неэффективностью, по-видимому присущей системам, основанным на лямбда-исчислении. Только когда такие системы и их функциональные языки докажут свое превосходство над традиционными языками, мы получим экономическую основу для разработки нового вида компьютера, который сможет наилучшим образом реализовать их».
^

3. Порядок выполнения работ


Для выполнения лабораторных работ предлагается единый порядок, предусматривающий следующие шаги.

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

3.2. Наметить структуру решения и план достижения результата.

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

3.4. Пункты 3.1 - 3.3. желательно выполнить предварительно и самостоятельно, до проведения контрольной работы.

3.5. Отредактировать текст отчета в части решения и ограничений.

3.6. Выполнить проверку результата в доступных операционны средах.

3.7. Провести анализ и исправление обнаруженных ограничений в работе программы и повторить пункты 3.6 и 3.7. При устранении всех ограничений перейти к выполнению пункта 3.8.

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

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

4. Защита отчета


Отчет оформляется по каждой контрольной работе и состоит из следующих разделов.

4.1. Заголовок контрольной работы.

4.2. Автор работы (группа авторов).

4.3. Задание (и индивидуальное задание).

4.4. Основные результаты выполнения задания.

4.5. Ограничения полученного результата (что не получилось).

4.6. Действия по устранению ограничений (преодолению проблем).

4.7. Теоретические вопросы

4.8. Литература и другие источники.

Каждая контрольная работа завершаются оформлением отчета и его защитой у преподавателя. Для защиты необходимо подготовить предельно краткий, но содержательный отчет (рекомендуется в виде текстового файла в форматах win/dos, а если есть иллюстрации, то в форматах - html, xml, doc) со следующими разделами


Контрольная работа № *

1. Автор проекта (фио);

2. Задание (в том числе индивидуальное);

3. Основные результаты выполнения задания (исходные тексты, схемы модели)

4. Ограничения полученных результатов (или что не получилось из задания)

5. Действия по преодолению ограничений (или того, что не получилось)

6. Теоретические вопросы по цели контрольной работы (тезисы ответов по каждому вопросу)

6.1. Как применить в данной работе системные программные средства,

разработанные Вами при выполнении предыдущих лабораторных работ?

6.2. Перечислите все средства ОС и СПО, задействованные Вами в работе?

6.3. Что следует предпринять для повышения эффективности применения

программных средств, использованных Вами в данной работе?

6.4. Какие альтернативные системные программные средства можно применить

для выполнения данного задания?

6.5. Опишите (в общих чертах), как выглядит решение данного задания в виде:

команды ОС или системной утилиты, командного файла, скрипта или пакета

скриптов, библиотеки функций, оболочки или других системных средств?

6.6. Предложите свой вопрос по теме контрольной работы и ответьте на него.

7. Литература (и другие использованные источники, интернет, электронные книги и пр.).

^

Контрольная работа N 1
Создание и проверка работы виртуальных устройств

1. Цель работы


Освоение основных методов виртуализации ресурсов в ОС и компьютерных сетях.

2. Темы для теоретического изучения


  • Определение, назначение и функции операционной системы.

  • Понятие расширенной виртуальной машины для ОС

  • Архитектура операционных систем и конфигурации технических средств

  • Понятие ресурса и принципы управления ресурсами в ОС

  • Аппаратные драйверы, высокоуровневые драйверы и файловые системы.

  • Стек протоколов сетевых операционных систем и компьютерные сети.
^

3. Общее задание


Создание и проверка функционирования виртуальных устройств:

a) локальные логические диски;

    1. сетевые логические диски;

    2. другое локальное или сетевое виртуальное устройство.
^

4. Индивидуальные задания


Создание и проверка функционирования виртуальных устройств типа:

  1. диск в оперативной памяти (ramdrive for DOS, Windows 98, Windows NT);

  2. сетевой принтер (установка в панели управления);

  3. сетевой компакт-диск (установка общего сетевого ресурса в Проводнике);

  4. виртуальный терминал (клиент telnet, серверы - library.ox.ac.uk, freenet.toronto.on.ca или др.);

  5. другие локальные и сетевые виртуальные устройства.
^

5. Примеры выполнения задания

5.1. Описание вариантов решения


5.1.1. Использование отдельных команд, утилит или оболочек ОС

  • подключения локального логического диска

subst x: c:\windows

  • список логических дисков, установленных командой subs

subst

  • ликвидация логического диска, установленных командой subs

subst x: /D

  • подключения сетевого логического диска

net use y: \\as\met$

  • отключения сетевого логического диска

net use y: /DELETE

5.1.2. Командный файл для подключения локального логического диска

@echo off

if exist x: subst x: /D

subst x: %1

5.1.3. Программа выполнения системного вызова на языке C

#include “all.h”

char s[80];

void main(int c, char **v)

{switch(c) {case 1: printf(“Usage: vc.exe path”); break;

default: sprintf(s,“subst %s”,v[1]); system(s); break;

}

}

5.1.4. Скрипты подключения сетевого принтера (Windows NT/2000 и Windows 9*)

var WshNetwork = WScript.CreateObject("WScript.Network");

var PrinterPath = "\\\\printserv\\DefaultPrinter";

var PrinterDriver = "Lexmark Optra S 1650";

WshNetwork.AddWindowsPrinterConnection(PrinterPath, PrinterDriver);


var WshNetwork = WScript.CreateObject("WScript.Network");

var PrinterPath = "\\\\printserv\\DefaultPrinter";

WshNetwork.AddWindowsPrinterConnection(PrinterPath);

^

5.2. Схемы решений индивидуальных заданий:


  1. электронный диск в оперативной памяти создается для MS DOS и Windows 9*

путем занесения строки в файл конфигурации config.sys (ограничение в 32Mb):

devicehigh=c:\windows\ramdrive.sys 32767 512 1024 /e


Для Windows NT 5* (2000, XP) и Windows 98 в Internet имеются дистрибутивы типа ramdrvnt.exe, ramdrv15.zip и др.;

  1. сетевой принтер создается в ОС Windows в диалоговой панели управления (установка принтеров) путем установки флага “сетевой” и добавлением соответствующего драйвера принтера в состав ОС;

  2. сетевой компакт-диск создается установкой флага общего ресурса с паролем в Проводнике компьютера, где установлено физическое устройство CD-ROM ;

  3. виртуальный терминал удаленных компьютеров создается запуском клиентской утилиты telnet и указанием для нее одного из серверов Telnet, например - library.ox.ac.uk – библиотека Oxford University (пароль не требуется),

lib1.leeds.ac.uk - библиотека University of Leeds (United Kingdom),

library.city.ac.uk - библиотека City University (login: library, password: library),

brain.biblio.brocku.ca – библиотека Brock University (пароль не требуется),

copac.ac.uk – SunOS 5.8 (login: copac password: copac) Consortium of University Research Libraries (United Kingdom),

main.morris.org - Morris Automated Information Network (username: PUBLIC),

freenet.toronto.on.ca - Toronto Free-Net или др.;

liberty.uc.wlu.edu - (login: lawlib) BBS университета штата Северная Каролина,

pac.carl.org - ERIC является одной из баз данных и OPAC, доступных через систему CARL (Colorado Alliance of Research Libraries).

Список серверов Telnet можно найти в http://www.lights.com/hytelnet/

  1. Примеры локальных виртуальных устройств – виртуальные экраны AltDesk (http://www.astonshell.com/rus/altdesk/index.html), рабочие столы Windows (например, Abracadabra), аплеты виртуальных экранов (http://www.srcc.msu.su/viz/applet_book/screen/screen1.htm), виртуальные экраны оболочек Unix и др.



^

6. Вопросы к контрольной работе


  1. Приведите примеры других виртуальных устройств, особенности их установки, применения и удаления?

2. Как применить в данной работе системные программные средства, разработанные Вами при выполнении предыдущих лабораторных работ?

3. Перечислите все средства ОС и СПО, задействованные Вами в работе?

4. Что следует предпринять для повышения эффективности применения программных средств, использованных Вами в данной работе?

5. Какие альтернативные системные программные средства можно применить для выполнения данного задания?

6. Опишите (в общих чертах), как выглядит решение данного задания в виде команды ОС или системной утилиты, командного файла, скрипта или пакета скриптов, библиотеки функций, оболочки или других системных средств?

7. Предложите свой вопрос по теме контрольной работы и ответьте на него.
^

Контрольная работа N 2
Установка и настройка операционной системы и ее компонентов, проверка средств системного программирования и администрирования

1. Цель работы


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

2. Темы для теоретического изучения


  • Общая классификация средств системного программного обеспечения. Понятия операционной системы, операционной среды и операционной оболочки.

  • Дистрибутивы операционных систем и программных средств; Установка, настройка и загрузка операционной системы

  • Системы программирования, компиляция и интерпретация, библиотеки функций;

  • Сервер скриптов Windows, языки скриптов, пакеты скриптов и скриптовые COM-приложения.

  • Объектные модели ОС, скриптовых интерпретаторов и основных приложений
^

3. Общее задание


Осуществить подготовку накопителя и начальную установку (если имеется такая возможность) и настройку (в пределах предоставленных прав пользователя) одной из версий операционных систем Windows, Linux, Unix, учебных ОС типа NachOS, также установку (обновление), настройку и проверку функционирования средств системного программирования и администрирования ОС.
^

4. Индивидуальные задания


  1. установка и проверка системы программирования Turbo C++ v1.0;

  2. установка и настройка системы программирования Macroassembler v5.0;

  3. установка и настройка сервера скриптов Windows Script Host v5+;

    1. проверка функционирования Microsoft® XML Core Services (MSXML v4+).

    2. настройка компонентов операционной системы Windows NT+.

    3. настройка конфигурации операционной системы Linux (Unix).
^

5. Примеры выполнения задания

5.1. Описание решения




5.2. Схемы решений для индивидуальных заданий:


5.2.1. Тестовая программа на языке C

#include “all.h”

void main() {printf(“Hello, World!”);}

5.2.2. Тестовая программа на языке Assembler

.section “.text”

.global main

main: save %sp,-96,%sp

set string, %0

call printf

nop

ret

restore

.section “.rodata1”

.align 4

string:

.ascii “Hello, world!\n\000”


5.2.3. Тестовая программа на языке Javascript (hello.js)

Наберите в любом текстовом редакторе (например в Notepad) строку скрипта

WScript.Echo("Hello World!");

Сохраните в текстовый файл Hello.js и наведите на него в Проводнике или Far; запустите файл на выполнение двойным нажатием (double-click).

Если в реестре по умолчанию обработчик расширения js стоит WSH, ключающий Jscript-машину, то выполнится скрипт и отобразится окно с собщением "Hello World!"

Если в ОС обработчиком установлена другая программа, то скрипт не выполнется корректно. В этом случае запуск скриптов следует выполнять явно вызывая сервер WSH

wscript.exe hello.js


5.2.3. Пример программы на языке Javascript (excel.js)

// Пример вывода свойств сервера сценариев Windows в Microsoft Excel.

// Запуск программы в командной строке для консольного окна

//cscript.exe excel.js

// Запуск программы в командной строке для windows-окна

//wscript.exe excel.js


var vbOKCancel = 1; var vbInformation = 64; var vbCancel = 2;

var L_Welcome_MsgBox_Message_Text="Свойства WSH";

var L_Welcome_MsgBox_Title_Text = "Пример сервера сценариев Windows";

Welcome();

//////////////////////////////////////////////////////////////////////////////////

//

// Пример Excel

//

var objXL = WScript.CreateObject("Excel.Application");

objXL.Visible = true; objXL.WorkBooks.Add;

objXL.Columns(1).ColumnWidth = 20;

objXL.Columns(2).ColumnWidth = 30;

objXL.Columns(3).ColumnWidth = 40;

objXL.Cells(1, 1).Value = "Свойство";

objXL.Cells(1, 2).Value = "Значение";

objXL.Cells(1, 3).Value = "Описание";

objXL.Range("A1:C1").Select;

objXL.Selection.Font.Bold = true;

objXL.Selection.Interior.ColorIndex = 1;

objXL.Selection.Interior.Pattern = 1; //xlSolid

objXL.Selection.Font.ColorIndex = 2;

objXL.Columns("B:B").Select;

objXL.Selection.HorizontalAlignment = -4131; // xlLeft

var intIndex = 2;


function Show(strName, strValue, strDesc) {

objXL.Cells(intIndex, 1).Value = strName;

objXL.Cells(intIndex, 2).Value = strValue;

objXL.Cells(intIndex, 3).Value = strDesc;

intIndex++; objXL.Cells(intIndex, 1).Select;

}


// Вывод свойств WScript

Show("Name", WScript.Name, "Имя приложения");

Show("Version", WScript.Version, "Версия приложения");

Show("FullName", WScript.FullName, "Контекст приложения: полное имя");

Show("Path", WScript.Path, "Контекст приложения: только путь");

Show("Interactive", WScript.Interactive, "Состояние режима взаимодействия");


//

// Вывод аргументов командной строки.

//

var colArgs = WScript.Arguments

Show("Arguments.Count", colArgs.length, "Число аргументов командной строки");

for (i = 0; i < colArgs.length; i++) {

objXL.Cells(intIndex, 1).Value = "Arguments(" + i + ")";

objXL.Cells(intIndex, 2).Value = colArgs(i);

intIndex++;

objXL.Cells(intIndex, 1).Select;

}


//////////////////////////////////////////////////////////////////////////////////

//

// Приветствие

//

function Welcome() {

var WSHShell = WScript.CreateObject("WScript.Shell"); var intDoIt;

intDoIt= WSHShell.Popup(L_Welcome_MsgBox_Message_Text,0,

L_Welcome_MsgBox_Title_Text, vbOKCancel + vbInformation );

if (intDoIt == vbCancel) {WScript.Quit();}

}


^ 5.1.4. Тестовая программа на языке XML

a.htm ////////////////////// -->








XSL-файл, содержащий инструкцию по форматированию -->





Apache


37






Perl Cookbook


49






JDBC


27






Programming SERVLETS


55






XML


35







































Name Price




оставить комментарий
С. К. Скрипкин
Дата06.05.2012
Размер1,13 Mb.
ТипДокументы, Образовательные материалы
Добавить документ в свой блог или на сайт

отлично
  1
Ваша оценка:
Разместите кнопку на своём сайте или блоге:
rudocs.exdat.com

Загрузка...
База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Анализ
Справочники
Сценарии
Рефераты
Курсовые работы
Авторефераты
Программы
Методички
Документы
Понятия

опубликовать
Загрузка...
Документы

Рейтинг@Mail.ru
наверх