Victor_VG
Tracker Mod | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору KLASS Обработчик событий попадает в список доступных только если он запущен. Это позволяет ОС иметь множество различных обработчиков применяемых в зависимости от необходимости. Я не просто так сказал про динамичность этого списка - это было сделано специально чтобы избежать необходимости перезапуска ОС при подключении или отключении конкретных обработчиков. Их роль в управлении вычислительной системой это фильтр-переключатель который обрабатывает факт наступления события и выдаёт необходимую управляющую команду регулирующее поведение системы в целом. А поскольку события имеют случайную, но предсказуемую природу, то держать в памяти все возможные обработчики это бесполезная трата ресурсов, а поскольку можно предположить вероятность наступления события по цепочке предшествующих ему событий, накопленной статистике их развития и другим косвенным признакам, то если их набор позволяет предположить что вероятность наступления данного события велика, то можно заранее запустить его обработчик и зарегистрировать в списке доступных. А когда это событие наступит передать ему управление. Что собственно и делается, и именно для этого список обработчиков не постоянный вырубленный на каменных скрижалях, а условная очередь обладающая тремя основными свойствами: 1. Новый обработчик всегда дописывается в её конец и на основе анализа декларируемых им свойств ОС назначает ему приоритет. 2.Обработчик с более высоким приоритетом будет вызван раньше поскольку него выше вероятность успешной обработки события. 3. Удаление неактивного обработчика из списка доступных происходит в процессе процедуры его завершения, после чего очередь автоматически уплотняется. Так же все ОС используют понятие "обработчик по умолчанию" - этот обработчик вызывается первым и ему без проверок присваивается наивысший приоритет, но для него есть исключение из общего правила - он может быть не запущен в момент наступления события, но так как ОС знает где находится его образ, то она загрузит его и передаст ему запрос анализа на обработку и её последующие действия будут зависеть от его ответа. Это то же классика и с момента создания первых ОС она не изменилась так это решение оказалось оптимальным с точки зрения минимизации времени реакции ОС на событие. Для ОС обеспечивающей решение задач не чувствительных ко времени между возникновением события и реакцией системы на него допустимо достаточно большая задержка "событие - реакция", но она не должна превышать психологического предела комфортности для человека - это порядка 0,3 - 0,7 секунды, а вот для управляющих процессами ОС (ОС Реального Времени, ОС РВ) задержка между внешним событием и реакцией системы на него с учётом времени обработки и выработки управляющего воздействия должна быть намного короче чем период времени за который развитие процесса переходит точку неприменимости данного воздействия. И для для ОС РВ максимальным считается время реакции не превышающее 0,001 - 0,002 секунды, а у винды среднее время реакции ОС в оптимальных условиях составляет 0,15 - 0,2 сек, а при близкой к 100% загрузке ЦП может возрастать и до десятков секунд. Это уже плата за универсальность. ОС РВ умеют намного меньше универсальных ОС, но зато работают очень быстро. Правда они часто пишутся под конкретное оборудование и любое его изменение может потребовать серьёзных корректировок кода самой ОС РВ. Добавлено: KLASS Я кстати сейчас посмотрел у себя Ctrl-ASt-Esc на билде 2624 под вин 7 х64 СП1 - у меня она не падает, а вот 32-х битной ОС к сожалению ни у кого нет - у всех на машинах по 8 - 16 ГБ ОЗУ и ставить 32-х битную ОС смысла нет. maxvlas Согласен, выразился не точно, а посему на вопрос KLASS постарался максимально простыми словами объяснить что происходит, хотя этот механизм не столь прост как кажется. Когда мы регистрируем обработчик по умолчанию, то мы говорим ОС "При наступлении события 'Х' всегда первым вызывать его, даже если есть альтернативы!" и её дальнейшие действия зависят только от него. А РН обладает достаточным набором средств для решения задачи управления запущенными программами, и потому говорит "Это моя работа, я справлюсь!" так что у той просто не возникает необходимости звать кого-то ещё. Даже если они и есть и готовы выполнить эту работу. Считай это упрощенной моделью событий. Так их легче понять. ozr1 В 2625 единственное исправление - ExtendedTools: Fix crash. Этого достаточно, так это плагин отвечает за значительную часть UI. Ладно, пойду 2627 закоммичу. А то лежит бедолага, ждёт, а я закрутился.
---------- Жив курилка! (Р. Ролан, "Кола Брюньон") Xeon E5 2697v2/C602/128 GB PC3-14900L/GTX 1660 Ti, Xeon E5-2697v2/C602J/128 Gb PC3-14900L/GTX 1660 Ti |
|