Your SlideShare is downloading. ×
Разработка встраиваемой операционной системы на базе микроядерной архитектуры GNU/Mach
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Разработка встраиваемой операционной системы на базе микроядерной архитектуры GNU/Mach

2,294
views

Published on

Published in: Education, Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,294
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Разработка встраиваемой операционной системы на базе микроядерной архитектуры GNU/Mach. В.А. Сартаков В первой части работы представлен обзор современных архитектуроперационных систем и области их применения. Вторая часть работыпосвящена процессу создания встраиваемой системой. Введение Операционная система является неотъемлемой частью вычислительнойсистемы. Современное развитие электроники приводит к существенномууменьшению размеров вычислительной системы, что в свою очередь привелок появлению мобильных и встраиваемых устройств. Из-за высокойсложности этих устройств, а так же развивающихся подходов к разработкеподобных систем, была разработана идеология встраиваемых операционныхсистем. Данные системы строились на основе операционных систем общегоназначения, в которые вносились изменения, в соответствии с особенностямииспользования. В качестве примера можно привести операционную системуобщего назначения Linux, которая была переработана для мобильныхрешений и называлась uCLinux. Основным различием этих систем являетсяотсутствие методов работы с виртуальной памятью в uCLinux, так какбольшинство поддерживаемых этой ОС платформ не имели MMU (memorymanagement unit, устройство управления памятью). Появление большого количества различных встраиваемых архитектур,привело к появлению большого количества разнообразных встраиваемыхоперационных систем. В процессе их развития были отмечены дветенденции. Первая тенденция осуществляла развитие системы «снизу вверх»– когда система развивалась посредством усложнения более простойсистемы, например eCos. Данная операционная система изначально былапредназначена для работы на медленных и очень простых микропроцессорах.Вторая тенденция – «сверху вниз» – uCLinux, которая создавалась изполноценной ОС посредством ее упрощения и уменьшения функционала. Ксожалению, системы, разрабатываемые в соответствии с первым подходом,не позволяют в полной мере использовать существующее готовое
  • 2. программное обеспечение (с открытым исходным кодом), так как вбольшинстве своем не соответствуют стандартам POSIX. В свою же очередьосновным недостатком систем созданных в соответствии со вторымподходом, является использование устаревающих архитектур ОС. Дляразработки встраиваемых ОС необходимо использовать современныеподходы, так как мобильные устройства более критичны к качеству ихпрограммного обеспечения. Существует несколько типов архитектур ОС: монолитная, монолитно-модульная, и микроядерная. Микроядерная архитектура является наиболеезащищенной и отказоустойчивой, по сравнению с монолитной и монолитно-модульной архитектурами. В процессе развития операционных систем,микроядерная архитектура не получила большого распространения,поскольку в момент ее появления проигрывала по производительностиобычным Unix системам, и в настоящее время либо не развивается, либосуществует в виде коммерческих проектов. Монолитно-модульнаяоперационная система Linux, например, являющаяся свободнораспространяемой, развивается и переносится на мобильные платформы. Наличие существенных недостатков у популярных открытыхмонолитно-модульных встраиваемых операционных систем (низкий уровеньнадежности и отказоустойчивости) провело к потребности разработки новойоткрытой микроядерной операционной системы для применения вмобильных устройствах. Нами была предпринята такая попытка. В основу разработки операционной системы положена микроядернаяархитектура GNU/Mach. Микроядро Mach было разработано в университетеCarnegie Mellon в начале девяностых годов. На основе этого микроядрасуществует микроядерная операционная система общего назначения – Hurd,доступная только для архитектуры x86, то есть, не применяемая в мобильныхустройствах. В качестве мобильной аппаратной платформы выбранаархитектура ARM9. -2-
  • 3. 1. Краткий обзор современных архитектур операционных систем и области их применения 1.1. Микроядерная архитектура Ядро любой современной коммерческой версии UNIX представляетсобой набор очень большого количества функций, с запутаннымивзаимосвязями и очень расплывчатыми границами между основнымиподсистемами. В результате любая модификация организованной такимобразом системы приводит к появлению в новых версиях большогоколичества ошибок. Кроме того, не во всех инсталляциях нужны всекомпоненты ядра, а при монолитном его построении удаление ненужныхфункций затруднено. Недостатки, присущие операционным системам сбольшим монолитным ядром (а это в первую очередь различные версииUNIXа), породили интерес к системам, построенным на основе микроядра. Микроядерный подход заключается в том, что базовые функции ядраоформляются в виде отдельной небольшой компоненты, выполняемой впривилегированном режиме, а остальные функции ОС выполняются впользовательском режиме с использованием примитивов микроядра. Ввидубольших потенциальных преимуществ, которые сулит этот подход, можнопредположить, что в ближайшее время большинство новых операционныхсистем будет строиться на основе микроядра. Наиболее известнымиреализациями этого подхода являются микроядра Mach и Chorus. Основной сложностью использования микроядерного подхода напрактике является замедление скорости выполнения системных вызовов припередаче сообщений через микроядро по сравнению с классическимподходом. 1.1.1. Основные концепции Mach Микроядро Mach было разработано в качестве основы, на базе которойможно эмулировать UNIX и другие ОС. Эта эмуляция осуществляетсяпрограммным уровнем, который работает вне ядра, в пользовательскомпространстве (рис. 1.1). Следует отметить, что несколько эмуляторов могут -3-
  • 4. работать одновременно, так что можно выполнять программы 4.3BSD,System V и MS-DOS на одной машине в одно и то же время. Ядро Mach, подобно другим микроядрам, обеспечивает управлениепроцессами, управление памятью, коммуникации и функции ввода-вывода.Функции управления файлами, каталогами и другие традиционные дляоперационных систем функции выполняются в пользовательскомпространстве. Идея построения ядра Mach состоит в обеспечениимеханизмов, необходимых для работы системы, но стратегия использованияэтих механизмов реализуется на уровне пользовательских процессов. Ядро управляет пятью главными абстракциями: • Процессами • Потоками • Объектами памяти • Портами • Сообщения Рис. 1. Абстрактная модель эмуляции UNIX на основе Mach Кроме этого, ядро работает и с некоторыми другими абстракциями, илисвязанными с указанными, или менее важными. Процесс – это адресное пространство, содержащее текст программы иданные, и обычно один или более стеков. Процесс - это базисная единица для -4-
  • 5. распределения ресурсов. Например, коммуникационный канал всегдапринадлежит одному процессу. Поток в Mach является единицей выполнения. Она имеет счетчиккоманд и набор регистров, связанных с ней. Каждый поток является частьюточно одного процесса. Концепцией Mach является введение понятия объект памяти (memoryobject), представляющий собой структуру данных, которая может бытьотображена в адресное пространство процесса. Объекты памяти занимаютодну или несколько страниц и образуют основу для системы управлениявиртуальной памятью Mach. Когда процесс ссылается на объект памяти,который не представлен в физической памяти, это вызывает страничноепрерывание. Как и в других ОС, ядро перехватывает страничное прерывание.Однако в отличие от других систем, ядро Mach для загрузкиот сут ствующей ст раницы посылает сообщение с ерверупользовательского режима, а не самостоятельно выполняет этуоперацию. Межпроцессное взаимодействие в Mach основано на передачесообщений. Для того чтобы получить сообщение, пользовательский процессзапрашивает у ядра «почтовый ящик», который называется порт. Портхранится внутри ядра и способен поддерживать очередь упорядоченногосписка сообщений. Очереди не имеют фиксированной длины, но в целяхуправления потоком для каждого порта отдельно устанавливается пороговоезначение в n сообщений, так что всякий процесс, пытающийся послать ещеодно сообщение в очередь длины n, приостанавливается для того, чтобы датьпорту возможность очиститься. Процесс может предоставить другому процессу возможность посылать(или получать) сообщения в один из принадлежащих ему портов. Такаявозможность реализуется в виде мандата (capability), который включает нетолько указатель на порт, но и список прав, которыми другой процессобладает по отношению к данному порту (например, право выполнить -5-
  • 6. операцию ПОСЛАТЬ - SEND). Все коммуникации в Mach используютподобный механизм. 1.2. Особенности аппаратных платформ Высокопроизводительные применения типа сотовых телефонов,дисководов и модемов предъявляют к встраиваемым управляющимконтроллерам требования по обеспечению высокой производительности приусловии сохранении их низкой стоимости. Современные CISC ядра приближаются к верхним пределам своейпроизводительности. Кроме того, следствием большого количестватранзисторов в CISC ядрах является большое потребление, большие поплощади кристаллы, сложности при их интеграции и, в результате, высокаястоимость полной системы. 32-разрядные ядра RISC процессоров предлагают потенциальноерешение этих проблем. Однако применение ранних версий RISC процессоровне позволяло в полной мере реализовать преимущества RISC архитектурыперед CISC архитектурой, что в первую очередь связывалось с большимобъемом кодов, для которых требовалась память большого объема что, в своюочередь приводило к высокой стоимости всей системы. С начала 90-х годов активное развитие получила технология ASIC(Applications Specific Integrated Circuit) и ASSP (Applications Specific StandardProducts). Развитие этих технологий и создание на их основе все новыхспециализированных приборов было обусловлено ростом потребностей вновых применениях, в появлении новых сегментов рынка. Это портативныекомпьютеры, сотовые телефоны, навигаторы, средства коммуникации,игровые и телевизионные приставки, бытовые и промышленные средствауправления процессами. В обеспечение технологий ASIC и ASSP ряд фирм, как крупных,располагающих собственными производственными мощностями, так и такие,которые специализируются на разработке IP (интеллектуальнойсобственности) начали активную разработку библиотек заранее -6-
  • 7. спроектированных модулей и периферийных устройств, позволяющихоперативно создавать приборы с наперед заданными рынком возможностями. Активную, и подкрепленную реальными достижениями, позицию вданной области занимает фирма Advanced RISC Machines (ARM) -специализирующаяся на разработке микропроцессоров и периферии к ним ипродающая лицензии на свою IP. Кремниевыми партнерами ARM, то есть фирмами, использующимиразработки ARM при создании своих приборов, являются такие ведущиепроизводители, как Alcatel, Amtel, Asahi Kasei Microsystems, Cirrus Logic,Digital, GEC Plessey, Hyinday, Lucent, Lucky GoldStar, NEC, OKI, Philips,Rockwell, Rohm, Samsung, Sharp, Sony, Symbios, Texas Instruments, VLSI,Yamaha. Некоторые из этих компаний используют разработанные ARMпроцессоры для специальных применений, однако большинству они нужныдля мобильных телефонов, систем управления автомобильными двигателями,лазерных принтеров PostScript и других устройств массового применения идля всех этих устройств необходимы такие качества, как высокоебыстродействие, умеренная цена и низкое энергопотребление. Процессоры ARM поддерживаются многими программнымипродуктами как самой компании, так и других производителей. Эти продуктыобразовали солидную инфраструктуру ПО и средств разработки. Среди них -отладчики, компиляторы С++, внутрисхемные эмуляторы, таблицыразработки, операционные системы реального времени, драйверы низкогоуровня, а также программные применения высокого уровня. AcceleratedTechnology, Enea OSE Systems, ISI, JavaSoft, JMI, Microtec, Microsoft,Perihelion, Psion, Wind River и другие компании обеспечивают совместимостьсвоих ОС и средств разработки с процессорами ARM. Фирмой ARM разработан целый ряд 32-разрядных RISC процессоров сразличными возможностями и различной производительности а ее процессорARM7, разработанный еще в1994 году, используется до настоящего времени. Сама фирма определяет процессор ARM9 как универсальное, с малымпотреблением, ядро 32-разрядного RISC микропроцессора, предназначенное -7-
  • 8. для использования в различных заказных и специальных ИС. Малые размерыRISC ядра позволяют успешно интегрировать его в большие заказные схемы,которые могут содержать RAM, ROM, DSP, дополнительную логику и другиеэлементы. К областям применения ядра ARM9 фирма относит: Телекоммуникацию - контроллеры GSM терминалов Обмен данными - средства преобразования протоколов Портативные вычисления - Palmtop компьютеры Портативные измерительные устройства - карманные устройствасбора данных Автомобильную технику - устройства управления двигателем Информационные системы - Smart карты Средства отображения - JPEG контроллеры Растущие требования к производительности целевых пользовательскихсистем побуждает изготовителей микроконтроллеров повышать ихпроизводительность и функциональные возможности. Это достигаетсяпрежде всего путем перехода на более мощные ядра ARM9/9E и, в частности,следующие их разновидности: ARM920T, ARM926EJ-S, ARM946E-S. -8-
  • 9. 3. Вывод Использование микроядерной архитектуры в мобильных системахспособствуют повышению устойчивости системы, так как ошибки в работесистеме приводят к отказу сервера, а не всей системы в целом, чтохарактерно для монолитных и монолитно-модульных ядрах. К сожалению, изоткрытых микроядерных архитектур остался только Mach, разработанный вначале 90ых годов. В областях встраиваемых систем нет вообще системмикроядерной архитектуры с открытым исходным кодом. СортированиеMach на мобильные платформы создаст альтернативу монолитно-модульными монолитным ядрам, а открытый исходный код позволит большемуколичеству людей вести его разработку и использование. -9-
  • 10. 2. Процесс создания встраиваемой операционной системы на основе микроядерной архитектуры GNU/Mach 2.1 Последовательность разрабтки встраиваемой ОС Для создания прототипа встраиваемой операционной системы наоснове микроядерной архитектуры GNU/Mach были решены следующиезадачи: 1. Разработаны механизмы компиляции и автоматической сборки ОС. 2. Создан драйвер Ethernet. 3. Создан модуль-сервера содержащнго в себе элементы TCP/IP. В качестве аппаратной платформы была выбрана отладочная плата SK-AT91SAM9XE5121 с процессором ARM9 Atmel AT91sam9260.Работоспособность операционная система определялась по корректнойобработке ECHO Ping запроса при параллельно работающих микроядре имодуль-сервере. В настоящее время ядро Mach поддерживает только одну архитектуру –i386. Таким образом, для использования этого микроядра в качествевстраиваемого, необходимо расширить набор поддерживаемых архитектур иаппаратных платформ. Процесс переноса ОС на новую архитектуруназывается портированием. Операционная система логически разделяется на несколько частей,пространств. Первая из них – пространство микроядра, представленамикроядром GNU/Mach, вторая - пространство пользователя – котороепредставлено набором прикладных программ и стандартной библиотекойlibc, третье - набор драйверов, четвертая представлена средствамиразработки и конфигурации. В каждой из этих частей необходимо произвестисущественные доработки, что бы позволить микроядру Mach работать нановой аппаратной платформе: 1. Пространство микроядра операционной системы: 1 Выбор отладочной платы обусловлен высокой популярностью процессора Atmel AT91SAM9260 инизкой стоимостью самой отладочной платы. -10-
  • 11. • Портирование ядра операционной системы на различные аппаратные платформы, а именно – поддержка различных микропроцессорных архитектур, и поддерживание наиболее распространенных платформ. • Оптимизация ядра для работы в встраиваемых системах. 2. Драйвера устройств. Необходим обязательный минимум драйверов стандартных устройств. Так же, в этот пункт входят интерфейсы «прослойки» между уже разработаным Linux/Unix системным ПО и микроядром Mach. Например – нужно иметь возможность заменить TCP/IP стек в случае перехода от минимальной мобильной системы к полноценной серверной ОС. 3. Про странство пользователя – прикладное програмное обеспечение пользовательского уровня. Стандартные библиотеки, утилиты, графика. 4. Конфигуратор. Встраиваемая система должна иметь мощный механизм настройки. Необходимо проработать структуру исходного кода, а так же разработать прикладное ПО конфигурирования системы, интуитивно понятное и обладающее высокой функциональностью. На основе выделенных областей, был разработан план работы. Егоосновные шаги: 1. Перенос микроядра на архитектуру Arm9 . Так как микроядро занимает всего 2 mb памяти, то серьезных ограничений по запуску ядра на ARM9 со стороны ресурсов нет. И изучение механизмов работы с самой ОС будет проходить в процессе переноса. На выходе – грузящееся ядро с диагностическими сообщениями в консоли. -11-
  • 12. 2. Разработка драйверов устройств для отладочной платы. На выходе – пример операционной системы, с TCP/IP стеком, отвечающая на ICMP запросы из сети. 3. Портирование прикладного ПО под архитектуру MACH и ARM9. На выходе – запуск системы с тестами под Embedded Linux и Mach, сравнение полученных результатов. 4. Разработка конфигуратора, доработка ядра. Итерационный процесс, а именно: доработка ядра - внесение архитектурных изменений в разработаные драйвера - доработка прикладного ПО. Механизм переноса Mach на новую платформу сводится к следующему– первым шагом производится сборка операционной системы под известнуюплатформу, на которой можно достоверно убедиться в работоспособностиядра, а после этого в сконфигурированном исходном коде заменяютсяаппаратнозависимые части одной платформы на другую. В нашем случае -первоначальный запуск производится на i386, а перенос – на Arm9. Важно заметить, что запуск микроядра в оперативной памятипроизводится при помощи загрузчика uBoot. Этот механизм идентиченпроцессу загрузки операционной системы Linux, что позволяет в любоймомент произвести сравнение нашей операционной системы с Linux. Всяработа с исходным кодом Mach, сборка, отладка, тестирование в эмуляторетак же происходит с использованием ОС Linux. ОС Windows используетсятолько для работы с средой IAR5.12, в которой производят отладку базовыхаппаратнозависимых частей ОС. Данный алгоритм работы обладает серьезным преимуществом – работапроисходит сразу на платформе Arm, то есть система изначальноразрабатывается как Встраиваемая. Недостатки – нет возможности явноразграничить фазы работы с наглядным представлением результатов. 2IAR 5.1 – среда разработки для ARM9. Подробнее об этой среде разработке рассказано в разделе«4.2. Средства разработки и отладки» -12-
  • 13. Разработка конфигуратора происходит на поздней стадии, из-за этого могутбыть проблемы со структуризацией кода. Шаг1: Перенос микроядра с i386 на ARM9 Представим подробнее этот процесс. В него входят: 1. Подготовка кросс-платформенных средств разработки (arm-eabi- gcc arm9 и gcc x86 компиляторов и сопутствующих утилит) 2. Конфигурирование, сборка и запуск микроядра Mach в виртуальной машине с архитектурой x86. Подготовка средств быстрой загрузки и отладки микроядра. 3. Работа с аппаратной платформой в IAR 5.1 – Разработка программы «Hello world», содержащий в себе аппаратно зависимые функций работы с системным т аймером, последовательным портом. Во время загрузки эта программа должна о суще ствлять конфигурирование подсистемы прерываний, блока управления частотой проце ссора, конфигурирование системы ввода-вывода. 4. Перенос «Hello-world» программы из среды IAR5.1 в среду linux. Сборка «Hello-world» компилятором arm-eabi-gcc 3, запуск ее на отладочной плате. 5. Замена аппаратно-зависимых частей сконфигурированного для i386 кода микроядра функциями заглушками. Компиляция полученного кода arm-eabi-gcc компилятором. 6. Итерационная отладка перенесенного микроядра. Постепенно происходит замена заглушек «полезным» кодом, что позволяет микроядру осуществить полноценную загрузку на новой архитектуре. 3 Версия бесплатного компилятора GCC для ARM9. Подроднее об этом в разделе «4.2. Средстваразработки и отладки» -13-
  • 14. 7. Подготовка модуля-сервера. В качестве основы для модуля- сервера выступает используемая ранее программа Hello World, скомпилированная arm-eabi-gcc. 8. Запуск модуля-сервера. 9. Активация системного т аймера. Отладка интерфейс а взаимодействия между микроядром и модуль-сервером (RPC). Создание и отладка системные вызовы. Создание основы для стандартной библиотеки языка C, содержащую в себе системные вызовы, а так же простейшие функции работы с памятью (копирование, сравнение). Первые четыре шага являют ся подготовительными переднепосредственным переносом. После четвертого шага, программа HelloWorld запускается абсолютно в тех же условиях, что и в будущем микроядро.Это означает, что «Hello world», и микроядро, компилируются одними и темиже инструментами, идентично загружаются на аппаратную платформу и наней исполняются. Более того, микроядро будет использовать все аппаратно-зависимые части программы Hello World – механизмы ввода/вывода, работу стаймером и прочие. После отладки системных вызовов, модуль-сервер получаетвозможность обмениваться данными с микроядром. На этом первая стадияработы заканчивается. Вторая стадия работы подразумевала добавлениесоздание Ethernet, а так же добавление простейшего TCP/IP стека. Шаг 2: Драйвер Ethernet и TCP/IP стек Шаг 2 посвящен разработке модуля-сервера и драйвера устройстваEthernet, при помощи которых будут извлекаться пакеты из сети иобрабатываться. При этом модуль сервер работает параллельно смикроядром. Процесс разработки этого модуля включает в себя: 1. Создание и отладка драйвера Ethernet в среде IAR 5.1. Драйвер производит инициализацию MAC модуля, а так же осуществляет прием и отправку пакетов в сеть. -14-
  • 15. 2. Создание анализатора пакетов сети Ethernet. Это не полноценный TCP/IP стек, а минимальный анализатор пакетов, который извлекает их из сети, изучает заголовки, и отвечает на ARP и ICMP Echo Ping4 запросы. 3. Перенос драйвера и стека в среду Mach. Драйвер необходимо поместить в микроядро, а стек - в модуль-сервер.По запросу, микроядро, используя драйвер Ethernet, извлекает пакеты из сетии передает их через системный вызов в пространство пользователя – модуль-сервер. В нем, TCP/IP стек должен производить анализ заголовков пакета, исформировать ответ, который так же через системный вызов необходимопередать сначала в микроядро, затем в драйвер, а после этого в сеть. Создание модуль-сервера, содержащего в себе элементы TCP/IP стека,позволяет наглядно продемонстрировать работу модели операционнойсистемы. В самом деле – в этой модели присутствую основные элементыполноценной встраиваемой операционной системы. Параллельно работающие микроядро и модуль-сервер обмениваютсямежду собой сообщениями используя механизм системных вызовов, при этоми микроядро, и модуль-сервер находятся в собственных адресныхпространствах. 4 Для создания ICMP Echo запросов используется утилита ping. ping — утилита для проверкисо единений в с етях на о снове TCP/IP. Она отправляет запро сы (ICMP Echo-Request)протокола ICMP указанному узлу сети и фиксирует поступающие ответы (ICMP Echo-Reply) -15-
  • 16. 2.2 Описание аппаратной платформы и средств разработки Архитектура ARM получила большое распространение в встраиваемыхи мобильных системах. Поэтому при выборе аппаратной платформырассматривлась отладочные платы только с процессорами этой архитектуры.Из всего обьема доступных отладочных средств, была выделена плата SK-AT91 на базе микроконтроллерa фирмы Atmel - AT91SAM9260. Выборименно этой отладочной платы обусловлен высокой популярностьюпроцессора Atmel AT91SAM9260, низкой стоимостью самой отладочнойплаты, а так же отсутствием других более современных и качественныхотладочных плат. Среди мобильных систем наибольшее распространение получилархитектура ARM, благодаря низкому электропотреблению, 32х битнойразрядности и низкой стоимости кристалла. В качестве аппаратнойплатформы при разработке ОС использована плата SK-AT91 на баземикроконтроллерa фирмы Atmel - AT91SAM9260. Рис. 2. Аппаратная платформа. Отладочная плата содержит большое количество интерфейсов,обеспечивающих удобную разработку системы. Ethernet позволяет загружатьобраз системы в память с высокой скоростью, экономя время натестирование. Диагностические сообщения выводятся через Rs-232интерфейс, а на портах ввода-вывода находятся светодиоды, отражающиестадии загрузки системы. Подключенная периферия:• 64MБайт (16Mx32) SDRAM. -16-
  • 17. • 256МБайт NAND flash.• 4МБайт DataFlash AT45DB321.• Ethernet 10/100M PHY - KS8721B, тип интерфейса - RMII.• GSM модем, совмещенный с GPS приемником SIM508.• Аудио стерео CODEC TLV320• USB host (USB-A).• USB client (USB-B).• RS232 приемопередатчик.• 37 линии I/O Для работы с отладочной платы использовались следующие средстваотладки: IAR 5.1 – среда разработки для ARM9. Это отладочная среда, котораяработает под управлением Windows. В нее входят компилятор с языка Си,ассемблер, компоновщик, и отладчик, при этом возможно взаимодействие свнешними программами. Встроенный редактор специально настроен насинтаксис языка Си, а дополнительные утилиты и хорошая встроеннаясистема помощи дополнительно облегчают разработку программ. MT-link. JTAG USB отладчик/программатор, аналог J-link,совместимый с IAR средой разработки. Segger J-link Commander – для отладки системы во время работы. Персональный компьютер с ос Windows 7 и Linux – в Windowsпроисходила первоначальная отладка, и все что касается работы с платой, вLinux происходила сборка и загрузка образа ядра в плату. Minicom – программа терминал для доступа к отладочной плате попоследовательному порту. USB-to-COM – контроллер COM на USB интерфейсе, имеющий TTLвыходы для последовательного порта. ARM-EABI-GCC – версия бесплатного компилятора GCC для ARM9. Debian GNU/Hurd – операционная система Debian построенная на ядреGNU/Mach. Используется для -17-
  • 18. VMware Player — бесплатный (для личного некоммерческогоиспользования) программный продукт, предназначенный для создания изапуска готовых виртуальных машин (созданных в VMware Workstation, либоVMware Server). MIG - Утилита, преобразующая исходный код микроядра для созданияинтерфейсов взаимодействия между микроядром и модулями-серверами. ОС Linux – бесплатная операционная система, использовалась дляразработки, сборки и отладки GNU/Mach. ping — утилита для проверки соединений в сетях на основе TCP/IP. 2.3. Процесс разработки Запуск ядра Mach для x86 Платформа Debian представляет загрузочный диск операционнойсистемы Hurd – операционной системы на основе микроядра Mach. Былапроизведена установка операционной системы Hurd на виртуальную машину,что бы иметь возможность оценить работоспособность системы при будущейее доработке. Был разработан механизм автоматической сборки и загрузкиоперационной системы с новым ядром, что позволяет, в будущем,производить автоматическое тестирование системы. Сборка микроядра из исходного кода для X86 Ядро Mach представлено в глобальном репозитории на сайтесообщества GNU: http://www.gnu.org/software/hurd/microkernel/mach.html Так же для сборки ядра Mach необходим генератор интерфейсов – MIG.И с ход н ы й код я д р а п р е д с т а в л я е т с о б о й а р х и в , с од е р ж а щ и йконфигурационные скрипты autoconfigure, исходный код микроядра иплатформы i386. Для сборки ядра под архитектурой x86_64 были внесеныизменения, представленные в приложении. Сборка тестового приложения Hello World -18-
  • 19. Среда разработки IAR предоставляет удобный интерфейс для работы,но совершенно не пригодна для работы с исходным кодом операционнойсистемы. По этому в ней была сделана только тестовая программа HelloWorld . Э т а п р о г р амма о суще ствляла п ри заг рузке н аст рой купоследовательного порта, установку тактовой частоты процессора,конфигурацию портов ввода-вывода, на которые были помещены светодиодыдля индикации работы. Помимо этого был сконфигурирован таймер,генерирующий прерывания 10 раз в минуту. Отладка обработчика прерывания производилось в IAR. Эта средаразработки умеет работать с внутрисхемным отладчиком JTAG, благодарякоторому можно в произвольный момент остановить работу процессора исчитать содержимое любых регистров, что позволило в короткий срокнастроить работу системного таймера. Алгоритм работы с таймеромследующий: 1. Сохраняем необходимый период срабатывания прерывания в регистр AT91C_PITC_PIMR, а так же выставляем флаг активации таймера в этом же регистре. 2. Инициализируем источник прерывания (таймер) в регистре, режим срабатывания, а так же сохраняем адрес необходимой функции обработчика прерывания (соответственно регистры AIC_IDCR, AIC_SMR, AIC_SVR). Эти действия производятся при отключенных прерываниях. 3. Разрешаем прерывания от таймера (регистр AIC_IECR) 4. Запускаем таймер. (регистр PITC_PIMR) Функция обработчик прерывания содержит в себе проверку наисточник прерывания, а так же подтверждает обработку прерываниясредством считывания регистра состояния. -19-
  • 20. Далее была сборка этого приложения используя компилятор arm-eabi-gcc и собственные скрипты сборки. Образ firmware загружался в памятьплатформы, используя загрузчик U-boot, и стартовал, выводя сообщение«Hello world», с периодичность 10 раз в секунду. Сборка Mach компилятором arm-eabi-gcc Следующим шагом происходит сборка микроядра компилятором arm-e a b i - g c c . Д л я э т о г о б ы л и с д е л а н о м н о ж е с т в о з а гл у ш е к н аплатформозависимый код от i386. Все заглушки были помещены в файл os-imp.c, который был добавлен к списку компилируемых файлов. В процессе итерационных доработок заглушек, в первую очередь былисозданы механизмы инициализации, сохранения, загрузки и переключенияконтекста. . Инициализация контекста подготавливает необходимуюструктуру в области памяти, определенной как стек данного потока. Загрузкаконтекста производит восстановление регистров из стека, что приводит квыполнению нового потока. Процесс сохранения – перенос текущихзначений регистра в стек процесса, а переключение – объединяет в себесохранение и загрузку контекста. Подготовка платформы к запуску модуль-сервера Так как операционная система самостоятельно не загружает модуль-сервера в память, а пользуется таблицей модулей полученных от загрузчика,нам необходимо произвести размещение в памяти микроядра. Для этого намнужно осуществить его сборку, загрузку в устройство и копирование впамять. В качестве тестового модуля используется программа Hello World,которая постоянно выводит в последовательный порт “Hello World”: Int main() { Printf(“Hello wordn”); } -20-
  • 21. Скомпилированный при помощи средств кросс-платформеннойразработки, модуль представляет собой файл в формате ELF (ExecutiveLinking Format), который, используя терминальный клиент, черезпоследовательный порт загружается в устройство. Далее осуществляется загрузка сжатого образа ядра, После еераспаковки и исполнения, микроядро Mach имеет доступ к структуре, вкоторой находятся адреса и строки аргументов загруженных модулей. Внашем случае, структура содержит в себе один модуль (Hello World), а так жестроку аргументов для него : mod.mod_start=0x23000000; mod.mod_end=0x2303b144; mod.string="/hurd/pfinet $(task-create) $(task-resume)"; boot_info.flags=0x7ef; boot_info.cmdline="/boot/zemach root=/ "; boot_info.mods_count=1; boot_info.mods_addr=&mod; kernel_cmdline = (char*)phystokv(boot_info.cmdline); Запуск модуль-сервера Перед стартом модуля-сервера, в памяти находятся 4 потока –idle_thread, reaper_thread, swapin_thread, sched_thread. Данные потокиявляются потоками ядра, инициализированы и готовы к выполнению. Вслучае вызова системной функции thread_select, из списка будутпоследовательно возвращены указатели на эти потоки. Так же в памятиприсутствует поток startup_thread, который непосредственно произведетзагрузку ядра, инициализацию устройств, а по завершению будет выполнятьфункции потока пейджера страниц. Точкой входа для загрузки модуль-сервера является функцияbootstrap_create. В ней происходит обработка строки аргументов полученныхс загрузчика, с формированием структуры аргументов для каждого модуля. В -21-
  • 22. процессе загрузки модуль-серверов, им будут переданы указатели насоответствующие структуры. Далее создается процесс, привязанный кпользовательскому пространству памяти. После получения таблицыаргументов, происходит вызов функции boot_script_exec_cmd (void *hook,task_t task, char *path, int argc, char **argv, char *strings, int stringlen), вкоторой создается процесс. Инициализированный поток в своем контекстеимеет функцию user_bootstrap(), задачей которой является извлечениеисполнимого кода из ELF модуля модуль-сервера, формирование стекааргументов, а так же запуск пользовательского потока. Остановимся на последнем подробнее. В контексте потокаuser_bootstrap PC регистр указывает на точку входа user_bootstrap. В процессевыполнения этой функции вызывается exec_load, в котором помимокопирования исполнимого кода ELF файла, происходит подмена контекстаисполняющегося потока на контекст, сформированный для выполненияисполнимого кода полученного функцией exec_load. После формированиястеков, происходит вызов потока, на который указывает active_stacks. Чтоприводит к последовательному вызову каждого из четырех потоков,выполнения полезного кода, блокировку с переключением на следующийпоток. После того как все четыре потока отработают, происходит вызовпользовательского потока, что приводит к старту модуль-сервера. Системный таймер 1. Точкой входа прерывания таймера в микроядре Mach является функция hardclock(). Она вызывает функции перерасчета системных квантов, а так же вызывает функцию softclock(). 2. Потоки в ядре могут уходить в блокировку на определенное время. При этом поток остается в очереди на обработку, но он имеет в себе признак ожидания таймаута. Обработкой этих таймаутов занимается функция softclock(), управление контрой передается из hardclock(). Суть softclock() заключается в в последовательном вызове всех обработчиков таймера из очереди. -22-
  • 23. 3. Подобным образом вызывается функция recomput_priorities(), которая пересчитывает приоритеты потоков, а так же может очистить флаг блокировки, при достижении необходимого интервала времени. Поток с истекшим таймаут помечается активным, и поступает на обработку (функция thread_setrun).4. Если поток становится активным, то thread_Setrun устанавливает флаг ast_on. Суть этого признака в том, необходимо ли менять режим работы процессора после выхода из режима прерывания. Фактически этот флаг определяет произойдет ли переключение контекста после завершения обработки прерывания.5. Система построена таким образом, что все внутренние потоки ядра уходят в блокировки, и бОльшую часть времени находятся в неактивном состоянии. Более того, переключение между потока ядра осуществляется при помощи повторного запуска основной функции. (continuation механизм). В том случае, если прерывание сработало во время выполнения потока ядра, следующий поток будет выполняется только когда первый (во время которого произошло прерывание) уйдет в блокировку.6. Е с л и п р е р ы ва н и е п р о и з о ш л о в о в р е м я в ы п ол н е н и я пользовательского кода, то есть во время работы модуль-сервера, то после завершения работы softclock() и активном флаге need_ast производится вызов функции ast_from_interrupt. В задачи это цепочки входит определение какой следующий поток пространства пользователя будет выполнятся, а так же при помощи функции thread_switch осуществляет замену активного контекста на контекст функции, в который произойдет возврат по сле окончания обработки прерывания. Фактиче ски, переключение контекста происходит только в прерывании, и подразумевает сохранение активного стека в контексте старого -23-
  • 24. потока, а стек нового переносится в активный стек, куда будет передано управление при завершении прерывания. Системные вызовы Команда программного прерывания используется для входа взащищенный режим (Supervisor), выполнение которой вызывает прерываниеработы программы и передачу управления в соответствующий обработчик,при этом происходит смена режима работы ядра ARM9TDMI. В регистр PCзаписывается определенное значение, соответствующее вектору обработчика(0x08), а содержимое CPSR сохраняется в специальном регистре SPSR_svc.Защита обработчика программного прерывания от возможности измененийиз основной программы или приложения (и контроллером внешней памяти)позволяет построить на основе команды SWI полностью защищеннуюоперационную систему. Так как перед передачей управления обработчику программногопрерывания содержимое регистра PC предварительное сохранено в R14_svc,то для возможности правильного возврата из прерывания фактически вR14_svc заносится адрес команды, сразу следующий за командой SWI. Привыполнении команды MOVS PC,R14_svc восстанавливается содержимоеCPSR и возвращается управление в основную прерванную программу.Необходимо отметить, что этот способ входа и выхода из такого прерыванияне позволяет реализовывать вложенные прерывания, поэтому внутри этогообработчика необходимо вручную сохранять адрес возврата (PC) и флагипроцессора (SPSR), а перед выходом из него вручную восстанавливатьуказанные регистры. Таким образом, из любой пользовательской программы системныйвызов осуществляется при помощи:asm(" mov r0,#0x42");asm(" swi 0x2"); Первая команда копирует в регистр r0 число 0x42. Это число будетиспользовано в качестве аргумента в функции обработчика прерывания. -24-
  • 25. Вторая команда – осуществляет программное прерывание с аргументом 0x2.В случае, если необходимо передать более одного аргумента, они заносятся врегистры r1 и r2. В свою очередь, в микроядре находится обработчик этих системныхвызовов. В архитектуре ARM, в младших 0x40 байтах находятся системныевектора. В них входят – ресет вектор, вектор прерываний, вектор ошибкиданных, вектор исключений. Для корректной отработки программногопрерывания необходимо добавить обработчик в эту таблицу: Эта команда означает, что при срабатывании программного прерыванияпроцессор переключится на код с меткой software_interrupt. Далее сама метка: .code 32software_interrupt: ldr r0, [lr, #-4] b my_exception_handler my_exception_hanlder содержит в себе обработчик прерывания,исполнящию в ядре функции обработки системных вызовов. Обьеденив все системные вызоые воедино, присвоив каждому имя всоответствии с исполняемой функцией, мы получили базовую частьстандартой библиотеки libc для нашей операционной системы. Далее,добавив к системным вызовам простейшие функции работы со строками ипамятью, а так же ассемблерный код запуска модуля-сервера , получилиработоспособную библиотеку libc. Эта библиотека необходима нам длякомпиляции модуль-серверов. Ethernet в IAR Используя среду разработки IAR была создана программа, котораяработала без операционной системы, настраивала MAC и PHY модули,содержала в себе элементы TCP/IP стека, что позволяло осуществлятьобработку сообщений сети Echo PING запросы. Эта программа состояла из нескольких частей. В первую очередьпроводилась конфигурация портов ввода-вывода и интерфейса MAC. -25-
  • 26. Настроенный модуль MAC предоставлял доступ к устройству PHY –KS8721B, подключенного по интерфейсу – RMII. Активировав PHY,программа переводила его в состояние Auto Negotiate. В этом режиме платаавтоматически определяла к какому интерфейсу Ethernet она подключена, егоскорость и механизм передачи данных. В случае успешного прохожденияAutonegotiate, программа начинала периодически опрашивать MAC модуль,на предмет прихода новых сообщений из сети. Все входящие пакеты попадают в очередь pRxBuffer. В процессеработы, пакеты из этой очереди извлекаются и обрабатываются TCP/IPстеком. Этот же стек формирует очередь на отправку – pTxBuffer. Эта очередьсвязана напрямую с MAC модулем, при попадании в нее любой пакетотправляется в сеть. TCP/IP стек Для демонстрации работы системы был разработан небольшой TCP/IPстек. Этот стек производил обработку следующих типов пакетов из сети: 1. Ethernet 2. ARP 3. IP/ICMP Когда пакет Ethernet поступает в стек, в первую очередь определялсяего тип. Тип пакета находится в заголовке пакета. В зависимости от типапакета, его в дальнейшем обрабатывал или ARP, или IP модуль. ARP модуль проверяет кому предназначен ARP-запрос. Если онпредназначен для нашей платы, то формируется ответ, содержащий в себеMAC и IP адрес устройства. В противном случае ответ не формируется. IP модуль определяет тип пакета. В минимальном вариантеобрабатываются только ICMP запросы. При получении пакета ICMP EchoPing, производится проверка, совпадают ли IP и MAC адреса адресата иплаты. Если они совпадают, то формируется ответ – ICMP Echo Ping reply. Для тестирования использовалась утилита ping. Она отправляетзапросы (ICMP Echo-Request) протокола ICMP указанному узлу сети и -26-
  • 27. фиксирует поступающие ответы (ICMP Echo-Reply). Время между отправкойзапроса и получением ответа (RTT, от англ. Round Trip Time) позволяетопределять двусторонние задержки (RTT) по маршруту и частоту потерипакетов, то есть косвенно определять загруженность на каналах передачиданных и промежуточных устройствах. Модуль-сервер с TCP/IP стеком и драйвер Ethernet Напомню, что в качестве оценки работоспособности полученнойсистемы, решено было создать модуль-сервер, содержащий в себе элементыTCP/IP стека. Запустив на аппаратной платформе этот модуль-серверпараллельно с микроядром, используя утилиту ping можно оценитьработоспособность модуль-сервера, а так же время обработки сообщенийEcho Ping Request. В предыдущем параграфе мы разработали небольшую программу,способную обрабатывать пакеты из сети Ethernet, так что теперь необходиморазделить ее на две части – в одной из них будет драйвер Ethernet и онапомещается в микроядро, а другая, элемент стека – находится в модуле-сервере. Тестирование системы ICMP запросами В качестве источников ICMP запросов используется утилита ping. Онаформирует в сети Ethernet ICMP сообщения, которые распространяются посети. Аппаратная платформа с тестируемой системой получает пакеты,обрабатывает их и формирует ответ. Далее утилита ping вычисляет время,которое прошло между отправкой запроса и получением ответа. Сравнениеэтого времени на разных платформах обычно используется для оценкипроизводительности TCP/IP стека и механизмов взаимодействия ОС сподсистемой Ethernet. Созданная система прошла успешно тестирование ICMP запросами.При этом не было потеряно ни одного сообщения, на консоли былпостоянный вывод диагностических сообщений от микроядра, а так жесообщения анализа заголовков модуль-сервера. Было отправлено 50сообщений с интервалом в 1 секунду. -27-
  • 28. Рис. 3. Гистограмма распределения времени ответов микроядероной ОС. На гистограмме видно, что ответ формируется с разными интерваламивремени – 15 сообщений с временем ответа из интервала 0.2-0.3мс, и 20сообщений в интервале 0.6-1.3мс. При этом есть пакеты с большимвременем формирования ответа – 2.2мс. Причиной этих длительных ответовможет быть наличие диагностических сообщений во время работы модуль-сервера. Для сравнения была проведены подобные тестирования безиспользования операционной системы. Напомню, что изначально программаработы с ICMP запросами разрабатывалась в среде IAR – т.е. безиспользования операционной системы, а потом переносилась в модуль-сервер. В случае отсутствия ОС у меня не будет тратиться время напереключения контекста между микроядром и модуль-сервером, а так же небудет диагностических сообщений микроядра. Для экспериментадиагностические сообщения о заголовках TCP/IP отключены. Распределение получилось следующим: -28-
  • 29. Рис. 4. Гистограмма распределения времени ответов системы без ОС. На этой гистограмме четко видны 2 группы сообщений – быстрые свременем ответа 0.5-0.25мс, и долгие – 0.8-0.9мс. Отсутствие переключенийконтекста и диагностики лишь очистило распределение от промежуточныхзначений. Это говорит о плохой проектировке механизмов работы TCP/IPстека. Но, напомню, в задачу работы входило создание операционнойсистемы, и приведенные в этом параграфе тесты носят ознакомительныйхарактер. В качестве эталона привожу распределение времени ответов дляоперационной системы Linux: Рис. 5. Гистограмма распределения времени ответов для ОС Linux. -29-
  • 30. На гистограмме распределения ясно видно, что большая часть пакетовпопадает в интервал 0.2-0.23мс. Не смотря на различия во времени формирования пакетов,тестирования было признано удавшимся – модель микроядернойоперационной системы, состоящая из микроядра и модуль-сервера,продемонстрировала свою работоспособность. -30-
  • 31. Заключение Данная работа посвящена актуальной теме разработке встраиваемоймикроядерной операционной системы для мобильных устройств. Нами были выполнен перенос микроядра с архитектуры i386 на ARM9и создан модуля-сервера, содержащий в себе драйвер Ethernet и элементыTCP/IP стека. Система продемонстрировала корректную работу, вернообработав из сети Ethernet запрос Echo Ping request. Полученный программный комплекс, содержащий в себе параллельноработающие микроядро и модуль-сервер, являются моделью операционнойсистемы, так как в ней отражены основные механизмы работы системы, нопредоставляемый ею функционал не полон. Например - в моделиприсутствует модуль-сервер, передающий сообщения в микроядро припомощи системных вызовов, но в модели модуль-сервер только один. Болеетого, перенос модуль-сервера страничного обмена (пейджер), например,требует серьезной доработки созданной библиотеки libc, а так же частимикроядра. Важно заметить, что разработанный алгоритм, а так же сопутствующиепроцессу разработки ОС программные материалы, позволяют с легкостьюпроизвести перенос микроядра GNU/Mach на другие популярные платформы– например MIPS, PPC. Исходный код разработанной операционной системы, а так же весьсопутствующий материал, размещен в сети Internet по адресу http://www.ksyslabs.org/projects/gnu-mach/sources. Данная работа не претендует на всю полноту создания новой ОС.Представляется необходимым доработка библиотеки Libc, самого микроядраи средств конфигурации. Основой целью такой доработки должно бытьдоведение текущей системы до уровня, позволяющего компилировать ужесуществующие модули-сервера операционной системы Hurd. -31-
  • 32. Литература:1. Олифер В.Г., Олифер Н.А., Сетевые Операционные системы – / В.Г. Олифер, Н.А. Олифер / – СПб., Питер, 2005.2. Редькин П.П. Микроконтроллеры ARM7. Семейство LPC2000. Руководство пользователя – Додэка, 2007.3. Таненбаум Э. Современные операционные системы – СПб., Питер, 2007.4. J. Mark Stevenson, Daniel P. Julin. “Mach-US: UNIX On Generic OS Object Servers” Usenix Technical Conference, Jan. 1995.5. J. Mark Stevenson, Daniel P. Julin. “Client-Server Interactions in Multi- Server Operating Systems: The Mach-US Approach” CMU Technical Report: CMU-CS-94-191, Sep. 1994.6. Daniel P. Julin. “The Mach 3.0 Multi-Server System Overview” July 1991.7. Paulo Guedes, Daniel P. Julin. “Writing a Client-Server Application in C+ +” 1992.8. Paulo Guedes, Daniel P. Julin. “Object-Oriented Interfaces in the Mach 3.0 Multi-Server System.” IEEE Workshop on Object Orientation in Operation Systems 1991.9. Daniel P. Julin. “Naming Facilities for Operating System Emulation in Mach 3.0” August 1991.10. Paulo Guedes. “Libus++ Reference Manual” November 1992.11. Mary R. Thompson. “Installing and Running Mach-US.” July 1994.12. Официальный сайт микроядра GNU/Mach: http://www.gnu.org/ software/hurd/microkernel/mach/gnumach.html13. Официальный сайт операционной системы GNU/Hurd: http:// www.gnu.org/software/hurd/hurd.html14. Официальный сайт операционной системы Debian GNU/Hurd: http:// www.debian.org/ports/hurd/15. Официальный сайт бесплатного компилятора GCC: http://gcc.gnu.org/16. Официальный сайт VMWare: http://www.vmware.com/ru/17. Официальный сайт SEGGER: http://www.segger.com/cms/18. Официальный сайт IAR: http://www.iar.com/website1/1.0.1.0/3/1/ -32-
  • 33. 19. Официальный сайт операционной системы Fedora: http:// fedoraproject.org/20. Официальный сайт STARTERKIT: http://starterkit.ru/html/index.php21. Официальный сайт ARM: http://infocenter.arm.com/help/index.jsp? topic=/com.arm.doc.set.architecture/index.html22. Официальный сайт проекта Mach университета Conreg: http:// www.cs.cmu.edu/afs/cs.cmu.edu/project/mach/public/www/mach.html -33-
  • 34. Глоссарий ARM - ARM Ltd. (название происходит от Advanced RISC Machines) —британская корпорация, являющаяся одним из крупнейших разработчиков илицензиаров современной архитектуры 32-х разрядных RISC-процессоров,специально ориентированных для использования в портативных имобильных устройствах (таких, как мобильные телефоны, персональныеорганайзеры, пр.). ARM не является производителем микропроцессоров кактаковым, однако лицензирует собственную технологию третьим фирмам,таким как Atmel, Cirrus Logic, Intel, Marvell, NXP, Samsung, Qualcomm,Sony Ericsson, Texas Instruments которые, собственно, и воплощают её вчипах. ELF - (англ. Executable and Linkable Format — формат исполняемых икомпонуемых файлов) — формат файлов, используемый во многих UNIX-подобных операционных системах. Каждый файл формата ELF имеетспециальный заголовок, в котором, в частности, указан адрес точки входа(стартовый адрес) программы. Поля этого заголовка использует загрузчик(ELF interpreter) для загрузки программы в оперативную память передисполнением. Сервера – в контексте микроядерной архитектуры, являетсясинонимом слова модуль-сервера – самостоятельный исполнимый код,реализующий определенный функционал. В микроядерной архитектуре,некоторые части ядра, такие как свопинг и пейджинг, исполняются отдельноот микроядра, и называются серверами. Портирование - адаптация некоторой программы или её части, с темчтобы она работала в другой среде, отличающейся от той среды, под которуюона была изначально разработана. В случае ОС – изменение аппаратнозависимых частей кода. Конфигуратор – прикладная утилита, задача которой упорядочитьисходный код и подготовить его к компиляции, в соответствии с некоторойконфигурацией. Так как ОС имеет большое количество вариантов сборки,конфигуратор упрощает подготовку исходного кода. -34-
  • 35. Hurd — название операционной системы от проекта GNU,использующей GNU Mach в качестве ядра. Проект Debian — это ассоциация людей, общим делом которыхявляется создание свободной операционной системы. Созданая имиоперационная истема на ядре GNU/Linux называется Debian GNU/Linux, илипросто Debian. Так же ведётся работа по созданию систем Debian на другихядрах,пример одной из них - the Hurd. Hurd - это набор серверов, которыезапускаются поверх микроядра (например, такого как Mach) и реализуютразные возможности. Виртуальная машина - эмулятор работы реального компьютера. Навиртуальную машину, так же как и на реальный компьютер, можноустанавливать операционную систему, у виртуальной машины такжеесть BIOS, оперативная память, жёсткий диск (выделенное место на жёсткомдиске реального компьютера), могут эмулироваться периферийныеустройства. На одном компьютере может функционировать нескольковиртуальных машин. L i b c - С т а н д а р т н о й б и бл и о т е ко й я з ы к а С и н а з ы в а е т с янестандартизованная коллекция заголовочных файлов и библиотек,вызываемых как подпрограммы для реализации общих операций, таких какобработка ввода/вывода и строк в языке программирования Си. GNU - рекурсивный акроним от англ. GNUs Not UNIX — «GNU —не UNIX») — свободная Unix-подобная операционная система,разрабатываемая Проектом GNU. Проект GNU — проект по разработке свободного программногообеспечения (СПО). Проект был запущен известным программистом ис т о р о н н и ко м С П О Р и ч а р д о м С т о л л м а н о м 2 7 с е н т я б р я 1 9 8 3года в Массачусетском технологическом институте.Приложения В приложении представлены следующие материалы: -35-
  • 36. Приложение 1. Emach.c – Содержит в себе настройку таймера,обработку прерываний, запуск микроядра. Существено доработаннаяпрограмма «Hello world» главы «3.2.1. Шаг1: Перенос микроядра с i386 наARM9» (пункт 3, 4). Компилируется в Linux………………………………… 45 Приложение 2. Makefile – makefile микроядра. Используется длякомпиляции микроядра в Linux. Разработан в главе «3.2.1. Шаг1: Переносмикроядра с i386 на ARM9» (пункт 1, 4)…………………………………… 48 Приложение 3. Os_imp.c – Содержит в себе все аппаратно-зависимыечасти микроядра. Части этой программы используются в качетсве «Функций-заглушек». Разработана в главе «3.2.1. Шаг1: Перенос микроядра с i386 наARM9» (пункт 1, 5)……………………………………………………………. 51 Приложение 4. Epfnet_link.S – Необходим для компиляции модуль-сервера. Содержит в себе ассемблерный вызов функции main модуль-сервера.Разработана в главе «3.2.1. Шаг1: Перенос микроядра с i386 наARM9» (пункт 7, 8)………………………………………………………………………63 Приложение 5. Makefile epfnet – makefile модуль-сервера.Используется для компиляции модуль-сервера в Linux. Разработан в главеглаве «3.2.1. Шаг1: Перенос микроядра с i386 на ARM9» (пункт 7, 8)…… 63 Приложение 6. Epfnet.c – Программа, разработаная в IAR,используемая в качестве модуль-сервера. Содержит в себе элементы TCP/IPстека, а так же драйвера MAC и PHY устройств. Компилируется и в IAR, и вLinux. Разработана в главе «3.3.1. Шаг2: Драйвер Ethernet и TCP/IPстек.» (пункт 1, 2)…………………………………………………………………….. 63 Приложение 7. Tcp_ip.h – Заголовочный файл, содержащий в себеописание структур заголовков TCP/IP пакетов. Разработана в главе «3.3.1.Шаг2: Драйвер Ethernet и TCP/IP стек.» (пункт 2)…………………………. 106 Приложние 8. Алгоритм работы системного таймера GNU/Mach.Схема работы была выявлена во время отладки механизма переключенияконтекста………………………………………………………………………. 109 Приложение 9. Результаты тестирования ICMP Echo pingзапросами систем. Используется для проверки работоспособности системыв главе «4.14. Тестирование системы ICMP запросами »……….............. 110 Приложение 10. Размеры emach и epfnet………………………....... 113 -36-

×