Системное программное обеспечение

Вид материалаДокументы

Содержание


Вопрос №№ 9,10 Сегментно-страничный способ организации виртуальной памяти и схема нахождения и формирования физического адреса
Схема преобразования виртуального адреса в физический адрес при сегментно-страничной организации памяти
Вопрос № 11. Физические и логические методы доступа к периферийным устройствам. Драйверы.
Существуют три способа осуществления ввода-вывода
Драйвер устройства
Состав драйвера
Взаимодействие драйвера с основной программой
Подобный материал:
1   2   3   4   5   6   7   8   9   10

Вопрос №№ 9,10 Сегментно-страничный способ организации виртуальной памяти и схема нахождения и формирования физического адреса


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

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


И
35000

S –сегмент Р – страница I - индекс
з таблицы сегментов Виртуальный адрес


15 10 600










Номер физической Число Права

страницы страниц доступа

15 36000 20
Таблица сегментов задачи

35015 35000




36010



Номер физиче- Права

ской страницы доступа


10 45000



Нужная команда
36000 Таблица страниц задачи 45000 страница № 45




45600
Схема преобразования виртуального адреса в физический адрес при сегментно-страничной организации памяти

Если в таблице дескрипторов сегментов указано, что таблица сегментов нашей задачи находится по адресу 35000, а в виртуальном адресе указан 15-й сегмент, то ОС по этим данным найдет запись, где будет адрес начала нашего сегмента (35000+15=35015). Поэтому адресу находим адрес начала таблицы страниц (допустим, 36000). Складывая его с № страницы виртуального адреса находим запись в таблице страниц, где указан адрес физической страницы. Складывая этот адрес с индексом виртуального адреса, находим физический адрес нашей исполняемой программы.

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

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

Недостатком сегментно-страничной организации виртуальной памяти является, во-первых, значительные дополнительные затраты вычислительных ресурсов на вычисление адресов, во-вторых, требуется достаточно мощная аппаратная поддержка, в-третьих, при привязке к конкретной модели ЭВМ требует достаточно сложного программного обеспечения.

Использование метода ограничено. Используется в малых супер-ЭВМ. В распространенных в России ЭВМ на базе процессора i80x86 аппаратная поддержка этого способа присутствует, но слабая, и из-за сложности программирования пока не используется (пока, т.к. при увеличении производительности вычислительных систем, его привлекательность повышается).

Вопрос № 11. Физические и логические методы доступа к периферийным устройствам. Драйверы.


Периферийным устройством называется любое устройство, соединенное с ЭВМ, в том числе устройство ввода-вывода и вспомогательное ЗУ.

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

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

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

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

Что именно должны делать устройства, приняв информацию через свой порт, и каким именно образом они должны поставлять информацию для чтения из порта, определяется электронными схемами устройств, получившими название контроллеров. Контроллер может непосредственно управлять отдельным устройством (например, контроллер диска), а может управлять несколькими устройствами, связываясь с их контроллерами посредством специальных шин ввода-вывода (шина IDE, шина SCSI и т. д.).

Современные вычислительные системы могут иметь разнообразную архитектуру, множество шин и магистралей, мосты для перехода информации от одной шины к другой и т. п. Для нас сейчас важными являются только следующие моменты:
  • Устройства ввода-вывода подключаются к системе через порты.
  • Могут существовать два адресных пространства: пространство памяти и пространство ввода-вывода.
  • Порты, как правило, отображаются в адресное пространство ввода-вывода и иногда – непосредственно в адресное пространство памяти.
  • Использование того или иного адресного пространства определяется типом команды, выполняемой процессором, или типом ее операндов.
  • Физическим управлением устройством ввода-вывода, передачей информации через порт и выставлением некоторых сигналов на магистрали занимается контроллер устройства.

Существуют три способа осуществления ввода-вывода:
  1. ввод-вывод, управляемый прерываниями. Процессор посылает контроллеру необходимые команды и продолжает выполнение следующих команд. Выполнение процесса прерывается контроллером ввода-вывода, когда он выполнит поставленное задание. Здесь может быть два момента:
  1. обращение таково, что процессор может выполнять следующие команды, не дожидаясь окончания операции ввода-вывода (например, мы передали сформированную запись в файл);
  2. если задаче требуются результаты выполнения операции ввода-вывода, то процесс приостанавливается, а процессор переключается на выполнение другого процесса;
  1. прямой доступ к памяти. Модуль прямого доступа к памяти управляет обменом данных между основной памятью и контроллером ввода-вывода. Процессор посылает запрос на передачу блока данных модулю прямого доступа к памяти, а прерывание происходит только после передачи всего блока данных.

Рассмотрим работу схемы прямого доступа к памяти. Устройство DMA способно дублировать некоторые функции процессора, в частности получать от процессора возможность передачи данных по системной шине между устройством ввода-вывода и памятью. Обычно DMA использует системную шину в том случае, когда процессор ее не использует. Этот способ наиболее распространен и именуется захватом цикла, т.к. модуль на машинный цикл занимает системную шину. Когда какому-либо процессу необходимо произвести считывание или запись блока данных, процессор передает схеме прямого доступа к памяти (DMA) запрос на связь, затем следующую информацию:
  • какая операция должна выполниться (запись или чтение);
  • адрес устройства ввода/вывода;
  • начальный адрес считываемой/записываемой области памяти (хранится в адресном регистре модуля DMA);
  • какое количество слов необходимо прочесть или записать (хранится в регистре счетчика DMA).

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

Для построения программной (логической) части системы ввода-вывода характерен "слоеный" подход. Для непосредственного взаимодействия с hardware используются драйверы устройств, скрывающие от остальной части операционной системы все особенности их функционирования.
  1. программируемый ввод-вывод. Процессор посылает некоторые команды контроллеру ввода-вывода, после которых он ожидает завершения операции ввода-вывода;

Все устройства разные, отличаются по выполняемым функциям и своим характеристикам. Вот перечень лишь нескольких направлений (далеко не полный), по которым различаются устройства:
  • Скорость обмена информацией может варьироваться в диапазоне от нескольких байтов в секунду (клавиатура) до нескольких гигабайтов в секунду (сетевые карты).
  • Одни устройства могут использоваться несколькими процессами параллельно (являются разделяемыми), в то время как другие требуют монопольного захвата процессом.
  • Часть устройств умеет передавать данные только по одному байту последовательно (символьные устройства), а часть устройств умеет передавать блок байтов как единое целое (блочные устройства).
  • Существуют устройства, предназначенные только для ввода информации, устройства, предназначенные только для вывода информации, и устройства, которые могут выполнять и ввод, и вывод.

В области технического обеспечения удалось выделить несколько основных принципов взаимодействия внешних устройств с вычислительной системой, т. е. создать единый интерфейс для их подключения, возложив все специфические действия на контроллеры самих устройств. Мы можем затем специфицировать интерфейсы между ядром операционной системы, осуществляющим некоторую общую политику ввода-вывода, и программными частями, непосредственно управляющими устройствами, для каждого из таких типов. Более того, разработчики операционных систем получают возможность освободиться от написания и тестирования этих специфических программных частей, получивших название драйверов, передав эту деятельность производителям самих внешних устройств. Фактически мы приходим к использованию принципа уровневого или слоеного построения системы управления вводом-выводом для операционной системы (см. Рис Структура системы ввода-вывода).

Два нижних уровня этой слоеной системы составляет hardware: сами устройства, непосредственно выполняющие операции, и их контроллеры, служащие для организации совместной работы устройств и остальной вычислительной системы. Следующий уровень составляют драйверы устройств ввода-вывода, скрывающие от разработчиков операционных систем особенности функционирования конкретных приборов и обеспечивающие четко определенный интерфейс между hardware и вышележащим уровнем – уровнем базовой подсистемы ввода-вывода, которая, в свою очередь, предоставляет механизм взаимодействия между драйверами и программной частью вычислительной системы в целом.

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

Драйвер устройства – это специальная программа, которая управляет обменом с периферийным устройством.

Для связи с периферийными устройствами МП имеет группу регистров, которые называются портами ввода-вывода. Таких портов (регистров) может быть 65536. Каждый порт связывается с заранее определенным регистром периферийного устройства. Таким образом, посылая в порт информацию, процессор передает ее в регистр нужного устройства. Читая, получает информацию из регистра ВУ. Контроллеры ВУ сами являются примитивными процессорами, процессор ПЭВМ может посылать им через порты управляющие команды:

IN – послать в аккумулятор AL из порта (in al, # порта)

OUT – переслать из регистра аккумулятора AL в порт (out # порта, al)

Эти команды привилегированные, использование их в пользовательской программе невозможно.

Состав драйвера: Разделы драйвера должны состоять из одного сегмента (данных, стека и т.д.). Драйвер должен быть программой с расширением .com.

Драйвер состоит из 3-х обязательных частей: (1)заголовка; (2)стратегии доступа; (3)обработчика прерываний.

Заголовок драйвера необходим системе:
  • для того чтобы идентифицировать его как программу;
  • сообщить системе адреса остальных своих частей;
  • для фиксации имени устройства, которое будет обслуживаться данным драйвером.

Заголовок драйвера имеет стандартный размер 18 байт (в MS-DOS).

Стратегия доступа – это подпрограмма драйвера, которая запускается один раз при запуске системы. Назначение – строит управляющий блок, который используется системой для взаимодействия с устройством.

Обработчик прерываний – это основная часть драйвера. Это программа, которая реализует все функции, назначенные драйверу.


Драйвер: заголовок


стратегия


обработчик

Диспетчер программ






Основная программа

Вектор прерывания: адрес программы, обрабатывающей прерывания

Программа обработчик прерываний
int







Взаимодействие драйвера с основной программой

Терминология «стратегия доступа» и «обработчик прерываний» используется в расчете на многозадачную ОС.

Драйверы – это наиболее привилегированные программы и взаимодействие с ними возможно только по прерываниям.

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

Если в вычислительной системе используется модуль прямого доступа в память, канал ввода-вывода или процессор ввода вывода, то программа обработчика прерываний передает работу им и сразу же через диспетчера программ процессор переходит на обработку другого задания. По окончании работы драйвера модуль прямого доступа в память (или специальный процессор) выставляет прерывание операционной системе и ждет, когда его обслужит центральный процессор. Каждый тип устройства имеет свой драйвер, который разработан именно для этого устройства. Наличие драйвера позволяет информацию, представленную программой в виде файла пересылать на самые разные устройства, не заботясь о переформатировании их в зависимости от конкретного строения устройства. В драйвере учитываются все нюансы физического строения устройства, в соответствии с которыми драйвер вкл./выкл. устройство, передает информацию в виде, ему понятном. Драйвер разрабатывается для конкретного типа устройств.