Общие сведения о машинах и механизмах — Конструирование машин и механизмов

Общие сведения о машинах и механизмах - Конструирование машин и механизмов Компьютер

5.2. Управление памятью

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

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

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

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

Рисунок 5.1. Разновидности памяти могут быть объединены в иерархию уменьшения времени доступа, увеличения емкости и размера.

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

Ведь с уменьшением скорости доступа на уровне памяти снижается и частота обращений.

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

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

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

Рисунок 8.2 – Типы адресов

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

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

Физические адреса соответствуют номерам ячеек ОЗУ, в которых расположены переменные и команды. В качестве альтернативы переход от данных к физическим можно осуществить двумя способами.

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

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

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

В некоторых случаях, когда расположение области ОЗУ в физическом адресе программы известно заранее, транслятор генерирует исполняемый код непосредственно по физическим адресам.

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

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

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

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

Рисунок 8.3 – Классификация способов выделения памяти

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

Эта схема реализована в IBM OS/360 (MFT), DEC RX-11 и ряде других систем.

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

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

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

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

Рисунок 8.4 – Распределение памяти по фиксированным разделам

Есть очередь в общую очередь, но есть и индивидуальные очереди.

Рисунок 8.5 – Динамика распределения памяти между процессами

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

  • Ведение таблиц свободных и занятых с указанием начальных адресов и размеров разделов памяти;
  • При поступлении новой программы — анализ запроса, просмотр таблицы свободных областей и выбор достаточно большого раздела, чтобы принять приходящую программу;
  • Загрузить программу в назначенный раздел и обновить таблицы свободных и занятых зон;
  • После завершения программы корректировка таблиц свободных и занятых зон.

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

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

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

Помимо функций, которые выполняет операционная система при выделении памяти переменным разделам, в зависимости от ее назначения:

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

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

Как использовать дисковое пространство для выделения памяти? В современных схемах управления памятью не принято разбивать процессы оперативной памяти на один цикл.

[1] В общем, всегда была потребность в поддержке больших программ, которые изменяются при наличии свободной памяти. С появлением внешней памяти решением стало разделение программы на оверлеи.

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

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

При работе с виртуальной памятью операционная система выполняет следующие задачи:

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

Наиболее распространенными реализациями виртуальной памяти являются страничная, сегментированная и свопинговая.

Странная раздача. Рисунок 8.6 представляет собой диаграмму пейджинга. Виртуальное адресное пространство каждого процесса разделено на блоки одинакового размера, называемые виртуальными страницами.

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

В С — виртуальная страница; ФС — внешняя память.

Рисунок 8.6 – Распределение памяти подкачки

Размер страницы обычно устанавливается равным 2 (5012, 1024 и т. д.), что упрощает процесс преобразования виртуальных адресов в физические. Когда процесс загружается, часть его виртуальных страниц помещается в оперативную память, а часть — на диск.

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

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

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

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

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

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

На рис. 8.7 показан процесс преобразования виртуального адреса в физический во время подкачки памяти (рис. 8).

Виртуальный адрес может быть представлен парой (p, s), где p — номер виртуальной страницы процесса и содержащееся в ней смещение. Смещение s можно получить, просто удалив k младших битов в двоичном представлении виртуального адреса.

Остальные старшие значащие биты представляют собой двоичное представление номера страницы p. При каждом доступе к ОЗУ аппаратное обеспечение выполняет следующие действия: на основе начального адреса таблицы страниц (содержимое регистра адреса таблицы страниц), номера виртуальной страницы (старшие биты виртуального адреса) и длины запись таблицы страниц (системная константа), определяется адрес требуемой записи в таблице страниц. номер физической страницы берется из этой записи; смещение (младшие биты виртуального адреса) добавляется к физическому номеру страницы.

Рисунок 8.7 – Механизм преобразования виртуального адреса в физический адрес с памятью подкачки

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

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

Распределение по сегментам. При подкачке виртуальное адресное пространство процесса механически делится на равные части, что делает невозможным различие между методами доступа к разным частям программы (сегментам).

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

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

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

Общие сведения о машинах и механизмах - Конструирование машин и механизмов
Рисунок 8.8 Распределение памяти сегментами

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

Виртуальный адрес может быть представлен парой (g, s), где g — номер сегмента и смещение внутри сегмента. Физический адрес вычисляется путем прибавления начального физического адреса сегмента, найденного в таблице, к числу g и изменении s.

Недостатком этого метода выделения памяти является фрагментация на уровне сегментов и более медленная трансляция адресов.

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

Рисунок 8.9 – Распределение памяти кучи страниц

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

Таблица сегментов содержит адреса всех страниц для каждого процесса. Адрес электронной почты таблицы сегментов загружается в специальный регистр процессора при запуске соответствующего процесса. На рис. 8.9 показана схема преобразования виртуального адреса в физический адрес для этого метода.

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

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

5.3. Управление вводом–выводом

В целом функция любой компьютерной системы обычно сводится к обработке информации и операциям по ее получению. Основной функцией операционной системы в данном случае является управление всеми устройствами ввода-вывода компьютера.

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

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

Наиболее распространенным блочно-ориентированным устройством является диск. Байт-ориентированные устройства не адресуются и не читаются, они генерируют или потребляют последовательность битов. Примеры: терминалы, линейные принтеры и т. д.

Однако существуют внешние устройства, которые не относятся ни к какому классу. Это часы и другие гаджеты с одним или двумя адресами — все они адресные; но без потока байтов в памяти компьютера. Это устройство подает сигнал прерывания только в определенное время. Внешние устройства обычно состоят из механического компонента и электронного компонента.

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

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

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

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

Несмотря на все многообразие устройств, управление их работой и обмен информацией с ними в основном базируется на этих принципах.

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

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

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

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

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

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

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

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

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

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

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

Как выполняется команда отправки данных на внешнее устройство с помощью контроллеров

  • Процессор считывает информацию из регистра состояния порта и проверяет значение бита занятости. Если бит занятости установлен, это означает, что устройство еще не завершило предыдущую операцию и процессор повторяет операцию чтения. Если бит занятости сброшен, устройство готово к выполнению новой операции и процессор переходит к следующему шагу;
    Процессор
  • Записывает код выходной команды в порт регистра управления;
    Процессор
  • Записывает данные в порт регистра входных данных;
    Процессор
  • Устанавливает бит готовности инструкции. Следующие шаги не задействуют процессор;
    Когда контроллер обнаруживает, что бит готовности команды установлен, он устанавливает бит занятости;
    Контроллер
  • Анализирует код команды в регистре управления и определяет, что это выходная команда. Он берет данные из регистра входных данных и инициирует выполнение команды;
  • После завершения операции контроллер сбрасывает бит готовности команды;
  • При успешном выполнении операции контроллер сбрасывает бит ошибки в регистре состояния, при неудачной команде устанавливает его;
    Контроллер
  • Сбрасывает бит занятости.

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

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

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

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

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

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

Не все внешние устройства одинаково важны для компьютерной системы. [2] Таким образом, некоторые перерывы более важны, чем другие. Контроллер прерываний может устанавливать приоритеты для внешних устройств.

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

Точно так же процессор обрабатывает программные исключения и прерывания. Исключения возникают, когда процессор выполняет инструкцию. К ним относятся переполнение, деление на ноль и т.д.

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

D MA или DMA позволяет процессору не выполнять последовательный вывод данных из ОЗУ, а последовательно их вводить. При этом такой доступ осуществляется через специальный контроллер прямого доступа к памяти, который управляет таким обменом без участия центрального процессора.

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

Рисунок 8.10 — Схема жесткого диска

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

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

Все дорожки разделены на равные сектора. Количество дорожек, цилиндров и линий секторов может варьироваться от жесткого диска к жесткому диску. Как правило, сектор — это минимальный объем информации, который может быть прочитан с диска за один раз.

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

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

Ключевой принцип — независимость от устройства. Тип программы не зависит от диска, с которого она считывает данные. Идея независимости от устройств, которая также близка к идее независимости от устройств.

Другой важной проблемой программного обеспечения ввода-вывода является обработка ошибок. Как правило, ошибки обрабатываются ближе к оборудованию. Если контроллер обнаруживает ошибку чтения, он должен попытаться исправить ее.

Если он не может исправить ошибки, драйвер устройства должен их обработать. Некоторые ошибки могут исчезнуть при повторных попытках ввода-вывода, например ошибка пыли на считывающих головках или диске. Только если нижний уровень не может обработать ошибку, он сообщает об ошибке верхнему уровню.

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

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

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

Рисунок 8.11 – Многоуровневая организация подсистемы ввода-вывода

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

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

Драйверы устройств. Основы драйвера устройства хранятся в файле операционной системы. Каждый драйвер управляет устройствами одного типа или, возможно, одной категории. Только драйвер устройства знает его функциональные возможности.

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

Типичным запросом является чтение n блоков данных. Если драйвер свободен, когда приходит запрос, то он выполняет его немедленно. Если он был занят ответом на другой запрос, новый входящий вызов будет выполняться в его очереди.

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

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

Аппаратно-независимый уровень операционной системы. Большая часть программного обеспечения ввода-вывода не зависит от устройства. В частности, это граница между драйверами и аппаратно-независимыми программными продуктами. Типичные характеристики аппаратно-независимого уровня:

  • Предоставить общий интерфейс для драйверов устройств;
  • Обеспечить независимый размер блока;
  • Выделение памяти на блочно-ориентированных устройствах;
  • Назначение и освобождение выделенных устройств;

Давайте посмотрим на основы этого списка ниже.

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

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

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

Участникам обмена доступны разные скорости передачи информации. Рассмотрим случай передачи потока данных с клавиатуры на модем. Скорость, с которой информация передается клавиатурой человеку и, как правило, меньше, чем скорость передачи данных модема.

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

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

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

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

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

Информация может быть уменьшена с помощью механизма кэширования (мы столкнулись с понятием кэш-памяти при обсуждении иерархии данных).

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

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

Еще одна подсистема программного обеспечения ввода-вывода — это система очередей. Буферизация — это способ работы с выделенными устройствами в мультипрограммной системе. Рассмотрим типичное устройство, требующее буферизации, — построчный принтер.

Хотя технически возможно разрешить каждому пользователю открывать специальный файл, связанный с принтером, это опасно тем, что пользовательский процесс может монополизировать печать на произвольные периоды времени. Технология, которая получает эксклюзивные права на использование устройства в этом процессе.

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

Оцените статью
OverComp.ru