ЗНАЕТЕ ЛИ ВЫ?

Логическая структура функций ввода-вывода



Для универсальности и обеспечения модульности разработки, функции ввода-

вывода организованы в виде иерархической структуры, где каждый уровень обращается к

следующему для вызова команд. Работает это примерно по таким схемам. (см. рис 1)

Самый простой случай – когда локальное периферийное устройство

осуществляет связь с помощью потока байтов. При этом задействованы следующие

уровни:

1. Логический ввод-вывод. На этом уровне обращение к устройству ввода-вывода

осуществляется как к логическому ресурсу, детали фактического управления

устройством неизвестны. Т.е. логический модуль служит посредником между

пользовательскими процессами и более низкими уровнями ввода-вывода.

2. Устройство ввода-вывода. Запрошенные операции и данные конвертируются в

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

применяться буферизация.

3. Планирование и контроль. Здесь происходит организация очередей и планирование

операций, работа с прерываниями, получение информации о состоянии устройства,

взаимодействие с аппаратным обеспечением.

Для устройств связисхема почти такая же, но вместо логического вывода присутствует

некоторая архитектура коммуникаций, которая также может состоять из нескольких

уровней.

Рассмотрим теперь схему ввода-вывода для запоминающего устройства с

файловой системой. Здесь кроме трех нижних уровней из предыдущих схем, есть еще три

уровня:

1. Управление каталогами. На этом уровне имена файлов преобразуются в

идентификаторы. Также здесь происходят операции добавления и удаления

каталогов.

2. Файловая система. Здесь происходит работа с логической структурой файлов, их

открытием, закрытием, чтением, записью, а также осуществляется управление

правами доступа.

Физическая организация. Логические ссылки на файлы и записи должны быть

преобразованы в физические адреса конкретного устройства (например, номера дорожек,

секторов и т. д.)

 

33. Буферизация ввода-вывода.

Буферизация операций ввода-вывода.

Допустим, пользовательскому процессу необходимо выполнить считывание данных, они

будут считаны в область памяти внутри адресного пространства процесса. Самый простой

путь – выполнение команды ввода-вывода и ожидание, когда данные будут доступны

(активное либо посредством прерывания).

При этом возникают 2 проблемы: первая состоит в том, что процесс будет

приостановлен для ожидания ввода вывода, вторая в том, что такой подход мешает

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

памяти. Таким образом, при страничной организации, по крайней мере одна страница

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

невозможен. Все это относится и к операции вывода.

Чтобы увеличить эффективность, иногда удобно выполнить чтение данных заранее,

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

Существуют устройства двух типов: блочно-ориентированные и поточно-

ориентированные. Первые сохраняют и передают информацию блоками (диски и

магнитные ленты). Вторые передают данные в виде потоков байтов (терминалы, принтера,

клавиатура и т.д.)

Одинарный буфер

Простейший тип буферизации. Когда пользовательский процесс запрашивает операцию

ввода-вывода, ОС назначает ему буфер в основной памяти, выделенной для системных

нужд.

Например, при операции чтения сначала происходит передача всех данных в

системный буфер. После ее завершения процесс перемещает блок в адресное

пространство и сразу же запрашивает следующий блок. Такая процедура называется

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

Этого не происходит только при окончании считывания.

Таким образом, процесс обрабатывает один блок, когда происходит считывание

следующего. Также процесс может быть выгружен при выполнении операции ввода-

вывода, т.к. передача данных осуществляется в системную память, а не в память процесса.

Это усложняет работу ОС, необходимо отслеживать назначение буферов процессам.

При поточном вводе-выводе буферизация может осуществляться построчно.

 

Двойной буфер

Более эффективная схема буферизации. Процесс может считывать данные из одного

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

недостаточной, если процесс часто выполняет ввод или вывод. В этом случае можно

увеличить кол-во буферов и организовать циклическую буферизацию, что еще больше

повышает эффективность системы.

 

 

34. Параметры производительности диска. Стратегии дискового планирования

Дисковое планирование

Разрыв между скоростью обращения к дискам и скоростью обращения к основной памяти

постоянно увеличивается, поэтому улучшение дисковой системы очень актуально.





Последнее изменение этой страницы: 2016-08-16; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.201.3.10 (0.009 с.)