КАТЕГОРИИ: Архитектура-(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) |
Механизмы переключения контекстов
активная задача знает более сложные механизм, в какой момент осуществляется чем у синхронных переключение, т.е. это переключение генерирует сама задача
Замечания: любая задача, попадая на уровень ядра приобретает статус процесса; каждому процессу сопоставляется стек, в который записываются данные, соответствующие контексту этого процесса; далее при работе процесса поддерживается обновление стека информацией; это позволяет заморозить/разморозить задачу.
Существуют 2 пути: 1) полностью написать эту систему; 2) использовать программный трюк, который позволял бы использовать возможности однопользовательской ОС для создания многопользовательской ОС.
Вызов подпрограммы: В однопользовательских ОС имеется всего один стек для выполнения программ. 2 требования к организации подпрограммы: 1) параметры процедуры передаются по значению, а обратно передается результат; 2) процедуры могут вызываться рекурсивно в явном виде или неявном.
Пусть есть 2 подпрограммы:
P (основная программа) Q (вызываемая программа)
Для программы P: - подготавливаются параметры для передачи; - сохраняется контекст программы для возвращения; - замена контекста P на контекст Q.
Для программы Q: - подготавливаются параметры для ее контекста; - замена контекста Q на контекст P.
Примечание: параметры передаются через стек.
Попрограмма(x, y), например, Pascal, а в Си – наоборот
При дальнем вызове до y в Pascal’e: mov ax, [bp+6]; 4 байта – дальний вызов (сегмент и смещение) bp+2 – первый адрес Замечание: 1) не всегда удобно использовать переменные (лучше использовать указатель на эту переменную); если используется указатель на переменную, то необходимо помнить:
les si, ук_х; ES:SI – CS и ES:[SI+2] - IP
2) a) Pascal запоминает все РОНы (РОН – Регистр Общего Назначения); б) Си запоминает только те регистры, которые участвуют в подпрограмме; в) Assembler вообще ничего не запоминает.
Используя язык Си, следует запоминать дополнительно значения всех регистров в той технологии, которая будет использована в переключении контекстов.
Вызов сопрограммы:
2 сложности (проблемы): 1) окончание подпрограммы, имеющей статус сопрограммы;
2) сохранение контекста каждой сопрограммы (где-нибудь в ядре) и развитие изменения контекста каждой сопрограммы;
CS:IP Пусть мы написали 2 функции: 1) создание нового процесса;
Дескриптор – указатель на область памяти, где хранятся данные о контексте.
2) переключение от “старого” процесса к “новому” (дескр_стар, дескр_нов); ее подфункции: а) модернизация точки возврата “старого” процесса; б) переключение на “новый” процесс;
@ - точка возврата
@ находится по адресу SS:SP
Дата добавления: 2013-12-13; Просмотров: 330; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |