Структурно (конструктивно) вся оперативная память подразделяется на
внутрикристальную и внешнюю. Объем внутрикристальной памяти составляет
4 (2) Кбайт (в зависимости от модели транспьютера). Архитектурно (с точки
зрения программиста) вся память транспьютера, как внешняя, так и
внутрикристальная, равнодоступна и имеет единую адресацию.
Внутрикристальной памяти соответствуют младшие адреса, а внешней памяти -
старшие.
Поскольку внутрикристальная память имеет меньшее время доступа (один
такт процессора), в нее обычно помещаются программистом часто
используемые данные и подпрограммы. Пример распределения памяти показан
на рис 76.
Несколько слов в младших адресах памяти используется для специальных
целей: для слов состояния аппаратных каналов - линков, блока Event, регистров
таймера, в качестве рабочих областей памяти диспетчера.
Диспетчеризация процессов
Каждый из процессов в конкретный момент времени может быть вы-
полняемым, активным (готовым к выполнению в очереди соответствующего
приоритета), ожидающим сигнала таймера (в очереди к таймеру
соответствующего приоритета), ожидающим ввода-вывода.
Для выполняемого процесса регистр I содержит адрес следующей команды,
регистр W содержит его дескриптор.
Для организации очереди процессов на выполнение (очередь активных
процессов) в диспетчере используются пары регистров FptrO, BptrO, Fptrl,
Bptrl, указывающие на начало и конец очереди высоко- и низкоприоритетных
процессов соответственно. В качестве элементов очередей используются
рабочие области процессов, содержащие помимо данных процесса,
управляющую информацию, требующуюся для сохранения и восстановления
состояния процессов на этапе диспетчеризации (в том числе ссылку на рабочую
область следующего процесса в очереди).
Низкоприоритетные процессы выполняются в течение не более чем 32
периодов низкоприоритетного таймера, после чего процесс (если он еще
способен к выполнению) помешается в конец очереди активных низкопри-
оритетных процессов, а диспетчер планирует выполнение следующего про-
цесса. Сначала просматривается очередь высокоприоритетных процессов, затем
- низкоприоритетных.
Высокоприоритетный процесс не прерывается и выполняется до тех пор,
пока это возможно (до завершения или до момента ожидания ввода-вывода,
сигнала таймера или сигнала внешнего события, выдаваемого блоком Event).
Если высокоприоритетный процесс становится активным (например, получает
сигнал таймера) в момент выполнения процесса с низким приоритетом,
последний прерывается, его состояние сохраняется в области
зарезервированных адресов памяти транспьютера и инициируется выполнение
прервавшего высокоприоритетного процесса. После его выполнения