- •Лекция-1:
- •Лекция-2:
- •Лекция-3:
- •Лекция-4:
- •Лекция-5:
- •Лекция-6:
- •Лекция-7:
- •Лекция-8:
- •Лекция-9:
- •Лекция-10:
- •Лекция-11:
- •Лекция-12:
- •Лекция-13:
- •Лекция-14:
- •Лекция-14:
- •Лекция-15:
- •Лекция-16:
- •Лекция-17:
- •Лекция-18:
- •Лекция-19:
- •Применение алгоритма банкира
- •Лекция-20:
- •Лекция-21
- •Лекция-22
- •Лекция-23
- •Лекция-24
Лекция-23
Распределение памяти в транспьютерах
Может быть адресовано до 232=4 Гб. Адресация начинается с отрицательного адреса 8000:0000 (доп. код). Структурно вся оперативная память подразделяется на внутрикристальную и внешнюю. Объём внутрикристальной равен 2 или 4 Кб. Внешняя и внутренняя памяти равнодоступны и имеют единую адресацию. Внутрикристальная память находится в младших адресах. В неё обычно помещают наиболее часто используемые подпрограммы, т.к. время доступа к ней меньше.
Несколько слов в младших адресах используется для специальных целей для слов состояния аппаратных каналов (линков), блока событий, регистров таймера, в качестве рабочих областей памяти диспетчера.
Диспетчеризация процессов
Каждый из процессов в данный момент времени может быть:
Выполняемым
Активным (готовым к выполнению и находящимся в очереди соответствующего приоритета)
Ожидающим сигнала таймера
Ожидающим ввода/вывода
Для выполняющегося процесса регистр I содержит адрес выполняемой команды, а W его дескриптор. Для организации очереди процессов используется две пары регистров, указывающих на начало и конец очереди высокого и низкого приоритетов:
Fptr0 Bptr0
Fptr1 Bptr1
В качестве элементов очередей процесса используются их рабочие области, содержащие помимо данных процессов управляющую информацию, требуемую для сохранения и восстановления состояния процессов на этапе диспетчеризации, в том числе содержится ссылка на рабочую область следующего процесса в очереди.
Низкоприоритетные процессы выполняются не более 32-х периодов низкоприоритетного таймера, после чего процесс, если он не завершился, помещается в конец очереди активных низкоприоритетных процессов, а диспетчер планирует выполнение следующего процесса. Сначала просматривается очередь высокоприоритетных процессов, а затем низкоприоритетных.
Высокоприоритетные процессы не прерываются и выполняются до тех пор, пока это возможно, т.е. до завершения или перехода в режим ожидания ввода/вывода, получения сигнала таймера или сигнала внешнего события, выдаваемого блоком событий.
Если высокоприоритетный процесс становится активным в момент выполнения низкоприоритетного процесса, то последний прерывается, его состояние сохраняется в области зарезервированных адресов и инициируется выполнение высокоприоритетного процесса. После завершения выполнения высокоприоритетного процесса, возобновляется выполнение прерванного низкоприоритетного процесса.
Ввод / вывод
Ввод/вывод для процессов транспьютера организуется одинаково как при использовании аппаратных линков, так и при использовании виртуальных линков (обмен между процессами одного транспьютера).
В обмене участвуют только два процесса: один выводит данные, а другой вводит. В момент инициализации канала и после завершения обмена канал инициализируется специальной константой MinInt.
Процесс, первым выполнивший команду обмена приостанавливается, и проверяется содержимое канала. Если оно равно MinInt, то в слово состояния канала заносится дескриптор процесса, а в рабочую область процесса помещается значение W и адреса передаваемых данных, после чего управление передаётся диспетчеру для планирования выполнения других процессов.
Если содержимое слова состояния канала не равно MinInt => данный процесс подошёл к обмену вторым и в слове состояния канала находится дескриптор процесса, ранее инициировавшего обмен. По этому дескриптору находятся данные при операции ввода или буфер для данных в случае операции вывода.
Обмен по линкам осуществляется аналогично, стой лишь разницей, что слова состояния канала имеют в памяти фиксированные адреса, а данные в процессе обмена не пересылаются между областями памяти в старт-стопном режиме с квитированием байтов.
При выполнении ввода/вывода от центрального процессора требуется лишь инициализация обмена. По команде ввода/вывода вся требуемая информация об операции обмена (адрес и длина данных) помещается во внутренние регистры линка, после чего центральных процессор освобождается для дальнейших вычислений, а линк самостоятельно управляет обменом.
Взаимодействие между транспьютерами осуществляется посредством обмена сообщениями, состоящими из последовательности байтов. Данные передаются по одному проводу из пары, а по другому подтверждается приём каждого байта. При передаче байта передаются стартовый и управляющий биты, восемь информационных битов и стоповый бит. После передачи байта отправитель ждёт подтверждения, состоящего из стартового и управляющего битов. Управляющий и подтверждающий биты инверсны.
Если один из общающихся через линк процессов не готов к приёму данных, байты накапливаются в регистрах данных линка. При заполнении регистра подтверждение после получения очередного байта не выдаётся и передающий линк останавливает передачу до освобождения регистра линка.
Передача по линку асинхронна, требуется только точный кварцевый генератор для задания частоты 5 МГц.
Обмены по линку программируются отдельно для передающего и принимающего процессов. Реализация обмена происходит, если программы в передающем и принимающем транспьютерах выходят на команды передачи и приёма. Неправильно запрограммированный обмен ведёт к бесконечному ожиданию.