Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО ответы.doc
Скачиваний:
7
Добавлен:
20.07.2019
Размер:
417.79 Кб
Скачать
  1. Проблема определения границ лексем

См. билет №1.

  1. Мультипрограммный режим работы вычислительной системы

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

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

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

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

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

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

Итак, вторым условием существования мультипрограммирования — наличие привилегированного режим в системе. Это такой режим, в котором программе доступны все возможные команды ЦП. Соответственно, непривилегированный (пользовательский или математический) режим — это такой режим, в котором программе доступна лишь часть команд ЦП, и программы пользователя не смогут обратиться к некоторым функциям напрямую.

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

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

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

При наличии прерывания по таймеру можно отказаться от наличия асинхронной системы прерываний.

Итак, мы перечислили три условия на аппаратуру вычислительной системы, которые должны быть выполнены для организации мультипрограммного режима работы.

ОС

1ая программа

2ая программа

...

Nая программа

Следующая проблема — в системе, которая работает в МП режиме, находится много программ, обрабатываемых ЦП. Может возникнуть ситуация (сходная с проблемой виртуальной памяти). Существует некоторая физическая память, пусть она будет страничная. Если работает режим мультипрограммирования, то какую-то часть памяти занимает ОС, какую-то часть занимает первая программа, вторая и т.д. В простейшем случае в системе может находиться и обрабатываться столько программ, сколько позволит разместить в себе оперативная память. Но это достаточно неэффективно, потому что все равно выполнение программы локализовано в нескольких виртуальных страницах, и выполнение перемещается не так быстро, то есть могут быть, организованы какие-то циклы в пределах одной страницы, обращение к небольшим функциям и т.д. Это означает, что если мы будем размещать в ОЗУ весь код и данные, то большая часть ОЗУ будет простаивать. Поэтому имеется естественное желание в ОЗУ держать только те фрагменты кода и данных, которые в настоящий момент используются. А для этого используется аппарат подкачки (swapping). Это аппаратно-программное средство, суть которого заключается в следующем — в таблице приписки виртуальной памяти, в каждой строке может быть еще одно поле — поле, которое характеризует частоту обращения к странице. Это поле аппаратно формируется. То есть также, примерно, как собирается информация о “старении” информации в буфере ОЗУ, собирается информация об обращениях к данной странице в виртуальной памяти. По этим данным ОС может откачивать страницы, принадлежащие какому-либо процессу во внешнюю память. Например, после загрузки и некоторого времени выполнения программы, ОС начинает те страницы, к которым количество обращений было минимальным, сбрасывать на внешний носитель (на больших машинах обычно для этого используются магнитные барабаны). При этом если страница откачена, то в таблицу приписки записывается отрицательное значение, и при возникновении обращения к этой строке (и, соответственно, возникновении прерывания) ОС сначала смотрит — а не есть ли это обращение к своей памяти, но которая откачена. Если это есть такое обращение, то ОС устанавливает заказ на подкачку этой страницы обратно, а пока это происходит, программа ожидает подхода информации, и в это время выполняются какие-то другие программы.

Такой механизм подкачки достаточно эффективен, он позволяет в ОЗУ от каждой из выполняемых программ держать незначительную часть. А когда в обработке находится большое число программ, то всегда при подкачке одной программы может выполняться другая.

С одной стороны подкачка поддерживается аппаратурой (подсчет “активности” страниц памяти сложно организовать программно), с другой стороны — все реальное управление программно.