Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Управление вводом-выводомПодсистема ввода-выводаявлятся непременным компонентом архитектуры любой ВС. В составе любой ОС исмеется специальная подсистема, управляющая аппаратурой ввода-вывода, исзбавляя тем самым пользователя от необходимости знания множества деталей для организации процессов ввода-вывода информации между программами и ВУ. Но это только одна сторона дела. Основной задачей подсистемы управления вводом-выводом в мультипрограммных системах является обеспечение непрерывной организации (планирование, управление) и двусторон-ней передачи данных между ОП и ВУ с целью достижения максимального перекрытия во времени работы аппаратуры ВУ и процессора. При этом несомненно подразумевается обеспечение высокоэффективной работы по скорости передачи данных между памятью и внешней средой. В мультипрограммном режиме подсистема управления вводом-выводом должна обеспечивать пользователя удобным и понятным интерфейсом для обращения к ВУ с условием унификации доступа к различным по физическим характеристикам устройствам. Это отвечает принципу независимости от устройств. Состав подсистем управления вводом-выводом, организация и особенно работы их в различных ВС различен, но вместе с тем они имеют единое концептуальное начало, свойственное всем подсистемам. Аппаратуру ввода-вывода можно рассматривать как совокупность аппаратурных процессоров, которые способны работать параллельно друг друга и дпже относительно центрального процесора. На них развиваются внешние процессы, которые используя аппаратуру ввода-вывода в состоянии взаимодействовать как между собой, так и с программными процессами, развивающимися на центральном процессоре. Скорости развития программных и внешних процессов как правило различны и отличаются друг от друга на несколько порядков. Таким образом, любую систему, состоящую из центрального процессора и ОП, а также аппаратуры ввода-вывода, можно представить как систему параллельных процессов, обеспечивающих информационное и управляющее взаимодействие между внутренними и внешними процессами. Через эту подсистему происходит инициация, управление и уничтожение внешних процессов. С точки зрения программных процессов-пользователей подсистема управления вводом-выводом представляет собой программный интерфейс с необходимым для процесса ВУ. В составе этого интерфейса пользователь имеет возможность выражать в определнной форме запросы на выполнение необходимых действий в отношении ВУ. Различают три типа действияй: 1. операции чтения и записи данных, 2. операции по управлению устройством, 3. операции по проверке состояния устройства. При построении подсистемы управления водом-выводом руководствуются стремлением сделать большинство компонентов ее «невидимыми» для программистов, обеспечивая их лишь понятным интерфейсом для оращения к подсистеме из программ на различных языках программирования. В подсистемах используют в основном два метода управления ВУ: прямой и косвенный. Методы отличаются степенью автономности операций ввода-вывода от центрального процессора. Прямой метод управления основан на наличии непосредственной связи между центральным процессором и ВУ. На центральный процессор возлагается обязанность непосредственного управления работой устройства. Это предполагает наличие в составе команд процессора специальных команд по инициированию работы устройства, проверке готовности его к работе, останоу устройства, записи информации и т.д. Особенностью этих команд является то, что при попытке обращения к устройству, если оно занято выполнением какой-либо ранее заданной опреации, выполнение команд процессора блокируется до момента освобождения устройства. Это практически не позволяет реализовать на его основе мультипрограммный режим работы. Этого недостатка лишен метод косвенного ввода-вывода. Метод основан на том, что между процессором и ВУ помещается специализированный процесор, который осуществляет физическое управление операциями ввода-вывода. За центральным процессором сохраняются функции управления, но уже не устройствами, а периферийными процессорами. Центральный процессор инициирует внешний процесс в периферийном процессоре и работает параллельно с ним. Для синхронизации параллельной работы центрального и периферийного процессора используются различные средства. Наиболее совершенными являются прерывания. Через систему прерываний подсистема ввода-вывода прерывает работу центрального процессора всякий раз при завершении операции ввода-вывода, при возникновении сбойных ситуаций. При возникновении прерывания центральный процессор, после того, как определил причину прерывания, передает управление на программную систему ввода-вывода, которую называют супервизором ввода-вывода. Он планирует и организцет через подсистему ввода-вывода дальнейшые действия по организации ввода-вывода. При необходимости организцется обновление данных, подлежащих вводу или выводу, а также инициирование следующей операции ввода-вывода. Помимо управлениями прерываниями супервизор ввода-вывода, реализующий схему централизованного управления ВУ, выполняет ряд типовых функций. В их число входят следующие. Внешние процессы, развивающиеся в подсистеме ввода-вывода и центральном процессоре существенно разнятся по скоростям. Для сглаживания эффекта несоответствия скоростей между ними помещают буфер (или несколько буферов), роль которых выполняют непрерывные области ОП. Буфер является критическим ресурсом в отношении программных и внешних процессов, которые при параллельном развитии информационно взаимодейтствуют. Через буфер данные либо пересылаются от некоторого программного процесса к адресуемому внешнему (операции записи во ВУ), либо от внешнего процесса передаются некоторому програмному. Введение буферов как средства информационного взаимодействия выдвигает задачу управления ими, которая решается средствами супервизора ввода-вывода. При этом на супервизор возлагаются функции по выделению и уничтожению буферов в ОП, определению их назначения (для ввода и для вывода). Супервизор производит синхронизацию программного и внешнего процессов, взаимодействующих через буфер. Роль синхронизации заключается в устранении возможности одновременного обращения этих процессов к буферу. Напрмер, программный процесс, заказавший считывание данных с некоторого ПУ, не должен обращаться к буферу, куда передаются данные с устройства, до тех пор, пока такая передача не будет завершена. При решении задач синхронизации выжным является определение количества буферов, закрепляемых за отдельным устройством, а также размер области памяти, отводимой под буфер. Для увеличения скорости выполнения операций ввода-вывода, рациональнее применять ряд буферов. Определение размера буфера - важный вопрос и при его решении необходимо обеспечивать достижение должного компромисса между эффективным использованием ОП и ВП при обмене данными между ними. ВУ наиболее выгодно большие порции информации, которые можно хранить непрерывными участками и пересылать за одну операцию ввода-вывода. В отношенн ОП требования противоположные. Блок, равный размеру буфера, д.б. небольшим, с тем, чтобы экономно использовать ресурс памяти для развития программных процессов. Важна при управлении буферами оперативность обновления информации в буферах. Не всегда является очевидным стремление наиболее быстрой передачи данных из заполненного буфера, например, внешнему процессу. Иногда такую передачу искусственно задерживают на достаточно длительные интервалы времени. Так, в ОС UNIX на основе управления буферами строится программный аналог кэш-памяти при работе с ВЗУ. Суть метода состоит в том, что физическиая запись на внешний носитель заполненных блоков (буферов) осуществляется тоько тогда, когда становится необходим свободный буфер, а его в текущий момент нет. Така задержка предполагает возможность обращения со стороны программных процессов к информации, хранимой временно в буфере. Если бы такая информация была «сброшена» на ВЗУ сразу же по мере заполнения буфера, то обращение к ней потребовало бы обращению к устройству. Оперативность в таком случае была бы существенно хуже, чем в случае использования программной кэш-памяти. Очевидно, что супервизор ввода-вывода в отношенн программных процессов выступает в роли распределеителя ресурсов, которыми являются ПУ. Поэтому, как любой распорядитель, супервизор должен выполнять функции по восприятию и интерпретации запросов от программных процессов, а также обеспечивать реализацию определенной стратегии распределения ресурсов. Как правило, в запросах на ввод или вывод указываются символические имена или номера устройств. Супервизор производит сопоставление символических имен устройств с конкретными адресами, вызов и подготовку к работе соответствующих системных программ для управелния работой подсистемы ввода-вывода. В данном случае он выступает как ретранслятор запросов на ввод-вывод. При возникновении одновременно нескольких запросов от различных программных процессов супервизор помещает их в очередь. Основные концепции по управлению вводом-выводом, положенные в основу ОС UNIX, следующие. Подсистема построена единообразно с подсистемой управления данными (файловой системой). По сути, пользователю предоставляется унифицированный способ доступа как к ПУ, так и к файлам. Под файлами в UNIX понимают набор данных на диске, терминале или к-л другом устройстве. Каждое ПУ рассматривается пользователем как специальный файл. В отличии от обычного специальный файл не содержит информации. При запросе от программного процесса о выводе информации в специальный файл (осуществляется в контексте допустимых действий в файловой системе) ОС перехватывает запрос и направляет данные на соответствующее устройство. Чтение данных из специального файла - это в действительности прием данных с устройства. Т.о., доступ, например к дисковому и специальному файлам дисплея обеспечивается одним и тем же набором системных вызовов. Эта главная отличительная особенность ОС UNIX. Джругая особенность подсистемы ввода-вывода UNIX заключается в том, что она работает как синхронная система. Каждый программный процесс, требующий ввода, приостанавливается в точке, гдк он выдал запрос, до тех пор, пока не завершится операция ввода из указанного специального файла. При выводе процесс приостанавливается в точке запроса на вывол вплоть до того момента, пока выводимые данные бкдкт приняты системой в буфер пользователя. Наконец, последняя характерная особенность. Для управления ПУ в UNIX используется два вида ввода-вывода: байт-ориентированный и блок-ориентированный. В системе имеется соответсвенно два программных интерфейса для организации такого рода передач информации по запросам от программных процессов. Блок-ориентированный интерфейс обеспечивает связь с ПУ, к которым можно адресоваться как к последовательности блоков в 512 байт. Как правило, этот ВЗУ. Основа организации такого рода интерфейса - система буфферизации, поддерживаемая системой в ОП. На основе этой системы при использовании блок-ориентированного ввода-вывода построена программная кэш-память. Блок ориентированный интерфейс применяется для доступа к ПчУ, каналам связи без буфферизации. В состав системы управления вводвм-выводом входит некоторое число драйверов, а также набор специальных таблиц для логического подключения ядра ОС к драйверам различных устройств. Идентификация конкретного устройства в драйвере осуществляется с помощью номера устройства в пределах данного типа. Тип также идентифицируется номером. Каждый драйвер состоит из двух частей. Первая часть драйвера содержит набор программных модулей для выполнения опреации по открытию, закрытию, чтению и записи файлов (специальных), а также для управления режимами работы устройств, Наличие таких модулей в драйвере обусловлено тем, что при работе с ПУ программист оперирует с ними, как с объектами-файлами независимо от их физической структуры. Чтобы начать работать с некоторым устройством, необходимо открыть или создать специальный файл, сопостовимый с этим устройством. Открытие - это процесс установления связи между имененм файла и некоторой переменной, хранимой в области памяти процесса, который открывает файл. Эта переменная, называемая номером дескриптора файла, используется далее в операциях над открытым файлом. После оскрытия файла процессу, проводившему открытие, разрешен доступ к устройству. Операция закрытия обратна по назанчению и прифодит после своего заверешения к разрыву связи между программым процессом и указываемым ПУ. Вторая часть драйвера - это модуль обработки прерываний. При управлении большинством ПУ в UNIX используется метод прерываний. Для байт-ориентированных устройств прерывание возникает после передачи байта, а для блок-ориентированных - после передачи блока. При возникновении прерывания от конкретного устройства управление передается в модуль обработки прерывания драйвера этого устройства. Модуль является частью драйвера, которая реально управляет процессом передачи данных в устройство или из него. При очередной активизации по прерыванию модуль или прекращает работу с устройством или задает устройству работу, связанную с пересылкой информации. В сисеме имеются две таблицы, которые предназначены прежд всего для того, чтобы достаточно просто осуществлять в системе реконфигурацию периферийного оборудования. Назначение таблиц - осуществить связь драйверов с ядром. Каждый элемент таблицы содержит адресные ссылки на соответсвующие драйверы. Номер элемента в таблице - это номер типа устройства, драйвер которого описывается в этом элементе. Ядро идентифицирует каждое устройство с помощью номера типа устройства. Поэтому при введении нового ПУ, номер типа которого известен, необходимо написать соответсвующий драйвер для управления им, а адресные ссылки поместить в элемент таблицы с номером, равным номеру типа устройства.
Дата добавления: 2014-11-24; просмотров: 336; Нарушение авторских прав Мы поможем в написании ваших работ! |