Математические основы информатики и программирования
133
УДК 004.4'2, 004.4'4 DOI 10.17223/2226308X/8/51
СИСТЕМА УПРАВЛЕНИЯ БИБЛИОТЕКАМИ ДЛЯ ЛЯПАСА
В. О. Сафонов
Предлагается реализация системы управления библиотеками для языка программирования ЛЯПАС. Эта система состоит из трёх основных частей: первая является серверной и отвечает за хранение библиотек, вторая является утилитой для создания библиотек, третья — утилитой, которая позволяет управлять набором библиотек, установленных на компьютере. Описывается формат библиотеки для ЛЯПАСа и система модульной компиляции.
Ключевые слова: ЛЯПАС, модульная компиляция, библиотека подпрограмм.
Система управления библиотеками — набор программного обеспечения, позволяющего управлять процессом создания, установки, удаления и обновления библиотек. Такая система является важным инструментом создания программ, так как позволяет находить нужные для решения задачи библиотеки и тем самым существенно сократить время разработки. В настоящий момент транслятор с ЛЯПАСа [1] не поддерживает компиляцию программы из отдельных модулей, в частности не определён формат файла, содержащего библиотеку функций.
Для модульной компиляции выделены три основных требования: 1) компактность исполняемого файла; 2) простота использования; 3) проверка корректности аргументов функции на этапе компиляции. В данный момент предполагается использование статических библиотек ввиду простоты реализации, в будущем планируется использование динамических библиотек.
Компиляция библиотеки разбита на три этапа: 1) трансляция исходного кода на языке ЛЯПАС в набор подпрограмм на языке ассемблера NASM [2]; 2) преобразование набора подпрограмм на языке ассемблера в набор объектных файлов в формате ELF [3]; 3) сборка статической библиотеки из набора объектных файлов. Выходная статическая библиотека содержит отдельный объектный файл для каждой из подпрограмм компилируемой библиотеки.
Можно выделить следующие особенности описанного подхода:
1) Утилита компоновки ld [4] добавляет из статической библиотеки только те объектные файлы, в которых содержится нужная для компоновки функция. В исполняемый файл будут добавлены только используемые функции.
2) Для каждой функции при трансляции в язык ассемблера создается специальная секция [3] с её сигнатурой. Если при компиляции в библиотеках не содержится функции с нужной сигнатурой, то компилятор сообщает об ошибке.
3) Для использования библиотеки необходимо указать её имя при помощи специальной директивы, а при запуске — путь к папке с этой библиотекой.
Система управления библиотеками состоит из трёх подсистем. При помощи утилиты LBuilder можно создавать и редактировать библиотеки. Сервис LServer позволяет создать репозиторий, управлять библиотеками в нём, распространять с его помощью библиотеки. Конечный пользователь при помощи утилиты LManager выбирает репо-зитории других пользователей и загружает нужные библиотеки.
На данном этапе ведётся разработка функциональности модульной компиляции для существующего компилятора ЛЯПАСа. В будущем планируется описать архитектуру для трёх утилит системы управления библиотеками, а затем разработать их на языке ЛЯПАС, что позволит использовать их в ОС ЛЯПАС.
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.