Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Прямой доступ к памяти (DMA - Direct Memory Access)




Прямой доступ к памяти реализуется с помощью DMA - контроллера.

Контроллер содержит несколько регистров:

· регистр адреса памяти

· счетчик байтов

· управляющие регистры, могут содержать:
- порт ввода-вывода
- чтение или запись
- единицы переноса (побайтно или пословно)

Без контроллера происходит следующее:

1. Процессор дает команду дисковому контроллеру прочитать данные в буфер,

2. Считываются данные в буфер, контроллер проверяет контрольную сумму считанных данных (проверка на ошибки). Процессор, до прерывания, переключается на другие задания.

3. Контроллер диска инициирует прерывание

4. Операционная система начинает работать и может считывать из буфера данные в память

Работа DMA - контроллера

С контроллером происходит следующее:

1. Процессор программирует контроллер (какие данные и куда переместить)

2. Процессор дает команду дисковому контроллеру прочитать данные в буфер

3. Считываются данные в буфер, контроллер диска проверяет контрольную сумму считанных данных, (процессор, до прерывания, переключается на другие задания).

4. Контроллер DMA посылает запрос на чтение дисковому контроллеру

5. Контроллер диска поставляет данные на шину, адрес памяти уже находится на шине, происходит запись данных в память

6. Когда запись закончена, контроллер диска посылает подтверждение DMA контроллеру

7. DMA контроллер увеличивает используемый адрес и уменьшает значение счетчика байтов

8. Все повторяется с пункта 4, пока значение счетчика не станет равной нулю.

9. Контроллер DMA инициирует прерывание

Операционной системе не нужно копировать данные в память, они уже там.

 

Прерывания

После того как устройство ввода-вывода начало работу, процессор переключается на другие задачи.

Чтобы сигнализировать процессору об окончании работы, устройство инициализирует прерывание, выставляя сигнал на выделенную устройству линию шины (а не выделенный провод).

Контроллер прерываний - обслуживает поступающие прерывания от устройств.

1. Если необработанных прерываний нет, прерывание выполняется немедленно.

2. Если необработанных прерываний есть, контроллер игнорирует прерывание. Но устройство продолжает удерживать сигнал прерывания на шине до тех пор, пока оно не будет обработано.

Работа прерываний

Алгоритм работы:

· Устройство выставляет сигнал прерывания

· Контроллер прерываний инициирует прерывание, указывая номер устройства

· Процессор начинает выполнять обработку прерывания, вызывая процедуру

· Эта процедура подтверждает получение прерывания контроллеру прерываний

 

Принципы программного обеспечения ввода-вывода

Задачи программного обеспечения ввода-вывода

Основные задачи, которые должно решать программное обеспечение ввода-вывода:

· Независимость от устройств - например, программа, читающая данные из файла не должна задумываться с чего она читает (CD, HDD и др.). Все проблемы должна решать ОС.

· Единообразное именование - имя файла или устройства не должны отличаться. (В системах UNIX выполняется дословно).

· Обработка ошибок - ошибки могут быть отловлены на уровне контроллера, драйвера и т.д.

· Перенос данных - синхронный и асинхронный (в последнем случае процессор запускает перенос данных, и переключается на другие задачи до прерывания).

· Буферизация

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

Три основных способа осуществления операций ввода-вывода:

· Программный ввод-вывод

· Управляемый прерываниями ввод-вывод

· Ввод-вывод с использованием DMA

Рассмотрим их подробнее.

 

Программный ввод-вывод

В этом случае всю работу выполняет центральный процессор.

Рассмотрим процесс печати строки ABCDEFGH этим способом.

Этапы печати строки ABCDEFGH

Алгоритм печати:

1. Строка для печати собирается в пространстве пользователя.

2. Обращаясь к системному вызову, процесс получает принтер.

3. Обращаясь к системному вызову, процесс просит распечатать строку на принтере.

4. Операционная система копирует строку в массив, расположенный в режиме ядра.

5. ОС копирует первый символ в регистр данных принтера, который отображен на памяти.

6. Символ печатается на бумаге.

7. Указатель устанавливается на следующий символ.

8. Процессор ждет, когда бит готовности принтера выставится в готовность.

9. Все повторяется.

При использовании буфера принтера, сначала вся строка копируется в буфер, после этого начинается печать.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...