46736 (597297), страница 5

Файл №597297 46736 (Адресное пространство. Подсистемы ввода-вывода) 5 страница46736 (597297) страница 52016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 5)

Чем выше частота сигнала, тем больше его искажают по фазе индуктивность и емкость – будут завалены фронты у меандра.

По Фурье: можно разложить любой периодический сигнал на сумму синусоид, а затем собрать обратно.

Оптоволокно

Еще луч имеет толщину, и даже у лазера луч немного конический.

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

Радио



У радиосигнала поглощение пропорционально квадрату расстояния, а не линейно, как у провода.

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

Мертвая зона: при мощности, свыше определенной, приемник “слепнет”. Если мы излучаем 10 Вт, а придет сигнал 0.2 Вт, мы его не поймем.

Выход – разделение частотных диапазонов. Еще – применение направленных



антенн (излучают не по сфере, а пучком). Тогда возможно координатное разделение. Если этого нет – остается только временное разделение.

Спутниковая связь



Тут два варианта – спутники с высокой орбитой и спутники с низкой орбитой.

Н
аши используют спутники с высокой орбитой. Общение только через спутник-посредник.



А американцы используют низкие орбиты

Недостатки:

  1. Сложный центр управления спутниками

  2. Спутники задевают верхние слои атмосферы, постепенно снижаются, затем падают на Землю. Живут один-два года.

Зато такие спутники дешевые и легкие.


Подсистемы ввода/вывода

Файловые устройства

Цель любой программы – обработка данных, т.е. надо грамотно построить структуры данных и написать алгоритмы их обработки.

Структуры данных, которыми оперирует язык:

  • Array[] A

  • String B

  • Struct C

Можем прочитать откуда-то эти структуры:

read( #канала, A, B, C )

Отсюда исходят следующие действия:

read( #канала, Address, Len )

О длинах структур данных и куда их помещать знает только компилятор, следовательно, он и вычисляет Address и Len.

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

Чтобы выполнить операции доступа к файлу, нужна начальная инициализация:

#канала = open( имя_файла, тип_доступа )

При открытии файла происходит следующее:

  • контролируются права доступа для данного пользователя с данным типом доступа

  • формируется структура FCB (File Control Block)

  • файловый процессор заполняет ее поля.

RMS (Record Management System)

По-русски – Система Управления Записями (СУЗ).

Она имеет FCB и буфера ввода/вывода, через которые и происходит реальный обмен данными.

RMS рассматривает любой файл как набор кластеров. Каждый кластер на уровне файла называется VBN (Virtual Block Number).


При закрытии файла ( close ) все буфера сбрасываются на диск. По команде Flush все буфера просто сбрасываются на диск без закрытия файла.

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

Конкретное блочное устройство рассматривается как плоский массив блоков фиксированного размера.


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

При запросе ОС должна проверить указатели на корректность, т.е. указатель должен быть в области user’а и под ним должна быть отображена физическая память. Еще надо проверить, весь ли буфер попал в отображенную память.

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

Запросы ввода/вывода оформляются как IORP (Input/Output Request Packet). Поскольку к моменту выполнения запроса произойдет передиспетчеризация, то необходимо отобразить буфера ввода/вывода в ядро. Для этого производится двойное преобразование адреса:

  1. Преобразование линейного адреса буфера процесса в физический адрес.

  2. Отобразить в область ОС полученную область физической памяти.

Еще нужно запретить перемещение физических страниц памяти.

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

Для выбора драйвера используется база данных внешних устройств, сложность которой определяется:

  • сложностью ОС

  • сложностью конфигурации железа.

Драйвер – программа, которая делает ОС независимую от железа.

Внешнее устройство – разделяемый ресурс, доступ к которому осуществляет драйвер.

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


База данных ввода/вывода

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

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

  3. Потоковые драйверы/фильтры.

База данных – списки блоков управления CB (Control Block), которые отражают физическую структуру системы.


BCB

Bus Control Block

DCB

Device Control Block

UCB

Unit Control Block

ICB

Interrupt Control Block

SCB

Synchronization Control Block ?

IORP можно передать самому драйверу или поместить в очередь, прицепленную к DCB.




Преобразование ALBA FA KLBA может быть невозможно, т.к. страницы могут быть не выделены.

Стратегии организации последовательности IORP:

  • возлагается на ОС

  • драйвер сам решает, куда вставить IORP.

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

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


RPC

Remote Procedure Call

LPC

Local Procedure Call

APC

Asynchronous Procedure Call

DPC

отложенный

На DPC запрещена передиспетчеризация, на APC запрещена обработка асинхронных запросов, на Apps все разрешено.


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


Проблема: из прерывания нельзя непосредственно вызвать IO$END, поскольку можем не находиться в режиме ядра.

Выход – механизм отложенных прерываний.

Механизм отложенных прерываний

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

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

Единственное место, в котором начинается и заканчивается транзакция обращения к ядру – место переключения из UserMode в KernelMode. Только в этой точке передаются права на контекст ядра.


Ловушка отложенных прерываний

Для реализации используется XCHG AX,[BX], это семафор, реализованный на процессоре.

mov AX,1

xchg AX,[BX]

Если в результате в AX будет 0, то значит, семафор был свободен, и мы его заняли, а если 1 – значит был занят и надо еще подождать.

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

Мы можем завершить запрос ввода/вывода (выполнить соответствующие действия). Потом делаем jmp, как будто бы ОС заставила драйвер обработать новый запрос. Все будет так же, как и в первый раз, но после команды старт попадем опять на границу U/S.

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


Идеология микроядра


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


Интерфейс заключается в пересечении границы. Одна граница – один интерфейс.

Если ЦП поддерживает всего два кольца защиты, то Супервизор тоже запихивают в Kernel Ring.

Итак, есть два интерфейса: Kernel|Supervisor и Supervisor|User. В супервизоре все процессы работают в своих адресных пространствах. Все проверки безопасности – на уровне супервизора.

В Windows2000 это сделано так.



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

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

GDI находится в супервизоре только с Win2000, раньше он был в Win32.exe. Без Win32.exe ни одно Win32-приложение работать не будет.

Синхронизация запросов ввода/вывода в ядре



У любого объекта Windows есть заголовок синхронизации, их можно ставить в очередь событий.

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

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

Запросы делятся на:

  • блокирующие

  • неблокирующие

В системах, поддерживающих неблокирующие запросы ввода/вывода, есть модификатор команд:

IO$READ + NoWait

Теперь возникает другая проблема – неблокирующий запрос выполнен, а как узнать, успешно ли он завершен? Это знает только драйвер.

Решение – в контексте задачи создается буфер IOSB (Input Output Status Block), в который драйвер помещает результаты выполнения операции. Это же происходит и при блокирующий запросах, но все это делается неявно.

Итак, для выполнения операции нужно следующее:

  1. Запрос (код операции, параметры)

  2. Координаты запроса (FCB, #LBN, длина)

  3. Адрес буфера

  4. IOSB

  5. Объект синхронизации.

Буферизованный и небуферизованный обмен

IORP – структура для хранения параметров запроса ввода-вывода. ОС копирует в этот пакет параметры из запроса QIO, которые хранятся в системе. Т.е. параметры в системном пуле и не […..]. Этими параметрами можно пользоваться. Если параметры типа указатель, то они имеют смысл только в контексте задачи. Если на процессоре наша задача, то в CR3 нужное страничное преобразование. Если на CR3 адрес ТСП другого приложения, то указатель будет неправильным. Поэтому драйвер не сможет выполнить обмен с буфером. Надо драйверу передать корректный указатель. Указатель должен существовать в контексте драйвера. Нужно получить новый логический адрес – в контексте драйвера. Нужно выяснить физический адрес буфера, полностью преобразовать его в логический адрес в контексте драйвера.

У драйвера контекст является контекстом, который совпадает с физической памятью. Т.е. там физический адрес совпадает с линейным. И этот адрес кладем в IORP. Поэтому нужно запретить перемещение и выгрузку – зафиксировать страницу. Также нужно запретить свопинг задач (выгрузка задачи полностью на диск).

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

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

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

Запись: ОС заводит системный буфер, копирует туда буфер задачи, драйвер читает из буфера.

Чтение: ОС заводит буфер, драйвер пишет туда, ОС копирует из системного буфера в буфер приложения.

Характеристики

Тип файла
Документ
Размер
7,08 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7002
Авторов
на СтудИзбе
261
Средний доход
с одного платного файла
Обучение Подробнее
{user_main_secret_data}