Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Документ'
В условиях стремительного прогресса рыночных отношений и конкурентной экономики своевременное и правильное решение стратегических и тактических задач...полностью>>
'Закон'
У 2010-2011 навчальному році педагогічний колектив школи працював відповідно до Законів України «Про освіту», «Про загальну середню освіту», Указів П...полностью>>
'Учебник'
Я учитель сельской школы с 23 летним стажем. В настоящее время в нашей школе нет классных параллелей, в отдельных классах учится менее 10 человек. В ...полностью>>
'Методичні рекомендації'
1.2. Класний керівник — це педагогічний працівник, який здійснює педагогічну діяльність з колективом учнів класу, навчальної групи професійно-технічн...полностью>>

Ые системы", "Операционные системы, среды и оболочки" и "Операционные системы и системное программирование" для студентов специальнос­тей факультета Кибернетики

Главная > Документ
Сохрани ссылку в одной из сетей:

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

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

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

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

УТВЕРЖДАЮ

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

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

"___"____________ 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

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

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

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

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

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

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

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

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

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

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

Литература 84

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

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

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

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. К ключевым особенностям языка, нашедшим впоследствии широкое применение в среде универсальных сценарных языков, можно отнести механизм регулярных выражений, без которого разбор текста производится не очень эффективно.



Скачать документ

Похожие документы:

  1. Бодяжина Вера Ильинична учебник

    Учебник
    1. Виднейшие отечественные гинекологи (М.Л. Выдрин, Л.С. Персианинов, В.И. Бодяжина, Е.В. Клумов, И.М. Старовойтов, В.Т. Каминская, Г.И. Герасимович, К.

Другие похожие документы..