Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на вопросы2.doc
Скачиваний:
14
Добавлен:
01.03.2025
Размер:
3 Мб
Скачать
☆

Вопрос 36. Типы адресов

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

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

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

Физический адрес представляет адрес (номер) байта ОП, с которого начинается размещенная в памяти переменная или команда после загрузки программы для выполнения.

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

Максимально возможное виртуальное адресное пространство у всех процессов одинаково, и определяется разрядностью адреса. При 32-х разрядной ОС оно составляет 4 Гбайт, с границами от 00000000 до FFFFFFFF. Несмотря на то, что виртуальное адресное пространство разных процессов начинается с одного адреса, виртуальные пространства являются различными, и при одновременном нахождении в ОП отображаются на разные участки физической памяти.

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

Вопрос 41.Ввод/вывод

Поддержка расширяемой библиотеки драйверов

Достоинством любой ОС является наличие в ней широкого набора драйверов. Пример: OS/2 потерпела поражение Windows 3 из-за отсутствия драйверов. Чтобы не было недостатка в драйверах, должен быть открытым интерфейс между драйверами и частями ОС с которыми они взаимодействуют. Тогда их могут разрабатывать изготовители аппаратуры.

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

Задачами ОС по управлению файлами и устройствами, являются:

  • Организация параллельной работы устройств в/в и процессора

  • Согласование скоростей обмена и кэширование данных при обмене

  • Распределение устройств и данных между процессами.

  • Обеспечение удобного логического интерфейса между ВУ и остальной частью системы (ядром ВС).

  • Поддержка расширяемой библиотеки драйверов

  • Поддержка нескольких файловых систем

  • Поддержка синхронных и асинхронных операций в/в

Драйверы взаимодействуют с одной стороны, с модулями ядра, с другой – с контроллерами ВУ. Поэтому существует 2 типа интерфейсов: «драйвер-ядро» (DKI) и «драйвер-устройство» (DDI - Driver Device Interface). Первый должен быть стандартизован, второй – желательно отделен от аппаратуры примитивными функциями ОС.

Драйверы желательно уметь загружать и выгружать из ОП по мере надобности.

Другим принципом было деление по интерфейсу всех видов устройств на несколько типов:

  • Символьные (клавиатура, модем, терминал и т.п.)

  • Блочные (магнитные и оптические диски, ленты и т.п.)

  • Сетевые (сетевые карты)

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

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

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