Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OS. Korec. edit..doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.9 Mб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

нужд.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Параметры производительности диска

Скорость вращения диска постоянна. Чтобы выполнить чтение или запись, головка

должна находиться над искомой дорожкой и над началом искомого сектора на этой

дорожке. Выбор дорожки включает в себя перемещение головки (если они подвижны) или

электронные выбор нужной головки (если неподвижны).

В системе с подвижными головками на позиционирование головки над дорожкой

затрачивается время, называемое временем поиска. Затем контроллер диска ожидает

момент, когда начало нужного сектора достигнет головки – это время называется

временем задержки из-за вращения (или время ожидания вращения). Сумма времени

поиска (если он выполняется) и времени ожидания вращения называется временем

доступа.

Когда головка оказывается в нужной позиции, выполняется чтение или запись при

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

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

Время доступа при считывании некоторого блока данных (например, файла) сильно

зависит от его расположения на диске. Если данные размещены компактно, в

последовательных секторах, то общее время доступа оказывается намного меньше, чем в

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

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

ввода-вывода.

Стратегии дискового планирования

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

на поиск дорожки. В многозадачной системе имеется очередь запросов ввода-вывода от

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

поддерживает отдельную очередь запросов для каждого устройства.

Если выбирать запросы случайным образом, то искомые дорожки будут

располагаться в произвольном порядке, что приводит к низкой производительности.

Простейшей формой планирования является «первым вошел – первым

вышел»(FIFO), запросы обрабатываются в порядке их поступления. Преимущество

стратегии – в ее беспристрастности. Пусть в очереди находятся запросы к дорожкам: 55,

58, 39, 18, 90, 160, 150, 38, 184, а изначально головка находится на дорожке 100.

Рассмотрим график зависимости времени поиска от последовательности

считывание дорожек.

Такая стратегия может давать неплохие результаты только при малом кол-ве

процессов и запросах к близким группам секторов. При других условиях

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

Приоритеты

При этом методе не оптимизируется использование диска, но принимаются в расчет

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

процессам, как правило, присваивается более высокий приоритет. При данном методе в

первую очередь выбираются запросы тех процессов, приоритет которых выше. Это

позволяет быстро выполнить много коротких заданий и уменьшить время отклика

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

Последним вошел – первым вышел

В данном случае выбираются запросы, поступившие последними. Здесь

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

запрашивать сектора, близкие к запрошенным ранее). При большой нагрузке на диск

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

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

SSTF (shortest service time first) – стратегия выбора наименьшего времени

обслуживания

При такой стратегии из очереди выбирается тот запрос, который требует

наименьшего перемещения головки из ткущей позиции, так минимизируется время

поиска. Однако это не дает гарантии, что среднее время поиска будет минимальным (рис)

SCAN

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

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

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

В данном случае перемещение головки может происходить только в одном

направлении, выполняя те запросы, которые соответствуют этому направлению. После

достижения последней дорожки направление меняется на противоположное.

C-SCAN

В этом случае сканирование происходит только в одном направлении. После

достижения последней дорожки головка возвращается на противоположный конец диска,

и сканирование начинается снова. (рис)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]