Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по операционным системам1.doc
Скачиваний:
110
Добавлен:
02.05.2014
Размер:
1.27 Mб
Скачать

Архитектура Фон-Неймана

SS

DS

стандартная информация

CS

PSP

Префиксный сегмент, служащий для связи задачи с ОС

нестандартная информация

PSP содержит начало CS, DS, SS, код окончания задачи, буфер обмена с файлами и т.д.

а) позволяла более быстро выполнять программу;

б) позволяла задать контекст в наиболее минимальном объеме (задать CS:IP и DS с помощью РОНов);

в) в многопроцессорной системе Фон-Неймановская архитектура не является удобной, т.к. действия выполняются последовательно, а не параллельно.

! Для реальных задач чистая Фон-Неймановская архитектура не подходит.

Таким образом, даже самая простая ОС должна содержать простейший механизм переключения контекстов.

Механизмы переключения контекстов.

МПК

Синхронные методы

Асинхронные методы

активная задача знает более сложные механизм,

в какой момент осуществляется чем у синхронных

переключение, т.е. это переключение генерирует сама задача

Вызов процедуры

Прерывания

Сопрограммная замена контекста

Исключения

(МОС)

Вызов супервизора

Замечания: любая задача, попадая на уровень ядра приобретает статус процесса; каждому процессу сопоставляется стек, в который записываются данные, соответствующие контексту этого процесса; далее при работе процесса поддерживается обновление стека информацией; это позволяет заморозить/разморозить задачу.

Существуют 2 пути:

  1. полностью написать эту систему;

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

Вызов подпрограммы:

В однопользовательских ОС имеется всего один стек для выполнения программ.

2 требования к организации подпрограммы:

  1. параметры процедуры передаются по значению, а обратно передается результат;

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

Пусть есть 2 подпрограммы:

P (основная программа) Q (вызываемая программа)

Для программы P:

  • подготавливаются параметры для передачи;

  • сохраняется контекст программы для возвращения;

  • замена контекста P на контекст Q.

Для программы Q:

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

  • замена контекста Q на контекст P.

Примечание: параметры передаются через стек.

BP

В SS:SP  CS:IP

Адрес возврата

24 байт

Состояние стека

y

x

Попрограмма(x, y), например, Pascal, а в Си – наоборот

При дальнем вызове до y в Pascal’e:

mov ax, [bp+6] ; 4 байта – дальний вызов (сегмент и смещение)

bp+2 – первый адрес

Замечание:

  1. не всегда удобно использовать переменные (лучше использовать указатель на эту переменную); если используется указатель на переменную, то необходимо помнить:

les si, ук_х ; ES:SI – CS и ES:[SI+2] - IP

  1. a) Pascal запоминает все РОНы (РОН – Регистр Общего Назначения);

б) Си запоминает только те регистры, которые участвуют в подпрограмме;

в) Assembler вообще ничего не запоминает.

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

Вызов сопрограммы:

2 сложности (проблемы):

  1. окончание подпрограммы, имеющей статус сопрограммы;

( схема окончания работы подпрограммы в стеке на языке Assembler)

ENDP

  1. сохранение контекста каждой сопрограммы (где-нибудь в ядре) и развитие изменения контекста каждой сопрограммы;

Задача 1

Задача 2

Задача 3

CS:IP

Пусть мы написали 2 функции:

  1. создание нового процесса;

Дескриптор – указатель на область памяти, где хранятся данные о контексте.

  1. переключение от “старого” процесса к “новому” (дескр_стар, дескр_нов);

ее подфункции:

а) модернизация точки возврата “старого” процесса;

б) переключение на “новый” процесс;

@ - точка возврата

@ находится по адресу SS:SP