КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Примитивы ядра
Примитивы могут быть 3-ех уровней: 1) управление процессами; 2) примитивы синхронизации; а) простейшая синхронизация; б) временная (задержка для многозадачного режима); в) событийная (по событию). 3) примитивы обмена сообщений; а) примитивы для синхронизации быстрых и медленных устройств; б) процесс обмена информации между собой (почтовый ящик).
Все примитивы пишутся по одной и той же схеме: Начало 1. пролог; сохранение контекста активного и вхождение в критический участок 2. контроль; проверка прав и параметров <тело примитива> 3. выделение процесса; переключение контекста
Примитивы управления процессами: - создать процесс; - уничтожить процесс.
Создать процесс: 1. пролог; 2. контроль; 3. создать дескриптор; 4. включить в очередь; 5. переназначить.
Уничтожить процесс: 1. пролог; 2. контроль; 3. извлечь из очереди; 4. разрушить дескриптор; 5. переназначить.
Эта схема не годится в случае удаления активного процесса, т.к. это опасно. Поэтому рассмотрим другой вариант:
Уничтожить процесс: 1. пролог; 2. контроль; 3. извлечь из очереди; 4. включить в очередь удаления; 5. переназначить.
а) специальный процесс (демон); б) в обработчике прерываний.
Обработчик прерываний: Начало Очистить очередь удаления Переключение контекста Конец
Простейшая синхронизация;
Б) возобновить выполнение
Отсрочить выполнение: 1. пролог; 2. контроль; 3. извлечь из очереди; 4. включить в очередь приостановленных; 5. переназначить;
Возобновить выполнение: 1. пролог; 2. контроль; 3. извлечь из очереди приостановленных; 4. включить в очередь готовых; 5. переназначить.
Временная синхронизация;
DELAY() ® P1
К этому надо бы добавить: + реализация режима пассивных ожиданий; + избавление от иллюзии, связанной с обработчиком прерываний.
Постановка
Функцию возвращения из очереди удаляемых берет на себя обработчик прерываний.
Событийная синхронизация;
1) Латентность – скрытность (например, заболевания).
2)Маскирование (запрет отдельных прерываний). Маскирование используется для того, чтобы выделить в анализируемом значении указанные биты и сделать навидимыми остальные. Микросхема PIC «20h, 21h, 22h (через порт 21h фактически и происходит маскирование)
Например, хотим запретить прерывание клавиатуры: mov al, 00000010b out 21h, al
3) Режим взаимного исключения; Монитор – объект, содержащий: - множество переменных (отражающих состояния системы); - множество функций (функции изменения переменных).
1. Когда процесс получает доступ к ресурсу, то это влияет (приводит к) на изменение состояний системы. 2. Когда процесс запрашивает ресурс через монитор.
Монитор “знает” состояния системы и владеет функциями, способными их изменить, может предоставить этот ресурс либо отказать процессу.
3. Монитор работает в режиме взаимного исключения (ВИ).
0, критический участок свободен FLAG = 1, критический участок занят
M: если FLAG = 1, то идти к М
FLAG = 0 Недостатки: - такая схема (3) приводит к режиму активного ожидания, т.е. режиму, при котором ожидаются ресурсы процессора; - нарушение принципа FIFO; - FLAG – тоже общий ресурс Þ к нему тоже можно осуществить доступ.
Отсюда видно, что эта схема практически неприемлема, а если и приемлема, то безграмотна. Попробуем ее немного улучшить (попробуем устранить последний недостаток):
M: mov ax, 1
lock xchg ax, FLAG Cmp ax, 1 Jz M
FLAG = 0
Семафор Дейкстры (устраняет все 3 недостатка):
Семафор – объект, который состоит из: - счетчика семафора; - очереди семафора; - 2-ух функций семафора (захват семафора, стоящий перед критическим участком и освобождение семафора, стоящий после критического участка).
Захват_семафор() CLI DEC счетчик семафора (если счетчик семафора < 0, то дескр_проц отправляется в очередь семафора) STI Освоб_семафор() CLI INC счетчик семафора (если счетчик семафора <= 0, то дескр_проц, стоящий в очереди семафора 1-ым, отправляется в критический участок)
Дата добавления: 2013-12-13; Просмотров: 578; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |