МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РЕСПУБЛИКИ КАЗАХСТАН
ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
имени ШАКАРИМА г.Семей
Документ СМК 3 уровня
УМКД
Учебно-методические материалы по дисциплине
«Операционные системы»
УМКД
Редакция №__от_______
УМКД 042–14.01.20.ХХ /032014
УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС
ДИСЦИПЛИНЫ
«Операционные системы»
для специальности 5В070400 – Вычислительная техника и программное обеспечение
УЧЕБНО-МЕТОДИЧЕСКИЕ МАТЕРИАЛЫ
Семей 2014
Содержание
1 Глоссарий .........................................................................................................................................3
2 Лекции ..............................................................................................................................................3
3 Практические занятия ...................................................................................................................59
4 Самостоятельная работа студента ...............................................................................................93
2
1 ГЛОССАРИЙ
В настоящем УММ использованы следующие термины с соответствующими определениями:
1.1 Операционная система, ОС - это набор программ, которые обеспечивают возможность использования аппаратуры компьютера.
1.2 Аппаратные средства - это устройства компьютера: процессоры, устройства памяти, устройства ввода-вывода, а также средства приема-передачи данных.
1.3 Буфер (buffer) - это область оперативной памяти, предназначенная для промежуточного хранения данных при выполнении операций ввода-вывода.
1.4 Защита памяти (storage protection) - важное условие работы для систем коллективного пользования.
1.5 ЦП – центральный процессор.
1.6 Блокирование процесса - это освобождение ЦП процессом до истечения отведенного ему кванта времени
1.7 Блок управления процессом (РСВ - process control block) - это объект, который
определяет процесс для операционной системы и является структурой данных, сосредотачивающей всю ключевую информацию о процессе.
1.8 Прерывание(interrupt) - это событие, при котором меняется нормальная последовательность команд, выполняемых процессором.
1.9 Ядро – все операции, связанные с процессами, выполняются под управлением той
части ОС.
1.10 Планировщик процессов(scheduler) – специальный модуль ядра, который разрешает конфликты между процессами и конкуренцию за системные ресурсы.
1.11 Семафор или общий семафор (semaphore) - это целая переменная, значение которой можно опрашивать и менять только при помощи специальных неделимых (как команда
testandset) операций P и V.
1.12 Конвейеризация (pipelining) - это аппаратный способ, применяемый в высокопроизводительных вычислительных средствах с целью использования определенных типов параллелизма для повышения эффективности обработки команд.
1.13 Монитор (monitor) - это набор процедур и информационных структур, которым
процессы пользуются в режиме разделения, причем в каждый момент им может пользоваться
только один процесс.
1.14 Tупик (deadlock) - это такая ситуация в мультипрограммной системе, когда процесс ожидает некоторого события, которое никогда не произойдет.
1.15 Сегментация (segmentation) - это прием организации программ, при котором адресная структура программы отражает ее содержательное членение.
2 ЛЕКЦИИ
Лекция 1
Тема: Введение в операционные системы.
Вопросы:
1. Операционная система. Определение и назначение. Функции операционных систем. Основные
качества ОС. Поколения операционных систем. Краткий обзор современных ОС (самостоятельно).
2. Классификация операционных систем по особенностям алгоритмов управления ресурсами, особенностям аппаратных платформ, особенностям областей использования.
3
Определение
Операционная система, ОС - это набор программ, которые обеспечивают возможность использования аппаратуры компьютера. При этом аппаратура компьютера предоставляет лишь вычислительные мощности, задача же ОС заключается в том, чтобы сделать аппаратуру доступной и
по возможности удобной для пользователя. ОС обеспечивают также рациональное и координированное управление аппаратурой для достижения высокой производительности. ОС - это по преимуществу администратор ресурсов, она управляет процессорами, памятью, устройствами вводавывода и данными.



Назначение
Главное назначение ОС - это управление ресурсами, а главные ресурсы, которыми она управляет, - это аппаратура компьютера:
процессор,
память,
устройства ввода-вывода.






Функции
ОС реализует множество различных функций, в том числе:
определяет так называемый интерфейс пользователя,
обеспечивает разделение аппаратных ресурсов между пользователями,
дает возможность работать с общими данными в режиме коллективного пользования,
планирует доступ пользователей к общим ресурсам,
обеспечивает эффективное выполнение операций ввода-вывода,
осуществляет восстановление информации и вычислительного процесса в случае ошибок.
1.
2.
3.
4.
5.
Требования
Независимо от того, какие функции выполняет ОС, она должна удовлетворять определенным эксплуатационным требованиям, в часности система должна обладать следующими качествами.
Надежностью. Система должна быть по меньшей мере так же надежна, как и аппаратура на
которой она работает. В случае ошибки в программном или аппаратном оборудовании система
должна обнаружить ошибку и либо попытаться исправить положение, либо постараться свести
ущерб к минимуму.
Защитой. Система должна быть защищена от несанкционированного доступа.
Эффективностью. ОС представляет собой сложный комплекс программных средств, который
использует значительную часть аппаратных ресурсов для своих собственных надобностей. Следовательно, сама система должна быть как можно более экономичной, чтобы большая часть ресурсов оставалась в распоряжении пользователей. Кроме того, система должна управлять ресурсами
пользователей так, чтобы свести к минимуму время простоя, или, что тоже самое, добиться максимальной загруженности ресурса.
Предсказуемостью. Пользователь предпочитает, чтобы обслуживание не слишком сильно
менялось в течение продолжительного времени. В частности, запуская программу, пользователь
должен иметь представление, основанное на предыдущем опыте, о том когда ему ожидать выдачи
результатов.
Удобством. ОС должна быть достаточно гибкой и удобной для пользователя.
Поколения
ОС, аналогично аппаратуре компьютера, на пути своего развития прошли через ряд радикальных изменений, так называемых поколений. Напомним, что для аппаратных средств понятие
поколений связано с усовершенствованиями в элементной базе компьютеров: от реле, электрон-
4





ных ламп, транзисторов - к интегральным большим и сверхбольшим микросхемам. Для ОС же
понятие поколений связано с расширением функциональных возможностей и повышением эффективности их работы.
Нулевое поколение (40-е годы)
Для первых вычислительных машин характерно отсутствие ОС, т.к. пользовательские программы реализовались непосредственно в машинных кодах.
Первое поколение (50-е годы)
Основными отличиями ОС 50-х годов является разработка средств для ускорения и упрощения перехода с задачи на задачу, т.е. это было начало систем пакетной обработки, которые
предусматривали объединение отдельных задач в группы, когда запущенная на решение задача
получала в свое полное распоряжение все ресурсы машины, а после завершения, управление возвращалось ОС, которая “прочищала” машину и обеспечивала ввод и запуск на решение следующей задачи.
Уже в первых ОС появилась концепция имен системных файлов (например, стандартный
системный файл ввода/вывода), как средства достижения определенной степени независимости
программ от аппаратуры.
К концу 50-х годов ведущие фирмы - изготовители компьютеров поставляли ОС со следующими характеристиками:
пакетная обработка одного потока задач,
наличие стандартных подпрограмм ввода/вывода или системы управления вводом-выводом IOCS
– input-output control system (небольшого пакета программ, управляющих осуществлением операций ввода/вывода),
возможности автоматического перехода от программы к программе,
средства восстановления после ошибок, обеспечивающие автоматическую “очистку” машины в
случае аварийного завершения очередной задачи,
языки управления заданиями, предоставляющие пользователям возможность достаточно подробно
описывать свои задания и требуемые ресурсы.
Считается, что первую ОС создала в начале 50-х годов для своих компьютеров IBM-701 исследовательская лаборатория фирмы General Motors. А создание ассоциации пользователей
SHERE, работающих на машинах фирмы IBM привело к возникновению к 1957 году множества
ОС, разработанных самими пользователями и удовлетворяющих выше перечисленным характеристикам.
Второе поколение (60-е годы)
ОС создавались как системы коллективного пользования с мультипрограммным режимом
работы , когда несколько пользовательских программ одновременно находятся в основной памяти компьютера, а центральный процессор быстро переключается с задачи на задачу. Главный фактор, способствующий успешному внедрению концепции мультипрограммирования в качестве
средства повышения пропускной способности машины, был связан с существенным различием в
скоростных характеристиках устройств ввода-вывода и центрального процессора.
Появляются первые системы мультипроцессорного типа, когда единый вычислительный
комплекс содержит несколько процессоров, что повышает вычислительную мощность этого комплекса.
Появились ОС с разделением времени, которые предоставляют возможность работы в диалоговом или интерактивном режиме , что позволяет пользователю в значительной степени повысить эффективность процесса разработки и отладки программ, в отличие от систем с пакетной обработкой.
В эти же годы появились первые системы реального времени, когда компьютеры использовались, например, для управления технологическими процессами. Для систем реального времени
характерно то, что они обеспечивают немедленную реакцию на предусмотренные события. Системы реального времени часто работают со значительной недогрузкой - поскольку для подобных
5
систем гораздо важнее быть в состоянии постоянной готовности и быстро реагировать на предусмоттренные обстоятельства, чем просто быть занятыми большую часть времени, Этот факт позволяет понять, почему такие системы обычно стоят столь дорого.
Одним из наиболее значительных достижений этого периода было создание и успешное
внедрение системы бронирования и предварительной продажи билетов на самолеты американских
авиалиний (SABRE), которая стала первой крупной системой обработки транзакций, в которой
пользователи взаимодействовали с системой при помощи удаленных терминалов, работающих в
режиме on-line.
Следует также отметить разработку фирмы Burroughs для своих компьютеров В5000 - ОS
MCP (Master Control Program - Главная управляющая программа), в которой были реализованы
многие современные концепции ОС:

мультипрограммирование,

мультипроцессорная обработка,

виртуальная память,

написание операционной системы на языке высокого уровня,

возможность отладки программ на исходном языке.
Третье поколение (70-е годы)
Появление третьего поколения ОС фактически совпало с представлением фирмой IBM в
1964 году компьютеров семейства System/360, эти компьютеры третьего поколения были разработаны как машины общего назначения. Особенностью ОС этого поколения является многорежимность системы, т.е. возможность предоставления работы во всех известных режимах : пакетной
обработки, разделения времени, режиме реального времени и мультипроцессорном режиме. Такие
ОС оказались достаточно громоздкими и дорогостоящими (исключением является удачная разработка фирмы Bell Laboratories - ОС UNIX). ОС третьего поколения представляли собой значительный шаг вперед в развитии средств программного обеспечения, но этот шаг оказался достаточно
болезненным для пользователей, так как для того, чтобы заставить одну из подобных систем выполнить простейшую задачу, пользователю необходимо было изучать языки управления заданиями - чтобы уметь описывать задания и требуемые для них ресурсы.
Безусловным лидером этого поколения ОС является OS/360, а также ОС, фактически копировавшие архитектуру OS/360 компаний Siemens (ФРГ) и Hitachi (Япония). Другую стратегию
приняли такие фирмы - изготовители компьютеров, как Burroughs и General Electric, которые разрабатывали машины не совместимые с компьютерами серии 360, но более мощные и экономичные. Но все же именно IBM завладела рынком ОС 60-х, создав четыре основные ОС:
- DOS/360 для младших моделей системы 360,
- OS/MFT (мультипрограммирование с фиксированным числом задач) для средних и старших моделей 360,
- OS/MVT (мультипрограммирование с переменным числом задач) для старших моделей 360,
- СР-67/CMS (управляющая программа-67 диалоговая мониторная система) для мощной
модели 360/67, имеющей виртуальную память и предусматривающей работу в режиме разделения
времени.
Четвертое поколение (80-е годы)
Благодаря широкому распространению вычислительных сетей и средств оперативной обработки данных в режиме on-line ОС четвертого поколения должны были обеспечивать возможность доступа к территориально распределенным компьютерам. С широким распространением
персональных компьютеров появился термин дружественная, удобная для пользователя, ориентированная на неподготовленного пользователя ОС - что в итоге означает возможность предоставления достаточно простого доступа к вычислительным ресурсам.
Если в 60-х и 70-х годах пользователям приходилось работать на языках программирования,
включающих множество символических и мнемонических обозначений и сокращений, то в 70-х и
6
80-х годах появились системы с управлением при помощи меню. Широко распространилась концепция виртуальных машин, что дает возможность пользователю не задумываться о физических
деталях построения вычислительных машин или сетей , с которыми он работает. В это же время
исключительно важную роль начинают играть системы баз данных , которые обеспечивают возможность удобного и управляемого доступа к информации для тех, кто имеет на это право. Отсюда возникает проблема шифрования данных, защиты информации от несанкционированного доступа.
Вопросы
1.
Дайте определение операционной системы.
2.
Перечислите функции операционной системы.
3.
Опишите различия между мультипрограммным и мультипроцессорным режимами работы ОС.
4.
Что такое независимость программ от внешних устройств? Почему это так важно для
пользователей?
5.
В чем заключались главные цели разработчиков первых ОС?
6.
Какова основная причина возникновения мультипрограммирования?
7.
Перечислите основные качества, которыми должна обладать ОС.
Лекция 2
Тема: Аппаратные средства и программное обеспечение
Вопросы:
1. Аппаратные средства. Центральный процессор и его режимы работы. Мультипроцессорная обработка. Расслоение памяти. Регистр перемещения. Прерывания и опрос состояний. Буферизация. Защита памяти. Периферийные устройства и их режимы. Каналы ввода-вывода. Захват цикла памяти. Относительная адресация. Виртуальная память. Прямой доступ к памяти. Иерархия памяти.
2. Программное обеспечение.
Аппаратные средства
Аппаратные средства - это устройства компьютера: процессоры, устройства памяти,
устройства ввода-вывода, а также средства приема-передачи данных.
Мы рассмотрим различные виды аппаратных средств и режимы их работы, которые
имеют важное значение с точки зрения работы ОС.
Центральный процессор и его режимы работы
Следует обратить внимание на два основных режима: режим задачи (problem state) и
режим супервизора (supervisor state). Операционной системе обычно присваивается статус
самого полномочного пользователя и работает она в режиме супервизора, имея доступ ко
всем командам, предусмотренным в машине. Программы пользователя имеют доступ лишь к
ограниченному числу команд и, в обычном случае, работают в режиме задачи. Команды, которые не могут выполняться в режиме задачи, носят название привилегированных команд.
Мультипроцессорная обработка (multiprocessing)
В мультипроцессорных системах несколько процессоров работают с общей основной
памятью и одной ОС. Здесь возникает необходимость обеспечения координированного упорядоченного доступа для исключения конфликтных ситуаций, например, когда два процес-
7
сора не могли бы одновременно изменять содержимое общей ячейки памяти и т.п. ситуации.
Следует отметить, что упорядочение доступа необходимо также и для однопроцессорных
машин.
Расслоение памяти
Метод расслоения памяти (storage interleaving)
применяется для увеличения
скорости доступа к оперативной памяти. В обычном случае во время обращения к какойлибо области памяти никакие другие обращения к памяти производиться не могут. При расслоении памяти соседние по адресам ячейки размещаются в различных модулях памяти, так
что появляется возможность производить несколько обращений одновременно. Например,
при расслоении на два направления ячейки с нечетными адресами оказываются в одном модуле памяти, а с четными - в другом. Таким образом, расслоение памяти позволяет обращаться сразу к нескольким ячейкам, поскольку они относятся к различным модулям.
Регистр перемещения
Регистр перемещения (relocation register) обеспечивает возможность динамического
перемещения программ в памяти. В регистр перемещения заносится базовый адрес программы, хранящейся в основной памяти. Содержимое регистра перемещения прибавляется к
каждому указанному в выполняемой программе адресу. Благодаря этому пользователь может
писать программу так, как если бы она начиналась с нулевой ячейки памяти, но реально в
памяти программа может размещаться совсем не в тех местах, которые она должна была бы
занимать согласно адресам, указанным при трансляции.
Прерывания и опрос состояний
Одним из способов, позволяющих некоторому устройству проверить состояние другого, независимо работающего устройства, является опрос (polling).Так одно из устройств
периодически может проверять состояние другого, и, если оно не находится в определенном
состоянии, продолжать свою работу.
Прерывания (interrupts) дают возможность немедленно одному устройству привлечь
внимание другого, с тем, чтобы первое могло сообщить об измерении своего состояния. Состояние устройства, работа которого прерывается, должно быть сохранено, только после
этого допустимо выполнять обработку прерывания. После завершения обработки прерывания состояние прерванного устройства восстанавливается, с тем, чтобы можно было продолжить работу.
Буферизация
Буфер (buffer) - это область оперативной памяти, предназначенная для промежуточного хранения данных при выполнении операций ввода-вывода.
Существует несколько способов буферизации. При простой буферизации процесс обработки
данных процессором и процесс занесения новых данных в буфер разделены во времени, т.е.
в момент занесения новых данных процесс обработки производиться не может, и наоборот.
Метод двойной буферизации позволяет совмещать эти процессы, т.е. когда канал заносит
данные в один буфер, процессор может обрабатывать данные другого буфера. Такое поочередное использование буферов называют буферизацией с переключением или триггерной
буфферизацией (flip-flop buffering). Ввод-вывод с буферизацией носит название спулинг
(spooling).
Защита памяти
Защита памяти (storage protection) - важное условие работы для систем коллективного пользования. Защита памяти ограничивает диапазон адресов, которые доступны про-
8
грамме. Защиту памяти для программы, занимающей непрерывный блок ячеек памяти, можно реализовать с помощью граничных регистров, где указываются старший и младший адреса этого блока памяти.
Защита памяти также может быть реализована с помощью ключей защиты памяти (storage
protect keys), относящихся к определенным областям основной памяти - программе разрешается обращение только к тем областям памяти, ключи которых совпадают с ключом данной программы.
Периферийные устройства и их режимы
Периферийные устройства обладают возможностью работать либо в режиме on-line,
когда они непосредственно связаны с центральным процессором. Либо в автономном режиме off-line, когда ими управляют контроллеры, не связанные с центральной вычислительной машиной.
Каналы ввода-вывода
Канал ввода-вывода представляет собой специализированный процессор, предназначенный для управления вводом-выводом независимо от основного процессора. Канал имеет
возможность прямого доступа к основной памяти для записи и выборки информации. Основное назначение каналов состоит в том, чтобы увеличить параллелизм работы аппаратуры
и освободить процессор от подавляющей части нагрузки, связанной с управлением вводомвыводом.
Для высокоскоростного обмена данными между внешними устройствами и основной
памятью используются селекторные каналы (selector channel), имеющие только по одному
подканалу и обслуживающие в каждый момент времени только одно устройство.
В отличие от селекторных, мультиплексные каналы (multiplexor channel) имеют
множество подканалов и могут работать одновременно с несколькими потоками данных в
режиме чередования.
Захват цикла памяти
Наиболее узкое место где может возникнуть конфликтная ситуация между каналами и
процессором - это доступ к основной памяти. При возникновении ситуации, когда и каналам
и процессору может потребоваться обращение к основной памяти, в обычном случае приоритет предоставляется каналам. Это и называется захватом цикла памяти (cycle stealing),
канал буквально “крадет” циклы обращения к памяти у процессора. Подобный подход обычно используется в ОС.
Относительная адресация
Для обеспечения работы с большими адресными пространствами в памяти используется относительная адресация (база + смещение). В этом случае все адреса программы
суммируются с содержимым базового регистра (base register) . Подобное решение имеет то
преимущество, что программы в этом случае оказываются перемещаемыми и позиционно независимыми.
Виртуальная память
Использование виртуальной памяти (virtual storage) дает возможность указывать в
программах адреса, которым необязательно соответствуют реальные адреса основной памяти. Виртуальные адреса динамически, при помощи аппаратных средств, преобразуются в адреса команд и данных, физически расположенных в основной памяти.
В системах виртуальной памяти применяются такие методы, как страничная организация (paging) - предусмативающая обмен между основной и внешней памятью блоками
9
данных фиксированного размера, и сегментация (segmentation) - предусматривающая разделение программ и данных на логические компоненты (сегменты).
Лекция 3
Тема: Процессы
Вопросы:
1. Процесс. Состояния процесса. Операции над процессами.
2. Обработка прерываний. Типы прерываний. Переключения контекста. Разрешение и
запрещение прерываний.
3. Ядро операционной системы. Основные функции ядра. Иерархическая структура ОС.
Архитектура ОС Linux.
Процесс
Понятие процесс(process) введено разработчиками ОС с 60-х годов, как программа во
время выполнения. Заметим, что программа - это всего лишь файл в формате загрузки, сохраняемый на диске, а процесс расположен в памяти на этапе выполнения.
Состояния процесса
Для процесса характерен ряд дискретных состояний, причем смену этих состояний
могут вызывать различные события. Первоначально ограничимся рассмотрением трех основных состояний процесса.
 Процесс находится в состоянии выполнения, если в данный момент ему выделен
центральный процессор (ЦП).
 Процесс находится в состоянии готовности, если он мог бы сразу использовать
центральный процессор, предоставленный в его распоряжение.
 Процесс находится в состоянии блокировки, если он ожидает некоторого события,
чтобы получить возможность продолжать выполнение.
Заметим, что в однопроцессорной машине в состоянии выполнения может в
каждый конкретный момент времени находится только один процесс. В состояниях
же готовности и блокировки могут находиться несколько процессов, т.е. есть возможность создать список готовых и список заблокированных процессов.
Список готовых процессов упорядочен по приоритету, первым в распоряжение
получает ЦП первый процесс из списка. При создании списка готовых процессов,
каждый новый процесс помещается в конец списка, а по мере завершения выполнения
предыдущих процессов продвигается в головную часть списка. Список же заблокированных процессов не упорядочен, т.к. разблокировка процессов осуществляется в том
порядке, в котором происходят ожидаемые ими события.
Рассмотрим диаграмму переходов процесса X из состояния в состояние - смену
состояний процесса.-
Запуск
Зап
Состояние готовности
Г
Состояние выполнения
В
Истечение
кванта
Икв
Пробуждение
10
Блокирование
Блк
Состояние блокировки
Б
Прб
Рис.1 Смена состояний процесса X
Запуск, или выбор процесса для выполнения - это предоставление ЦП первому
процессу из списка готовых процессов. Запуск осуществляется с помощью программы - диспетчер. Обозначим такую смену состояний следующим образом:
Зап(X) : Г
В
Для предотвращения монопольного захвата ресурсов ЦП одним процессом, ОС
устанавливает в специальном таймере прерываний определенный временной интервал, который отводится для данного процесса, по истечении кванта времени, таймер
вырабатывает сигнал прерывания, по которому управление передается ОС и процесс
переводится из состояния выполнения в состояние готовности, а первый процесс из
списка готовых - в состояние выполнения.
Икв(X): В
Г
Зап(Y): Г
В
Блокирование процесса - это освобождение ЦП процессом до истечения отведенного ему кванта времени, т.е. когда выполняющийся процесс инициирует, например, операцию ввода-вывода, и, таким образом, добровольно освобождает ЦП в ожидании завершения указанной операции.
Блк(X): В
Б
Пробуждение процесса осуществляется тогда, когда происходит какое-либо
событие, ожидаемое процессом, и он переходит из состояния блокировки в состояние
готовности. Так в выше описанном случае, после завершения операции ввода-вывода.
Прб(X) : Б
Г
Итак, мы определили четыре возможные смены состояния процесса.
Зап(X) : Г
В
Икв(X): В
Г
Блк(X): В
Б
Прб(X): Б
Г
Отметим, что единственная смена состояния, инициируемая самим процессом это блокирование, остальные инициируются объектами, внешними по отношению к
данному процессу.
11
Операции над процессами
Системы, управляющие процессами, должны иметь возможность выполнять над ними
ряд операций.
Создание процесса.
Создание процесса включает присвоение имени процессу; включение его имени в
список имен процессов; определение начального приоритета процесса; формирование блока
управления процессом РСВ; выделение процессу начальных ресурсов.
Процесс может породить новый процесс и в этом случае, первый будет называться
родительским, а второй дочерним процессом, причем у одного родительского процесса может быть несколько дочерних, а у дочернего только один родительский. Таким образом, создается иерархическая структура процессов.
Например, иерархия процессов в UNIX может быть представлена следующим образом:
Р1
Р1 - родительский, порождает два процесса
Р2 и Р3 - дочерних. Дочерний процесс наследует
Р2
Р3
все свойства родительских. Любой процесс UNIX
порождается с помощью системного вызова fork.
Р4
Р5
Имеется процедура опознания родительского и
дочернего процесса.
ОС UNIX, являясь в своей основе средством управления процессами, сама по себе
может рассматриваться как система параллельных взаимодействий процессов с древовидной
структурой. Общий прародитель всех процессов в ОС UNIX - процесс init, находится в вершине генеалогического дерева, этот процесс постоянно присутствует в системе, все другие
процессы порождаются по унифицированной схеме с помощью системного вызова fork().
Каждому созданному процессу UNIX назначает уникальный идентификатор процесса
- PID , который идентифицирует процесс для ОС. Кроме того, каждый процесс имеет еще
PPID (parent process), который предстваляет собой не что иное как PID его родителя.
Используя в UNIX команду ps можно видеть идентификаторы текущих процессов в
системе.
Уничтожение процесса.
При уничтожении процесса, ресурсы ему выделенные передаются системе, имя из
любых списков и таблиц удаляется, а блок управления процессом освобождается.
Приостановка процесса.
Приостановленный процесс может продолжить свое выполнение тогда, когда его активизирует какой-либо другой процесс.
Возобновление процесса.
Операция подготовки процесса к повторному запуску с той точки , в которой он был
приостановлен, называется - возобновлением.
Изменение приоритета процесса.
Эта операция означает модификацию значения приоритета процесса в РСВ.
Кроме того, используются операции блокирования, пробуждения и запуска процесса.
С учетом введенных понятий приостановки и возобновления процесса картина смены
состояний процесса, приведенная на рис.1 может быть несколько дополнена.
12
Состояние выполнения
В
Зап
Икв
Состояние готовности
Г
Пст
Нсоб
Нсоб
Состояние блокировки
Б
Взб
Пст
Взб
Пст
Приостановлен
готов ПстГ
Приостановлен
блокирован ПстБ
Нсоб
Пст - приостановка;
Взб - возобновление;
Нсоб - наступление события или окончание ввода-вывода.
Рис.2 Смена состояний процесса X с учетом операций приостановки и возобновления
Таким образом, к четырем ранее рассмотренным сменам состояния процесса
добавляются следующие:
Пст(Х): Г
Взб(Х): ПстГ
Пст(Х): Б
Взб(Х): ПстБ
Нсоб(Х): ПстБ
ПстГ
Г
ПстБ
Б
ПстГ
Например, диспетчер UNIX - это программа, которая позволяет процессам
конкурировать между собой за время ЦП. Приостановка и возобновление процессов
происходит много раз в секунду, поэтому создается эффект непрерывного протекания
процесса. Схема разделения времени ЦП может быть представлена следующим образом:
X
X
X
Y
Y
Y
Z
Z
Z
Неработающие процессы
(находящиеся в стадии приостановки)
Процесс в стадии выполнения
13
Квант
времени 1
Квант
времени 2
Квант
времени 3
Блок управление процессом
Блок управления процессом (РСВ - process control block) - это объект, который определяет процесс для операционной системы и является структурой данных, сосредотачивающей
всю ключевую информацию о процессе:
 текущее состояние процесса;
 уникальный идентификатор процесса;
 приоритет процесса;
 указатели памяти процесса;
 указатели выделенных процессу ресурсов;
 область сохранения регистров (когда ОС переключает ЦП с процесса на процесс, она
использует области сохранения регистров, предусмотренные в РСВ, чтобы запомнить
информацию, необходимую для повторного запуска каждого процесса, когда он получит в очередной раз в свое распоряжение ЦП).
Концепция процессов является базовой для ОС UNIX. По сути порождение любого
процесса - это создание некоторой виртуальной машины. Она имеет свое собственное
адресное пространство, куда помещается процедурный сегмент и сегмент данных.
Дескриптор и контекст процесса. Системные данные, используемые для идентификации процесса, которые существуют в течение всего времени его жизни, образуют дескриптор (описатель) процесса. Множество дескрипторов образуют таблицу процессов
- в современных версиях UNIX это несколько сотен процессов.
Дескриптор процесса содержит следующие параметры процесса:
 расположение (адрес в памяти);
 размер выгружаемой части образа процесса;
 идентификатор процесса и пользователя.
Другая важная информация о процессе хранится в таблице пользователя (называемой
также - контекст процесса), здесь записаны:
 идентификационные номера пользователей, для определения привилегий доступа
к файлам;
 ссылки на системную таблицу файлов для всех открытых процессом файлов;
 указатель на индексный дескриптор текущего каталога в таблице индексных дескрипторов;
 список реакций на различные сигналы.
Обработка прерываний
Прерывание(interrupt) - это событие, при котором меняется нормальная последовательность команд, выполняемых процессором. Если произошло прерывание, то
 управление передается ОС;
 ОС запоминает состояние прерванного процесса;
 ОС анализирует тип прерывания и передает управление соответствующей программе обработки прерывания.
Рассмотрим основные типы прерываний.
SVС(supervisor call instruction)-прерывания.
Инициатором этих прерываний является работающий процесс, который выполняет
команду SVС, т.е. генерируемый программой пользователя запрос на предоставление
конкретной системной услуги (например, на выполнение операции ввода-вывода, на уве-
14
личение размера выделенной памяти и т.п.). Механизм SVC позволяет защитить ОС от
пользователей.
Прерывания ввода-вывода.
Инициируются аппаратурой ввода-вывода и сигнализируют ЦП о том, что произошло
изменение состояния канала или устройства ввода-вывода, например, произошло завершение
операции ввода-вывода, возникла ошибка или устройство перешло в состояние готовности.
Внешние прерывания.
Причинами таких прерываний могут быть различные внешние события, например,
истечение кванта времени, заданного на таймере прерываний.
Прерывания по рестарту.
Эти прерывания происходят по команде рестарта ОС.
Прерывания по контролю программы.
Причинами таких прерываний являются различные виды ошибок, возникающих в выполняющемся процессе, например попытка деления на ноль.
Прерывания по контролю машины.
Эти прерывания вызываются аппаратными ошибками.
Переключение контекста
Процедуру обработки прерываний, в зависимости от их типа, выполняют входящие в
состав ОС соответствующие программы - обработчики прерываний (IH - interrupt handler).
При возникновении прерываниия, ОС должна обеспечивать запоминание состояния
прерванного процесса и передачу управления соответствующему обработчику прерывания.
Это может быть реализовано с использованием способа переключение контекста(context
switching).
При реализации этого способа используются слова состояния программы
PSW(program status word), которые управляют порядком выполнения команд и сожержат
ряд сведений о состоянии процесса. Существует три типа PSW:
текущее PSW, новое PSW старое PSW.
Новое PSW
Старое PSW
Вызов супервизора
Вызов супервизора
Прерывания ввода-вывода
Текущее PSW
2
Внешние прерывания
Прерывания ввода-вывода
1
Внешние прерывания
Прерывания по контролю
программы
Прерывания по контролю
программы
Прерывания по контролю
машины
Прерывания по контролю
машины
Прерывания по рестарту
Прерывания по рестарту
15
В однопроцессорной машине существует одно текущее PSW, которое содержит адрес
следующей команды, подлежащей выполнению, а также типы прерываний, разрешенных и
запрещенных на данный момент. Шесть новых PSW, которые содержат адреса размещения
соответствующих обработчиков прерываний, и шесть старых PSW - по одному для каждого
типа прерываний.
Когда происходит прерывание, то в первую очередь проверяется не является ли оно запрещенным (тогда оно либо задерживается либо игнорируется). Если прерывание является разрешенным, то аппаратурно производится следующее переключение PSW:
 текущее PSW становится старым PSW для прерывания этого типа;
 новое PSW для прерывания этого типа становится текущим PSW.
После такого замещения слов состояния, текущее PSW содержит адрес соответствующего обработчика прерываний, который начинает обрабатывать данное прерывание. Когда обработка прерывания завершается, ЦП начинает обслуживать либо тот процесс, который выполнялся в момент прерывания, либо готовый процесс с наивысшим приоритетом.
Описанная схема обработки прерываний не является единственно возможной.
Ядро операционной системы
Все операции, связанные с процессами, выполняются под управлением той части ОС, которая называется ядро.
Ядро обычно размещается в оперативной памяти, в то время как другие части ОС перемещаются во внешнюю память и обратно по мере необходимости.
Функции ядра
Ядро ОС, как правило, должно содержать программы для реализации следующих функций:
 обработка прерываний;
 операции над процессами;
 синхронизация процессов;
 организация взаимодействия между процессами;
 манипулирование блоками управления процессами;
 поддержка операций ввода-вывода;
 поддержка работы файловой системы;
 поддержка механизма вызова-возврата при обращении к процедурам;
 ряд учетных функций.
Иерархический подход к процессу проектирования ОС заключается в следующем.
В основе иерархии находится аппаратура компьютера, так называемая “чистая машина”.
На следующем уровне иерархии находятся различные функции ядра, в совокупности с
которыми компьютер становится “расширенной машиной”.
Эти дополнительные функции, реализуемые при помощи ядра, часто называют примитивами(primitives).
Над ядром в иерархии находятся различные процессы ОС, которые обеспечивают
поддержку процессов пользователя - например, процессы управления внешними устройствами.
На вершине иерархии располагаются сами процессы пользователей.
Опыт создания ОС показывает, что такие иерархические системы легче отлаживать,
модифицировать и тестировать, чем такие, когда функции ядра
распределяются на нескольких уровнях иерархии.
16
Архитектура ОС Linux
Достаточно широкое растространение в настоящее время получила система Linux (автор базовой версии Линус Торвальдс). Усиление влияния Linux подтвердилось в очередной
раз на выставке LinuxWorldExpo в начале февраля 2000 года в Нью-Йорке. В IBM активно
разрабатываются приложения для Linux, что подтверждает высокую оценку этой ОС. “Сегодня Linux развивается такими же быстрыми темпами, как Internet в начале 90-х годов, а популярность ее даже выше, чем популярность электронного бизнеса”,- заметил Ирвинг Владавски-Бергер, вице-президент подразделения IBM Enterprise System Group . Аппаратные
требования Linux минимальны, пожалуй только MS DOS является менее требовательной к
аппаратуре компьютера, чем Linux. Запустить Linux можно даже на 386SX/16, 1Mб ОП, но
это тот минимум, который только даст возможность убедиться в работоспособности системы. Базовый набор команд, утилит администрирования и командный интерпретатор займут
10 Мб.
Linux может “сожительствовать” на компьютере с другими системами, например, с
MS DOS, MS Windows или OS/2, в этом случае каждая из систем должна располагаться в отдельном разделе диска, а при запуске компьютера будет предложена альтернатива запуска
той или иной ОС.
Linux является UNIX- подобной системой, и, поэтому принципы ее архитектуры мало
чем отличаются от стандартой UNIX. Самый общий взгляд позволяет увидеть двухуровневую модель системы, как она представлена на рис. А.
В центре находится ядро системы. Ядро непосредственно взаимодействует в аппаратной частью компьютера, изолируя прикладные программы от особенностей ее архитектуры. Ядро имеет набор услуг, предоставляемых прикладным программам. К услугам ядра относятся:
 операции ввода/вывода (открытия, чтения, записи и управления файлами),
 создание и управление процессами, их синхронизация и межпроцессные взаимодействия.
Все приложения запрашивают услуги ядра посредством системных вызовов.
Прикладные
программы
Системные
приложения
Система
разработки
Ядро
Аппаратная часть
Рис.А. Модель ОС Linux.

Эд Скеннел Растет число сторонников Linux . ComputerWorld , 1.03.00.
17
Второй уровень составляют приложения или задачи, как системные, определяющие
функциональность системы, так и прикладные, обеспечиваюшие пользовательсткий интерфейс Linux. Набор приложений, составляющих второй уровень модели и определяет тот или
иной дистрибутив Linux.
Ядро системы
Ядро обеспечивает базовую функциональность ОС: создает процессы и управляет
ими, распределяет память и обеспечивает доступ к файлам и периферийным устройствам.
Взаимодействие прикладных задач с ядром происходит посредством стандартного
интерфейса системных вызовов. Интерфейс системных вызовов представляет собой набор
услуг ядра и определяет формат запросов на услуги. Процесс запрашивает услугу посредством системного вызова определенной процедуры ядра, внешне похожего на вызов обычной библиотечной функции.
Структура ядра представлена на рис. Б.
Процессы
Пользовательский
уровень
Интерфейс системных вызовов
Файловая подсистема
Подсистема
управления процессами
Ядро
Подсистема
ввода/вывода
Аппаратный контроль
Системный
уровень
Устройства
Аппаратный
уровень
Рис.Б Структура ядра ОС Linux
Ядро состоит из трех основных подсистем:



файловая подсистема;
подсистема управления процессами и памятью;
Мещеряков М.С., Робачевский А.М. Linux : инсталяция и основы работы. - СПб.: БХВ, 1999. - 144с.
18
 подсистема ввода/вывода.
Файловая подсистема
Файловая подсистема обеспечивает унифицированный интерфейс доступа к данным,
расположенным на дисковых накопителях, и к периферийным устройствам. Одни и те же
функции open(2), read(2), write(2) могут использоваться как при чтении или записи данных
на диск, так и при выводе текста на принтер или терминал.
Файловая подсистема контролирует права доступа к файлу, выполняет операции размещения и удаления файла, а также выполняет запись/чтение данных файла. Поскольку
большинство прикладных функций выполняется через интерфейс файловой системы, права
доступа к файлам определяют привилегии пользователя в системе.
Файловая подсистема обеспечивает перенаправление запросов, адресованных периферийным устройствам, соответствующим модулям подсистемы ввода/вывода.
Подсистема управления процессами
Запущенная на выполнение программа порождает в системе один или более процессов, в задачи подсистемы управления процессами входит:
 создание и удаление процессов;
 распределение системных ресурсов (памяти, вычислительных ресурсов) между процессами;
 синхронизация процессов;
 межпроцессное взаимодействие.
Планировщик процессов(scheduler) – специальный модуль ядра, который разрешает
конфликты между процессами и конкуренцию за системные ресурсы. Планировщик запускает процесс на выполнение, следя за тем, чтобы процесс монопольно не захватил разделяемые
ресурсы. Процесс освобождает процессор, ожидая длительной операции ввода/вывода, или
по прошествии кванта времени. В этом случае планировщик выбирает следующий процесс с
наивысшим приоритетом.
Модуль управления памятью обеспечивает размещение оперативной памяти для прикладных задач. В случае, если для всех процессов недостаточно оперативной памяти, ядро
перемещает части процесса или несколько процессов во вторичную память, как правило, в
специальную область жесткого диска, освобождая ресурсы для выполняющегося процесса.
Все современные ОС реализуют виртуальную память: процесс выполняется в собственном
логическом адресном пространстве, которое может значительно превышать доступную физическую память. Управление виртуальной памятью процесса также входит в задачи модуля
управления памятью.
Модуль межпроцесcного взаимодействия отвечает за уведомление процессов о событиях с помощью сигналов и обеспечивает возможность обмена данными между различными
процессами.
Подсистема ввода/вывода
Подсистема ввода/вывода выполняет запросы файловой подсистемы и подсистемы
управления процессами для доступа к периферийным устройствам (дискам, терминалам и
т.п.). Она обеспечивает необходимую буферизацию данных и взаимодействует с драйверами
устройств - специальными модулями ядра, непосредственно обслуживающими внешние
устройства.
Вопросы
1. Дайте определения следующих терминов: программа, процедура, процесс, процессор.
2. Почему обычно нецелесообразно устанавливать приоритетный порядок для списка заблокированных процессов?
19
Опишите четыре основные смены состояний процесса.
Опишите смены состояний процесса с учетом операций приостановки и возобновления.
Какую информацию о процессе содержит PCB?
Перечислите основные типы прерываний и приведите пример каждого типа прерывания.
7. Опишите суть способа переключения контекста.
8. Дайте определение ядра ОС и назовите его основные функции.
9. Определите структуру ядра Linux.
10. В чем состоит назначение файловой подсистемы?
11. В чем состоит назначение подсистемы управления процессами?
12. Каковы основные функции подсистемы ввода/вывода?
13. Определите понятие - примитивы.
14. В чем особенность иерархического подхода к проектированию ОС?
3.
4.
5.
6.
Лекция 4
Тема: Планирование и диспетчеризация процессов.
Вопросы:
1. Уровни планирования. Цели планирования. Факторы, учитываемые при планировании.
Планирование с переключением и без переключения. Приоритеты.
2. Алгоритмы планирования. Планирование по принципу FIFO (first-in-first-out). Циклическое
планирование RR (round robin). Многоуровневые очереди с обратными связями.
Уровни планирования
Одной из важных задач, которую решает ОС является проблема, связанная с определением когда и каким процессам следует выделять ресурсы процессора - задача планирования загрузки процессоров. Существуют три уровня такого планирования.
Планирование на верхнем уровне.
Или планирование заданий - это средства, которые определяют, каким заданиям будет разрешено активно конкурировать за захват ресурсов системы. Вошедшие в систему задания становятся процессами или группами процессов.
Планирование на промежуточном уровне.
Средства этого уровня определяют, каким процессам будет разрешено конкурировать
за захват ЦП. Планировщик этого уровня определяет, какие процессы приостанавливаются, а
какие возбуждаются для обеспечения равномерной загрузки системы.
Планирование на нижнем уровне.
Средства этого уровня выполняют диспетчерские функции, определяя, какому из готовых к выполнению процессов будут предоставлены ресурсы ЦП.
Планирование на нижнем уровне выполняется диспетчером, который всегда располагается в оперативной памяти.
20
Задания, ожидающие
ввода в систему
Ввод заданий
Задания, ожидающие
запуска
Запуск заданий
Планирование верхнего уровня
Приостановка
Планирование промежуточного
уровня
Приостановленные
процессы, ожидающие
активизации
Активизация
Активные
процессы
Блокирование
уровня
Предоставление ЦП
Планирование нижнего
Выполняющиеся
процессы
Завершение
Завершенные
процессы
Рис 4. Уровни планирования
Цели планирования
Дисциплина планирования должна быть справедливой; обеспечивать максимальную
пропускную способность системы; приемлемые времена ответа для максимального количества пользователей, работающих в интерактивном режиме; предсказуемость; минимальные
накладные расходы; сбалансированное использование ресурсов; сбалансированность времени ответа и коэффициента использования ресурсов; должна исключать бесконечное откладывание процессов; учитывать приоритеты; оказывать предпочтение тем процессам, которые
занимают ключевые ресурсы; предусматривать улучшенное обслуживание для процессов,
отличающихся “примерным поведением”.
Заметим, что многие из этих целей противоречат друг другу, что делает планирование достаточно сложной проблемой.
Факторы, учитываемые при планировании
Для реализации перечисленных выше целей планирования, механизмы планирования
должны учитывать лимитируется процесс вводом-выводом или ЦП; является ли процесс пакетным или диалоговым; обязательно ли малое время ответа; приоритет каждого процесса;
частоту переключений с низкоприоритетных процессов, ожидающих освобождения уже занятых ресурсов; длительность периода времени, в течение которого ожидает каждый про-
21
цесс; суммарное время работы каждого процесса и оценочное время, необходимое каждому
процессу для завершения.
Планирование с переключением и без переключения
Планирование без переключения предусматривает, что после предоставления ресурсов
ЦП какому-либо процессу, отобрать ЦП у этого процесса нельзя. Если же ресурсы ЦП можно отобрать, то говорят о планировании с переключением.
При использовании планирования без переключения коротким заданиям приходится
больше ждать из-за выполнения длительных заданий, с другой стороны, для всех процессов
создаются как бы равные условия, а времена ответа здесь более предсказуемы.
Планирование с переключением необходимо в системах, где процессы высокого приоритета требуют немедленного внимания, например в интерактивных системах разделения
времени этот способ планирования позволяет гарантировать приемлемые времена ответа.
Приоритеты
Система может присваивать процессам приоритеты автоматически или они могут
назначаться извне. Приоритеты могут быть заслуженными или купленными. Они могут быть
статическими или динамическими. Они могут назначаться по какому-то рациональному
принципу или присваиваться в ситуациях, когда системе просто необходимо каким-либо образом различать процессы.
Статические приоритеты не изменяются, такой механизм установки приоритетов
достаточно прост и не сопряжен с большими издержками. Однако следует учитывать, что
такой механизм недостаточно гибок, т.к. не реагирует на изменение окружающей ситуации.
Динамические приоритеты позволяют повысить реактивность системы, т.к. реагируют на изменения ситуации, и начальное значение приоритета процесса может быть изменено на новое, более подходящее значение.
Покупаемые приоритеты дают возможность пользователю повысить приоритет задания и получить более высокий уровень обслуживания за дополнительную плату.
Алгоритмы планирования
Планирование по принципу FIFO (first-in-first-out)
Принцип FIFO, “ первый пришедший обслуживается первым”, является наиболее
простой дисциплиной планирования. ЦП предоставляется процессам в порядке их прихода в
очередь готовности.
После того, как процесс получает ЦП в свое распоряжение, он выполняется до завершения, т.е. это дисциплина планирования без переключения, поэтому ее не рекомендуют использовать в системах с разделением времени.
Готовые процессы
Z
Y
X
Завершение
ЦП
Рис. 5 Планирование по принципу FIFO
Как правило, принцип FIFO редко используется самостоятельно в качестве основной
дисциплины обслуживания, чаще он комбинируется с другими дисциплинами, например,
22
диспетчирование процессов может выполняться согласно их приоритетам, однако процессы
с одинаковыми приоритетами диспетчируются по принципу FIFO.
Циклическое планирование RR (round robin)
Планирование по принципу RR предполагает диспетчирование процессов по принципу FIFO, но каждый процесс получает временной квант, в течение которого он может использовать ресурсы ЦП. Если завершения процесса не происходит по истечении кванта времени, то этот процесс переводится в конец списка готовых к выполнению процессов, а ресурсы ЦП предоставляются следующему процессу из списка. Такой алгоритм планирования
приемлем, например, для работы с разделением времени, когда система должна гарантировать приемлемые времена ответа для всех интерактивных пользователей.
Готовые процессы
X
Z
Y
X
Завершение
ЦП
Истечение кванта времени
Рис. 6 Планирование по принципу RR
Очевидно, что для данного алгоритма планирования основной вопрос заключается в
определнии размера кванта времени, и следует ли делать его фиксированным или переменным. Очевидно, если квант времени выбирается слишком большим, то система RR фактически вырождается в FIFO, т.к. каждому процессу выделяется достаточно времени для завершения. Если же квант времени выбирается слишком малым, то контекстные переключения
начинают играть доминирующую роль, что в итоге ухудшает характеристики системы.
Многоуровневые очереди с обратными связями
Механизм планирования должен оказывать предпочтение коротким заданиям и заданиям, лимитируемым вводом-выводом, чтобы обеспечить хороший коэффициент использования устройств ввода-вывода; как можно быстрее определять характер задания, чтобы соответствующим образом ппланировать его выполнение. Многоуровневые очереди с обратными
связями позволяют достичь этих целей.
При таком алгоритме планирования, новый процесс входит в сеть очередей с конца
верхней очереди и перемещается по ней по принципу FIFO пока не получит в свое распоряжение ЦП. Если процесс не успевает завершиться по истечении отведенного ему кванта времени, он перемещается в конец очереди более низкого уровня и получит в свое распоряжение ЦП, когда достигнет начала этой очереди, и не будет ожидающих процессов в верхней
очереди. Обычно в такой многоуровневой системе предусматривается нижняя очередь, организованная по принципу RR, где процесс циркулирует до окончательного завершения. Как
правило, в таких структурах квант времени при переходе в каждую очередь более низкого
уровня увеличивается.
23
Готовые процессы
Z1
Y1
X1
Завершение
ЦП
Уровень 1 FIFO
Истечение кванта времени
Готовые процессы
X1
Z2
Y2
X2
Завершение
ЦП
Уровень 2 FIFO
Истечение кванта времени
...
Готовые процессы
Xn-1 Zn
Yn
Xn
Завершение
ЦП
Уровень n RR
Истечение кванта времени
Рис.7 Многоуровневые очереди с обратными связями
Многоуровневые очереди с обратными связями представляют собой идеальный механизм, позволяющий разделять процессы на категории в соответствиии с их потребностями в
ресурсах ЦП. В системе с разделением времени, каждый раз, когда процесс выходит из сети
очередей, он может быть отмечен признаком очереди самого низкого уровня, где он побывал, что дает возможность впоследствии, когда он снова войдет в сеть очередей, направлять
его прямо в ту очередь, в которой он в последний раз завершал свою работу. Заметим, что
при таком алгоритме планирования, чем дольше процесс занимает ЦП, тем ниже становится
его приоритет, пока процесс не опускается в очередь самого низкого приоритета. Размер же
кванта времени, выделяемого процессу, как правило увеличивается по мере перехода процесса в каждую следующую очередь.
Сеть многоуровневых очередей с обратными связями - это пример адаптивного механизма планирования, который реагирует на изменение поведения контролируемой им системы.
Вопросы
1.
Укажите различия между планировщиком заданий, планировщиком промежуточного
уровня и диспетчером.
2.
Перечислите основные цели планирования.
3.
Укажите
основные
различия
между
рассмотренными
алгоритмами
планирования.(FIFO, RR и многоуровневыми очередями с обратными связями).
4.
Приведите пример, показывающий, почему принцип FIFO является неподходящей дисциплиной планирования для интерактивных пользователей.
24
5.
6.
Определение размера кванта времени - сложная задача, опишите последствия, к которым приведет реализация каждого из следующих методов назначения размера кванта
времени:

выбирается фиксированным и идентичным для всех пользователей;

выбирается фиксированным и уникальным для каждого пользователя;

выбирается переменным и уникальным для каждого пользователя.
Покажите, каким образом многоуровневые очереди с обратными связями обеспечивают достижение каждой из следующих целей планирования:

оказывать предпочтение коротким заданиям;

определять характер задания как можно быстрее и соответствующим образом
планировать его выполнение.
Лекция 5
Тема: Синхронизация параллельных процессов на низком уровне.
Вопросы:
1. Параллельная обработка. Проблемы критических участков. Взаимоисключения.
2. Синхронизация параллельных процессов на низком уровне.
3. Блокировка памяти. Алгоритм Деккера. Аппаратная реализация взаимоисключения:
команда “проверка и установка” (testandset).
Параллельная обработка
Параллельными называются процессы, которые существуют одновременно. Параллельные процессы могут быть независимыми друг от друга или асинхронными. Асинхронным параллельным процессам требуется периодически синхронизироваться и взаимодействовать друг с другом.
Если определенные операции логически можно выполнять параллельно, то для указания параллелизма воспользуемся парой операторов parbegin/parend, которые будут, соответственно, определять начало и конец параллельного выполнения, как
рекомендует
Дейкстра1. Конструкция для указания параллелизма будет выглядеть следующим образом:
Parbegin
оператор_1;
оператор_2;
…
оператор_n
Parend
В качестве примера рассмотрим вычисление площади треугольника по формуле Герона в системе, предусматривающей параллельную обработку:
S=p*(p-a)*(p-b)*(p-c), где p=(a+b+c)/2
1
2
p:=(a+b+c)/2;
Parbegin
1
Dijkstra E.W. Cooperating Sequential Processes. Technological University, Eindhoven, Nitherlands,1965.
Эдсгер Дейкстра лауреат премии Тьюринга 1972 года. С 1984 года зав.кафедрой информатики в Университете
штата Техас в Остине.
25
3
x1:=p-a;
x2:=p-b;
x3:=p-c
Parend;
S:=Sqrt(p*x1*x2*x3);
Здесь три операции, входящие в конструкцию Parbegin/Parend выполняются параллельно, что дает возможность уменьшить реальное время решения задачи.
Проблемы критических участков. Взаимоисключения
При выполнении параллельных процессов может возникать проблема, когда каждый
процесс, обращающийся к разделяемым данным, исключает для всех других процессов возможность одновременного с ним обращения к этим данным - это называется взаимоисключением (mutual exclusion).
Ресурс, который допускает обслуживание только одного пользователя за один раз,
называется критическим ресурсом. Если несколько процессов хотят пользоваться критическим ресурсом в режиме разделения времени, им следует синхронизировать свои действия
таким образом, чтобы этот ресурс всегда находился в распоряжении не более чем одного их
них.
Для каждого процесса могут быть выделены участки, в которых происходит обращение к критическим ресурсам, они называются критическими участками. Рассмотрим пример, поясняющий выше сказанное.
Пример.
Пусть два процесса X и Y разделяют переменную СЧЕТ. Если оба процесса попытаются увеличить СЧЕТ на 1 одновременно, то окончательное значение этой переменной может оказаться неверным. Рассмотрим следующую последовательность событий:
 процесс X запоминает значение переменной СЧЕТ в некоторой локальной переменной
СЧЕТ_Х;
 процесс Y запоминает значение переменной СЧЕТ в некоторой локальной переменной
СЧЕТ_Y;
 процесс Х увеличивает значение СЧЕТ_Х на 1 и записывает его в СЧЕТ;
 процесс Y увеличивает значение СЧЕТ_Y на 1 и записывает его в СЧЕТ.
Заметим, что хотя каждый процесс увеличил значение СЧЕТ на 1, ее окончательное значение увеличилось только на 1, а не на 2. Чтобы избежать таких нежелательных явлений,
увеличение разделяемой переменной СЧЕТ следует рассматривать как критический участок.
Рассмотрим несколько решений проблем синхронизации критических участков.
Синхронизация параллельных процессов на низком уровне
Большинство приемов, применяемых для синхронизации процессов, тесно связаны с
аппаратными средствами. Это блокировка памяти, операция “проверка и установка” и семафоры.
Блокировка памяти
Взаимоисключения могут быть реализованы аппаратно, если сделать операции над
памятью неделимыми. То есть, если каждый из процессов пытается поместить какие-либо
значения в одну и ту же ячейку, то спор разрешается аппаратурой: если одному процессу
разрешается выполнить операцию засылки немедленно, то другому приходится ждать пока
26
первый не закончит операцию - такое разрешение спора и называется блокировкой памяти(
storage interlock).
Попытаемся решить проблему критического участка для двух процессов X и Y с помощью некоторой переменной КЛЮЧ, которая будет принимать значение true, когда процесс находится в своем критическом участке, и значение false - в противном случае. Прежде,
чем войти в критический участок, процесс X проверяет КЛЮЧ_Y другого процесса, чтобюы
убедится, что можно войти безопасно. Затем он включает свой собственный КЛЮЧ_X и
пользуется критическим участком.
var КЛЮЧ_Х, КЛЮЧ_Y : boolean;
procedure Процесс_Х;
begin
while (true) do
begin
while (КЛЮЧ_Y) do;{ожидание, пока процесс Y не выйдет из
критического участки}
КЛЮЧ_X:=true;
{Критический участок Х}
КЛЮЧ_Х:=false;{признак выхода процесса X из критического участка}
{Оставшаяся часть процесса Х}
end;
end;
procedure Процесс_Y;
begin
while (true) do
begin
while (КЛЮЧ_X) do;{ожидание пока процесс X не выйдет из
критического участка}
КЛЮЧ_Y:=true;
{Критический участок Y}
КЛЮЧ_Y:=false;{признак выхода процесса Y из критического участка}
{Оставшаяся часть процесса Y}
end;
end;
begin
КЛЮЧ_X:=false;
КЛЮЧ_Y:=false;
Parbegin
Процесс_Х;
Процесс_Y
Parend
end.
27
Каждый из процессов представляет собой бесконечный цикл с многократным вхождением в свой критический участок. Примитив взаимоисключения реализуется в каждом
процессе, как цикл while , который повторяется до тех пор, пока параллельно выполняемый
процесс не выйдет из своего критического участка.
Однако заметим, что если скорости процессов произвольные, то может возникнуть
ситуация, когда оба процесса получают возможность выполнять свои критические участки
одновременно.
Рассмотреть этот вариант самостоятельно.
Если процесс Y заканчивает выполнение своего критического участка и устанавливает в переключателе КЛЮЧ_Y значение false,,тем самым допускает процесс Х к выполнению
своего критического участка. Пусть процесс Y работает значительно быстрее процесса Х,
настолько, что прежде чем процесс Х установит свой КЛЮЧ_Х в состояние true, свидетельствующее о входе этого процесса в критический участок, процесс Y уже выполнит
оставшуюся часть процесса и, не обнаружив в переменной КЛЮЧ_Х значения true, также
получает доступ к критическому участку. Таким образом предложенный алгоритм полностью не решает проблему критического участка.
Алгоритм Деккера (Dekker’s Algorithm)
Изящную программную реализацию механизма взаимоисключения предложил голландский математик Деккер (кроме того решению этой проблемы посвящены следующие
статьи, где этот алгоритм был обобщен и для случая произвольного числа конкурирующих
из-за критического ресурса процессов2 ).
var
C1,C2,ОЧЕРЕДЬ:integer;
procedure Процесс_Х;
begin
C1:=1;
while (C2=1) do
begin
if ОЧЕРЕДЬ=2 then
begin
C1:=0;
while (ОЧЕРЕДЬ=2) do;
C1:=1;
end;
end;
{Критический участок процесса Х}
C1:=0;
ОЧЕРЕДЬ:=2;
{Оставшаяся часть процесса Х}
end;
procedure Процесс_Y;
begin
2
[Дейкстра-65] Dijkstra E.W. Solution to a Problem in Concurrent Programming Control, CACM, 8, No.9,
1965,c.569.
[Кнут-66] Knuth D. Additional Comments on a Problem in Concurrent Programming Control, CACM, 9,
No 5, 1966, c.321-322.
28
C2:=1;
while (C1=1) do
begin
if ОЧЕРЕДЬ=1 then
begin
C2:=0;
while (ОЧЕРЕДЬ=1) do;
C2:=1
end;
end;
{Критический участок процесса Y}
C2:=0;
ОЧЕРЕДЬ:=1;
{Оставшаяся часть процесса Y}
end;
Begin
C1:=0;
C2:=0;
ОЧЕРЕДЬ:=1;
Parbegin
Процесс_X;
Процесс_Y
Parend
end.
В этом решении С1=1, когда ПРОЦЕСС_Х хочет войти в свой критический участок.
С2=1, когда ПРОЦЕСС_Y хочет войти в свой критический участок, а переменная ОЧЕРЕДЬ указывает, чья очередь попытаться войти, при условии, когда оба процесса хотят выполнить свои критические участки.
Самостоятельно проверить этот алгоритм с различными относительными скоростями процессов.
Аппаратная реализация взаимоисключения: команда “проверка и установка” (testandset)
Алгоритм Деккера представляет собой программное решение проблемы
взаимоисключения. Рассмотрим вариант аппаратного решения данной проблемы. Наличие
аппаратной команды testandset, которая осуществляет чтение переменной; запись ее
значения в область сохранения и установку конкретного значения этой переменной, причем
выполняет эти действия до конца без прерывания, значительно упрощает решение проблемы
критического участка посредством блокировки памяти.
Рассмотрим выполнение команды testandset с параметрами ОБЩИЙ и ЛОКАЛЬНЫЙ. Операция читает значение параметра ОБЩИЙ и присваивает его переменной ЛОКАЛЬНЫЙ, а затем устанавливает в переменной ОБЩИЙ значение 1.
Переменная ОБЩИЙ разделяется между процессами, которые подлежат синхронизации по отношению к некоторому критическому ресурсу. У каждого процесса есть своя собственная переменная ЛОКАЛЬНЫЙ_Х и ЛОКАЛЬНЫЙ_Y.
Рассмотрим решение проблемы взаимоисключения с помощью операции testandset.
29
var ОБЩИЙ: integer;
procedure Процесс_Х;
var ЛОКАЛЬНЫЙ_Х: integer;
begin
while (true) do
begin
ЛОКАЛЬНЫЙ_Х:=1;
while (ЛОКАЛЬНЫЙ_X=1) do
testandset(ЛОКАЛЬНЫЙ_Х, ОБЩИЙ);
{Критический участок процесса Х}
ОБЩИЙ:=0;
{Оставшаяся часть процесса Х}
end;
end;
procedure Процесс_Y;
var ЛОКАЛЬНЫЙ_Y: integer;
begin
while (true) do
begin
ЛОКАЛЬНЫЙ_Y:=1;
while (ЛОКАЛЬНЫЙ_Y=1) do
testandset(ЛОКАЛЬНЫЙ_Y, ОБЩИЙ);
{Критический участок процесса Y}
ОБЩИЙ:=0;
{Оставшаяся часть процесса Y}
end;
end;
begin
ОБЩИЙ:=0;
Parbegin
Процесс_Х;
Процесс_Y
Parend;
end.
Вопросы
1. Преобразуйте следующие выражения с использованием конструкции
Parbegin/Parend для обеспечения максимального параллелизма
3*a*b + 4/(c + d) ** (e-f);
(-b + (b ** 2 - 4 *a*c) **0.5) / (2*a).
30
2. Почему утверждение о том, что при работе нескольких процессов с общей разделяемой
информацией, хранящейся в основной памяти, во избежание получения неопределенных
результатов необходимо обеспечить взаимоисключение не является корректным.
3. Проведите исчерпывающий временной анализ алгоритма Деккера.
4. Объясните, как при помощи запрещения и разрешения прерываний можно достаточно
эффективно реализовать примитивы взаимоисключения в однопроцессорной машине.
Лекция 6
Тема: Синхронизация параллельных процессов на низком
уровне (продолжение)
Вопросы:
1. Семафоры. Реализация взаимоисключения при помощи семафоров.
2. Синхронизация блокирования/возобновления процессов при помощи
семафоров.
Реализация взаимодействия в паре “производитель-потребитель” при помощи семафоров.
Дополнительный материал
Механизмы межпроцессных взаимодействий в UNIX. Семафоры.
Семафоры
Концепция использования семафоров для реализации взаимоисключений предложена
Дейкстрой3.
Семафор или общий семафор (semaphore) - это целая переменная, значение которой
можно опрашивать и менять только при помощи специальных неделимых (как команда
testandset) операций P и V.
Двоичный семафор может принимать только значения 0 или 1. Считающий семафор может
принимать целые неотрицательные значения.
Операция Р над семафором S записывается как P(S), алгоритм ее выполненения следующий:
if S>0 then S:=S-1 else <ожидать на S>
Операция V над семафором S , V(S), имеет следующий алгоритм выполнения:
if <один или несколько процессов ожидают на S>
then <разрешить одному из этих процессов продолжить работу>
else S:=S+1
Будем предполагать, что очередь процессов, ожидающих на семафоре, обслуживается
в соответствии с дисциплиной FIFO. Заметим, также, что семафоры и операции над ими могут быть реализованы как программно, так и аппаратно, как правило они реализуются в ядре.
Приведем пример алгоритма обеспечения взаимоисключения при помощи семафора.
Инициализацию семафора будем производить с помощью операции, условно обозначенной
Инициализация_S(S,1), которая устанавливает для семафора начальное значение 1 или
Иницилизация_S(S,0),
3
[Дейкстра-65] Dijkstra E.W. Cooperating Sequential Processes. Technological University, Eindhoven, Netherlands,
1965
31
-
соответственно, 0.
var S : семафор;
procedure Процесс_Х;
begin
while (true) do
begin
{Предшествующая критическому участку
часть процесса_Х}
P(S);{если в семафоре 1, то S:=S-1, иначе ожидать}
{Критический участок процесса_Х}
V(S);{если процесс ожидает на S, то разрешить работу, иначе
S:=S+1}
{Остальная часть процесса_Х}
end
end;
procedure Процесс_Y;
begin
while (true) do
begin
{Предшествующая критическому участку
часть процесса_Y}
P(S);
{вход взаимоисключения, процесс ожидает выполнения
операции V(S) процессом_Х }
{Критический участок процесса_Y}
V(S); {выход взаимоисключения}
{Остальная часть процесса_Y}
end
end;
begin
Инициализация_S(S,1);
Parbegin
Процесс_Х;
Процесс_Y;
Parend
end.
Синхронизация блокирования/возобновления процессов при помощи
семафоров
Ранее мы рассмотрели реализуемые в ядре ОС механизмы для переключения процессов из состояния в состояние. Отмечалось, что процесс, выдавший запрос на операцию ввода/вывода, тем самым добровольно блокирует себя в ожидании завершения данной операции. Напомним также, что заблокированный процесс - это не тот, который находится в состоянии активного ожидания. Он просто освобождает процессор и “засыпает” до того момента, пока не будет активизирован ядром и переведен в список готовых к выполнению процессов. Заблокированный процесс может быть активизирован каким-либо другим процессом
- такое взаимодействие может служить примером функций, относящихся к протоколу блокирования/возобновления.
32
Рассмотрим алгоритм, показывающий каким образом при помощи семафора можно
реализовать простой механизм синхронизации (блокирования/возобновления) для двух процессов.
Программное обеспечение
Программное обеспечение - это комплекс программных средств, включающий системные программы, пакеты прикладных и пользовательских программ.
Раздел для самостоятельной проработки










Дайте определения следующим понятиям:
Прикладное и системное программное обеспечение
Процедурно-ориентированные и проблемно-ориентированные языки
Машинный язык
Ассемблеры
Языки высокого уровня
Трансляторы, компиляторы и интерпретаторы
Системы управления вводом-выводом (IOCS)
Спулинг
Микропрограммирование
Эмуляция
Вопросы
1. Укажите различия между машинным языком, ассемблером и языком высокого уровня.
2. Укажите различия между проблемно-ориентированным и процедурно-ориентированным
языком.
3. Чем интерпретаторы отличаются от компиляторов?
4. Что такое микропрограммирование?
5. Что такое эмуляция?
6. Определите назначение системы управления вводом-выводом.
7. Определите понятие - спулинг.
Лекция 7
Тема: Синхронизация параллельных процессов на высоком
уровне
Вопросы:
1. Мониторы. Команды Wait() и Signal(). Монитор, реализующий двоичный семафор.
2. Решение задачи передачи данных одного процесса другому при помощи монитора (случай кольцевого буфера).
3. Решение задачи передачи данных одного процесса другому при помощи монитора (случай информационной базы).
4. Рандеву в языке Ада. - Самостоятельно.
5. Решение задачи передачи данных одного процесса другому с помощью задач на языке
Ада (случай кольцевого буфера). - Самостоятельно.
6. Решение задачи “обедающие философы”. - Самостоятельно.
33
Мониторы
Рассмотренные нами в предыдущей главе средства реализации примитивов взаимоисключения элементарны, а решение с их помощью достаточно сложных проблем параллельных вычислений затруднительно. Средства синхронизации параллельных процессов более
высокого уровня были первоначально предложены в работах Дейкстра и Хоара4.
Монитор (monitor) - это набор процедур и информационных структур, которым процессы пользуются в режиме разделения, причем в каждый момент им может пользоваться
только один процесс. Т.е. монитор можно представить себе как комнату, от которой есть
только один ключ, причем этим ключем процессы могут воспользоваться только по очереди.
Вход в монитор находится под жестким контролем - здесь осуществляется взаимоисключение процессов, так что в каждый момент времени только одному процессу разрешается войти в монитор. Процессам, которые хотят войти в монитор, когда он уже занят, приходится ждать, причем режимом ожидания управляет сам монитор.
Внутренние данные монитора могут быть либо глобальными, относящимися ко всем
процедурам монитора, либо локальными, относящимися только к одной процедуре монитора. Ко всем этим данным можно обращаться только изнутри монитора; процессы, находящиеся вне монитора просто не могут получить доступа к данным монитора. Принимая такое
структурное решение, значительно упрощающее разработку программных систем повышенной надежности, говорят, что информация спрятана (information hiding).
Команды Wait () и Signal ().
Если процесс обращается к некоторой процедуре монитора, но соответствующий ресурс занят, эта процедура выдает команду ожидания Wait. Когда монитор блокирует процесс с помощью команды Wait, он должен указать условие, при котором процесс может возобновить свою работу. Когда это условие будет выполнено, монитор выработает команду
оповещения Signal, объявляющую о том, что данный ресурс освободился. Если какие-либо
процессы ожидают выполнения этого условия, то один из них пробуждается и получает разрешение продолжить работу. Учитывая выше сказанное, команды ожидания и оповещения
могут быть записаны следующим образом:
Wait(переменная-условие)
Signal(переменная-условие)
Переменная-условие (condition variable) вводится для каждой причины, по которой
процесс может быть переведен в состояние ожидания. Заметим, что эти переменные совершеннно не похожи на обычные переменные, с которыми мы привыкли иметь дело. Когда
определяется переменная-условие, заводится очередь. Процесс, выдавший команду ожидания, включается в эту очередь, а процесс, выдавший команду сигнализации, тем самым позволяет ожидающему процессу выйти из очереди и войти в монитор (обслуживание очереди
может, например, осуществляться с использованием дисциплины FIFO).
Монитор, реализующий двоичный семафор.
4
Dijkstra E.W. Hierarchical Ordering of Sequential Processes. Acta Informatica, Vol.1,1971, pp.115-138
Hoare C.A.R. Monitors: An Operating System Structuring Concept, CACM, Vol.17,No10,1974, pp.549-557
Чарльз Энтони Ричард Хоар начал карьеру в 1960 году в Англии,. С 1977 года профессор вычислительной математики Оксфордского университета, лауреат премии Тьюринга 1980 года.
34
Рассмотрим монитор, с помощью которого реализуется алгоритм выполнения операций Р и V над семафором S.
Этот алгоритм известен, как алгоритм Хоара5 .
В мониторе содержится одна или несколько допускающих параллельное использование процедур со статическими глобальными информационными структурами. При первом
обращении монитор присваивает своим переменным из этих структур начальные значения.
При каждом последующем обращении, используются те значения переменных, которые
остались от предыдущего обращения. Следует подчеркнуть, что монитор - это пассивный
объект, а не процесс, монитор оживает только тогда, когда какой-либо процесс допускается
воспользоваться его услугами.
Monitor Семафор;
S : integer;
S_POSITIVE: condition; {переменная-условие, которая указывает, когда
заблокированный процесс может продолжать работу}
procedure P;
begin
if S<1 then Wait(S_POSITIVE);{ожидание выполнения условия}
S:=S-1
end;
procedure V;
begin
S:=S+1;
if S=1 then Signal(S_POSITIVE);{сигнал о выполнении условия}
end;
begin
S:=1
end;
Рассмотрим, каким образом, при помощи приведенного монитора Хоара можно организовать взаимоисключение двух процессов. Здесь вызовы процедур P или V монитора будем указывать как Семафор.Р или Семафор.V.
begin
Parbegin
Процесс_Х:
begin
While (true) do
begin
Call (Cемафор.Р);
{Критический участок Процесса_Х};
Call(Семафор.V);
{Оставшиеся операторы Процесса_Х}
end
end;
Процесс_Y;
begin
While (true) do
5
Hoare C.A.R. Monitors: An Operating System Structuring Concept, CACM, Vol.17,No10,1974, pp.549-557
35
begin
Call (Cемафор.Р);
{Критический участок Процесс_Y};
Call(Семафор.V);
{Оставшиеся операторы Процесса_Y}
end
end
Parend
end.
Семантика монитора гарантирует, что если хотя бы один процесс ожидает выполнения условия, то никакой другой обратившийся процесс не может вмешаться между сигналом
о выполнении этого условия и продолжением ровно одного из ожидающих процессов. Хотя
по сравнению с семафорами, мониторы не представляют собой более мощного инструмента
синхронизации, у них есть некоторые преимущества. Во-первых, доступ к разделяемым переменным всегда ограничен телом монитора, что автоматически исключает критические
участки. Во-вторых, мониторы очень гибки, в форме мониторов можно реализовать не только рассмотренный нами семафор, но и многие другие синхронизирующие операции, о чем и
пойдет речь далее.
Решение задачи передачи данных одного процесса другому при помощи
монитора (случай кольцевого буфера)
Рассмотрим в этом разделе так называемый кольцевой буфер (ring buffer) и покажем,
каким образом он может использоваться в случаях, когда процесс-производитель должен передавать данные процессу-потребителю.
Напомним, что реализация взаимодействия в паре “производительпотребитель” при помощи семафоров рассматривалась нами ранее, теперь же покажем каким
образом для решения этой проблемы можно воспользоваться монитором. В качестве кольцевого буфера, куда процесс-производитель помещает данные, используем массив BUFFER
заданного размера N.
Поскольку размер буфера ограничен, процесс-производитель в какой-то момент может столкнуться с тем, что все элементы массива окажутся занятыми - в этом случае ему
необходимо подождать, пока процесс-потребитель не прочитает и тем самым не освободит
хотя бы один элемент массива.
Аналогично может возникнуть ситуация, когда процесс-потребитель хотел бы прочитать данные, а массив оказывается пустым - в этом случае процесс-потребитель должен
ждать, пока процесс-производитель не поместит данные в массив.
Рассмотрим монитор Кольцевой_буфер, базовая версия которого предложена в работе 6 .
monitor Кольцевой_буфер;
var BUFFER : array [0..N-1]
of Тип_данных;
Tpos : 0..N;
{текущая позиция в буфере}
Zpos, Opos : 0..N-1; {соответственно, очередная заполняемая и
очередная освобождаемая позиции в буфере}
BUFNp, BUFNz : condition; { переменные-условия,
BUFNz- буфер незаполнен, является признаком, которого ждет производитель, если обнаружит, что буфер целиком заполнен, он устанавли6
Hoare C.A.R. Monitors: An Operating System Structuring Concept, CACM, Vol.17,No10,1974, pp.549-557
36
вается по сигналу потребителя о том, что тот только что освободил
позицию;
BUFNp- буфер непуст, является признаком, которого ждет потребитель, если обнаружит, что буфер пуст, этот признак устанавливается по сигналу производителя о том, что он только что поместил данные в некоторую позицию буфера }
Procedure Заполнить_позицию (Данные:Тип данных) ;
begin
if Tpos = N then Wait(BUFNz){ожидание сигнала- буфер незаполнен};
BUFFER[Zpos] := Данные;
Tpos:=Tpos+1;
Zpos:=(Zpos +1) mod N;
Signal(BUFNp){сигнал, оповещающий, о том, что буфер непуст}
end;
Procedure Ocвободить_позицию ( var Данные: Тип данных) ;
begin
if Tpos=0 then Wait(BUFNp);{ожидание сигнала- буфер непуст}
Данные := BUFFER[Opos];
Tpos:=Tpos-1;
Opos:= (Opos+1) mod N;
Signal(BUFNz){сигнал, оповещающий о том, что буфер незаполнен}
end;
begin
Tpos:=0;
Opos:=0;
Zpos:=0
end;
Механизам кольцевого буфера весьма удобен для реализации управления спулингом
(вводом-выводом с буферизацией) в ОС. Однако следует учитывать, что кольцевой буфер
должен иметь достаточно большой размер, чтобы синхронизировать скорости работы спулера (процесса-производителя данных) и деспулера (процесса-потребителя данных).
Решение задачи передачи данных одного процесса другому при помощи
монитора (случай информационной базы)
В вычислительных системах обычно имеются “процессы-читатели” и “процессыписатели”(readers and writers) , если первые читают данные из информационной базы, то
вторые, записывают данные в информационные базы. Заметим, что процессы-читатели не
изменяют содержимого базы и могут обращаться к ней одновременно. А процесс-писатель
может изменять данные, поэтому он должен иметь монопольный, исключительный доступ к
базе данных.
Эта задача была впервые сформулирована и решена в работе Куртуа, Хейманса и
Парнаса7. Решение этой задачи с использованием монитора впервые было предложено в работе Хоара8.
7
Courtois P.H., Heymans F., Parnas D.L. ConcurrentControl with Readers and Writers. CACM, Vol 14, No 10, 1971,
pp. 667-668
37
monitor Читатели_Писатели;
var
READERS : integer;{переменная указывает количество активных
читателей, когда READERS = 0, ожидающий процесс-писатель получает возможность начать работу}
SmbWRITE : boolean;{somebody write - когда кто-то пишет эта
переменная имеет истинное значение}
PermREAD,
PermWRITE : condition; {permission read/write - пока не появится истинное значение условия читать разрешается,PermREAD - процессчитатель не может продолжить свое выполнение; пока не появится
истинное значение условия писать разрешается, Permwrite - процессписатель не может продолжить свое выполнение}
Procedure Начало_Чтения;
begin
if (SmbWRITE) or (Очередь(PermWRITE))
then Wait(PermREAD);{ожидание сигнала - читать разрешается}
READERS:=READEARS+1;
Signal(PermREAD);{сигнал, оповещающий о возможности чтения}
end;
Procedure Конец_Чтения;
begin
READERS:=READERS-1;
If READERS=0 then Signal(PermWRITE);{сигнал, оповещающий о
возможности записи}
end;
Procedure Начало_Записи;
begin
if (READERS>0) or (SmbWRITE)
then Wait(PermWRITE);{ожидание сигнала - писать разрешается}
SmbWRITE:=true
end;
Procedure Конец_Записи;
begin
SmbWRITE:=false;
if Очередь(PermREAD)
then Signal(PermREAD) {сигнал, оповещающий о возможности чтения}
else Signal(PermWRITE);{сигнал, оповещающий и возможности записи}
end;
begin
8
Hoare C.A.R. Monitors: An Operating System Structuring Concept, CACM, Vol.17,No10,1974, pp.549-557
38
READERS:=0;
SmbWRITE:=false
end;
Когда процессу-читателю нужно произвести чтение, он вызывает процедуру монитора
под названием Начало_Чтения, а после завершения чтения - процедуру Конец_Чтения.
После входа в процедуру Начало_Чтения новый процесс-читатель сможет продолжить
свою работу, если нет процесса-писателя, производящего в данный момент запись или ожидающего очереди на запись. Второе из этих условий необходимо для того, чтобы предотвратить возможность бесконечного откладывания ожидающих процессов-писателей. Отметим,
что процедура Начало_Чтения завершается выдачей сигнала разрешающего чтение, PermREAD, чтобы следующий, ожидающий в очереди читатель мог начать чтение. Причем во
время выполнения такой цепочки действий все вновь приходящие процессы включаются в
очередь ожидания.
Когда процесс завершает операцию чтения, он вызывает процедуру Конец_Чтения,
которая уменьшает число читателей на 1 и, в конце концов количество процессов-читателей
становится равным 0; в этот момент вырабатывается сигнал разрешающий запись, PermWRITE, и следующий процесс-писатель получает возможность продолжать работу.
Когда процессу-писателю нужно произвести запись, он вызывает процедуру Начало_Записи. Поскольку процесс-писатель должен иметь монопольный доступ к информации,
то если в настоящий момент есть уже работающие процессы-читатели или какой-либо активизированный процесс-писатель, данному процессу-писателю придется ждать выдачи сигнала PermWRITE. Когда же писатель получает возможность продолжить работу, переменная
SmbWRITE:=true.
Когда процесс-писатель заканчивает свою работу, он устанавливает SmbWRITE:=false, тем самым, открывая вход в монитор для других процессов.
Писатель, завершивший работу, проверяет, в первую очередь, нет ли ожидающего
читателя - если есть, он выдает сигнал PermREAD, так что ожидающий читатель получает
возможность продолжить работу. Если читателей нет, то выдается сигнал PermWRITE и
получает возможность продолжить работу ожидающий процесс-писатель.
Рассмотренный нами монитор может быть использован как средство управления доступом для целой базы данных, для некоторого подмножества базы данных, содержащего
фиксированное число записей, и даже для отдельно взятой записи.
Вопросы
1. Укажите сходства и различия в применении мониторов и операций над семафорами.
2. В чем отличия обычных переменных от переменных-условий?
3. Укажите факторы, которые должны определять решение разработчика о том, сколько позиций будет в массиве, представляющем кольцевой буфер.
4. Рассмотрим простую операционную систему, состоящую из главного процесса М, работающего с ЦП; читающего процесса R, который работает с читающим каналом и
печатающего процесса Р, который работает с печатающим каналом. Запрограммируйте эти три процесса так, чтобы процесс R читал данные и передавал их процессу М,
который обрабатывал бы эти данные и передавал процессу Р для выдачи на печать.
Запрограммируйте эти процессы для случаев:
 имеются два буферных пула, содержащие по К буферов;
 имеется один буферный пул, содержащий К буферов.
39
Лекция 8
Тема: Тупики
Вопросы:
1. Тупики. Необходимые условия возникновения тупиков.
2. Стратегии предотвращения тупиков.
3. Алгоритм банкира.
4. Обнаружение тупиков. Графы распределения ресурсов.
5. Восстановление после тупиков.
6. Cети Петри. Моделирование взаимного исключения на сети Петри.
(самостоятельно [Цикритзис77] с.290-294)
7. Модель Холта для проблемы тупика.
(самостоятельно [Цикритзис77] с.299-302)

Д., Бернстайн Ф., Операционные системы, М."Мир", 1977.
Тупики
Тупики и близкая к ним проблема бесконечного откладывания - важные факторы, которые должны учитывать разработчики ОС.
Tупик (deadlock) - это такая ситуация в мультипрограммной системе, когда процесс
ожидает некоторого события, которое никогда не произойдет. Системная тупиковая ситуация, или “зависание” системы - это ситуация, когда один или более процессов оказываются в
состоянии тупика.
Рассмотрим простой пример тупика при распределении ресурсов.
В ОС тупики в большинстве случаев возникают при конкуренции процессов за выделение
ресурсов последовательного доступа, которые в каждый момент времени отводятся только
одному пользователю.
На графе распределения ресурсов показана тупиковая ситуация, в которой каждый
процесс удерживает ресурс, запрашиваемый другим процессом, причем ни один из процессов не хочет освободить принадлежащий ему ресурс.
Ресурс 1 выделен
процессу_Х
Ресурс 1
Процесс_Х
Процесс_Y запрашивает
ресурс 1
Процесс_Y
Процесс_Х запрашивает
ресурс 2
Ресурс 2
Ресурс 2 выделен
процессу_ Y
Рис. 5 Граф распределения ресурсов
Такое состояние кругового ожидания характерно для систем в тупиковом состоянии.
Системы спулинга (ввода-вывода с буферизацией) часто оказываются подвержены
тупикам (самостоятельно привести примеры таких ситуаций).
Близкая к проблеме возникновения тупиков - проблема бесконечного откладывания,
когда предоставление запрашиваемого ресурса некоторому процессу будет откладываться на
40







неопределенный срок, в то время, как система будет уделять внимание другим процессам.
Напомним, что при разработке ОС необходимо предусматривать справедливое, а также эффективное управление процессами, находящимися в состоянии ожидания. В некоторых системах бесконечное откладывание предотвращается благодаря тому, что приоритет процесса
увеличивается по мере того, как он ожидает выделения нужного ему ресурса. Это называется
старением процеса.
Необходимые условия возникновения тупиков
Необходимые условия наличия тупика могут быть сформулированы следующим обра10
зом .
Условие взаимоисключения - когда процессы требуют предоставления им права
монопольного управления ресурсами, которые им выделяются.
Условие ожидания ресурсов - когда процессы удерживают за собой ресурсы, уже
выделенные им, ожидая в то же время выделения дополнительных ресурсов.
Условие неперераспределяемости - когда ресурсы нельзя отобрать у процессов,
удерживающих их, пока эти ресурсы не будут использованы для завершения работы.
Условие кругового ожидания - когда существует кольцевая цепь процессов, в
которой каждый процесс удерживает за собой один или более ресурсов, требующихся следующему процессу.
Борьба с возникновением тупиков может вестись по четырем основным направлением:
предотвращение тупиков; обход тупиков; обнаружение тупиков; восстановление после тупиков.
Стратегии предотвращения тупиков
При предотвращении тупиков целью является обеспечение условий, исключающих
возможность возникновения тупиковых ситуаций. Часто такой подход ведет к нерациональному использованию ресурсов, но, тем не менее, достаточно часто используется разработчиками ОС.
Хавендер11 в своей работе показал, что возникновение тупика невозможно, если
нарушено хотя бы одно из указанных выше четырех необходимых условий, и предложил
следующую стратегию предотвращения тупиков.
Каждый процесс должен запрашивать все требуемые ему ресурсы сразу, причем
не может начать выполнение до тех пор, пока все они не будут ему предоставлены. Заметим,
что такой стратегический принцип ведет в ряде случаев к снижению эффективности системы.
Если процесс, удерживающий определенные ресурсы, получает отказ в удовлетворении запроса на дополнительные ресурсы, этот процесс должен освободить свои первоначальные ресурсы и при необходимости запросить их снова вместе с дополнительными ресурсами. Этот принцип предотвращает возникновение условия неперераспределяемости.
Одним из серьезных недостатков этой стратегии является возможность бесконечного откладывания.
Введение линейной упорядоченности по типам ресурсов для всех процессов другими словами, если процессу выделены ресурсы данного типа, в дальнейшем он может
запросить только ресурсы более далеких по порядку типов. Этот принцип Хавендера исключает круговое ожидание, однако, отрицательно сказывается на возможности пользователя
свободно и легко писать прикладные программы, т.е. приводит к нарушению дружественности ОС.
10
11
Coffman E.G., Elphick M., Shoshani A. System Deadlock. Computing Surveys, Vol 3, No 2, 1971, pp.67-78.
Havender J.W. Avoiding Deadlick in Multitasking System. IBM Systems Journal. Vol 7, No 2, 1968, hh.74-84
41
Алгоритм банкира
Если даже необходимые условия возникновения тупиков не нарушены, то все же
можно избежать тупиковой ситуации, если рационально распределять ресурсы. Наиболее известным алгоритмом обхода тупиковых ситуаций является алгоритм банкира, предложенный Дейкстрой12 , этот алгоритм как бы имитирует действия банкира, который, располагая
определенным капиталом, выдает ссуды и принимает платежи.
Рассмотрим систему, в которой процессы конкурируют из-за устройств вывода информации. Каждый процесс, до того как он получит возможность запрашивать доступ к
устройству вывода, должен указать максимальное число устройств, которое ему может понадобиться одновременно. Алгоритм должен обеспечивать реализацию такой последовательности выполнения процессов, при которой не возникает тупиков, т.е. каждый процесс может
быть завершен.
Пусть система состоит из трех процессов, которые пронумерованы I=1..N, где N=3 и десяти устройств вывода, КОЛ=10.
Каждому процессу соответствует:
 максимальная потребность в устройствах, МАКС[I], где I номер процесса;
 количество устройств, выделенных процессу в данный момент ВЫД[I];
 оставшееся количество, которое процесс может еще потребовать ОСТ[I].
В таблицах 1,2 рассмотрены два типичных состояния описанной системы. Причем, в
первой таблице приведено безопасное состояние системы, а в таблице 2 - опасное состояние
системы, т.е. такое, когда в случае некоторой неблагоприятной последовательности событий
система может зайти в тупик. Например, допустим, что процесс 3 запрашивает еще два
устройства. Если запрос процесса 3 будет удовлетворен, и если все остальные процессы запросят полагающиеся им остатки, то система попадет в тупик. Поэтому удовлетворять
запрос процесса 3, в этом случае, опасно.
Таблица 1
Номер процесса, I
Максимальная
Выделено ВЫД[I]
Остаток ОСТ[I]
потребность,
МАКС[I]
1
4
2
2
2
6
3
3
3
8
2
6
Таблица 2
Номер процесса, I
1
2
3
Максимальная
потребность,
МАКС[I]
4
6
8
Выделено ВЫД[I]
Остаток ОСТ[I]
2
3
4
2
3
4
Алгоритм, предложенный Дейкстрой - алгоритм банкира как раз и предназначен для
выяснения ведет ли удовлетворение некоторого запроса к опасному состоянию. Заметим, что
новое состояние безопасно тогда и только тогда, когда каждый процесс все же может завер12
Dijkstra E.W. Cooperating Sequential Processes. Technological University, Eindhoven, Nitherlands,1965.
42
шиться (обозначим это таким образом: МОЖЕТ_НЕ_ЗАВЕРШИТЬСЯ[I]=false для каждого I-го процесса).
const КОЛ=10;N=3{общее количество устройств вывода и процессов,
соответственно}
var
I : 1..N;{текущий номер процесса}
МАКС, ВЫД, ОСТ : array [1..N] of integer;{ соответственно,
максимальное,
выделенное,
оставшееся
количество
устройств, определенное каждому процессу в текущий момент времени, }
СВОБ : 1..N;{общее количество свободных устройств в текущий
момент времени}
ПРИЗ : boolean;
МОЖЕТ_НЕ_ЗАВЕРШИТЬСЯ : array [1..N] of boolean;
. . .
{здесь мы не рассматриваем процесс заполнения массивов МАКС и ВЫД в каждый момент
времени, согласно данным, например таб. 1,2}
begin
СВОБ:=КОЛ;
for I:=1 to N do
begin
СВОБ:= СВОБ-ВЫД[I];
МОЖЕТ_НЕ_ЗАВЕРШИТЬСЯ[I]:=true;{в начале работы неизвестно может ли
завершиться каждый процесс, поэтому начальное значение этого признака устанавливаем
true }
ОСТ[I]:=МАКС[I] - ВЫД[I]
{расчет оставшихся устройств для
каждого процесса}
end;
ПРИЗ:=true;{признак завершения цикла проверок}
while (ПРИЗ) do
begin
ПРИЗ:=false;
for I:=1 to N do
begin
if (МОЖЕТ_НЕ_ЗАВЕРШИТЬСЯ[I]) and (ОСТ[I]<=CВОБ) then
begin
МОЖЕТ_НЕ_ЗАВЕРШИТЬСЯ[I]:=false;
СВОБ:=СВОБ+ВЫД[I];
ПРИЗ:=true
end
end
end
end;
Каждый раз, когда какой-то остаток, ОСТ[I], может быть выделен процессу из числа
свободных устройств, предполагается, что соответствующий процесс работает до заверше-
43
ния, а затем его устройства освобождаются. Если, в конце концов, все устройства освободятся, значит все процессы могут завершиться и система находится в безопасном состоянии.
Хотя алгоритм банкира достаточно прост, его реализация может обойтись довольно
дорого, так как обращаться к нему нужно каждый раз, когда очередной процесс запрашивает
устройство. Кроме того, он имеет ряд существенных недостатков:
- исходит из фиксированного числа распределяемых ресурсов, а на практике оно не
всегда бывает фиксировано;
- требует, чтобы число пользователей оставалось постоянным, что не является реалистичным для мультипрограммных систем;
- требует, чтобы процессы гарантированно “платили долги”, т.е. возвращали выделенные им ресурсы в течение некоторого конечного времени, что также затруднительно в реальных условиях;
- требует, чтобы пользователи заранее указывали свои максимальные потребности в
ресурсах, что усложняется по мере того, как распределение ресурсов становится
все более динамичным, а системы более “дружественны” по отношению к пользователю (зачастую пользователь вообще не имеет представления о том, какие ресурсы ему потребуются).
Обнаружение тупиков. Графы распределения ресурсов
Обнаружение тупика - это установление факта, что возникла тупиковая ситуация, и
определение процессов и ресурсов, вовлеченных в эту тупиковую ситуацию. Алгоритмы обнаружения тупиков, как правило, применяются в системах, где выполняются первые три необходимых условия возникновения тупиков, и определяют, не создался ли режим кругового
ожидания.
Для обнаружения тупиков распределение ресурсов и запросы процессов изображаются в виде направленного графа. Квадраты обозначают процессы, большие круги классы идентичных ресурсов, а малые - количество идентичных ресурсов каждого класса.
P1
R1
Процесс P1 запрашивает один из ресурсов R1
R2
P2
Ресурс R2 выделен процессу Р2
P3
R3
P4
Процесс Р3 запрашивает ресурс R3, который выделен
процессу P4
Рис.6 Граф запросов и распределения ресурсов
Ранее мы привели на рис.5 вариант “кругового ожидания”, типичного для системы в
состоянии тупика.
Графы запросов и распределения ресурсов динамично меняются по мере того, как
процессы запрашивают ресурсы и получают их в свое распоряжение, а по истечении некоторого времени возвращают системе.
44
Одним из способов обнаружения тупиков, является приведение, или редукция графа это позволяет определить процессы, которые могут завершиться, и процессы, которые будут
оставаться в тупиковой ситуации.
Редукция графа на конкретный процесс изображается исключением стрелок, идущих
к процессу от ресурсов и стрелок к ресурсам этого процесса, такая редукция эквивалентна
такой ситуации, когда данный процесс завершился и возвратил ресурсы системе. Если граф
можно редуцировать на все процессы, значит тупиковой ситуации нет, а если этого сделать
нельзя, то все “нередуцируемые” процессы образуют набор процессов, вовлеченных в тупиковую ситуацию. Заметим, что порядок, в котором осуществляется редукция графа, не имеет
значение.
P2
R1
R1
А)
P2
Б)
P3
P1
P3
R2
P1
R2
Редуцирование на процесс Р3
P2
R1
R1
В)
Г)
P3
P1
P2
P3
R2
Редуцирование на процесс Р1
P1
R2
Редуцирование на процесс Р2
Рис.7 Редукция графа
На рис.7 показана ситуация, в которой для конкретного набора процессов тупиковой
ситуации нет. Если же мы попытаемся редуцировать граф, приведенный на рис.5, то легко
обнаружим, что система находится в тупиковой ситуации.
Самостоятельно привести примеры нередуцируемых графов (минимальное количество процессов 4, минимальное количество классов идентичных ресурсов 3 по два идентичных ресурса в каждом классе}.
Восстановление после тупиков
Систему, находящуюся в тупике, необходимо вывести из него, для чего требуется
нарушить одно или несколько необходимых условий его существования. Очевидно, что в
этом случае один или несколько процессов потеряют, частично или полностью, проделанную
ими работу.
45
Восстановление после тупика может выполняться путем принудительного вывода одного или нескольких процессов из системы, чтобы можно было использовать их ресурсы.
Целесообразным способом восстановления после тупиков является эффективный механизм приостановки/возобновления процессов, что позволяет процессы кратковременно переводить в состояние ожидания, а затем активизировать ожидающие процессы без потери
результатов работы. Заметим, что средства рестарта системы с контрольной точки, реализованные во многих системах, обеспечивают приостановку/возобновление с потерей результата после последней контрольной точки.
Отметим, что тупики могут приводить к катастрофическим последствиям в системах
реального времени, поэтому в таких системах риски возникновения тупиковых ситуаций
должны быть максимально устранены.
Вопросы
Приведите пример тупика с участием всего лишь одного процесса.
Приведите пример тупика с участием трех процессов и трех ресурсов.
Сформулируйте четыре необходимых условия существования тупика.
Чтобы условие “ожидание дополнительных ресурсов” было нарушено, по методу Хавендера процессы должны запрашивать сразу все ресурсы, которые им понадобятся. Т.е
система предоставляет процессам ресурсы по принципу “все или ничего”. Укажите достоинства и недостатки такого способа предотвращения тупиков.
5. Предложенное Хавендером нарушение условия “неперераспределяемости ресурсов” не
стало популярным. Укажите недостатки такого метода для предотвращения тупиков.
6. В контексте алгоритма банкира определите и обоснуйте, является ли каждое из приведенных состояний опасным или безопасным с точки зрения возникновения тупиков, если
общее количество выделенных ресурсов в обоих случаях равно 9.
1.
2.
3.
4.
Лекция 9
Тема: Управление памятью.
Вопросы:
1. Иерархия памяти. Именующая функция и функция памяти. Эволюция видов
организации памяти.
2. Особенности страничной и сегментной организации памяти.
3. Комбинированная сегментно-страничная организация.
Иерархия памяти
Организация оперативной (основной) памяти компьютера - один из важнейших факторов, определяющих построение ОС. Под организацией памяти понимают, каким образом
представляется и используется оперативная память. Будет ли размещаться в памяти только
одна программа пользователя или несколько программ одновременно. При одновременном
размещении нескольких программ - предоставляется ли им одинаковый объем памяти, или
память разбивается на несколько разделов различных размеров. Предусматривается жесткое
разбиение памяти на разделы, или динамическое, позволяющее быстро реагировать на изменение потребностей пользователей в ресурсах памяти. Требуется ли размещение выполняемых пользовательских программ в конкретном разделе, или предусмотрено размещение программ в любых подходящих для них разделах. Должна ли программа размещаться в одном
непрерывном блоке ячеек памяти, либо допустима возможность разбиения программ на отдельные блоки, размещаемые в любых свободных участках оперативной памяти.
46
Рассмотрим иерархическую организацию памяти, рис. 8.
Время доступа к памяти
уменьшается
Кэш-память
Скорость доступа к памяти
возрастает
Стоимость памяти в расчете
на бит растет
Оперативная
память
Емкость памяти уменьшается
Внешняя
память
Рис.8 Иерархическая организация памяти
Чтобы программа могла выполняться, а к данным возможно обращение, они должны
размещаться в оперативной памяти. Очевидно, что программы и данные, которые в данный
момент не нужны, можно хранить во внешней памяти, а затем переписывать в оперативную
по мере надобности. Кэш-память вносит в систему еще один уровень высокоскоростных обменов, сюда могут передаваться программы и данные для непосредственного использования
ЦП, что обеспечивает значительный выигрыш во времени выполнения.
Система с несколькими уровнями иерархии памяти должна обеспечивать
достаточно высокую интенсивность челночных обменов программами и данными между
устройствами памяти различных уровней.
Функции для управления памятью
Управление памятью можно представлять, как отображение информации в память посредством трех функций13 .
 Именующей функции f1, однозначно отображающей данное пользователем имя в идентификатор информации, к которой это имя относится.
 Функции памяти f2, отображающей однозначно определенные идентификаторы в истинные адреса памяти, в которых они находятся.
 Функции содержимого f3 ,отображающей каждый адрес памяти в значение, которое по
этому адресу находится.
Имена, заданные
пользователем
f1
Однозначные
идентификаторы
f2
Ячейки
памяти
f3
Значения
Результат каждого из этих трех отображений зависит от времени. Это значит, что он
может меняться в продолжение всего времени обработки задания системой, Например,
результат отображения f1 не устанавливается до тех пор, пока задание не будет связано с
системными модулями и файлами, которые в нем упоминаются. Результат отображения
[Деннинг1971] Denning P.J. … An Undergraduate Course on Operating System Principls, Cosine Committee on
Education if the Nat.Acad. jf Engrng., Washington, D.C. - Отчет, представляющий собой полный курс пол операционным системам, который лег в основу построения книги [Цикритзис 77]
13
47
f2 может быть зафиксирован после загрузки задания. Однако при некоторых стратегиях
распределения памяти отображение f2 меняется в течение всего времени, пока задание
находится в оперативной памяти. Ясно, что результат отображения f3 меняется каждый
раз, когда выполняется команда записи в память.
Действие, состоящее в закреплении результатов одного из упомянутых отображений,
называется привязкой. Время, когда происходит привязка отображения, называется моментом привязки. отображения. Привязка может происходить во время программирования задания или во время обработки задания операционной системой, например, во время
компиляции. Иногда привязка отображения происходит так часто, что естественнее считать, что привязки вообще не происходит, например, для функции содержимого.
Если функцию содержимого определяет пользователь, то функцию памяти и именующую функцию определяет ОС, а избранные изготовителем ОС моменты привязки являются важными ее характеристиками. Так ранняя привязка реализуется значительно
проще, но, с другой стороны, для достижения большей гибкости системы, желательно,
чтобы привязка происходила достаточно поздно, так как это дает возможность ОС перемещать задание в памяти, добиваясь ее максимальной загруженности.
Эволюция видов организации памяти
Эволюция организации памяти осуществлялась от систем реальной памяти, выделяемой в полное распоряжение одного пользователя, до систем виртуальной памяти, сочетающих методы страничной и сегментной организации.
Реальная память. Однопользовательские системы, когда программа должна занимать один
сплошной блок ячеек памяти использовались в ОС первого поколения.
Распределение памяти с выделением непрерывного
Операционная система
сегмента одному пользователю.
Размер программ, очевидно ограничивается емкостью
имеющейся оперативной памяти, однако существует
Программа
возможность выполнения программ, превы-
пользователя
размеру ОП, благодаря использованию, так
шающих по
называемых,
оверлейных сегментов. Использование оверлейных
сегментов дает возможность размещать в ОП
не всю программу, а только часть, периодически
подкачивая
Свободно
ли.
48
и откачивая во внешнюю память отдельные моду-
Операционная система
Реализация оверлейной структуры
Часть программы
пользователя, находящаяся
в ОП в течение всего
времени выполнения
Модуль
инициализации
Модуль
обработки
Модуль
вывода
Оверлейная область
Мультипрограммные системы с реальной памятью.
Мультипрограммирование с фиксированными разделами характерно для ОС второго поколения, когда основная память разбивается на ряд разделов фиксированной длины, и в каждом
разделе размещается одно задание, а ЦП переключается с задания на задание, создавая иллюзию одновременного их выполнения.
Очередь заданий для раздела 1
Операционная система
X1
Раздел 1
Y1
Z1
Очередь заданий для раздела 2
Раздел 2
X2
Y2
Z2
Рис 9. Мультипрограммирование с фиксированными разделами, с трансляцией и загрузкой в
абсолютных адресах
Очередь заданий
X
Y
Z
Операционная система
Раздел 1
Задания могут перемещаться в любой
свободный раздел, размер которого это допускает
Раздел 2
49
Рис 10. Мультипрограммирование с фиксированными разделами, с трансляцией и загрузкой
перемещаемых модулей
Мультипрограммирование с переменными разделами - если при размещении заданий не
нужно соблюдать никаких фиксированных границ - напротив, заданиям предоставлять
столько памяти, сколько необходимо.
Задание Х 40К
Операционная система
Задание Y 60K
Задание Х 40К
Задание Y 60K
Свободно
Рис 11. Начальное распределение разделов при мультипрограммировании с переменными
разделами
Однако и такая организация памяти сопряжена с определенными потерями, которые становятся очевидными, когда задания завершаются, а в основной памяти остаются свободные
участки - “дыры”. Эти участки можно использовать для размещения других заданий, однако,
все равно будут оставаться “дыры”, хотя и меньшего размера. При размещении новых программ, поступающих в ОП реализуют, как правило одну из трех стратегий:
 стратегия наиболее подходящего, когда задание помещеют в наиболее подходящий по
размеру учесток, где остается меньше свободной памяти;
 стратегия первого подходящего, когда задание размещается в первом подходящем по
размеру участке;
 стратегия наименее подходящего, когда задание размещают в участке, где остается максимальное свободное пространство, эта абсурдная на первый взгляд стратегия дает возможность в дальнейшем использовать “дыры” максимального размера, для дальнейшего
их объединения и использования.
Виртуальная память
Суть концепции виртуальной памяти заключается в том, что адреса, к которым обращается выполняющийся процесс, отделяются от адресов, реально существующих в физической памяти. Те адреса, на которые делает ссылки выполняющийся процесс, называются
виртуальными адресами, а те адреса, которые существуют в памяти, называются реальными
или физическими адресами.
Несмотря на то, что процессы обращаются только к виртуальным адресам, в действительности они должны работать с реальной памятью, таким образом, во время выполнения
процесса виртуальные адреса необходимо преобразовывать в реальные, причем это необходимо делать быстро, чтобы не снижалась производительность вычислительной машины.
50
Мультипрограммные системы с виртуальной памятью позволяют избежать многих недостатков реальной организации памяти . При организации виртуальной памяти в системах используется сегментная организация, страничная организация или комбинированная сегментно-страничная организация. Поскольку все современные ОС используют концепцию
виртуальной памяти, далее мы более подробно остановимся на, сегментной, страничной и
сегментно-страничной организации памяти.
Сегментация
Сегментация (segmentation) - это прием организации программ, при котором адресная структура программы отражает ее содержательное членение. При сегментации пространство адресов каждой программы подразделяется на сегменты различной длины, которые соответствуют содержательно разным частям программы. Например, сегментом может быть
процедура или область данных. В этом случае адрес состоит из имени сегмента и адреса
внутри сегмента - смещения. Поскольку к программным сегментам обращаются по именам,
можно при распределении памяти размещать сегменты в несмежных областях памяти, более
того, не все сегменты должны одновременно находится в ОП, часть из них может находится
во внешней памяти и преемещаться в ОП по мере необходимости.
Как уже указывалось, в системе с сегментацией каждый адрес представляет пару [s,d]:
s - имя сегмента и d - смещение. Каждой программе соответствует всегда присутствующая в
памяти таблица сегментов, в которой каждому сегменту данного процесса соответствует
одна запись. С помощью этой таблицы система отображает программные адреса в истинные
адреса ОП. Адрес таблицы хранится в аппаратном регистре, называемом регистром таблицы сегментов.
Регистр таблицы сегментов
s
+
d
d
+
Слово
Признак Биты защиты Граница
База
Граница
s-тая строка таблицы
сегментов
Рис. 12 Вычисление адреса при сегментации
f3(слово)= f3(f3(f3(регистр таблицы сегментов)+s)+d)
Здесь признак - показывает присутствует ли s-тый сегмент в данный момент в ОП; база - базовый адрес s-того сегмента; граница - устанавливает размер памяти занимаемый данным сегментом; биты защиты - используются для контроля способа доступа (только для
чтения, только для записи, только для выполнения, комбинация режимов, неограниченный
доступ).
Вычисление адреса при сегментации производится следующим образом. Прежде чем
система сможет вычислить адрес, аппаратным путем проверяется признак присутствия сегмента в ОП. Если сегмент присутствует, то с помощью регистра таблицы сегментов произ-
51
водится обращение к s-ой строке таблицы сегментов, где указан адрес сегмента в памяти.
Поскольку сегменты бывают различной длины, необходимо знать границу сегмента для
предотвращения обращения за пределы заданного сегмента.
Если в какой-то момент система пожелает переключить свое внимание на другой процесс, она просто заменят содержимое регистра таблицы сегментов на адрес другой таблицы
сегментов, после чего ссылки вида [s,d] интерпретируются в соответствии с новой таблицей.
У сегментации пространства адресов множество преимуществ по сравнению с абсолютной адресацией, и главное - это эффективное использование оперативной памяти. Если в
ОП недостаточно места для всех сегментов данной программы, некоторые могут временно
располагаться во вспомогательной памяти. Если какой-то программе потребовалось ввести в
ОП новый сегмент, то система может любой сегмент убрать из ОП во вспомогательную. Вытесняемому сегменту не обязательно принадлежать той программе, для которой в ОП вводится новый сегмент. Какой таблице сегментов соответствует вытесняемый сегмент не имеет
значения, главное, чтобы при переводе его во вспомогательную память в соответствующей
таблице сегментов изменилось значение признака.
Страничная организация памяти
Страничная организация памяти (paging) - это такой способ управления памятью,
при котором пространство адресов памяти разбивается на блоки фиксированной длины,
называемыми физическими страницами.(page frame) . В этом случае адреса образуются подобно тому, как это делалось при сегментации пространства программных адресов. Каждый
адрес представляет собой пару [p,d], где р - имя страницы, а d - смещение относительно
начала страницы.
Каждой программе ставится в соответствие таблица страниц , которая содержит список
страниц, отводимых данной программе. Отдельная запись таблицы содержит:
- признак, показывающий находится ли данная страница в ОП;
- указатель местоположения страницы (в ОП или вспомогательной памяти);
- биты защиты для контроля способа доступа.
Кроме того, существует специальный регистр - регистр таблицы страниц, где находится
информация о местоположении таблицы страниц, соответствующей выполняемой в данный момент программе.
Регистр таблицы страниц
Страница
р
d
+
d
+
Слово
Признак
Биты защиты Указатель местоположения страницы
р-тая
строка
таблицы
страниц
Рис.13 Вычисление адреса при страничной организации памяти
52
f3(слово)= f3(f3(f3(регистр таблицы страниц)+p)+d)
Если во время выполнения программы встречается адрес [p,d], то по содержимому регистра страниц программа управления памятью находит таблицу страниц, где в р-ой записи находится информация, указывающая на искомую страницу. Следовательно, для того, чтобы добраться до необходимого слова требуется два обращения к памяти, как и в
случае сегментации, одно - к таблице страниц, другое - к самой странице.
При каждом указателе местополодения страницы имеется признак, показывающий,
присутствует ли данная страница в ОП. Если при проверке этого признака его значение
“истина”, то страница находится в ОП и адрес вычисляется автоматически. Если значение
признака “ложь”, то вырабатывается аппаратное прерывание, которое служит для супервизора сигналом для ввода в ОП соответствующей страницы - это событие называется
прерыванием из-за отсутствия страницы.. Биты защиты гарантируют, что данная страница будет использоваться в соотвтетствии с разрешенным для нее доступом, например,
для чтения или для записи.
Всякая страничная система должна придерживаться определенных стратегий подкачек и вытеснения страниц. Первая стратегия - это правило, по которому выбирается
страница для ввода в ОП. Вторая стратегия - какую страницу в ОП следует перекрыть,
при условии, что другая страница уже подготовлена к вводу в ОП. Цель стратегий выборки и вытеснения - организация движения страниц, т.е. их перемещения из вспомогательной памяти в ОП и обратно.
Страничная организация памяти имеет многие преимущества, присущие сегментной
организации. Однако фиксированная длина страниц приводит в важным различиям между двумя этими методами.
Поскольку размер страниц фиксирован, страница может оказаться недостаточно
большой, чтобы в ней поместился целиком какой-то содержательный раздел программы.
Поэтому задача установления внешних связей при страничной организации памяти не так
проста, как в случае сегментации, но при фиксированной длине страниц значитально
упрощается распределение памяти, т.е. ввести в ОП новую страницу фиксированной длины легче, чем новый сегмент - ее можно либо поместить в незанятую физическую страницу, либо вытеснить другую страницу, чтобы освободилось место для новой, причем в
обоих случаях не требуется по новому располагать остальные страницы в ОП.
Комбинированная сегментно-страничная организация памяти
Сегментно-страничная организация (paging/segmentation) состоит в том, что память
разбивается на страницы для каждого сегмента по его собственной таблице страниц. Адреса при этом состоят их трех компонент [s,p,d], где s- номер сегмента, и вход в таблицу
сегментов осуществляется через регистр таблицы сегментов, в которой s-тая запись содержит базовый адрес и границу таблицы страниц для этого сегмента; p - определяет запись в таблице страниц, которая указывает на p-тую страницу сегмента s; d- смещение,
которое необходимо прибавить к базовому адресу страницы, чтобы добраться до искомого слова. Таким образом, адрес [s,p,d] может означать d-е слово p-той страницы s-того
сегмента того задания, которое определяется содержимым регистра таблицы сегментов.
На такую трехкомпонентную ссылку требуется три цикла обращения к памяти, но если использовать, так называемый аппарат ассоциативных регистров,представляющих
собой группу ячеек памяти с быстрым доступом, можно добиться того, чтобы время обращения к памяти оставалось в разумных пределах. Служат ассоциативные регистры для
того, чтобы сопоставить комбинациям [s,p] физические места страниц.
Основное свойство ассоциативных регистров заключается в том, что их можно просматривать параллельно, что дает возможность получить адрес страницы за один командный
цикл.
53
Странично-сегментному способу организации памяти присущи все преимущества
обоих методов. Сегментация пространства программных адресов дает возможность
успешно реализовать разделение и установление внешних связей. Страничная организация позволяет, применяя несложную стратегию сегментации, упростить распределение
памяти.
Регистр таблицы сегментов
Страница
р
s
d
d
+
+
Слово
Таблица сегментов
Граница
База таблицы страниц
s-тая строка
таблицы
сегментов
+
Таблица страниц
Признак
Биты защиты Указатель местоположения страницы
р-тая
строка
таблицы
страниц
Граница
(длина таблицы страниц)
Рис. 14 Вычисление адреса при сегментно-страничной организации памяти
f3(слово)= f3(f3(f3(f3(регистр таблицы сегментов)+s)+p)+d)
Ассоциативные регистры для быстрого доступа к страницам
Номер
сегмента
Номер
страницы
s1
p1
s2
p2
s3
p3
...
54
Указатель
местоположения
страницы
Страница[s1,p1]
Страница[s2,p2]
Страница[s3,p3]
Лекция 10
Тема: Управление внешней памятью (продолжение)
Вопросы:
1. Общая модель файловой системы. Права доступа и защита файлов. Режим многопользовательского доступа. Кеширование диска.
Общая модель файловой системы
Функционирование любой файловой системы можно представить многоуровневой
моделью (см. рисунок 18), в которой каждый уровень предоставляет некоторый интерфейс
(набор функций) вышележащему уровню, а сам, в свою очередь, для выполнения своей работы использует интерфейс (обращается с набором запросов) нижележащего уровня.
Задачей символьного уровня является определение по символьному имени файла его
уникального имени. В файловых системах, в которых каждый файл может иметь только одно
символьное имя (например, MS-DOS), этот уровень отсутствует, так как символьное имя,
присвоенное файлу пользователем, является одновременно уникальным и может быть использовано операционной системой. В других файловых системах, в которых один и тот же
файл может иметь несколько символьных имен, на данном уровне просматривается цепочка
каталогов для определения уникального имени файла. В файловой системе UNIX, например,
уникальным именем является номер индексного дескриптора файла (inode).
Запрос к файлу
(операция, имя файла, логическая запись)
Символьный уровень
Определение по символическому имени
файла его уникального имени
Базовый уровень
Определение по уникальному имени
характеристик файла
Уровень проверки
прав доступа
Проверка допустимости заданной
операции к заданному файлу
Логический уровень
Определение координат логической
записи в файле
Физический уровень
Определение номера физического
блока, содержащего логическую запись
К подсистеме ввода-вывода
Рис. 18 Общая модель файловой системы
55
На следующем, базовом уровне по уникальному имени файла определяются его характеристики: права доступа, адрес, размер и другие. Как уже было сказано, характеристики
файла могут входить в состав каталога или храниться в отдельных таблицах. При открытии
файла его характеристики перемещаются с диска в оперативную память, чтобы уменьшить
среднее время доступа к файлу. В некоторых файловых системах (например, HPFS) при открытии файла вместе с его характеристиками в оперативную память перемещаются несколько первых блоков файла, содержащих данные.
Следующим этапом реализации запроса к файлу является проверка прав доступа к
нему. Для этого сравниваются полномочия пользователя или процесса, выдавших запрос, со
списком разрешенных видов доступа к данному файлу. Если запрашиваемый вид доступа
разрешен, то выполнение запроса продолжается, если нет, то выдается сообщение о нарушении прав доступа.
На логическом уровне определяются координаты запрашиваемой логической записи в
файле, то есть требуется определить, на каком расстоянии (в байтах) от начала файла находится требуемая логическая запись. При этом абстрагируются от физического расположения
файла, он представляется в виде непрерывной последовательности байт. Алгоритм работы
данного уровня зависит от логической организации файла. Например, если файл организован
как последовательность логических записей фиксированной длины l, то n-ая логическая запись имеет смещение l((n-1) байт. Для определения координат логической записи в файле с
индексно-последовательной организацией выполняется чтение таблицы индексов (ключей), в
которой непосредственно указывается адрес логической записи.
Файл
V
…
V
V
V
V
…
N
S логическая запись
S
Рис. 19 Функции физического уровня файловой системы
Исходные данные:
V - размер блока;
N - номер первого блока файла;
S - смещение логической записи в файле.
Требуется определить на физическом уровне:
n - номер блока, содержащего требуемую логическую запись;
s - смещение логической записи в пределах блока.
n = N + [S/V], где [S/V] - целая часть числа S/V
s = R [S/V] - дробная часть числа S/V
На физическом уровне файловая система определяет номер физического блока, который содержит требуемую логическую запись, и смещение логической записи в физическом блоке.
Для решения этой задачи используются результаты работы логического уровня - смещение
логической записи в файле, адрес файла на внешнем устройстве, а также сведения о физической организации файла, включая размер блока. Рисунок 19 иллюстрирует работу физического уровня для простейшей физической организации файла в виде непрерывной последовательности блоков. Подчеркнем, что задача физического уровня решается независимо от
того, как был логически организован файл.
56
После определения номера физического блока, файловая система обращается к системе ввода-вывода для выполнения операции обмена с внешним устройством. В ответ на
этот запрос в буфер файловой системы будет передан нужный блок, в котором на основании
полученного при работе физического уровня смещения выбирается требуемая логическая
запись.
Права доступа к файлу
Определить права доступа к файлу - значит определить для каждого пользователя набор
операций, которые он может применить к данному файлу. В разных файловых системах может быть определен свой список дифференцируемых операций доступа. Этот список может
включать следующие операции:

создание файла,

уничтожение файла,

открытие файла,

закрытие файла,

чтение файла,

запись в файл,

дополнение файла,

поиск в файле,

получение атрибутов файла,

установление новых значений атрибутов,

переименование,

выполнение файла,

чтение каталога
В самом общем случае права доступа могут быть описаны матрицей прав доступа, в которой
столбцы соответствуют всем файлам системы, строки - всем пользователям, а на пересечении строк и столбцов указываются разрешенные операции (см. рисунок 20). В некоторых системах пользователи могут быть разделены на отдельные категории. Для всех пользователей
одной категории определяются единые права доступа. Например, в системе UNIX все пользователи подразделяются на три категории: владельца файла, членов его группы и всех
остальных.
Имена файлов
Modern.txt
Win.exe
Myfile.doc
Petrov
Читать
Выполнять
Читать
Ivanov
Читать
-
Читать/писать
Sidorov
Читать/писать
-
Читать
Рис. 20 Матрица прав доступа
Различают два основных подхода к определению прав доступа:
57

избирательный доступ, когда для каждого файла и каждого пользователя сам владелец может определить допустимые операции;

мандатный подход, когда система наделяет пользователя определенными правами по
отношению к каждому разделяемому ресурсу (в данном случае файлу) в зависимости
от того, к какой группе пользователь отнесен.
Поскольку файловые системы являются общим хранилищем файлов, принадлежащих,
вообще говоря, разным пользователям, системы управления файлами должны обеспечивать
авторизацию доступа к файлам. В общем виде подход состоит в том, что по отношению к
каждому зарегистрированному пользователю данной вычислительной системы для каждого
существующего файла указываются действия, которые разрешены или запрещены данному
пользователю. Существовали попытки реализовать этот подход в полном объеме. Но это вызывало слишком большие накладные расходы как по хранению избыточной информации, так
и по использованию этой информации для контроля правомочности доступа. Поэтому в
большинстве современных систем управления файлами применяется подход к защите файлов, впервые реализованный в ОС UNIX. В этой системе каждому зарегистрированному
пользователю соответствует пара целочисленных идентификаторов: идентификатор группы,
к которой относится этот пользователь, и его собственный идентификатор в группе. Соответственно, при каждом файле хранится полный идентификатор пользователя, который создал этот файл, и отмечается, какие действия с файлом может производить он сам, какие
действия с файлом доступны для других пользователей той же группы, и что могут делать с
файлом пользователи других групп. Эта информация очень компактна, при проверке требуется небольшое количество действий, и этот способ контроля доступа удовлетворителен в
большинстве случаев.
Как уже указывалось, все режимы доступа разбиты на три группы: права собственника; права членов группы, в которую входит собственник и права всех остальных пользователей. Изобразим эти признаки схематично.
Owner
r
w
Group
x
r
Other
w
x
r
w
x
read
write
execute
Если один из режимов доступа запрещен, то вместо соответствующей записи устанавливается дефис Таким образом, запись rwr r-x r-- указывает на то, что членам группы запрещена запись в
файл, а всем остальным пользователям - запись и выполнение. Очевидно, что данные записи
лекко представимы в двоичной форме, так рассмотренная запись может быть представлена 111 101 100, где 1 указывает на разрешенную операцию с файлом, а 0 на запрещение
операции.
Режим многопользовательского доступа
Последнее, на чем мы остановимся в связи с файлами, - это способы их использования в многопользовательской среде. Если операционная система поддерживает многопользовательский режим, вполне реальна ситуация, когда два или более пользователей одновременно пытаются работать с одним и тем же файлом. Если все эти пользователи собираются
только читать файл, ничего страшного не произойдет. Но если хотя бы один из них будет
изменять файл, для корректной работы этой группы требуется взаимная синхронизация.
58
Исторически в файловых системах применялся следующий подход. В операции открытия файла (первой и обязательной операции, с которой должен начинаться сеанс работы
с файлом) помимо прочих параметров указывался режим работы (чтение или модификация).
Если к моменту выполнения этой операции от имени некоторой программы A файл уже
находился в открытом состоянии от имени некоторой другой программы B (правильнее говорить "процесса", но мы не будем вдаваться в терминологические тонкости), причем существующий режим открытия был несовместимым с желаемым режимом (совместимы только
режимы чтения), то в зависимости от особенностей системы программе A либо сообщалось о
невозможности открытия файла в желаемом режиме, либо она блокировалась до тех пор, пока программа B не выполнит операцию закрытия файла.
Заметим, что в ранних версиях файловой системы ОС UNIX вообще не были реализованы какие бы то ни было средства синхронизации параллельного доступа к файлам. Операция открытия файла выполнялась всегда для любого существующего файла, если данный
пользователь имел соответствующие права доступа. При совместной работе синхронизацию
следовало производить вне файловой системы (и особых средств для этого ОС UNIX не
предоставляла). В современных реализациях файловых систем ОС UNIX по желанию пользователя поддерживается синхронизация при открытии файлов. Кроме того, существует возможность синхронизации нескольких процессов, параллельно модифицирующих один и тот
же файл. Для этого введен специальный механизм синхронизационных захватов диапазонов
адресов открытого файла.
Кэширование диска
В некоторых файловых системах запросы к внешним устройствам, в которых адресация осуществляется блоками, перехватываются промежуточным программным слоем - подсистемой буферизации. Подсистема буферизации представляет собой буферный пул, располагающийся в оперативной памяти, и комплекс программ, управляющих этим пулом. Каждый буфер пула имеет размер, равный одному блоку. При поступлении запроса на чтение
некоторого блока подсистема буферизации просматривает свой буферный пул и, если находит требуемый блок, то копирует его в буфер запрашивающего процесса. Операция вводавывода считается выполненной, хотя физического обмена с устройством не происходило.
Очевиден выигрыш во времени доступа к файлу. Если же нужный блок в буферном пуле отсутствует, то он считывается с устройства и одновременно с передачей запрашивающему
процессу копируется в один из буферов подсистемы буферизации. При отсутствии свободного буфера на диск вытесняется наименее используемая информация. Таким образом, подсистема буферизации работает по принципу кэш-памяти.
Список использованной литературы:
1. [Дейтел 87] Дейтел Г., Введение в операционные системы. М."Мир",1987.
2. [Кейлингерт 85] Кейлингерт П., Элементы операционных систем, М."Мир", 1985.
3. [Кейслер 86] Кейслер С., Проектирование операционных систем для малых ЭВМ,
М."Мир", 1986.
4. [Колин 75] Колин А., Введение в операционные системы, М."Мир", 1975.
5. [Цикритзис 77] Цикритзис Д., Бернстайн Ф., Операционные системы, М."Мир", 1977.
3 ПРАКТИЧЕСКИЕ РАБОТЫ
Практическая работа №1
Тема: Работа с файлами и потоками
59
Переходим на диск D и создаём директорию по первым буквам своих фамилий, а затем в своей директории создаём каталог.
Где d –имя диска, md - создание директории, ud_MS-директория (имя).
D:
md ud_MS
md d:\ud_MS\ud1
md d:\ud_MS\ud1\ud11
md d:\ud_MS \ud1\ud12
md d:\ud_MS \ud1\ud13
md d:\ud_MS\ud2
md d:\ud_MS\ud2\ud21
md d:\ud_MS\ud2\ud22
md d:\ud_MS\ud2\ud22\ud221
md d:\ud_MS\ud2\ud22\ud222
md d:\ud_MS\ud2\ud22\ud223
md d:\ud_ MS \ud2\ud23
md d:\ud_ MS\ud3
md d:\ud_ MS\ud3\ud31
md d:\ud_ MS\ud3\ud32
md d:\ud_ MS\ud3\ud33
md d:\ud_ MS\ud3\ud33\ud331
Проделываем смену директории с помощью команды cd в директории ud MS.
cd ud_ MS
ud_MS >cd ud3
ud_ MS \ud3>md ud332
ud_ MS \ud3>md ud333
60
ud_ MS \ud3>cd ..
ud_ MS >cd ..
cd ud_ MS
Для того чтобы посмотреть какой каталог мы создали прописываем операцию > tree.
D:\ud_ MS >tree
D:\ud_ MS >
Получаем следующий каталог:
Структура папок
Серийный номер тома: 2702-94BA
D:.
├───ud1
│ ├───ud11
│ ├───ud12
│ └───ud13
├───ud2
│ ├───ud21
│ ├───ud22
│ │ ├───ud221
│ │ ├───ud222
│ │ └───ud223
│ └───ud23
└───ud3
├───ud31
├───ud32
└───ud33
├───ud331
├───ud332
└───ud333
Из каталога нужно удалить директории ud331, ud332 и ud333, для этого используем команду
rd- удаление директории:
D:\ud_ MS >
D:\ud_ MS >cd ud3
D:\ud_ MS \ud3>cd ud33
D:\ud_ MS \ud3\ud33>rd ud331
D:\ud_ MS \ud3\ud33>rd ud332
D:\ud_ MS \ud3\ud33>rd ud333
D:\ud_ MS \ud3\ud33>tree
61
Структура папок
Серийный номер тома: 2702-94BA
D:.
├───UD1
│ ├───UD11
│ ├───UD12
│ └───UD13
├───UD2
│ ├───UD21
│ ├───UD22
│ │ ├───UD221
│ │ ├───UD222
│ │ └───UD223
│ └───UD23
└───UD3
├───UD31
├───UD32
└───UD33
Работа с файлами
Для создания файлов используем команду echo. Команда реализуется как: «echo Текст в
файл(текст который будет содержать наш файл) > имя файла(указывается имя будущего
файла с расширением)», если файл уже существует, то его содержание заменяется на «текст
в файл».
D:\UD_ MS >echo FILE1 > f1.txt
D:\UD_ MS >echo FILE2 > f2.txt
D:\UD_ MS >echo FILE3 > f3.txt
D:\UD_ MS >echo FILE4 > f4.pas
D:\UD_ MS >echo FILE5 > f5.pas
D:\UD_ MS >echo FILE6 > f6.pas
D:\UD_ MS >echo FILE7 > f7.cpp
D:\UD_ MS >echo FILE8 > f8.cpp
D:\UD_ MS >echo FILE9 > f9.cpp
D:\UD_ MS >echo FILE10 > f10.bat
D:\UD_ MS >echo FILE11 > f11.bat
D:\UD_ MS >echo FILE12 > f12.bat
D:\UD_ MS >echo FILE12 > f12.bat
62
D:\UD_ MS >echo FILE13 > f13.bat
D:\UD_ MS >echo FILE13 > f13.exe
D:\UD_ MS >echo FILE14 > f14.exe
D:\UD_ MS >echo FILE15 > f15.exe
D:\UD_ MS >echo FILE16 > f16.gif
D:\UD_ MS >echo FILE17 > f17.gif
D:\UD_ MS >echo FILE18 > f18.gif
D:\UD_ MS >echo FILE19 > f19.com
D:\UD_ MS >echo FILE20 > f20.com
D:\UD_ MS >echo FILE21 > f21.com
D:\UD_ MS >echo FILE22 > f22.tmp
D:\UD_ MS >echo FILE23 > f23.tmp
D:\UD_ MS >echo FILE24 > f24.tmp
D:\UD_ MS >dir
Том в устройстве D не имеет метки.
Серийный номер тома: 2702-94BA
Содержимое папки D:\ud_ MS
12.04.2008
12.04.2008
12.04.2008
12.04.2008
12.04.2008
12.04.2008
12.04.2008
12.04.2008
12.04.2008
12.04.2008
12.04.2008
12.04.2008
12.04.2008
12.04.2008
12.04.2008
12.04.2008
12.04.2008
10:45
10:45
10:34
10:39
10:39
10:40
10:42
10:42
10:42
10:43
10:43
10:43
10:44
10:37
10:44
10:44
10:45
<DIR>
<DIR>
.
..
8 f1.txt
9 f10.bat
9 f11.bat
9 f12.bat
9 f13.exe
9 f14.exe
9 f15.exe
9 f16.gif
9 f17.gif
9 f18.gif
9 f19.com
8 f2.txt
9 f20.com
9 f21.com
9 f22.tmp
63
12.04.2008 10:45
9 f23.tmp
12.04.2008 10:45
9 f24.tmp
12.04.2008 10:37
8 f3.txt
12.04.2008 10:37
8 f4.pas
12.04.2008 10:38
8 f5.pas
12.04.2008 10:38
8 f6.pas
12.04.2008 10:39
8 f7.cpp
12.04.2008 10:39
8 f8.cpp
12.04.2008 10:39
8 f9.cpp
12.04.2008 10:18 <DIR>
UD1
12.04.2008 10:18 <DIR>
UD2
12.04.2008 10:19 <DIR>
UD3
24 файлов
205 байт
5 папок 14 040 825 856 байт свободно
Присоединение потоков
К файлам можно присоединить потоки, для этого надо прописать команду
«echo содержимое потока > f1.txt:1». Для просмотра содержимого потока используем команду «more < f1.txt:1».
More - Последовательный вывод данных по частям размером в один экран.
Echo - Вывод сообщений и переключение режима отображения команд на экране.
D:\ud_ MS >echo potok of file 1 > f1.txt:1
D:\ud_ MS >echo potok of file 2 > f2.txt:2
D:\ud_ MS >echo potok of file 3 > f2.txt:3
D:\ud_ MS >more < f1.txt:1
potok of file 1
D:\ud_ MS >more < f1.txt:2
potok of file 2
D:\ud_ MS >more < f1.txt:3
potok of file 3
Копирование файлов в папки
Копирование файлов осуществляется с помощью команды copy.
сору - Копирование одного или нескольких файлов в другое место.
D:\ud_ MS >copy *txt d:\ud_ MS \ud2\ud22\ud222
f1.txt
f2.txt
f3.txt
Скопировано файлов:
3.
64
D:\ud_ MS >copy *gif d:\ud_ MS \ud2\ud22\ud223
f16.gif
f17.gif
f18.gif
Скопировано файлов:
3.
D:\ud_ MS >copy *pas d:\ud_ MS \ud2\ud22\ud221
f4.pas
f5.pas
f6.pas
Скопировано файлов:
3.
Команда for
Команда for позволяет выполнять программу или команду для нескольких файлов из указанного списка.
D:\ud_ MS > FOR %c in (*.cpp *.pas) do copy %c D:\ud_ MS \ud3\ud32\*.*
D:\ud_ MS >copy f7.cpp D:\ud_ MS \ud3\ud32\*.*
Скопировано файлов:
1.
D:\ud_ MS >copy f8.cpp D:\ud_ MS \ud3\ud32\*.*
Скопировано файлов:
1.
D:\ud_ MS >copy f9.cpp D:\ud_ MS \ud3\ud32\*.*
Скопировано файлов:
1.
D:\ud_ MS >copy f4.pas D:\ud_ MS \ud3\ud32\*.*
Скопировано файлов:
1.
D:\ud_ MS >copy f5.pas D:\ud_ MS \ud3\ud32\*.*
Скопировано файлов:
1.
D:\ud_ MS >copy f6.pas D:\ud_ MS \ud3\ud32\*.*
Скопировано файлов:
1.
Перемещение
D:\ud_ MS >move *.cpp d:\ud_ MS \ud1\ud12
D:\ud_ MS \f7.cpp
D:\ud_ MS \f8.cpp
D:\ud_ MS \f9.cpp
D:\ud_ MS >move *.bat d:\ud_MS\ud1\ud13
D:\ud_ MS \f10.bat
D:\ud_ MS \f11.bat
65
D:\ud_ MS \f12.bat
Все дерево
D:\ud_ MS >tree /f
Структура папок
Серийный номер тома: 2702-94BA
D:.
│ f1.txt
│ f13.exe
│ f14.exe
│ f15.exe
│ f16.gif
│ f17.gif
│ f18.gif
│ f19.com
│ f2.txt
│ f20.com
│ f21.com
│ f22.tmp
│ f23.tmp
│ f24.tmp
│ f3.txt
│ f4.pas
│ f5.pas
│ f6.pas
│
├───ud1
│ ├───ud11
│ ├───ud12
│ │
f7.cpp
│ │
f8.cpp
│ │
f9.cpp
│ │
│ └───ud13
│
f10.bat
│
f11.bat
│
f12.bat
│
├───ud2
│ ├───ud21
│ ├───ud22
│ │ ├───ud221
│ │ │
f4.pas
│ │ │
f5.pas
│ │ │
f6.pas
│ │ │
│ │ ├───ud222
│ │ │
f1.txt
66
│ │ │
f2.txt
│ │ │
f3.txt
│ │ │
│ │ └───ud223
│ │
f16.gif
│ │
f17.gif
│ │
f18.gif
│ │
│ └───ud23
└───ud3
├───ud31
├───ud32
│
f4.pas
│
f5.pas
│
f6.pas
│
f7.cpp
│
f8.cpp
│
f9.cpp
│
└───ud33
Практическая работа №2
Тема: Работа с *.bat файлами.
Создаем *.bat файл с именем Kom(1,2).bat(при помощи любого текстового редактора, к примеру, WordPad или Notepad). Эти исполняемые файлы должны выполнить все процедуры и
команды используемые в прошлой лабораторной работе не используя командную строку.
Kom1.bat создает наш каталог на диске D:\ по первым буквам наших фамилий.
Kom1.bat
md D:\UD_MS
md D:\UD_MS\UD1
md D:\UD_MS\UD1\UD11
md D:\UD_MS\UD1\UD12
md D:\UD_MS\UD1\UD13
md D:\UD_MS\UD2
md D:\UD_MS\UD2\UD21
md D:\UD_MS\UD2\UD22
md D:\UD_MS\UD2\UD23
67
md D:\UD_MS\UD2\UD22\UD221
md D:\UD_MS\UD2\UD22\UD222
md D:\UD_MS\UD2\UD22\UD223
md D:\UD_MS\UD3
md D:\UD_MS\UD3\UD31
md D:\UD_MS\UD3\UD32
md D:\UD_MS\UD3\UD33
md D:\UD_MS\UD3\UD33\UD331
md D:\UD_MS\UD3\UD33\UD332
md D:\UD_MS\UD3\UD33\UD333
Kom2.bat создает, копирует, перемещает и удаляет файлы.
Kom2.bat
echo FILE1 > f1.txt
echo FILE2 > f2.txt
echo FILE3 > f3.txt
echo FILE4 > f4.pas
echo FILE5 > f5.pas
echo FILE6 > f6.pas
echo FILE7 > f7.cpp
echo FILE8 > f8.cpp
echo FILE9 > f9.cpp
echo FILE10 > f10.bat
echo FILE11 > f11.bat
echo FILE12 > f12.bat
echo FILE12 > f12.bat
68
echo FILE13 > f13.bat
echo FILE13 > f13.exe
echo FILE14 > f14.exe
echo FILE15 > f15.exe
echo FILE16 > f16.gif
echo FILE17 > f17.gif
echo FILE18 > f18.gif
echo FILE19 > f19.com
echo FILE20 > f20.com
echo FILE21 > f21.com
echo FILE22 > f22.tmp
echo FILE23 > f23.tmp
echo FILE24 > f24.tmp
copy *.txt D:\UD_MS\UD2\UD22\UD222\
copy *.gif D:\UD_MS\UD2\UD22\UD223\
copy *.com D:\UD_MS\UD2\UD22\UD221\
FOR %%c in (*.cpp *.pas) do copy %%c d:\UD_MS\UD3\UD32\*.*
move *.cpp D:\UD_MS\UD1\UD12
move *.exe D:\UD_MS\UD1\UD13
del *.tmp
Практическая работа №3
Тема: Операция set, if и goto
Операция SET, позволяет просмотреть на экране все заданные переменные среды, а операция GOTO предназначена для безусловного перехода на метку и операция IF позволяет производить привязки в зависимости от режима редактирования, используемого терминала, или
69
приложения. Содержимое теста продолжается до конца строки; для его ограничения не требуются никакие знаки.
Создаем *.bat файл с именем Kom32.bat . Задача этого файла в сложении 2-х операндов. Результат записывается в лог файл с именем, которым задан *.bat файл. Условие: если заданы 2
операнда целочисленные, то произвести сложение и запись в лог файл результата, а также
вывести ответ happy end, если один или оба операнда не заданы, то оставить в лог файле ответ с прошлого расчета и вывести ответ absent.
Kom32.bat
echo %0
echo %1
echo %2
if "%1%" == "" goto M1
if "%2%" == "" goto M1
set p1=%1
set p2=%2
set /A p3=p1+p2
echo %p3% > %0_Log1.txt
goto M2
:M1
echo % absent
goto M3
:M2
echo % happy end
:M3
Практическая работа №4
Тема: Проверка дисков
Переменная PATH определяет пути, по которым будет производится поиск исполняемых
файлов, набранных в командной строке или запускаемой из графической оболочки.
set
70
set path
echo %path% = fpath.txt
set p1=%path%
Notepad.exe
set path =
C:\windows\notepad.exe
set path = %p1%
set path = %path%;c:\TMP
echo %path% >>fpath.txt
Проверка дисков:
for %c in (c:,d:,k:) do chkntfs %c
chkntfs /E
chkntfs /E :30
4 ЛАБОРАТОРНЫЕ РАБОТЫ
Лабораторное занятие №1
Тема: Изучение команд работы с файлами и каталогами в ОС MS DOS
Цель: вырабатывать умения и навыки работы с файлами и каталогами в ОС МS-DOS; закрепить умения создания структуры каталогов, создания, просмотра, редактирования,
удаления файлов.
Содержание работы и последовательность ее выполнения
1. Теоретические сведения
Название команды
Создание файла с консоли
Синтаксис команды
copy con <имя файла>
Удаление файла
del <имя файла>
Переименование файла
ren <имя файла 1> <имя файла 2>
Редактирование файла
edit <имя файла>
71
Переход на диск
<имя диска>
Переход в каталог
cd <путь>
Сортировка по имени файлов каталога
Ds
Сортировка по расширению файлов каNe
талога
Создание каталога
md <имя каталога>
Удаление каталога
rd <имя каталога>
Очистка экрана
Cls
Вывод содержимого файла на экран
type <имя файла>
Копирование файла
copy <путь 1 (что копируется)> <путь 2 (куда копируется)>
Поиск файла
filefind <имя файла>
Работа с командной строкой
Prompt
Информация о команде
<команда> /?
2. Задания для самостоятельной работы:
Задание 1. Изучите справку о командах сd, dir, md, type. Создать каталоги NEW ##_# ,
ТМР, ТХТ, ТЕХТ. Создать и просмотреть текстовые файлы tехт_1.tхt и
tехt_2.txt. Освоить команды копирования, перемещения, переименования,
удаления файлов и каталогов.
1.1. Перейти в корневой каталог диска Z: (при необходимости).
1.2. Просмотреть справочник команд OC MS - DOS, используя команду Не1р.
1.3. Получить справку о команде cd. Для этого введите в командной строке help cd.
1.4. Перейти в каталог FILES.
1.5. Получить справку о команде dir. Аналогичным образом как в пункте 1.3.
1.6. Просмотреть каталог FILES.
1.7. Просмотреть каталог FILES с паузой после заполнения каждого экрана.
1.8. Просмотреть каталог FILES с выводом списка в несколько столбцов.
1.9. Получить справку о команде md.
1.10. Создать на диске Z: каталог NEW ##_#, где ## - номер группы, # - номер подгруппы.
1.11. Проверить его наличие.
1.12. Перейти в каталог NEW ##_#
1.13. Вернуться в корневой каталог.
1.14. Перейти в каталог NEW ##_#
1.15. Создать в каталоге NEW ##_# подкаталоги ТМР и ТХТ. Проверить их наличие.
1.16. Перейти в каталог ТМР и просмотреть его содержимое.
1.17. Скопировать в каталог ТМР все файлы из каталога Z:\ FILES. Проверить выполнение
команды.
1.18. Переместить все текстовые файлы каталога ТМР в каталог ТХТ. Просмотреть
содержимое каталога ТХТ
1.19. Переименовать файл monitor.txt с новым именем display.txt
1.20. Создать в каталоге ТМР подкаталог XXX
1.21. Скопировать в подкаталог XXX все файлы из каталога ТХТ
1.22. Переименовать каталог XXX с именем УУУ
72
1.23. Переименовать все файлы, имена которых начинаются на букву d так, чтобы они
начинались на букву к
1.24. Создать в каталоге NEW ##_# подкаталог ТЕХТ. Проверить его наличие.
1.25. В каталоге ТЕХТ создать три текстовых файла:
первый с текстом
В мире, где кружится снег шальной,
Где моря грозят крутой волной,
Где подолгу добрую
Ждем порой мы весть,
Чтобы было легче в трудный час,
Очень нужно каждому из нас,
Очень нужно каждому
Знать, что счастье есть.
- сохранить с именем kuplet_1.txt;
второй с текстом:
Мы желаем счастья вам,
Счастья в этом мире большом,
Как солнце по утрам,
Пусть оно заходит в дом.
Мы желаем счастья вам,
И оно должно быть таким Когда ты счастлив сам,
Счастьем поделись с другим.
- сохранить с именем pripev.txt;
третий с текстом:
В мире, где ветрам покоя нет,
Где бывает облачным рассвет,
Где в дороге дальней
Нам часто снится дом,
Нужно и в грозу, и в снегопад,
Чтобы чей-то очень добрый взгляд,
Согревал теплом.
-сохранить с именем kuplet_2.txt
Примечание: Еntег - конец строки, F6 - конец файла.
1.26. Получить справку о команде tуре.
1.27. Просмотреть на экране тексты kuplet_1.txt; pripev.txt; kuplet_2.txt.
1.28. Объединить все файлы в один с именем pesnja.txt Просмотреть файл pesnja.txt
1.29. Определите размер файла pesnja.txt .
1.30. Получить справку о команде tгее.
73
1.31. Просмотреть дерево каталога NEW ##_#
Дополнительное задание:
1.32. Распечатать файл pesnja.txt на принтере, используя перенаправление
ввода-вывода
1.33. Распечатать дерево каталога NEW ##_# на принтере
1.34. Определите свободное дисковое пространство на диске Z:
1.35. Установите текущую дату.
1.36. Установите текущее время.
1.37. Вывести на экран информацию о памяти.
1.38. Определите конфигурацию Вашего компьютера.
1.39. Удалить все файлы подкаталога ТХТ.
1.40. Удалить подкаталог ТХТ.
1.41. Удалить каталог NEW ##_#
Задание 2. Изучите команды работы с дисками format, diskcopy, chkdsk, label, vol, diskcomp .
Задание 3. (дополнительное) Создать на диске Z: собственный каталог. В нем создать файл
содержащий справочник команд ОС MS-DOS.
Отчет по проделанной работе:
В него должны входить:
1) тема работы;
2) цель работы;
3) время выполнения работы;
4) описание команд сd, dir, md, type, tгее, format, diskcopy, chkdsk, label, vol,
diskcomp .
5) задание на лабораторную работу с описанием всех форматов используемых
команд.
Контрольные вопросы:
1. Дать определение файла.
2. Какой тип интерфейса используется в ОС МS-DOS?
3. Какую команду нужно использовать для того, чтобы просмотреть справочник команд
ОС МS-DOS?
4. Какие команды используют для работы с файлами и каталогами?
5. С помощью каких команд можно установить текущую дату и время?
Лабораторное занятие №2
Тема: Создание командных файлов пакетной обработки
Цель: вырабатывать навыки создания командных файлов пакетной обработки;
вырабатывать умения и навыки работы с утилитами ОС MS DOS
Содержание работы и последовательность ее выполнения
2.
74
Теоретические сведения
Пакетными или командными файлами (batch) называются файлы, содержимым которых являются команды MS-DOS (внешние и внутренние). Пакетные файлы используются в
том случае, когда надо создать стандартную операционную среду с помощью набора ( а не
одной ) команд MS-DOS. Одним из примеров является файл AUTOEXEC.BAT, осуществляющий начальную установку операционной среды. Существуют и другие ситуации, для которых применение пакетных файлов высокоэффективно. К ним относится, например, подготовка виртуального диска перед загрузкой интегрированного пакета ( перезапись на него
библиотек, ряда дополнительных модулей, оверлейных файлов и т.д. ), а также создание исполняемых модулей из программ языков высокого уровня при отсутствии интегрированного
пакета языка ( или невозможности его использования ).
Кроме команд MS-DOS и обращений к исполняемым программам, пакетные файлы
могут содержать вызовы других пакетных файлов, специальные команды для управления
выводом на экран, специальные команды для организации ветвлений, циклов и метки.
Важным свойством командных файлов является возможность использовать внутри
них формальные параметры. При этом обращение к командному файлу приобретает вид:
А> имя командного файла параметр1[параметр2 . . .]
Параметры, значения которых будут заданы при обращении к командному файлу,
внутри файла будут иметь обозначения %1, %2, . . . , %N ( где N<10 ).
Рассмотрим операторы, которые используются только в командных файлах.
Оператор ECHO позволяет управлять потоком вывода на дисплей:
ECHO OFF блокирует выдачу на экран приглашений MS-DOS и текстов команд.
ECHO ON отменяет действие ECHO OFF.
ECHO позволяет вывести текст при заблокированной выдаче.
Оператор REN позволяет внести комментарий в текст командного файла. Строка после REN
не анализируется командным процессором.
Оператор PAUSE приостанавливает дальнейшую обработку пакетного файла до нажатия
пользователем любой клавиши. При этом на экране появляется сообщение "Strike any key
when ready".
Оператор GOTO позволяет передавать управление на метку и может использоваться самостоятельно либо совместно с оператором проверки условия IF. Метка в пакетных
файлах занимает отдельную строку и отличается тем, что ее первый символ - двоеточие (:).
Оператор IF позволяет проверить условие и выполнить команду в зависимости от
результата его проверки. В качестве условия может выступать:
1.
Проверка кода завершения программы, срабатывающей перед оператором
IF ( сформированного специальным прерыванием MS-DOS ):
IF ERRORLEVEL < команда MS-DOS >
75
Условие считается выполненным, если выработанный код завершения больше или
равен N.
3.
Проверка наличия файла:
IF EXIST < имя или шаблон файла > < команда MS-DOS >
Условие считается выполненным при обнаружении файла.
4. Сравнение двух строк, которые могут быть заданы и через формальные
параметры:
IF %==< текстовая строка > < команда MS-DOS >
При абсолютном совпадении двух строк условие считается выполненным.
Любое из этих условий может задаваться со знаком логического отрицания NOT.
Оператор FOR обеспечивает циклическое выполнение команд MS-DOS. При этом
можно задавать формальный параметр и список фактических параметров ( обычно - имен
файлов ), которые последовательно подставляются в текст исполняемой команды вместо
формального параметра. Формат команды:
FOR < формальный параметр > IN (< список фактических параметров >) DO <
команда MS-DOS >.
Например, команда
FOR % IN (PAS OBJ EXE) DO COPY PROG.%A D:
вызывает копирование на диск D: трех файлов с именем PROG и расширениями
PAS, OBJ, EXE.
Оператор SHIFT вызывает сдвиг формальных параметров относительно списка
фактических. Так, после него первым (%1) формальным параметром становится фактический второй и т.д. Команда SHIFT может применяться для последовательной обработки заранее не определенного количества параметров либо для обработки более 9 фактических параметров ( т.к. максимальный номер формального параметра %9).
Оператор COMMAND позволяет вызывать новую копию командного процессора.
При помощи этого оператора возможно выполнение рекурсивных вызовов командных файлов с возвратом. Так, команда
COMMAND /C V
вызовет обработку командного файла V.BAT, которая будет продолжаться до тех
пор, пока в нем не закончатся операторы или не встретится оператор возврата EXIT. По этому оператору продолжится обработка вызывающего командного файла.
76
Дополнительные возможности управления дисплеем и клавиатурой предоставляет
драйвер ANSI.SYS , который необходимо подключить командой в файле конфигурации.
Этот драйвер позволяет использовать ESC- последовательность в реальном режиме для
определения местоположение курсора, цвета экрана, изменения режима работы клавиатуры.
Формат ESC- последовательности следующий:
ESC[<код><буква>].
Здесь ESC - код ASII 27. Операционная система не позволяет вводить этот код нажатием одной клавиши. Для этой цели применяется команда PROMT $e. В редакторе Norton
Editor можно ввести следующую комбинацию клавиш: <Ctrl-Q><Ctrl-[><[> при этом на
экране появится: ® [.
Код устанавливает характеристики дисплея и клавитуры. Если код состоит из нескольких чисел, то они отделяются точкой с запятой (;). Буква сообщает вид команды.
Назначение букв показывает таблица 1.
Коды установки дисплея сведены в таблицу 2.
Таблица 1. Назначение букв
Назначение
Буква
Установка позиции курсора
курсор вверх
A
курсор вниз
B
курсор вправо
C
курсор влево
D
Перемещение курсора в заданную
точку
H, f
Сохранение (запись) позиции курсора
S
установка курсора в заданную позицию
U
Восстановление зыписанной позиции курсора
U
Сообщение о позиции курсора в
данный момент
R
Возврат данных из позиции
n
Удаление
77
Очистка экрана
Удаление символов от курсора до
конца строки
J
K
Установка характеристик и режима
дисплея
Установка характеристик дисплея
m
Установка режима дисплея
h
сброс режима дисплея
I
Переопределение клавиатуры
Переопределение клавиш
p
Таблица 2. Коды установки дисплея
Назначени
Код
Характеристики дисплея
обычная установка
0
символы повышенной яркости
1
Подчёркивание
4
мигающие символы
5
Инверсное изображение
7
Невидимые символы
8
Цвет символов
Чёрный
30
Красный
31
78
Зелёный
32
Жёлтый
33
Синий
34
Фиолетовый
35
Бирюзовый
36
Белый
37
Цвет фона
Чёрный
40
Красный
41
Жёлтый
43
Синий
44
Фиолетовый
45
Бирюзовый
46
Белый
47
Режим
40 столбцов, 25 строчек,чёрно белый
0
40 столбцов, 25 строчек, цветной
1
80 столбцов, 25 строчек,чёрно белый
2
80 столбцов, 25 строчек, цветной
3
79
графичский 320х200, цветной
4
графичский 320х200, чёрно-белый
5
графичский 640х200, чёрно белый
6
перенос (h) или сброс режима пере
носа (l) в конце каждой строки
7
2. Задания для самостоятельной работы:
Задание 1. Изучить текст командного файла autoexec.bat
1.1. Открыть для чтения файл autoexec.bat
1.2. Изучить структуру и содержание файла
1.3. Разобраться с назначением команд
1.4. Создать на диске Z: каталог AUTO и переместить в него файл настройки
конфигурации config.sys и файл автозапуска autoexec.bat
1.5. Перезагрузить ПК
Задание 2. Разработать пакетный файл, который создает каталог New и копирует туда содержимое текущего каталога. Сохранить пакетный файл в каталоге
Z:\Bat##_# с именем Copies.bat
2.1. Создать каталог на диске Z:\ с именем Bat##_# (##_# – номер группы_подгруппы)
2.2. Изменить файл autoexec.bat (F4) добавив в него команду Path Z:\Bat##_#
2.3. Создать в каталоге Z:\Bat##_# пакетный файл, используя встроенный редактор Norton Commander (Shift+F4 – создание файла):
2.3.1. Ввести команду очистки экрана.
2.3.2. Добавить в файл комментарий о его предназначении: Копирование
файлов
2.3.3. Ввести команду создания каталога New в каталоге Z:\Bat##_#
2.3.4. Ввести команду для копирования всех файлов в каталог New
2.4. Сделать активным каталог Files (С:\)
2.5. Проверить работоспособность пакетного файла, скопировав файлы каталога Files в каталог Z:\Bat##_#\New
2.6. Изменить пакетный файл таким образом, чтобы имя создаваемого каталога
необходимо было ввести в качестве параметра.
Задание 3. Разработать пакетный файл, который создает в каталоге Z:\Bat##_# каталоги TXT, Program и NUM. Скопировать из каталога Files все текстовые файлы в каталог TXT, все файлы-программы в каталог Program, а все файлы, содержащие в имени любую цифру в каталог NUM. Объединить все текстовые
файлы в один с именем all.txt Просмотреть полученный текстовый файл.
80
Вывести на экран оглавление каталога NUM. Сделать активным каталог
Program. Сохранить пакетный файл в каталоге Z:\Bat##_# с именем List.bat
Указание: для выборки всех файлов, содержащих в имени цифру использовать команду
For
Задание 4. По указанию преподавателя выберите вариант задания для файла автозапуска из
таблицы 3 индивидуально для каждого участника работы. Кроме того, в файле автозапуска
Вам необходимо предусмотреть следующее:
-выдачу сообщения о дате и времени запуска;
-выдачу сообщения об авторе файла:- фамилия, имя, отчество, группа и т.п. ( можно дать
собственный комментарий, приглашение, заставку и т.п.);
Таблица 3. Варианты заданий для файла автозапуска
Задаваемые функции
Варианты
1
2
3
4
Приглашение ДОС
==>
$$<
=/=
--/
Выдача имени текущего каталога
+
-
+
-
Выдача версии ОС
+
+
+
+
Выдача имени текущего накопителя
+
-
-
+
Курсор в позиции
5,5
5,10
10,15
5,20
Символы
Обычн.
повыш.ярк
мигающ.
инверсные
Цвет символов
Белый
Бирюзов.
фиолетов.
Желтый
Цвет фона
Черный
белый
красный
Синий
Режим
0
1
2
3
Задание 5. Изменить атрибуты файлов с помощью утилиты Attrib
5.1. Создать каталог TXT##_# на диске Z: (##_# – номер группы_подгруппы)
5.2. Скопировать из каталога Files все текстовые файлы в каталог TXT##_#
5.3. Просмотреть атрибуты нескольких текстовых файлов.
5.4. Изменить атрибуты всех текстовых файлов на атрибут Read-only (только для чтения)
81
Задание 6.
(дополнительное). Создать многовариантную конфигурацию командного
файла.
Примеры файла AUTOEXEC.BAT с многовариантной настройкой
rem Пример файла AUTOEXEC.BAT
@SET DN=C:\DN\
@PATH c:\windows;c:\windows\COMMAND;C:\DN
@SET TEMP=C:\DN
@ECHO OFF
SET BLASTER=A220 I5 D1 T4
GOTO %config%
:DOS
rem Описание дисковода CD-ROM(нижние две строчки)
SET FIXP=E:
LH \CPQDOS\MSCDEX.EXE /D:IDECD001 /L:E
LH C:\WINDOWS\COMMAND\DOSKEY
C:\MOUSE\MOUSE.COM /L=GB
LH MKEY.COM
C:\DN\DN.COM
GOTO DONE
:WIN
LH MKEY.COM
GOTO DONE
:DONE
PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;%PATH%
mode con codepage prepare=((866) c:\windows\COMMAND\ega3.cpi)
mode con codepage select=866
Контрольные вопросы:
1.
2.
3.
4.
5.
Какие условия можно проанализировать в командном файле ?
Что позволяет оператор FOR ?
Какие еще операторы, используемые в пакетных файлах Вы знаете ?
Какие параметры можно отобразить в приглашении MS-DOS ?
Зачем используется команда PAUSE ?
Отчет по проделанной работе:
В него должны входить:
1) тема работы;
2) цель работы;
3) время выполнения работы;
4) краткое описание основных операторов, используемых в пакетных файлах;
82
5) в рабочем отчете зафиксировать задание, текст файла, результат его выполнения.
Продемонстрировать правильность работы Вашего пакетного файла преподавателю.
6) Сделать выводы по работе.
Лабораторное занятие № 3
Тема: Использование Панели управления
Цель: Рассмотреть возможности настройки операционной системы с помощью папки Панель управления.
Содержание работы и последовательность ее выполнения
1.
Теоретические сведения
Операционная система Windows обладает широкими возможностями настройки. Цель
настройки - создание условий для эффективной и комфортной работы конкретного пользователя.
Основные настраиваемые объекты - средства управления и оформления, к которым
относят: Рабочий стол, Панель задач, Главное меню и основное оборудование. Средствами настройки являются: специальная системная папка Панель управления (Пуск Настройка - Панель управления) и контекстные меню объектов Windows. Контекстное
меню открывается в результате щелчка правой кнопкой мыши по выбранному объекту (окно,
папка, Рабочий стол, Панель задач и т.д.). Контекстное меню содержит команды, применимые к этому объекту.
Панель управления
Панель управления - это специальная системная папка, которая служит для настройки
конфигурации аппаратных и программных средств компьютера. Чтобы открыть ее необходимо выполнить одно из нижеследующих действий: нажать Пуск - Настройка - Панель
управления или Мой компьютер - Панель управления.
Рассмотрим некоторые возможности настройки операционной системы, предлагаемые
Панелью управления.
Дата и время: установка системной даты и времени, часового пояса, режима автоматического перехода на летнее время и обратно.
Установка и удаление программ: установка программ, отображение списка установленных на компьютере программ или их удаление, просмотр установленных компонентов Windows или их изменение, создание загрузочной дискеты Windows (предварительно
следует убедиться, что на дискете нет нужных файлов, так как они будут удалены).
Установка оборудования: запуск мастера установки программного обеспечения для
нового оборудования.
Шрифты: просмотр, установка и удаление шрифтов с компьютера.
Экран: настройка параметров монитора и видеоадаптера, а также оформления интерфейса. Подробно был рассмотрен раньше в настройках Рабочего стола.
Язык и стандарты: выбор стандартов отображения чисел, даты, времени и денежных
единиц в соответствии со стандартами, применяемыми в выбранном регионе.
2. Задание для самостоятельной работы:
Задание 1. Открыть Sun Virual Box.
Задание 2. Загрузить виртуальную машину WinXP.
83
Задание 3. Выполнить настройку Рабочего стола:
Установить мышь на свободное место Рабочего стола, вызвать контекстное меню и
выбрать Свойства.
Во вкладке Фон выбрать Рисунок рабочего стола - Отсутствует.
Во вкладке Заставка выбрать Заставка - Нет, зайти в настройки Энергосберегающих функций монитора и выбрать Схемы управления питанием — Домашний или
настольный, в настройках схемы Домашний или настольный указать Ждущий режим Никогда, Отключение - Никогда, Отключение дисков - Никогда. Нажать ОК.
Во вкладке Оформление выбрать Схема - Обычная Windows.
Во вкладке Эффекты в настройках Параметры отображения отметить Отображать
полноцветные значки, Сглаживать неровности экранных шрифтов, остальные опции не
отмечать.
Во вкладке Интернет проверить, что не установлена опция Отображать Active
Desktop как веб-страницу;
Во вкладке Настройка установить Цветовая палитра - True Color (32 бита), Область экрана - 1024x768 точек. Если установлен драйвер видеокарты Стандартный видеоадаптер (VGA), то необходимо выполнить установку программы VMWare Tools. Для этого в
строке меню VMWare Workstation выберите Edit - Install VMWare Tools. В окне мастера
установки нажимайте Далее до завершения установки. После перезагрузки Windows XP
установится драйвер видеокарты VMware SVGA II и вы сможете выполнить необходимые
настройки. Для завершения настроек Рабочего стола в окне Свойства: Экран нажать ОК.
Задание 4. Открыть папку Панель управления одним из вышеуказаных способов, выполнить настройку клавиатуры:
Выбрать Клавиатура - Язык - Добавить. В окне Добавление языка выбрать Белорусский, нажать кнопку ОК. В окне Установленные языки и раскладки клавиатуры
выделить Английский (США) и нажать кнопку Назначить используемым по умолчанию.
Переключение раскладок выбрать <Ctrl>+<Shift>. Проверить, что опция Отображать индикатор языка на панели задач включена. Нажать ОК (для выполнения действий по добавлению языка необходимо указать путь к дистрибутиву Windows).
Задание 5. В папке Панель управления выбрать Система - Устройства,
произвести настройку параметров устройств:
При установленном режиме отображения устройств Устройства по типам выделить Компьютер и нажать кнопку Свойства. В окне Свойства: Компьютер на вкладке
Просмотр ресурсов, выбирая пункты: Запрос на прерывания (IRQ), Ввод/вывод (I/O),
Прямой доступ к памяти (DMA), Память, просмотреть назначенные устройствам ресурсы.
Нажать кнопку Отмена.
В окне Свойства: Система выбрать вкладку Быстродействие. Просмотреть
значения Состояние системы. Выбрать Дополнительные параметры - Файловая система
- Гибкие диски и убрать опцию Настройка - При запуске компьютера определять, подключен ли дисковод. Нажать кнопку ОК. На реальном компьютере это ускоряет загрузку
ОС за счет исключения опроса дисковода.
Просмотреть размер файла подкачки, созданного ОС в папке
C:\WINDOWS\Win386.swp. Выбрать Дополнительные параметры -Виртуальная память.
Выбрать режим Не использовать виртуальную память. Нажать кнопку ОК. В окне с предупреждением ответить Да и нажать кнопку Закрыть. В окне Изменение параметров системы ответить Да для перезагрузки системы. Перезагрузиться в безопасном режиме. Провести
дефрагментацию жесткого диска. Снова перезагрузиться в нормальном режиме и установить
размещение файла подкачки диск С:\, размер файла подкачки 41000 Кбайт, причем минимум
и максимум должны быть одинаковы. После этого перезагрузить компьютер. Просмотреть
размер файла подкачки, созданного ОС в папке C:\Win386.swp. Задание swap-файла фикси-
84
рованного размера может увеличить производительность операционной системы, а также
повысить ее стабильность. Конкретный размер виртуальной памяти зависит от объема ОЗУ,
установленного на компьютере.
Задание 6. Открыть файл C:\WINDOWS\SYSTEM\oeminfo.ini и разместить в нем
текст:
[General]
Manufacturer=Зроблена ў Beлapyci
Model=Kaмnyтap
[Support Information]
Line1=Аграрно-экономический колледж
Line 2=Группа учащихся группы П-21(22) 2-й курс
Line З=Настройка Windows круглосуточно в течение 15 минут!
Открыть графический редактор Paint. Выбрать Рисунок - Атрибуты и ввести данные: Ширина - 160 точек, Высота - 120 точек. Нажать ОК. Нарисовать любой рисунок.
Нажать в строке меню Файл - Сохранить как.... В окне Сохранить как... ввести: Папка:
C:WlNDOWS\SYSTEM, Имя файла: oemlogo.bmp, Тип файла: 256-цветный рисунок. Нажать
кнопку Сохранить. Закрыть Paint.
Нажать F5 в Проводнике для обновления свойств системы. Открыть окно Свойства:
Система - Общие и посмотреть слева внизу на вашу картинку с текстом. По замыслу Microsoft там может располагаться эмблема фирмы-поставщика компьютера. Нажмите кнопку
Поддержка... и посмотрите текст.
Задание 7. Изменить настройку панели задач, чтобы панель задач автоматически
убиралась с экрана, а меню «Пуск» отображалось в классическом стиле.
Нажав кнопку Пуск, выберите команду Настройка-Панель управления. В окне Панель управления щелкните ярлык Панель задач и меню «Пуск». В окне Свойства панели
задач и меню Пуск на вкладке Панель задач включите флажок Автоматически скрывать
панель задач, а на вкладке меню «Пуск» включите параметр Классическое меню «Пуск».
Для вступления в действие внесенных изменений щелкните кнопку Применить, затем закройте окно Свойства панели задач и меню «Пуск», щелкнув кнопку ОК. Убедитесь в изменении настройки панели задач и меню «Пуск».
Задание 8. Изменить настройку меню «Пуск» так, чтобы в нем была команда запуска стандартной программы Калькулятор.
Нажав кнопку Пуск, выберите команду Настройка-Панель управления. В окне Панель управления щелкните ярлык Панель задач и меню «Пуск». В окне Свойства панели задач и меню «Пуск» на вкладке меню «Пуск» щелкните кнопку Настроить. Щелкнув
кнопку Добавить, раскройте окно Создание ярлыка, затем, щелкнув кнопку Обзор, откройте диалоговое окно Обзор, в котором найдите файл C:\WINDOWS\system32\calc.exe. Щелкнув кнопку Открыть, завершите формирование командной строки для создаваемой команды
меню. Щелкнув кнопку Далее, раскройте окно Выбор папки, выберите позицию расположения в меню добавляемой команды, указав папку Главное меню и щелкните кнопку Далее.
В следующем окне задайте название ярлыка (можно оставить предлагаемое по умолчанию
Calc) и щелкните кнопку Готово.
Закройте окно Свойства панели задач и меню «Пуск» и проверьте результат, щелкнув
кнопку Пуск и просмотрев список команд в меню «Пуск».
85
Задание 9. Переместите команду для запуска стандартной программы Калькулятор
из меню «Пуск» в пункт Программы.
Нажав кнопку Пуск, выберите команду Настройка-Панель управления. В окне Панель
управления щелкните ярлык Панель задач и меню «Пуск». В окне Свойства панели задач
и меню «Пуск» на вкладке меню «Пуск» щелкните кнопку Настроить. В окне Настройка
классического меню щелкните кнопку Вручную. После этого откроется окно Проводника
Windows с папкой Главное меню в нем. Возьмите мышкой ярлык программы Калькулятор в
правой части окна, где отображаются папки и ярлыки, входящие в папку Главное меню, и
оттащите на папку Программы. Закройте окно Проводника с папкой Главное меню и окно
Свойства панели задач и меню Пуск. Проверьте результат, щелкнув кнопку Пуск и просмотрев список команд в меню Программы.
Задание 10. Удалите команду для запуска программы Калькулятор из пункта Программы меню Пуск.
Нажав кнопку Пуск, выберите команду Настройка-Панель управления. В окне Панель
управления щелкните ярлык Панель задач и меню «Пуск». В окне Свойства панели задач
и меню «Пуск» на вкладке меню «Пуск» щелкните кнопку Настроить. В окне Настройка
классического меню щелкните кнопку Удалить. В окне Удаление ярлыков и папок выберите ярлык программы Калькулятор, затем щелкните кнопку Удалить и подтвердите удаление. Щелкнув кнопку Закрыть, закройте окно Удаление ярлыков и папок, а затем закройте окна Настройка классического меню и Свойства панели задач и меню «Пуск».
Проверьте результат, щелкнув кнопку Пуск и просмотрев список команд в меню Программы.
Контрольные вопросы
1. Какие средства настройки Windows вы знаете?
2. Для чего служит ввод пароля Windows при загрузке ОС (не путать с вводом сетевого
пароля)?
3. Какой язык ввода по умолчанию необходимо устанавливать на компьютере?
4. Можно ли настроить Панель задач так, что она окажется скрытой под открытыми окнами приложений?
5. Для чего необходим файл подкачки?
6. Почему файл подкачки рекомендуют размещать в отдельном разделе диска?
Отчет по проделанной работе:
В него должны входить:
1) тема работы;
2) цель работы;
3) продемонстрировать выполненные задания преподавателю;
4) ответы на контрольные вопросы.
86
Лабораторное занятие № 4
Тема: Использование приёмов работы с файловой системой NTFS. Назначение
разрешений доступа к файлам и папкам.
Цель: Научиться устанавливать разрешения NTFS для файлов и для папок для отдельных
пользователей и групп в операционной системы Windows ХР, а также устранять проблемы
доступа к ресурсам.
Содержание работы и последовательность ее выполнения
1. Теоретические сведения
Общие сведения об использовании разрешений NTFS
Разрешения NTFS позволяют явно указать, какие пользователи и группы имеют доступ к файлам и папкам и какие операции с содержимым этих файлов или папок им разрешено выполнять. Разрешения NTFS применимы только к томам, отформатированным с использованием файловой системы NTFS. Они не предусмотрены для томов, использующих
файловые системы FAT или FAT32. Система безопасности NTFS эффективна независимо от
того, обращается ли пользователь к файлу или папке, размещенным на локальном компьютере или в сети.
Разрешения, устанавливаемые для папок, отличаются от разрешений, устанавливаемых для файлов. Администраторы, владельцы файлов или папок и пользователи с разрешением «Полный доступ» имеют право назначать разрешения NTFS пользователям и группам
для управления доступом к этим файлам и папкам. Список управления доступом
В NTFS хранится список управления доступом (access control list -ACL) для каждого
файла и папки на томе NTFS. В этом списке перечислены пользователи и группы, для которых установлены разрешения для файла или папки, а также сами назначенные разрешения.
Чтобы пользователь получил доступ к ресурсу, в ACL должна быть запись, называемая элемент списка управления доступом (access control entry - АСЕ) для этого пользователя или
группы, к которой он принадлежит. Эта запись назначит запрашиваемый тип доступа
(например, Чтение) пользователю. Если в ACL нет соответствующей АСЕ, то пользователь
не получит доступ к ресурсу.
Множественные разрешения NTFS
Вы можете установить несколько разрешений пользователю и всем группам, членом
которых он является. Для этого вы должны иметь представление о правилах и приоритетах,
по которым в NTFS назначаются и объединяются множественные разрешения и о наследовании разрешений NTFS.
Эффективные разрешения. Эффективные разрешения пользователя для ресурса это совокупность разрешений NTFS, которые вы назначаете отдельному пользователю и
всем группам, к которым он принадлежит. Ес ли у пользователя есть разрешение «Чтение»
для папки, и он входит в группу, у которой есть разрешение «Запись» для той же папки, значит, у этого пользователя есть оба разрешения.
Установка разрешений NTFS и особых разрешений
Вы должны руководствоваться определенными принципами при установке разрешений NTFS. Устанавливайте разрешения согласно потребностям групп и пользователей, что
включает в себя разрешение или предотвращение наследования разрешений родительской
папки подпапками и файлами, содержащимися в родительской папке.
Если вы уделите немного времени на планирование ваших разрешений NTFS и будете
соблюдать при планировании несколько принципов, то обнаружите, что разрешениями легко
управлять.
87
• Для упрощения процесса администрирования сгруппируйте файлы по папкам следующих типов: папки с приложениями, папки с данными, личные папки. Централизуйте общедоступные и личные папки на отдельном томе, не содержащем файлов операционной системы и других приложений. Действуя таким образом, вы получите следующие преимущества:
- сможете устанавливать разрешения только папкам, а не отдельным файлам;
- упростите процесс резервного копирования, так как вам не придется делать резервные копии файлов приложений, а все общедоступные и личные папки находятся в одном месте.
• Устанавливайте для пользователей только необходимый уровень доступа. Если
необходимо чтение файла, установите пользователю разрешение Чтение для этого файла.
Это уменьшит вероятность случайного изменения файла или удаления важных документов и
файлов приложений пользователем.
• Создавайте группы согласно необходимому членам группы типу доступа, затем
установите соответствующие разрешения для группы. Назначайте разрешения отдельным
пользователям только в тех случаях, когда это необходимо.
• При установке разрешений для работы с данными или файлами приложений установите разрешение Чтение и выполнение для групп Пользователи и Администраторы. Это
предотвратит случайное удаление файлов приложений или их повреждение вирусами или
пользователями.
• При установке разрешений для папок с общими данными назначьте разрешения
Чтение и выполнение и Запись группе Пользователи и разрешение Полный доступ для группы Создатель-владелец. По умолчанию пользователь, создавший документ, также является
его владельцем. Владелец файла может дать другому пользователю разрешение на владение
файлом. Пользователь, который принимает такие права, в этом случае становится владельцем файла. Если вы установите разрешение Чтение и выполнение и Запись группе Пользователи и разрешение Полный доступ группе Создатель-владелец, то пользователи получат возможность читать и изменять документы, созданные другими пользователями, а также читать,
изменять и удалять файлы и папки, создаваемые ими.
• Запрещайте разрешения, только если необходимо запретить отдельный тип доступа
определенному пользователю или группе.
• Поощряйте пользователей в установке разрешений для файлов и папок, которые они
создают, и научите их это делать самостоятельно.
Администраторы, пользователи с разрешением Полный доступ и владельцы файлов и
папок могут устанавливать разрешения для отдельных пользователей и групп.
Дополнительно Позволяет получить доступ к дополнительным возможностям поиска,
включая возможность поиска удаленных учетных записей пользователей, учетных записей с
неустаревшими паролями и учетных записей, по которым не подключались определенное
количество дней.
Назначение или запрещение особых разрешений
Щелкните кнопку Дополнительно, чтобы открыть диалоговое окно Дополнительные параметры безопасности, где перечислены группы и пользователи и установленные
для них разрешения для этого объекта. В поле Элементы разрешений также указано, от какого объекта разрешения унаследованы и к каким объектам применимы. Вы можете воспользоваться диалоговым окном Дополнительные параметры безопасности для изменения разрешений, установленных для пользователя или группы. Для изменения разрешений, установленных для пользователя или группы, выделите пользователя и щелкните кнопку Изменить. Откроется диалоговое окно Элемент разрешения для. Затем выделите или отмените
определенные разрешения, которые вы хотите изменить.
88
2. Задание для самостоятельной работы
Задание 1. Открыть Sun Virtual Box.
Задание 2. Загрузить виртуальную машину Windows ХР и создать новую учетную запись uir.
Задание 3. Загрузить виртуальную машину Windows ХР с учетной записью uir.
Задание 4. Определение разрешений NTFS по умолчанию для только что созданной
папки.
Запустить Проводник, создать папки C:\FoIderl и C:\FoIderl\Folder2. Просмотреть
разрешения, установленные для созданных папок, щелкнув по вкладке Безопасность диалогового окна свойств папки. Обратить внимание на наследование разрешений папкой Folder2
от родительской папки Folder 1.
Если на экране не видна вкладка Безопасность, вам следует уточнить два вопроса:
1) Раздел вашего диска отформатирован как NTFS или как FAT? Только на разделах
NTFS используются разрешения NTFS, и, таким образом, только на разделах NTFS видна
вкладка Безопасность.
2) Используете вы простой общий доступ к файлам или нет? Щелкните кнопку Отмена, чтобы закрыть диалоговое окно свойств папки. В пункте меню Сервис выберите пункт
Свойства папки. В диалоговом окне Свойства папки перейдите на вкладку Вид. В списке
Дополнительные параметры снимите флажок Использовать простой общий доступ к
файлам (рекомендуется) и щелкните ОК.
Определить для какой группы установлены особые разрешения. Щелкнуть кнопку
Дополнительно, выделить эту группу и просмотреть установленные разрешения.
Закрыть диалоговое окно свойств папки. Закрыть окно Проводник и завершить сеанс.
Задание 5. Создать новую учетную запись uir-1.
Задание 6. Войти в систему с учетной записью uir-1. Запустить Проводник, войти в
папку C:\FoIderl. Создать два текстовых документа, присвоив им имена file 1 и file 2
Попытаться выполнить следующие операции с файлом filel: открыть файл; изменить
файл; удалить файл. Какие действия вы смогли успешно совершить и почему?
Завершить сеанс работы и войти в систему, используя учетную запись uir-2. Запустить Проводник, войти в папку C:\Folderl. Попытаться выполнить следующие операции с
файлом fiie2: открыть файл; изменить файл; удалить файл. Какие действия вы смогли
успешно совершить и почему? В настоящее время ваша регистрационная запись - uir-2. Можете ли вы изменить разрешения, установленные для пользователя, пока вы подключены как
uir-2? Почему? Завершить сеанс.
Задание 7. Установить разрешения NTFS для папки C:\Folderl. При этом необходимо
соблюдать следующие правила:
1) все пользователи должны иметь возможность читать документы и файлы в папке
Folderl;
2) все пользователи должны иметь возможность создавать документы в папке Folderl;
3) все пользователи должны иметь возможность изменять содержание, свойства и
разрешения для создаваемых ими документов в папке Folderl;
4) пользователь uir-2 несет ответственность за содержимое папки Folderl и должен
иметь возможность изменять и удалять все файлы в папке Folderl.
89
Основываясь на полученной информации, определить, как следует изменить разрешения для соответствия этим четырем критериям?
Войти в систему, используя учетную запись uir. Открыть Проводник. Открыть папку
Folderl. Щелкнуть правой кнопкой мыши значок папки Folderl, затем выбрать пункт меню
Свойства. Перейти на вкладку Безопасность диалогового окна свойств папки. На вкладке
Безопасность щелкнуть кнопку Добавить. Откроется диалоговое окно Выбор: Пользователи или Группы.
В текстовом поле Введите имена выбираемых объектов ввести uir-2, затем щелкнуть кнопку Проверить имена. В текстовом поле Введите имена выбираемых объектов
должна появиться надпись <имя компьютера>\тг-2. Это свидетельствует, что Windows ХР
Professional обнаружила пользователя uir-2 на компьютере <имя компьютерен и что это
действительная учетная запись пользователя. Щелкнуть ОК, чтобы закрыть диалоговое окно
Выбор: Пользователи или Группы. Теперь пользователь uir-2 включен в список Группы
или пользователи диалогового окна свойств папки Folderl. Какие разрешения установлены
для пользователя uir-2?
Щелкнуть кнопку Дополнительно. Откроется диалоговое окно Дополнительные
параметры безопасности для Folderl, и вы увидите, что пользователь uir-2 включен в список Элементы разрешений. Убедиться, что строка uir-2 выделена, и щелкнуть кнопку Изменить. Откроется диалоговое окно Элемент разрешения для Folderl, и вы увидите в текстовом поле Имя учетную запись пользователя uir-2.
В колонке Разрешить щелкнуть Полный доступ. Теперь в колонке Разрешить установлены все флажки. Щелкнуть ОК, чтобы закрыть диало говое окно Элемент разрешения
для Folder! и щелкнуть ОК, чтобы закрыть диалоговое окно Дополнительные параметры
безопасности для Folder 1. Щелкнуть ОК, чтобы закрыть диалоговое окно свойств папки
Folder 1.
Закрыть Проводник и завершить сеанс Windows ХР Professional.
Войти в систему, используя учетную запись uir-2. Запустить Проводник, войти в
папку C:\Folderl. Попытаться выполнить следующие операции с файлом file2: изменить
файл; удалить файл. Какие действия вы смогли успешно совершить и почему? Завершить
сеанс Windows ХР Professional.
Задание 8. Проверить, как разрешения NTFS наследуются в иерархии папок.
Войти в систему, используя учетную запись uir-1. Запустить Проводник, войти в
папку C:\Folderl\Folder2. Создать текстовый файл с именем ШеЗ в папке. Завершить сеанс
Windows ХР Professional.
Войти в систему, используя учетную запись uir-2. Запустить Проводник, войти в
папку C:\Folderl\Folder2. Попытаться выполнить следующие операции с файлом ШеЗ: открыть файл; изменить файл; удалить файл. Какие действия вы смогли совершить и почему?
Завершить сеанс Windows ХР Professional.
Задание 9. Изучить результаты смены владельца файла.
Войти в систему, используя учетную запись uir. В папке C:\Folderl создать текстовый
файл file4.
Щелкнуть правой кнопкой мыши значок документа file4, затем выбрать пункт меню
Свойства. Откроется диалоговое окно Свойства: file4с активной вкладкой Общие. Перейти
на вкладку Безопасность для просмотра разрешений, установленных для файла file4. Щелкнуть кнопку Дополнительно. Откроется диалоговое окно Дополнительные параметры безопасности для file4 с активной вкладкой Разрешения. Перейти на вкладку Владелец. Кто
является текущим владельцем файла file4?
Установка разрешения, позволяющего пользователю сменить владельца.
90
В диалоговом окне Дополнительные параметры безопасности для file4 перейти на
вкладку Разрешения. Щелкнуть кнопку Добавить. Откроется диалоговое окно Выбор:
Пользователи или Группы. Убедиться, что в текстовом поле Размещение, которое расположено вверху диалогового окна, выбрано имя вашего компьютера. В текстовом поле Введите имена выбираемых объектов ввести uir-З, затем щелкните кнопку Проверить имена.
Щелкнуть ОК.
Станет активным диалоговое окно Элемент разрешения для file4. Обратить внимание на то, что все элементы разрешений для пользователя uir-З не отмечены. В колонке Разрешения установить флажок Разрешить для разрешения Сменить владельца. Щелкнуть
ОК. Щелкнуть ОК для того, чтобы вернуться к диалоговому окну свойств файла file4.
Щелкнуть ОК для сохранения изменений и закрыть диалоговое окно свойств файла file4. Закрыть Проводник и выйти из системы. Смена владельца файла.
Войти в систему, используя учетную запись uir-З. Запустить Проводник, войти в
папку C:\Folderl. Щелкнуть правой кнопкой мыши значок файла file4 и выбрать пункт меню
Свойства. Перейти на вкладку Безопасность для просмотра разрешений для файла. Щелкнуть Дополнительно и перейти на вкладку Владелец. В колонке Изменить владельца на
выбрать uir-З, затем щелкнуть кнопку Применить. Кто теперь является владельцем файла
Ше4?
Щелкнуть ОК, чтобы закрыть диалоговое окно Дополнительные параметры безопасности для file4.
Проверка разрешений для файла в качестве владельца.
Щелкнуть кнопку Дополнительно и снять флажок Наследовать от родительского
объекта применимые к дочерним объектам разрешения, добавляя их к явно заданным
в этом окне. Установить разрешение Полный доступ к текстовому документу file4 и нажать
кнопку Применить. Щелкнуть ОК, чтобы закрыть диалоговое окно Дополнительные параметры безопасности для file4. Щелкнуть ОК, чтобы закрыть диалоговое окно свойств
файла file4.
Задание 10. Изучить изменение разрешений и прав владельца при копировании и перемещении папок.
Создание папки при подключении с учетной записью пользователя.
Пока вы зарегистрированы в системе под учетной записью uir-З создать папку с именем Tempi в корневой папке диска С:\. Какие разрешения установлены для этой папки? Кто
является владельцем папки?
Создание папок при подключении с учетной записью члена группы Администраторы.
Подключитесь с учетной записью uir и создайте папки Теmp2 и Теmp З в корневой
папке диска С:\.
Каковы разрешения для папок, которые вы только что создали? Кто является владельцем папок Теmp 2 и Теmp З?
Установить разрешения для папок Теmp 2 и Теmp З.
Снять флажок Наследовать от родительского объекта применимые к дочерним
объектам разрешения, добавляя их к явно заданным в этом окне. В открывшемся диалоговом окне щелкните Удалить» для удаления всех разрешений, кроме указанных ниже.
Папка Теmp 2: Администраторы - Полный доступ; Пользователи — Чтение и
выполнение.
Папка Теmp З: Администраторы - Полный доступ; Операторы архива - Чтение и
выполнение; Пользователи - Полный доступ.
Копирование папки в другую папку на одном и том же томе NTFS.
91
Пока вы находитесь в системе под учетной записью uir, скопировать папку C:\Temp2
в папку C:\Templ. Для этого выделить значок папки C:\Temp2 и, удерживая нажатой клавишу CTRL, перетащить мышью C:\Temp2 в C:\Templ.
Выделив C:\Templ\Temp2, просмотреть разрешения и права владельца, затем сравнить разрешения и права владельца с папкой C:\Temp2.
Перемещение папки на одном и том же томе.
Войти в систему с учетной записью uir-З. В Проводнике выделить значок папки
C:\Temp3, затем переместить ее в папку C:\Templ. Что произошло с разрешениями и владельцем для папки C:\Templ\Temp3?
Задание 11. Самостоятельно определить? как предотвратить удаление пользователями, имеющими разрешение Полный доступ к папке, файла в этой папке, для которого
установлен запрет на разрешение Полный доступ?
3. Контрольные вопросы
1. Что такое эффективные разрешения пользователя для ресурса?
2. Какие объекты по умолчанию наследуют разрешения, установленные для родительской папки?
3. Чем отличается разрешение «Удаление» от разрешения «Удаление подпапок и файлов»?
4. Какое разрешение NTFS для файлов следует установить для файла, если вы позволяете пользователям удалять файл, но не позволяете становиться владельцами файла?
5. Если вы хотите, чтобы пользователь или группа не имела доступ к определенной
папке или файлу, следует ли запретить разрешения для этой папки или файла?
Отчет по проделанной работе:
В него должны входить:
1) тема работы;
2) цель работы;
3) изучить теоретические сведения;
4) описать выполнение задания 11;
5) продемонстрировать выполненную работу преподавателю;
6) ответить на контрольные вопросы.
Лабораторное занятие № 5
Тема: Запись, сортировка, поиск в текстовом файле c помощью командных файлов
Цель: Реализация на языке командных файлов (1) MS-DOS.
Задание по выполненной лабораторной работе:
Условные обозначения:
КФ - командный файл
1. Для записи в текстовый файл информации о студентах Вашей группы создать КФ
WRITE_FD.BAT со следующей программной функцией:
1.1. отключить эхо-сопровождение;
1.2. очистить экран;
92
1.3. если не заданы параметры запуска КФ, то идти на метку HELP, иначе записать значения
параметров запуска в файл и идти на конец;
1.4. метка HELP;
1.5. информировать пользователя о структуре и содержании полей записи в файле данных и
синтаксисе команды, например:
WRITE_FD <ФИО> <ГОД РОЖД> <МЕСТО РОЖД> <ПОЛ>
2. С помощью КФ ввести в файл данных 10 записей.
3. Написать КФ FIND_FD.BAT для поиска информации в файле данных по заданному признаку:
3.1. отключить эхо-сопровождение;
3.2. очистить экран;
3.3. если параметр запуска не задан, то идти на метку HELP, иначе искать записи в файле
данных, содержащие заданную параметром запуска строку символов (ключ), и вывести их на
экран, идти на конец;
3.4. метка HELP;
3.5. информировать пользователя о синтаксисе запроса, например:
FIND_FD <строка символов> , где <строка символов> определяет фамилию, год рождения,
место рождения или другую информацию из файла данных.
4. Написать КФ SORT_FD.BAT для сортировки файла данных по алфавиту, со следующей
программной функцией:
4.1. отключить эхо-сопровождение;
4.2. очистить экран;
4.3. провести информирование пользователя;
4.4. сортировать записи файла данных по алфавиту, результат записать во временный файл;
4.5. скопировать временный файл в файл данных;
4.6. удалить временный файл.
5. Написать КФ OBRAB.BAT, со следующей программной функцией:
5.1. отключить эхо-сопровождение;
5.2. очистить экран;
5.3. организовать опрос пользователя через меню, каждый пункт которого будет вызывать
ранее разработанные файлы WRITE_FD.BAT, SORT_FD.DAT, FIND_FD.BAT (для организации опроса пользователя, используется внешняя программа choice.com);
5.4. в зависимости от выбора пользователя вызвать требуемый КФ.
Отчет по проделанной работе:
В него должны входить:
1) тема работы;
2) цель работы;
3) изучить теоретические сведения;
4) продемонстрировать выполненную работу преподавателю;
5 САМОСТОЯТЕЛЬНАЯ РАБОТА СТУДЕНТА
5.1 Изучение состава и принципов функционирования элементов конкретных ОС и
программных оболочек
5.2 Изучение принципов реализации функции управления в конкретных вычислительных системах и сетях
5.2.1 Изучение конкретных способов реализации программных средств защиты в вычислительных системах
5.2.2 Состав и работа стандартных команд ОС по управлению устройствами, файлами,
процессами, диагностикой
93
5.2.3 Реестр ОС
5.2.4 Назначение ОС. ОС как виртуальная машина. ОС как система управления ресурсами.
5.2.5 Интерфейс прикладного программирования.
5.2.6 Примитивы взаимодействия процессов. Проблема переполненного буфера.
5.2.7 Решение проблемы переполненного буфера с помощью семафора
5.2.8 Основные понятия планирования процессов
5.2.9 Планирование в системах пакетной обработки: FIFO, SJF, SRT, трехуровневое
планирование
5.2.10 Планирование в интерактивных системах: Циклическое планирование. Приоритетное планирование
5.2.11 Методы разделения процессов на группы
5.2.12 Лотерейное планирование. Справедливое планирование. Гарантийное планирование
Планирование в системах реального времени
5.2.13 Планирование однородных процессов. Общее планирование реального времени
5.2.14 Взаимоблокировка процессов. Методы борьбы с взаимоблокировками
5.2.15 Управление памятью. Особенности реализации в UNIX, LINUX, Windows
94
Download