Главная страница
Навигация по странице:

  • Итак, первая проблема — проблема защиты памяти.

  • Вторая проблема.

  • Третья проблема.

  • Операционная Система (ОС)

  • Лекции Системное ПО. Лекция Структура и основные компоненты вычислительной системы


    Скачать 0.71 Mb.
    НазваниеЛекция Структура и основные компоненты вычислительной системы
    Дата13.09.2022
    Размер0.71 Mb.
    Формат файлаdoc
    Имя файлаЛекции Системное ПО.doc
    ТипЛекция
    #675338
    страница4 из 15
    1   2   3   4   5   6   7   8   9   ...   15

    Мультипрограммный режим



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

    Начертим следующую диаграмму: Она показывает работу ЦП во времени.

    При счете задачи “1” в какой-то момент ЦП потребовались данные, которые находятся на ВЗУ. Формируется заказ на обмен, но данные сразу не поступают (из-за низкой скорости обмена). И какое-то время ЦП простаивает (разрыв в черте). Далее обмен завершился и программа продолжает выполняться. Но потом возможен еще такой же запрос к ВЗУ, а потом еще и еще. В зависимости от типа или класса решаемой на вычислительной машине задачи таких простоев может быть до 99% времени выполнения программы, что приводит к неэффективности работы вычислительной системы. Поэтому было бы неплохо при наличии асинхронно работающих устройств в промежутке времени, когда одна программа не может выполняться (например, ожидает данных), запускать другую программу, которая будет “жить” по тем же правилам — она будет выполняться на ЦП, а если ей чего-то не будет хватать, то последует обращение на внешнее устройство с вытекающей отсюда паузой в ее работе. А в эту паузу можно запустить третью программу и т.д.

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

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

    Сначала программа была одна и “творила” все, что хотела — ошибка в программе приводила к ошибке в системе, но кроме самой программы по сути дела больше никто не страдал. А когда на машине появляется еще одна программа, то начинают возникать проблемы:

    Кто-то взял и записал в пространство работающей программы свою информацию или

    считал из пространства программы какую-то информацию, возможно конфиденциальную.

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

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

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

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

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

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

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

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

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

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

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

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

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

    Это относится почти ко всему, за исключением, наверное, буферизации памяти между ОЗУ и ЦП — это практически полностью аппаратное средство.

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

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

    Это, пожалуй, все, что относится к первой теме.

     

    Лекция 5


     

    Операционная Система (ОС)
    Мы начинаем блок тем, называемых “Операционная система.”

    1   2   3   4   5   6   7   8   9   ...   15


    написать администратору сайта