Внутреннее устройство ОС RT-11. Копаемся в исходном коде. Часть третья
IlyasKzn 8 минут назад Внутреннее устройство ОС RT-11. Копаемся в исходном коде. Часть третья Средний 14 мин 111 Операционные системы Системное программирование * Обзор В операционной системе RT-11 существуют варианты...
Значимый прорыв формирует отрасль ИИ: IlyasKzn 8 минут назад Внутреннее устройство ОС RT-11. Копаемся в исходном коде. Часть третья Средний 14 мин 111 Операционные системы Системное программирование * Обзор В операционной системе RT-11 существуют варианты резидентного монитора с поддержкой многозадачности — например, RMONFB.
Многозадачность здесь реализована полностью на программном уровне, без аппаратной поддержки. Если вам интересно посмотреть исходный код, отвечающий за многозадачность в RT-11, вместе с пояснениями из Руководства системного программиста — добро пожаловать под кат. Ликбез по ассемблеру PDP-11Без знания ассемблера PDP-11 не обойтись, поэтому приведем здесь описание части инструкций.
Технические детали
Полное описание можно найти в здесь. Скрытый текстВ процессоре PDP-11 имеется восемь 16-битных регистров: R0, …, R7. Указатель стека SP — это R6, счетчик команд PC — это R7.
Присваивание (обратите внимание на обратный порядок аргументов):MOV src, dst ; dst = srcРегистровая адресация:MOV R1, R2 ; R2 = R1Непосредственная адресация:MOV #12, R2 ; R2 = 012Косвенная адресация:MOV (R3), R4 ; R4 = R3 MOV @R3, R4 ; R4 = R3Косвенная адресация с инкрементом:MOV (R3)+, R4 ; R4 = R3++ MOV -(R3), R4 ; R4 = (–-R3)Косвенная адресация со смещением:MOV JNUM(R3), R4 ; R4 = R3->JNUM или R4 = *(R3 + JNUM)Добавление и извлечение из стека:MOV R4, -(SP) ; PUSH(R4) MOV (SP)+, R4 ; R4 = POP()Безусловный переход:JMP label ; goto label BR label ; goto labelСравнение и условный переход:CMP R4, R5 BNE label ; if (R4 ! = R5) goto label CMP R4, R5 BLO label ; if (R4 < R5) goto label CMP R4, R5 BHI label ; if (R4 > R5) goto label BGT label ; if (R4 > R5) goto label BEQ label ; if (R4 = R5) goto label TST R3 BMI label ; if (R3 < 0) goto label BPL label ; if (R3 > 0) goto labelПобитовые операции:BIC R1, R2 ; R2 = R2 & ~R1 BIS R1, R2 ; R2 = R2 | R1Вызов подпрограммы и возврат: JSR Ri, lsubr ; PUSH(Ri) ; Ri = lafter ; goto lsubr lafter: ; ... RTS Ri ; temp = Ri ; Ri = POP() ; goto tempОбщая идея алгоритмаРезидентный монитор предоставляет программам системные вызовы для работы с файлами, терминальным вводом-выводом и т.
У каждого задания (задачи, процесса) есть собственный стек. В момент системного вызова в этот стек записывается адрес возврата в программу. В мониторе хранится служебная информация по всем работающим заданиям, в том числе указатели на стек каждого задания.
Отраслевые последствия
В конце системного вызова планировщик проверят, нет ли более приоритетного задания, ожидающего выполнения. Если такое задание есть, происходит переключение на него. Для этого из служебной информации задания извлекается указатель стека и загружается в регистр SP процессора, после чего выполняется инструкция возврата RTI.
Аналогичное переключение происходит и в конце обработчиков прерываний. RT-11 относится к операционным системам реального времени, поэтому цель планировщика — выполнять наиболее приоритетное задание, а не распределять время процессора равномерно между всеми.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





