- •История операционных систем
- •Первое поколение (1945-55): электронные лампы и коммутационные панели
- •Второе поколение (1955-65): транзисторы и системы пакетной обработки
- •Третье поколение (1965-1980): интегральные схемы и многозадачность
- •Четвертое поколение (с 1980 года по наши дни): персональные компьютеры
- •Онтогенез повторяет филогенез
- •1. Классификация ос
- •1.1 Дос (Дисковые Операционные Системы)
- •1.2 Ос общего назначения
- •1.3 Системы виртуальных машин
- •1.4 Системы реального времени
- •1.5 Средства кросс-разработки
- •1.6 Системы промежуточных типов
- •1.7 Семейства операционных систем
- •1.8 Выбор операционной системы
- •1.9 Открытые системы
- •2. Представление данных в вычислительных системах
- •2.1. Введение в двоичную арифметику
- •2.3. Представление текстовых данных
- •2.4. Представление изображений
- •2.5. Представление звуков
- •2.6. Упаковка данных
- •2.7. Контрольные суммы
- •1.8. Введение в криптографию
- •3. Загрузка программ
- •3.1. Абсолютная загрузка
- •3.2. Разделы памяти
- •3.3. Относительная загрузка
- •3.4. Базовая адресация
- •3.5. Позиционно-независимый код
- •3.6. Оверлеи (перекрытия)
- •3.7. Сборка программ
- •3.8. Объектные библиотеки
- •3.9. Сборка в момент загрузки
- •3.10. Динамические библиотеки
- •3.11. Загрузка самой ос
- •4 Управление оперативной памятью
- •4.1. Открытая память
- •4.2. Алгоритмы динамического управления памятью
- •4.3. Сборка мусора
- •4.4. Открытая память (продолжение)
- •4.4.1. Управление памятью в MacOs и Win16
- •4.5. Системы с базовой виртуальной адресацией
- •5. Компьютер и внешние события
- •5.1. Опрос
- •5.2. Канальные процессоры и прямой доступ к памяти
- •1. Мастер шины (bus master), когда устройство имеет свой собственный контроллер пдп,
- •2. Централизованный контроллер, устанавливаемый на системной плате и способный работать с несколькими различными устройствами.
- •5.3. Прерывания
- •5.4. Исключения
- •5.5. Многопроцессорные архитектуры
5. Компьютер и внешние события
Практически все функции современных вычислительных систем, так или иначе, сводятся к обработке внешних событий. Единственная категория приложений, для которых внешние события совершенно неактуальны — это так называемые пакетные приложения, чаще всего — вычислительные задачи. Доля таких задач в общем объеме компьютерных приложений в наше время невелика и постоянно падает. В остальных же случаях, даже если не вспоминать о специализированных управляющих компьютерах, серверы обрабатывают внешние по отношению к ним запросы клиентов, а персональный компьютер — реагирует на действия пользователя. Различие между управляющими системами (приложениями реального времени) и системами общего назначения состоит лишь в том, что первые должны обеспечивать гарантированное время реакции на событие, в то время как вторые "всего лишь" — предоставить хорошее среднее время такой реакции и/или обработку большого количества событий в секунду.
Примечание
Время обработки одного события и количество событий, обрабатываемых в единицу времени, далеко не всегда являются жестко взаимосвязанными — ведь при многопоточной обработке система может обрабатывать несколько событий параллельно.
Единственный способ, которым фон-неймановский компьютер может отреагировать, на что бы то ни было — это исполнить программу, последовательность команд. В случае внешнего события, естественным решением кажется предоставить команду условного перехода, условием которого является признак события. В системах команд микроконтроллеров часто реализуют именно такие переходы. В качестве признака события в этом случае используется значение одного из битов специального регистра, биты которого соответствуют входам микросхемы контроллера. Бит, равен единице, если на соответствующий вход подано высокое напряжение, и нулю – если низкое.
Следовательно
5.1. Опрос
Решение состоит в том, что нам следует циклически опрашивать признак события. Это решение хорошо не только концептуальной простотой, но и тем, что если цикл опроса короток, время реакции будет очень маленьким. Потому такой метод используют для обработок последовательности событий, следующих друг за другом с небольшим интервалом. Однако это решение имеет недостаток – загрузив процессор опросом, мы не можем занять его чем бы то ни было другим (т.е. если процессор занят чем-то другим, он может узнать о событии, только завершив текущую деятельность).
С точки зрения встраиваемых приложений, режим опроса имеет еще один существенный недостаток: опрашивающий процессор нельзя выключить. В то же время, выключенный процессор потребляет гораздо меньше энергии и не создает электромагнитных помех. В этом случае, конечно, необходимо предусмотреть какие-либо средства для вывода процессора из этого состояния при возникновении интересующего нас события.
5.2. Канальные процессоры и прямой доступ к памяти
Одно из решений состоит в том, чтобы завести отдельный процессор и поручить ему всю работу по опросу. Процессор, занимающийся только организацией ввода-вывода, называют периферийным или канальным (channel).
Понятно, впрочем, что это повышает стоимость системы и не решает проблемы радикально — теперь вместо флагов, непосредственно сигнализирующих о внешних событиях, центральный процессор вынужден опрашивать флаги, выставляемые канальным процессором. В зависимости от характера событий и требуемой обработки это решение может оказаться и совсем неприемлемым, например, если на каждое событие требуется немедленная реакция именно центрального процессора.
В противном случае, если немедленно после события требуется лишь простая обработка, а сложные вычисления можно отложить на потом, канальный процессор можно упростить и сделать существенно дешевле центрального. Так, при работе с контроллерами дисков, лент и других устройств массовой памяти возникает задача копирования отдельных байтов (или, в зависимости от разрядности шины контроллера, полуслов или слов) из контроллера в память и обратно. Передача одного блока (512 байт у большинства современных контроллеров) состоит из 128 операций передачи слова, идущих друг за другом с небольшими интервалами. Темп передачи данных определяется скоростью вращения диска или движения ленты. Этот темп обычно ниже скорости системной шины, поэтому передача данных должна включать в себя опрос признака готовности контроллера принять или предоставить следующее слово. Интервал между словами обычно измеряется несколькими циклами шины. Нередко бывает и так, что частоты шины и контроллера не кратны, поэтому последовательные слова надо передавать через различное число циклов.
Дополнительная сложность состоит в том, что, не предоставив вовремя следующее слово для записи, мы испортим весь процесс — эта проблема особенно серьезна на устройствах однократной записи, например прожигателях компакт-дисков. Аналогично, не успев прочитать очередное слово, мы потеряем его, и вынуждены будем отматывать ленту назад или ждать следующего оборота диска.
Показание к использованию режима опроса: поток следующих друг за другом с небольшим интервалом событий, каждое из которых нельзя потерять, а нужно обязательно обработать.
Обработка события, которая нужна, чтобы избежать такой неприятности, крайне проста, так что устройство, способное с ней справиться, не обязано даже быть полностью программируемым процессором.
При передаче надо всего лишь убедиться, что блок данных не кончился, взять следующее слово из памяти, дождаться готовности устройства, скопировать слово и вернуться к началу алгоритма. Если блок данных кончился или контроллер выдал ошибку, необходимо сообщить об этом центральному процессору.
Для реализации этого алгоритма достаточно трех регистров (указателя в памяти, значения текущего слова и счетчика переданных слов). Реализующее этот алгоритм устройство называют контроллером прямого доступа к памяти (Direct Memory Access controller, DMA controller) (рис. 6.1). Такие контроллеры часто рассчитаны на одновременную работу с несколькими устройствами — имеют несколько каналов — и, соответственно, больше регистров.
Обычно контроллеры ПДП не считают процессорами, однако без большой натяжки можно сказать, что это все-таки канальный процессор, хотя и очень примитивный. Контроллеры ПДП, рассчитанные на совместную работу с процессором, обладающим виртуальной памятью, часто имеют некий аналог диспетчера памяти ЦП, для того, чтобы позволить операционной системе предоставлять указатель для ПДП в виртуальном адресном пространстве, или, во всяком случае, упростить работу по преобразованию виртуального адреса в физический.
Различают два типа реализаций ПДП:
