Сидорук А.В.

ДОСЛІДЖЕННЯ ПРОБЛЕМИ ЗМІНИ ПРОГРАМНОГО КОДУ В ПРОЦЕСІ ЙОГО ВИКОНАННЯ

Детермінованість сучасних засобів програмування

На сьогодні, засоби програмування, є жорстко обмежені архітектурою обчислювальних систем чи у випадку наявних віртуальних машин, архітектурою останніх. Для виконання певних задач створюються певні структури програм, можливість змінювати цю структуру існує, але для цього необхідно виконати перекомпіляцію, тривалість якої пропорційно залежить від величини досліджуваної системи. Ефективність використання інформаційних систем та можливість їх швидкої адаптації до користувача пов’язані з апаратною та програмною сумісністю, фізичної архітектури комп’ютерної системи.

Основне обмеження

Детермінованість сучасних засобів програмування накладає певні обмеження на програми й вимагає їх виконання за певних умов. Основне обмеження – програма являє собою кінцевий файл з незмінним кодом та набором команд, з можливістю проводити зміни тільки в області даних.

Переносний виконавчий формат файлів

Формат PE (Portable Executable) – це переносний виконавчий формат файлів. Переносним він являється тому, що він єдиний для всіх операційних систем Windows (9x,NT). Специфікація цього формату була опублікована й включена до складу Microsoft Developer Network CD (Specs and Strategy, Specifications, Windows NT File Format Specifications).PE-формат базується на форматі COFF (загальний формат базується на форматі COFF (загальний формат об'єктних файлів -формат базується на форматі COFF (загальний Common Object File Format), що розповсюджений на багатьох операційних системах сімейства UNIX® та VMS. У той же час, для збереження сумісності з попередніми версіями MS-формат базується на форматі COFF (загальний DOS® і Windows, PE формат також зберіг старий знайомий MZ заголовок DOSа.

Організація формату PE-файлівфайлів

Формат PE-формат базується на форматі COFF (загальний файлів організований у вигляді лінійного потоку даних. Він починається із заголовка MS-формат базується на форматі COFF (загальний DOS, програми реального режиму, і сигнатури PE-формат базується на форматі COFF (загальний файлу. Далі випливають заголовок PE-формат базується на форматі COFF (загальний файлу і заголовок опцій. Після них ідуть заголовки всіх сегментів, за якими ідуть тіла цих сегментів. І ближче до кінця файлу розташовані різні області даних, включаючи інформацію про переадресації, таблицю символів, інформацію про номери рядків і дані в таблиці рядків.Очевидно що дана організація формату виконавчих файлів є жорсткою, тобто в процесі виконання файл не може змінювати свою структуру. Також очевидно, що дана структура була організована виходячи з особливостей архітектури обчислювальних систем.

Загальний вид PE-файлів

Додаткові обчислювальні можливості

Для підвищення ефективності використання обчислювальних систем в якості проміжної ланки між програмною та апаратною частинами комп’ютерних систем пропонується використовувати віртуальний рівень, який забезпечується віртуальним процесором. Це допомагає будувати віртуальну модель архітектури з можливістю створення довільного формату виконавчих файлів, формат розроблений для віртуального процесора дозволяє виконавчим файлам змінювати себе не лише в області даних, а й в області коду та команд. Що надасть обчислювальній системі додаткові можливості. І дозволить реалізовувати принципово нові алгоритми.

Адаптаційні можливості виконавчих файлів

Системи обробки інформації враховують особливості користувачів і покращують їх роботу за рахунок своїх адаптаційних можливостей. Зазвичай процес адаптації не є автоматизованим, а якщо й так, то з певними обмеженнями, встановленими алгоритмами виконуваних файлів та не можливістю зміни виконавчих файлів систем у процесі їх виконання.Використання віртуального процесора і нового формату виконавчих файлів дозволить підвищити адаптаційні можливості систем обробки інформації, а можливість віртуального процесора використовувати вже існуючі засоби наявні в обчислювальній системі дозволяє будувати складні системи обробки даних в яких частину роботи виконує віртуальний процесор, а інша частина виконується класичним способом.

Системи реального часу

Реакція систем реального часу на подію визначається сумарним проміжком часу, необхідним для одержання даних про стан об’єкта управління, обробки даних і формуванням керуючого впливу. Тривалість обробки даних у подібних задачах визначається не тільки архітектурними особливостями системи, але й ефективністю планування обчислювальних процесів за допомогою засобів динамічного програмування нечіткої логіки. Однак, задачі динамічного програмування нечіткої логіки вирішуються різноманітними методиками, технології яких для кожної задачі формуються як окремі правила, що призводить до накладних витрат часу й ресурсів. Зменшення таких витрат є актуальною проблемою, яка немає ефективного рішення відомими методами й засобами. Для вирішення даної задачі пропонується використовувати розроблений віртуальний процесор.

Загальна структура віртуального процесора

Весь код збережено в чотиривимірній матриці, що містить, як код програми, так і систему команд, яка його виконує. Вся обробка відбувається в даній матриці, що складається з 4 векторів і являє собою складну структуру зі складними внутрішніми зв’язками.Код в матрицю завантажується частинами, і зберігається також частинами, що дає можливість не утримувати постійно весь код великої програми в динамічній пам’яті, а користуватись лише необхідними частинами коду в певний час роботи. Для цього створено багатосекторний код, який дозволяє розбивати загальну структуру на частини, кожній з яких буде виділятись окремий потік. Код потоку зберігається в третьому вимірі матриці. Ядро, при необхідності, завантажує і зберігає сектори коду. Команда стартового сектору активує процес виконання команд.

Ядро – головний елемент, який забезпечує рух по коду і призводить до конструктивних змін у матриці, яка використовує для кожного потоку як його код, так і систему команд, прив’язану до даного коду. Ядро використовується при завантаженні програмного коду, для обробки потоків та збереженні секторів (синхронізація між потоками). Такий підхід дає можливість створювати програми, які можуть змінювати виконуваний файл в процесі виконання не тільки в області даних, а й в області коду, також змінювати не лише код, але і систему команд, оскільки все розміщено в одній матриці, якою керує ядро. Для написання програмного коду, що виконується на віртуальному процесорі, розроблено спеціальну мову програмування та оболонку.

Основні особливості

  • Забезпечення максимальної гнучкості алгоритму, тобто можливість алгоритму змінити свій код і систему команд його обробки в процесі виконання. В даному випадку, робота віртуального процесора зводиться до надання можливості під час виконання змінювати код і правила його обробки за алгоритмом, що являє собою частину того ж коду. Такий алгоритм отримує повну свободу дій. Віртуальний процесор підтримує можливість на рівні базових команд змінювати свій код в довільному секторі й передавати керування в необхідну точку, а також підтримує набір базових команд. В процесі роботи можуть створюватись нові набори команд, для цього існують відповідні механізми.

  • Даний спосіб дає можливість змінювати самі команди коду, реалізуючи таким чином складну систему обробки. Зміни відбуваються в матриці. Застосовуючи відповідні механізми, зміни фіксуються в оригінальному коді.

  • Віртуальний процесор використовує зв’язок через файли динамічних бібліотек, які є проміжним елементом, для зв’язку коду, написаного на будь-формат базується на форматі COFF (загальний якій мові й відкомпільованого у файл динамічної бібліотеки й викликати довільну функцію, що дає можливість взаємодіяти як з операційною системою, так і з іншими програмними продуктами.

Структурна організація ядра

Взаємодія внутрішніх даних та ОС

Взаємодія ВП з ОС на рівні функцій

Організація багато поточності

Загальна структурна схема взаємодії ядра ВП з ОС



Загальна схема представлення даних у ВП

Загальна схема роботи ВП з ресурсами ОС

Вигляд коду демонстративної програми у середовищі написання програм для ВП

Редактор ресурсів з пакету програм Microsoft Visual C++ 6.0

Вигляд демонстративної програми на етапі виконання

Фрактал Мандельброта

Тримірний куб

Математична гра “Життя”


Загальна структура коду демонстративної програми (частина 1)

Загальна структура коду демонстративної програми (частина 2)

Загальна структура коду демонстративної програми (частина 3)

Основні алгоритми взаємодії ВП та ОС

  • ФПВД – функція перетворення внутрішніх даних

  • МЄФ – механізм експорту функцій

  • ВДБ – взаємодія з динамічною бібліотекою

  • Алгоритми взаємодії з ресурсом

Блок-схема ФПВД (частина 1)

Блок-схема ФПВД (частина 2)

Блок-схема ФПВД (частина 3)

Алгоритм МЄФ (частина 1)

Алгоритм МЄФ (частина 2)

Алгоритм МЄФ (частина 3)

Взаємодія ВП з динамічною бібліотекою (ВДБ)

Блок-схема роботи з ресурсами

Статья создана 2008-2009 рр. Опубликована 28.09.2018 

Назад

 

TerminalCoin

2018-09-30 07:55:34