Цитата Сообщение от Eltaron Посмотреть сообщение
Те диспетчеры, которые bank16, bankfixed - они занимаются только выделением свободной страницы создаваемому процессу. И даже не самой страницы, а её номера. Тупо отслеживают, что занято, а что нет, больше ничего не делают.
Я потерялся в поиске примера где в коде Алана используется архитектура вот с этой картинки:

Код:
	          First 64k	      Subsequent 64k banks
	FFFF	+------------+		+------------+
    Common	|   Common   |		| Task Store |+
	F000	+------------+		+------------+|+
		|            |		|            |+|+
		|   Kernel   |		|  Process   ||+|
    Banked	|    Code    |		|    Code    |||+
		|            |		|   & Data   ||||
		|            |		|            ||||
	0100	+------------+		+------------+|||
		|  Reserved  |		|  Reserved  |+||
	0000	+------------+		+------------+|+|
					 +------------+|+
					  +------------+|

Т.е. именно как оно (в каких функциях) использует диспетчер по 64к (он же 60к) для доступа к данным в другие страницы. В моем представлении это должны бы быть какие-то ассемблерные вставки, чтоли...

Цитата Сообщение от Eltaron Посмотреть сообщение
А код, переключающий задачи (=переключающий страницы) платформно-специфичен и вынесены в ассемблерные файлы.
Это, по-сути, пять функций:
switchout - выполняется после того, как у процесса отбирается процессорное время.
swithin - выполняется перед тем как процессу выдается процессорное время
map_kernel - вернуть маппинг ядра
map_process - подключить страницы, занятые указанным процессом
do_fork - создать копию текущего процесса

От их реализации и зависит всё поведение системы.
C этим более-менее понятно. Аналогично было и на UZIX, только функции по-другому назывались. Для UZIX эти модули я вчерне уже начинал писать, тогда не хватило упорства победить компилятор (это самая засада в программировании для Z80 на C).