Научная статья на тему 'Разработка ОС на языке ЛЯПАС'

Разработка ОС на языке ЛЯПАС Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
141
46
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЛЯПАС / ОПЕРАЦИОННАЯ СИСТЕМА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Стефанцов Дмитрий Александрович, Томских Павел Александрович

Сообщается о результатах исследований по созданию ОС ЛЯПАС, предназначенной для разработки и запуска программ на ЛЯПАСе. Реализованы следующие функции её ядра: вывод сообщений на экран, инициализация контроллеров устройств, обработка прерываний, взаимодействие с таймером и клавиатурой, многозадачность. Многозадачность демонстрируется несколькими параллельно работающими процессами, которые можно приостанавливать и возобновлять нажатием определённой клавиши. Планируется реализация файловой подсистемы и подсистемы виртуальной памяти.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

The development of an operating system in LYaPAS

The development of OS LYaPAS for writing and executing programs in LYaPAS is described. Currently the creation of OS LYaPAS is in the stage of kernel development. The following functions are implemented: message output to screen, device-controllers initialization, interrupts handling, working with timer and keyboard, multitasking. Multitasking is demonstrated by a few parallel processes that can be suspended and restored with a key press. The further step in the development is the creation of a file system and memory management modules.

Текст научной работы на тему «Разработка ОС на языке ЛЯПАС»

134

Прикладная дискретная математика. Приложение

ЛИТЕРАТУРА

1. Агибалов Г. П., Липский В. Б., Панкратова И. А. О криптографическом расширении и его

реализации для Русского языка программирования // Прикладная дискретная математика. 2013. №3. С. 93-105.

2. Netwide Assembler. http://www.nasm.us/

3. TIS Committee. Tool Interface Standard (TIS) Executable and Linking Format (ELF)

Specification Version 1.2. 1995.

4. The GNU linker ld (GNU Binutils) version 2.25. https://sourceware.org/binutils/docs-2.

25/ld/index.html

УДК 004.451.9 DOI 10.17223/2226308X/8/52

РАЗРАБОТКА ОПЕРАЦИОННОЙ СИСТЕМЫ НА ЯЗЫКЕ ЛЯПАС

Д. А. Стефанцов, П. А. Томских

Сообщается о результатах исследований по созданию ОС ЛЯПАС, предназначенной для разработки и запуска программ на ЛЯПАСе. Реализованы следующие функции её ядра: вывод сообщений на экран, инициализация контроллеров устройств, обработка прерываний, взаимодействие с таймером и клавиатурой, многозадачность. Многозадачность демонстрируется несколькими параллельно работающими процессами, которые можно приостанавливать и возобновлять нажатием определённой клавиши. Планируется реализация файловой подсистемы и подсистемы виртуальной памяти.

Ключевые слова: ЛЯПАС, операционная система.

ОС ЛЯПАС предназначена для разработки и запуска программ, написанных на языке ЛЯПАС [1]. Предполагается специализация данной ОС для выполнения требовательных к вычислительным ресурсам криптографических алгоритмов. Планируется работа ОС ЛЯПАС на процессорах архитектуры x86-64 с возможностью использовать аппаратные средства для ускорения работы алгоритмов, например выделить одно или несколько ядер процессора полностью под один процесс или использовать графические процессоры для параллельных вычислений. В настоящий момент ОС ЛЯПАС компилируется для 32-битных процессоров архитектуры x86.

В разработке этой ОС можно выделить следующие этапы:

1) Создание транслятора Т1 с ЛЯПАСа в язык ассемблера, работающего под управлением GNU/Linux. ЛЯПАС, с которого производится трансляция, обладает дополнительными возможностями по сравнению с ЛЯПАС-Т [1]: доступ к любой ячейке памяти с помощью специального комплекса, возможность использовать адреса процедур в качестве операндов [2].

2) Создание базовых компонент ОС ЛЯПАС — загрузчика и ядра — с помощью Т1. После компиляции в машинные коды и расположения этих компонент на диске ОС ЛЯПАС может выполнять некоторые действия, например вывод на экран данных о своей работе.

3) Определение формата исполняемого файла для ОС ЛЯПАС. Возможно, таким форматом станет ELF [3].

4) В ОС ЛЯПАС добавляется возможность запуска программ. Эти программы пишутся в GNU/Linux на языке ЛЯПАС и транслируются в машинный код, представленный в формате исполняемого файла ОС ЛЯПАС, с помощью транслятора Т2. Транслятор Т2 получается изменением Т1.

Математические основы информатики и программирования

135

5) Под управлением GNU/Linux пишется транслятор Т3, который транслирует программы на ЛЯПАСе в машинный код в формате исполняемого файла для ОС ЛЯПАС. Сам Т3 пишется на ЛЯПАСе и транслируется с помощью Т2. После этого шага становится возможным создание программ для ОС ЛЯПАС в самой ОС ЛЯПАС.

6) Исходный текст ОС ЛЯПАС и транслятор Т3 изменяются так, чтобы Т3 мог скомпилировать ОС ЛЯПАС. После этого шага ОС ЛЯПАС можно разрабатывать в самой ОС ЛЯПАС.

На данном этапе разрабатываются загрузчик и ядро ОС ЛЯПАС. В функции загрузчика входят только очистка экрана и загрузка ядра с диска.

Ядро разделено на два модуля. В первом модуле производится переход в защищенный режим и вызов второго модуля. В этом модуле определена также глобальная таблица дескрипторов (GDT) и выделяется память под таблицу дескрипторов прерываний (IDT) [4].

Основные функции ядра находятся во втором модуле. К таким функциям относятся: вывод строк на экран (функция print(F1/), комплекс F1 —выводимая строка); инициализация контроллеров (функция init_controllers(/)); обработка прерываний (функция timer_interrupt(/) обрабатывает прерывания от таймера, функция keyboard_interrupt(/) —от клавиатуры); заполнение IDT (функция construct_idt(/)); переключение процессов (при нажатии клавиши 1, 2 или 3 происходит остановка или возобновление соответствующего процесса, выполняется это функцией handle_scancode(/), которая вызывается функцией keyboard_inter-rupt(/)); многозадачность (функция timer_interrupt(/) вызывает планировщик — функцию scheduler(/), который переходит на выполнение следующего процесса). В этом же модуле находится код процессов, демонстрирующих многозадачность (функции proc_1(/), proc_2(/), proc_3(/) —бесконечный цикл с выводом названия соответствующей функции, и proc_0(/) —бесконечный цикл без действий). Подготовка к переходу к первому процессу осуществляется функцией kernel(/).

На данный момент ОС ЛЯПАС после загрузки переходит к демонстрации многозадачности — поочерёдному выполнению трёх процессов (функции proc_1(/), proc_2(/) и proc_3(/) ). Эти процессы можно приостанавливать и возобновлять нажатием клавишей 1, 2 или 3 соответственно. Если эти три процесса приостановлены, то выполняется процесс proc_0(/).

В ближайшее время планируется добавить некоторые системные вызовы, настроить страничную адресацию, реализовать работу с файлами.

ЛИТЕРАТУРА

1. Агибалов Г. П., Липский В. Б., Панкратова И. А. О криптографическом расширении и его реализации для Русского языка программирования // Прикладная дискретная математика. 2013. №3. С. 93-105.

2. Гречнев С.Ю., Стефанцов Д. А. Модификация ЛЯПАС для разработки ОС // Прикладная дискретная математика. Приложение. 2015. №8. С. 129-131

3. TIS Committee. Tool Interface Standard (TIS) Executable and Linking Format (ELF) Spécification Version 1.2. 1995.

4. Intel 64 and IA-32 Architectures Software Developer Manuals http://www.intel.com/ content/www/us/en/processors/architectures-software-developer-manuals.html

i Надоели баннеры? Вы всегда можете отключить рекламу.