Обзор операционной системы Linux

Построение и использование операционной системы (ОС) Linux, её особенности. Архитектура ядра ОС, характеристика файловой системы и способы хранения данных. Инструментальные возможности Linux, взаимодействие приложений. Интегрированная среда разработки.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 15.05.2013
Размер файла 273,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

Сегодня, с увеличением сложности и функциональности программного обеспечения, становится актуальным применение в контрактной разработке различных вариантов операционных систем, начиная в простейших планировщиков задач (task schedulers) и заканчивая операционными системами реального времени (RTOS) и встраиваемыми операционными системами.

Под Embedded Linux понимается различные варианты ОС, в основе которых лежит ядро Linux, сконфигурированное для заданной аппаратной платформы, а также свободное программное обеспечение GNU: компилятор gcc, библиотека GNU Libc и другие программные компоненты, выпускаемые под одной из открытых лицензий.

Linux своим появлением обязана в первую очередь операционной системе Unix, созданной подразделением Bell Laboratories компании AT&T. В 1969 году Дэннис Ритчи и Кен Томпсон создали операционную систему Unix для платформы PDP-7. В 1971 году операционная система Unix была перенесена на платформу PDP-11, а в 1973 году переписана с использованием языка C. Первая версия Unix, которая использовалась вне стен Bell Laboratories, называлась Unix System версии 6 (V6). Другие компании переносили операционную систему Unix на новые типы машин. Эти версии содержали улучшения, которые позже привели к появлению нескольких разновидностей системы. В 1977 комбинация этих вариантов была выпущена в виде Unix System III, а в 1982 году корпорация AT&T представила версию System V. С появлением Unix Version 7 она превратилась в коммерческий продукт и ее исходные коды перестали быть общедоступными. С другой стороны, на основе Unix Version 7 Эндрю Таненбаумом была создана операционная система Minix с открытым исходным кодом. Minix изначально задумывалась как обучающая система, пригодная для изучения студентами учебных заведений. Несмотря на многие предложения по улучшению системы, автор Minix не изменял этим целям. Именно в этот момент Линус Торвальдс решил создать свой эмулятор терминала Minix. Этот эмулятор постепенно превратился в самостоятельную операционную систему, известную как Linux. После публикации исходного кода Linux в интернете к разработке системы подключились программисты со всего мира (прежде всего пользователи Minix). Стремление разработчиков Linux к расширению возможностей системы принесло результаты. Сейчас Linux - это развитая операционная система, работающая на множестве платформ: Intel, Intel IA-64, AMD x86-64, PowerPC, Compaq Alpha, SPARC и других.

Операционная система Linux - это клон Unix, в ней много заимствований из Unix, в ней реализован API ОС Unix (как это определено в стандарте POSIX), но она не является производной от исходного кода Unix, как это имеет место в других системах (например, *BSD). Там, где это было желательно, разработчики ядра Linux использовали свой подход, отличный от того, что используется в Unix.

1. Обзор ОС LINUX. Построение и использование

Система Linux, разработанная в 90-м году Линусом Торвальдсом при участии других производителей, стала привлекательной альтернативой для всех, кто работает на персональном компьютере. В ней объединены мощь и гибкость рабочей Unix-станции, возможность использования полного набора приложений Internet и полнофункциональный графический интерфейс. Все это свободно инсталлируется на любом ПК, оснащенным процессором 486 или Pentium. Существуют версии для Sun, Macintosh. Знания Unix не требуется. В сети Internet ОС Linux служит платформой для очень мощных приложений: кроме использования возможностей Internet, можно создавать свои собственные узлы для работы сетевых служб. Другие пользователи обращаются к Linux-машине в многопользовательском режиме. Можно задействовать и очень мощные Unix-приложения.

Linux - полнофункциональная система Unix. Она предоставляет все стандартные возможности этой мощной ОС. В частности, в ней имеются оболочки (shell) - интерпрететоры команд пользователя (Bourne Again Shell и TCSH). Любая из них поддерживает развитый язык программирования. ПО включает в себя средства разработки программ, редакторы, текстовые процессоры, специализированные прикладные программы, в том числе предназначенные для работы с графической и аудиоинформацией.

В системе Linux предусмотрен тот же уровень организации системного администрирования, который характерен для Unix. Она обеспечивает возможность работы в многопользовательском и многозадачном режимах, управление правами доступа к ресурсам системы, установление сетевых соединений, конфигурирование пользовательского интерфейса (инсталляция принтеров, подключение пользователей, установление сетевых соединений). В состав Linux входит набор инструментальных средств, с помощью которых можно создавать приложения. С-компилятор, языки Perl, Td/Tk (программы работают и под W95, и под Macintosh).

Система Open-Linux - оконный интерфейс, состоящий из менеджера окон и рабочего стола, управляющего файлами с помощью меню и пиктограмм. Этот интерфейс стабилен и прост в работе. Причем в Linux можно использовать различные менеджеры окон и рабочего стола. Многие из этих интерфейсов выглядят и работают так же, как другие популярные интерфейсы (например, интерфейс менеджера окон fvwm95 похож на W95).

Управление файлами, управление программами, взаимодействие с пользователем - это традиционные функции, общие для всех ОС. У Linux, как у всех версий Unix, есть еще 2 особенности: она является многопользовательской и многозадачной. Некоммерческая, распространяется бесплатно в рамках фонда бесплатного программного обеспечения.

ОС Linux, как и ОС Unix, можно разделить на четыре основных компонента: ядро, shell, файловую структуру, утилиты.

Ядро - это базовая программа, которая управляет выполнением других программ и аппаратными средствами.

Shell - обеспечивает функционирование интерфейса пользователя, принимая от него команды и посылая их в ядро для исполнения.

Файловая структура - представляет собой систему хранения файлов на ЗУ (каталоги, подкаталоги).

Утилиты - специализированные программы для выполнения тех или иных операций (редакторы, коммуникационные программы)

Несколько интерпретаторов командной строки + графический интерфейс (GUI) XWindow. Менеджер окон (самый популярный) - Free Virtual Window Manager (fvwm), Motiv Window Manager (mwm), Open Look Window Manager (olwm).

Shell не только интерпретирует команды, но и создает среду, которую можно конфигурировать, программировать (с помощью специального языка программирования shell).

Особая категория утилит - фильтры. Фильтр считывает входную информацию, поступившую либо от пользователя, либо из файла, либо из другого источника, изучает и обрабатывает ее, а затем выдает результат. Существует много типов фильтров. Можно писать свои фильтры - язык программирования Awk.

Фильтры делятся на 3 категории: фильтры файлов, редактируемые фильтры и фильтры данных. Фильтр файлов выполняет такие базовые операции, как вывод файлов на экран и образцов в файлах. Редактируемый фильтр выполняет операции редактирования, а фильтр данных - манипулирует с полями данных в файлах. Можно указать последовательность фильтров, формировать сложные запросы по образцу - регулярные выражения.

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

Менеджер окон с помощью этих операций создает элементы управления окнами - линейки прокрутки, кнопки. Все менеджеры окон делают это по своему, создавая различные пользовательские интерфейсы, но все они работают на базе XWindow. XWindow отличается высокой гибкостью, ее можно по разному конфигурировать. Она совместима со многими видеокартами.

Одной из важнейших черт Linux, как и всех Unix-систем, является наличие набора инструментальных средств, предназначенных для работы в Internet (эту сеть создавали и развивали именно на основе Unix-систем). Программы FTP, Telnet впервые реализованы на Unix.

Для ОС Linux есть эмуляторы, которые позволяют выполнить программы DOS и Windows (они находятся на стадии разработки).

В состав ОС Linux входят утилиты электронной почты, утилиты непосредственной связи с пользователем (как радиосвязь и телефон), включены средства доступа в Internet. Linux-машина может работать на Web-сервере.

Linux позволяет осуществить удаленный город к другим Linux и Unix-системам.

2. Особенности Linux

Многопользовательская система

Linux изначально был спроектирован как многопользовательская система. При этом речь шла не о том: что вычислительной машиной под Linux могут пользоваться несколько человек по очереди, а о реальной многопользовательской системе, когда несколько человек одновременно запускают свои приложения на одном и том же компьютере. Нужно ли это, если речь идет о настольной, персональной машине? Сейчас уже можно твердо сказать «да». Во-первых, настройки и данные, связанные с приложениями, поддерживаются независимо и тщательно для каждого пользователя, а это оказывается существенно при широко применяемом сейчас совместном доступе к приложениям и данным. Во-вторых, для каждого пользователя сохраняются независимо настройки его рабочего стола, каждый раз, выполнив процедуру регистрации, он получает привычное рабочее окружение.

Ядро

Основную часть ОС Linux принято называть ядром. В ядро входит самый нижний уровень функций операционной системы, как то: контроль аппаратных средств, запуск драйверов устройств, управление файловыми системами, создание процессов, управление памятью и другие базовые функции. Ядро Linux во многом походит на ядро UNIX. Ядро Linux имеет некоторые особенности, которые являются совершенно уникальными:

ядро построено по модульному принципу

на одном компьютере может быть установлено сразу несколько ядер

разработка ядра Linux управляется централизовано

Ядро Linux не представляет собой монолитное образование, некоторые его части могут загружаться в процессе работы, такие части называются модулями. Если некоторые функции не требуются в текущий момент, то отвечающие за них модули не загружены и не занимают память. На одном компьютере может быть установлено сразу несколько ядер, но только одно из них работает в каждый момент времени. Эта особенность позволяет тестировать новые версии ядра, собирать более подходящую его конфигурацию и в то же время иметь возможность очень легко вернуться назад, к старой версии, которая гарантированно работала. Разработку ядра Linux до сих пор контролирует легендарный Линус Торвальдс. А это означает, что каждая версия ядра представляет собой один единственный объект.

Взаимодействие приложений

Операционная система Linux далеко не так сильно интегрирована, как операционная система Windows. Фактически каждый дистрибутив состоит из ядра и сотен, если не тысяч отдельных программных пакетов, ассоциированных с этим ядром. Все программы изначально проектировались и проектируются так, чтобы допускать тесное взаимодействие, иначе системы не смогла бы работать. Но это не означает, что они должны взаимодействовать, интеграции между ними может и не быть. В некоторых случаях такое отсутствие обязательной интеграции на низком уровне может выглядеть как недостаток, но это качество дает разработчикам ПО более высокого свободу в выбора низкоуровневых приложений и возможность их замены впоследствии. Поскольку ядро Linux и почти все доступные приложения базируются на открытых стандартах, интеграция между ними выполняется легко, и работают они вместе надежно.

Пользовательский интерфейс

Как правило, пользователь общается с вычислительно машиной посредством графического монитора, мыши и клавиатуры. Так устроены почти все клиентские компьютеры, хотя внешний вид рабочего стола и функциональность могут различаться. Под Linux менеджер графической сессии является просто одним из приложений, он не является частью операционной системы. Это означает что, во-первых, вы можете выбирать менеджера рабочего стола (наиболее частый выбор -- это KDE или GNOME) и, во-вторых, можно работать вообще без графического окружения, в алфавитно-цифровом режиме.

Взаимодействие с внешней инфраструктурой

Настольный компьютер редко работает сам по себе, он должен взаимодействовать с объемлющей инфраструктурой. Он нуждается в подключении к локальной сети, в доступе к серверам и другим общим ресурсам. Linux поддерживает все возможные сетевые протоколы, необходимые для такого взаимодействия. Важнейшим моментом при подключении компьютера к внешнему миру является проблема обеспечения безопасности. Ядро Linux имеет встроенный брандмауэр, который защищает компьютер от несанкционированного доступа извне и обеспечивает безопасную работу конечных пользователей и сохранность данных.

Способ хранения данных

Способ хранения данных в Linux кардинально отличается от способа, принятого в Windows. Файловая структура в Linux представлена одним деревом, при этом различные типы разделов, в том числе разделы на удаленных устройствах, выглядят однотипно. Здесь нет букв, приписанных к дискам. Такой подход позволяет, например, придерживаться одной и той же логической структуры каталогов на всех клиентских машинах. Существенным отличием в обращении с файлами является существование ссылок в большинстве файловых систем, с которыми работает Linux. По сути ссылки являются указателями на файлы или на целые каталоги. Существуют два вида ссылок: жесткие ссылки и символьные ссылки. Жесткая ссылка является просто еще одним именем, связанным с файлом, а символьная ссылка -- это отдельно стоящий указатель. В том случае, если удален файл, символьная ссылка на него не удаляется, но начинает указывать в пустоту. Если число жестких ссылок на файл больше одной, то удаление одного имени не повлечет удаление файла. Реально он будет удален только после удаления последней жесткой ссылки.

Другие отличия

Есть и другие особенности, отличающие Linux от других ОС для настольных компьютеров. Рассмотрим разницу в работе с виртуальной памятью и уникальное для Linux понятие уровней выполнения (run levels). Работы с виртуальной памятью в каждой операционной системе происходит по своему, иногда это зависит даже от версии операционной системы. Особенностью Linux является то, что виртуальная память не будет использоваться до тех пор, пока есть возможность работать в реальной оперативной памяти. Windows, например, начинает перемещать информацию из оперативной памяти на диск и в других случаях, там существует практика превентивного свопинга. Во многих случаях такой подход приводит в снижению скорости выполнения операций. В Linux принята также система кэширования, то есть, хранение недавно использованной файловой информации в оперативной памяти. В результате такой практики постоянно используется значительная часть оперативной памяти. В том случае, если дополнительная оперативная память требуется приложениям, система просто сокращает область кэширования. Концепция уровней выполнения является общей для UNIX/Linux-подобных операционных систем. Уровень выполнения определяет, какие системные сервисы будут запущены при начальной загрузке системы. Уровни выполнения нумеруются от 0 до 9. Например, уровень выполнения 3 соответствует загрузке всех системных сервисов, кроме графических. На уровне 5 стартует также и графическое окружение. Уровень 1 соответствует однопользовательскому режиму загрузки системы, в котором доступна только одна консоль и отключены практически все службы.

3. Архитектура ядра Linux

операционный ядро данное приложение

Хотя версии ядра Linux меняются, базовая архитектура ядра Linux остаётся более или менее неизменной. Ядро Linux можно разделить на следующие подсистемы:

- Уровень аппаратных абстракций

- Диспетчер памяти

- Планировщик

- Файловая система

- Подсистема ввода-вывода

- Сетевая подсистема

- Межпроцессное взаимодействие

Кратко рассмотрим каждую подсистему и детали её использования во встроенных системах.

Уровень аппаратных абстракций (HAL)

Уровень аппаратных абстракций (hardware abstraction layer, HAL) виртуализирует оборудование платформы, так что различные драйверы могут быть легко перенесены на любое оборудование. HAL эквивалентен BSP (board support package, пакет поддержки аппаратуры), предоставляемому на большинстве RTOS, за исключением того, что BSP на коммерческих RTOS обычно имеет стандартные API, которые позволяют легко его переносить. Почему HAL Linux не имеют стандартных интерфейсов для подключения к остальной части ядра? Это наследство; поскольку Linux изначально предназначался для настольных систем x86 и поддержка других платформ был добавлена позже, первые разработчики не думали о стандартизации HAL. Однако, в последних версиях ядра идея придумать стандартные интерфейсы для подключения зависящего от платы программного обеспечения перенимается. Две известные архитектуры, ARM и PowerPC, имеют хорошо описанные структуры данных и API, которые упрощают перенос на новую плату.

Ниже приведены некоторые встраиваемые процессоры (кроме x86), поддерживаемые ядром Linux 2.6.

- MIPS

- PowerPC

- ARM

- M68K

- CRIS

- V850

- SuperH

HAL имеет поддержку следующих аппаратных компонентов:

Процессор, кэш и MMU

Создание карты памяти

Поддержку обработки исключений и прерываний

DMA

Таймеры

Системная консоль

Управление шиной

Управление питанием

Диспетчер памяти

Диспетчер памяти Linux отвечает за управление доступом к аппаратным ресурсам памяти. Диспетчер памяти несёт ответственность за предоставление динамической памяти подсистемам ядра, таким как драйверы, файловые системы и сетевой стек. Он также реализует программное обеспечение, необходимое, чтобы обеспечить виртуальной памятью пользовательские приложения. Каждый процесс в подсистеме Linux работает в своём отдельном адресном пространстве, называемом виртуальным адресом. Работая с виртуальным адресом, процесс не может повредить ни другой процесс, ни память операционной системы. Любой повреждённый указатель внутри процесса локализован в процессе, не обрушивая систему; это очень важно для надёжности системы.

Ядро Linux делит общий доступный объём памяти на страницы. Типичный размер страницы равен 4 Кб. Хотя ядру доступны все страницы, только некоторые из них используются ядром; остальные используются приложениями. Обратите внимание, что страницы, используемые ядром, не являются частью процесса подкачки; по требованию в основную память загружаются только страницы приложений. Это упрощает разработку ядра.

Когда приложение должно быть выполнено, нет необходимости быть загруженным в память всему приложению; между памятью и хранилищем переключаются только используемые страницы.

Наличие отдельной памяти пользователя и ядра является самым радикальным изменением, которое разработчик может ожидать при переходе от собственной RTOS. Во-первых, все приложения являются частью одного и того же образа, содержащего и эту ОС.

Таким образом, когда этот образ загружается, приложения также копируются в память. В Linux, однако, операционная система и приложения скомпилированы и собраны раздельно; каждое приложение имеет свой собственный экземпляр в хранилище, часто называемый программой.

Планировщик

Планировщик Linux обеспечивает многозадачность и развивается от версии к версии ядра с целью обеспечения детерминированной политики планирования. Прежде чем углубляться в историю улучшений планировщика, давайте разберёмся в примерах выполнения, которые понятны планировщику.

Потоки ядра: это процессы, которые не имеют пользовательского контекста. Они выполняются в пространстве ядра до тех пор, пока работают.

Пользовательский процесс: благодаря виртуальной памяти, каждый пользовательский процесс имеет своё собственное адресное пространство. Они входят в режим ядра, когда выполняется прерывание, исключение или системный вызов. Обратите внимание, что когда процесс входит в режим ядра, он использует совершенно другой стек. Он называется стеком ядра и каждый процесс имеет свой собственный стек ядра.

Пользовательские потоки: потоки представляют собой различные исполняющиеся объекты, которые сопоставляются с одним пользовательским процессом. Потоки пользовательского пространства имеют общее пространство текста, данных и "кучи". Они имеют отдельные адреса стека. Другие ресурсы, такие как открытые файлы и обработчики сигналов, также общие для всех потоков.

Поскольку Linux стал популярен, спрос на поддержку приложений реального времени увеличился. В результате планировщик Linux постоянно улучшался, так что его политика планирования стала детерминированной.

Файловая система

В Linux различные файловые системы управляются уровнем, называемым VFS или виртуальной файловой системой. Виртуальная файловая система обеспечивает согласованное представление данных, хранящихся в системе на разных устройствах. Она делает это путём отделения пользовательского представления файловых систем с использованием стандартных системных вызовов, но позволяя разработчикам ядра реализовывать логические файловые системы на любом физическом устройстве. Таким образом, это абстрагирует детали физического устройства и логической файловой системы, и позволяет пользователям получать доступ к файлам одинаковым способом.

Любому устройству Linux, будь то встроенная система или сервер, необходима по крайней мере одна файловая система. Это отличается от исполняющих систем реального времени, которые не требуют вообще какой-либо файловой системы. В Linux необходимость иметь файловые системы проистекает из двух фактов:

Приложения имеют отдельные программные образы и, следовательно, они должны иметь место для хранения в файловой системе.

Доступ ко всем низкоуровневым устройствам реализуется так же, как к файлам.

Каждой системе Linux необходимо иметь основную файловую систему, корневую файловую систему. Она монтируется при старте системы. Позже с помощью этой файловой системы могут быть установлены многие другие файловые системы. Если система не может смонтировать корневую файловую систему на указанном устройстве, оно будет паниковать, а не выполнять запуск системы.

Наряду с дисковыми файловыми системами, Linux поддерживает специализированные файловые системы, которые для встроенных систем реализованы на основе флеш-памяти и ПЗУ. Также в Linux есть поддержка NFS, которая позволяет на встроенной системе смонтировать файловую систему, находящуюся на сетевом устройстве. Linux поддерживает файловые системы на основе памяти, что также полезно на встраиваемых системах. Также есть поддержка логических или псевдо-файловых систем; они могут быть использованы для получения информации о системе, а также использоваться в качестве средств отладки.

Ниже приведены некоторые из наиболее часто используемых встраиваемых файловых систем.

EXT2: классическая файловая система Linux, которая широко используется пользователями CRAMFS: сжатая файловая система только для чтения

ROMFS: файловая система только для чтения

RAMFS: файловая система для чтения и записи на основе памяти

JFFS2: журналируемая файловая система, специально созданная для хранения на флеш

PROCFS: псевдо-файловая система, используемая для получения системной информации

DEVFS: псевдо-файловая система для хранения файлов устройств

Подсистема ввода/вывода

Подсистема ввода/вывода Linux обеспечивает простой и универсальный интерфейс для устройств, находящихся на плате. Подсистемой ввода/вывода поддерживаются три вида устройств:

- Символьные устройства для поддержки последовательных устройств.

- Блочные устройства для поддержки устройств с произвольным доступом. Блочные устройства имеют важное значение для реализации файловых систем.

-Сетевые устройства, которые поддерживают широкий спектр устройств на канальном уровне.

Сетевые подсистемы

Одним из основных преимуществ Linux является его надёжная поддержка разных сетевых протоколов. В таблице 3.1 перечислены основные наборы функций вместе с версиями ядра, в которых они поддерживаются.

Таблица 3.1 Возможности сетевого стека в ядрах версии 2.2, 2.4 и 2.6

Межпроцессное взаимодействие

Взаимодействие между процессами в Linux включает в себя сигналы (для асинхронного взаимодействия), каналы и сокеты, а также IPC механизмы System V, такие как разделяемая память, очереди сообщений и семафоры. Ядро версии 2.6 имеет дополнительную поддержку для очередей сообщений POSIX.

4. Linux и встраиваемые системы

Сейчас очень много говорится о применении Linux во встроенных системах. Коды Linux, инструментальные средства и помощь в разработке встраиваемых систем предлагается хотя и небольшим, но очень быстро растущим числом начинающих (startup) компаний. Множится число web-сайтов типа www.Linuxdevices.com, где можно найти любую информацию по инструментальным средствам и методам разработки. В дополнение ко всему о производстве аппаратных средств для различных вариантов Linux уже объявили такие поставщики, как Motorola и Force Computers.

Известные достоинства ОС Linux очень привлекают разработчиков встраиваемых систем. Это открытость исходных кодов, отсутствие лицензионных выплат, лёгкая доступность бесплатной и платной поддержки со стороны поставщиков Linux-систем и участников телеконференций. Возможность подстраивать операционную систему под конкретные прикладные нужды, загрузки и применения хотя и бесплатных, но, тем не менее, высокопрофессиональных инструментальных средств, самостоятельное выполнение всех работ, причем не с самого начала, вот что привлекает внимание к Linux со стороны руководителей проектов и индивидуальных разработчиков.

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

Однако для разработчиков встраиваемых систем всего перечисленного всё же недостаточно. Им нужны решения, которые работают, т.е. нужны мощные, удобные в использовании, хорошо поддерживаемые и шагающие в ногу с развитием технологий инструментальные средства. Используемая операционная система должна умещаться в указанный объем памяти и обеспечивать требуемые в конкретном проекте характеристики и время реакции. Для настройки характеристик Linux и создания самых разнообразных приложений необходимы мощный инструментарий.

К сожалению, в этой области у Linux очень большие пробелы. Его бесплатные или недорогие средства разработки очень хороши, однако не столь удобны, как инструментарий других встраиваемых операционных систем. Возможности подстройки Linux под конкретную задачу практически неисчерпаемы. Однако документации или руководств, как это делать, ощутимо не достаёт. Хотя в долгосрочной перспективе потенциалы Linux весьма значительны, сроки его начального освоения могут быть значительно длиннее, чем у стандартных коммерческих средств.

Над преодолением этих и других недостатков поставщики встраиваемых систем работают весьма усиленно. И более того специалисты уже применяют Linux в реальных проектах, что открывает широкую дорогу техническому новаторству и повышению мастерства в разработке нового поколения встраиваемых устройств с развитыми мощными возможностями.

Многие разработчики уже пользуются инструментальными средствами GNU компании Free Software Foundation. Начавшись с GNU C основателя компании Ричарда Столлмана (Richard Stallman), GNU-библиотека сейчас включает в свой состав десятки различных программистских средств типа различных языков программирования, отладчиков, кодовых структур (code frameworks), библиотек, редакторов, средств разработки web-приложений, служебных утилит и т.д.

Кроме того, многие из этих средств отличаются более высоким качеством, чем их коммерческие аналоги. Многие поставщики операционных систем реального времени пользуются этими средствами благодаря их качеству и широкой доступности для разных типов микропроцессоров. Например, в 1998 году (последние статистические данные), по оценкам Cygnus Solutions, около половины всех разработчиков встраиваемых систем в той или иной мере пользовались инструментальными средствами GNU. Этими средствами благодаря широкой доступности их исходных кодов всегда пользовались разработчики Linux. Многие базовые компоненты Linux разрабатывались и распространялись в соответствии с условиями Генеральной Открытой Лицензии GNU (GPL General Public License), политикой бесплатного лицензирования, предложенной Столлманом.

Лицензия GPL может отпугнуть некоторых из разработчиков встраиваемых систем от использования инструментальных средства GNU. Объясняется это тем, что распространяемое в рамках этой лицензии программное обеспечение обычно сопровождается исходными текстами, которые можно модифицировать самым произвольным образом, однако далее предлагать его как собственный закрытый продукт нельзя. Даже распространяя его на платной основе, разработчики должны предоставлять пользователям те же самые права, что получили сами.

Несмотря на это, лицензии GNU не доставляют никаких хлопот тем разработчикам, которые пользуются не исходными кодами приложений, а инструментальными средствами программирования. Некоторые поставщики даже обратили это себе на пользу. Например, компания Cygnus Solutions, которую в начале этого года выкупила распространитель Linux компания Red Hat Software, разрабатывала и распространяла GNU-инструментарий за минимальную плату. Деньги компания Cygnus зарабатывала на консультировании и других продуктах.

В дополнение к GNU-инструментарию Cygnus/Red Hat поставляли и свои собственные средства разработки (типа отладчика Source Navigator и интегрированной среды разработки Code Fusion). Эти продукты позволили использовать Linux в процессорах Intel. В отличие от GNU-инструментария, они не бесплатны, хотя соответствующие инструментальные средства GNU могут быть включены в их состав. Кроме того, они могут работать как в среде Linux, так и в среде Windows.

Во многие коммерческие версии Linux типа Red Hat, Debian и Caldera уже включено множество различных средств GNU (включая компиляторы языков, отладчики и разнообразные утилиты). Бесплатные инструментальные средства, как правило, с исходными кодами, можно найти в Free Software Foundation, научно-исследовательских учреждениях и в таких Linux-порталах, как www.Linuxcare.com. И, наконец, можно воспользоваться коммерческими продуктами типа описанных ранее от Cygnus/Red Hat. Таким образом, накапливается целый спектр высококачественных инструментальных средств, более широкий, чем доступный сейчас для любой другой встраиваемой операционной системы.

5. Linux и системы реального времени

Бедой и благом для разработчиков является вопрос поддержки в Linux реального времени. Беда потому, что по своему происхождению эта операционная система не является системой реального времени и сделать её таковой технически трудно. Благо же заключается в том, что Linux дает пользователям возможность точно определить, какая именно часть системы нуждается в режиме реального времени, сколько этого "реального времени" требуется и как наилучшим образом решить эту задачу. Во многих случаях реактивность реального времени требуются лишь в определенных обстоятельствах либо при выполнении определенных действий. Сейчас разработчики встраиваемых систем ищут наилучший способ добиться того, чтобы редко используемая функция операционной системы была столь же эффективной, как и операционная система реального времени.

Какие для этого есть возможности? В стандарте POSIX 1003.13 определен многопользовательский профиль системы реального времени (Multiuser Real-Time System Profile), обеспечивающий фиксацию процессов реального времени в памяти системы, что предотвращает их выгрузку на жесткий диск. А специальный планировщик, обеспечивает предсказуемый запуск этих процессов.

ОС Linux соответствует этому стандарту, обеспечивая отвечающие стандарту POSIX блокировку памяти, специальные вызовы подсистемы планирования и сигналы POSIX реального времени. Несмотря на то, что эти характеристики улучшают детерминированность поведения системы, выполняющиеся в этих режимах задачи не могут считаться задачами "жесткого" реального времени, поскольку из-за активности ядра могут всё же заблокироваться процессы "мягкого" реального времени.

Существует два общих подхода к превращению Linux в операционную систему реального времени с более детерминированными характеристиками. Первый из них реализован в таких проектах, как RT-Linux технологического института Нью-Мексико (New Mexico Tech) и Real-Time Application Interface (RTAI) Миланского университета (University of Milan). В данном случае пользователи получают обычную операционную систему Linux плюс не-Linux-ядро реального времени. Операционная система Linux здесь выступает как задача с самым низким приоритетом, исполняющаяся в небольшой операционной системе реального времени.

Другой подход разработан Джимом Рэди (Jim Ready) из Monta Vista Software (реализован в версии Hard Hat Linux, которая представляет собой модификацию системы Red Hat). При этом подходе пользователи настраивают характеристики драйверов и других элементов для получения более быстрых и предсказуемых откликов существующих компонентов операционной системы. Повышая эффективность драйверов, снижая скрытые задержки обработки и улучшая время реакции планировщика, можно сделать характеристики операционной системы достаточно детерминированными для более широкой области применения.

В духе общей концепции Linux компания Monta Vista так же бесплатно распространяет свою Hard Hat, зарабатывая деньги на консультационных услугах.

Вместе с тем ни один из этих подходов не свободен от некоторых недостатков, что заставляет разработчиков встраиваемых систем не один раз подумать, прежде чем обратиться к какому-либо из них. Первый метод обеспечивает разработку приложений в привычной среде Linux, однако, если какому-либо из приложений нужны будут функции реального времени, то все эти преимущества теряются. Во втором случае Linux может применяться в большем числе встроенных систем, однако и здесь жесткий детерминизм отсутствует. Кроме того, Hard Hat может оказаться более тяжелой в сопровождении, поскольку модификации программ могут повлиять на характеристики реального времени.

В настоящее время совершенствуются методы "настройки" и упрощается доступ к информации разработчикам встраиваемых систем. Например, чтобы облегчить задачу определения быстроты реакции и детерминированности конкретных аппаратных платформ, в Monta Vista Software был запущен проект Standard Linux Real-Time Characterization Project. Цель проекта измерение и публикация характеристик Linux реального времени, а также предоставление пользователям встроенной Linux средств для выполнения подобных задач.

В компании также разрабатываются вспомогательные программные средства, которые не включены в состав операционной системы. В частности, Hard Hat обеспечивает высокоскоростной обмен данными между контроллерами систем CompactPCI и периферийными устройствами через объединительную панель CompactPCI по стандартным сетевым протоколам (рис.5.1). Благодаря этому у разработчиков встроенных Linux-систем появляется возможность построения самых разнообразных слабосвязанных распределенных модульных архитектур.

Рисунок 5.1 - Продукт Hard Hat Net компании Monte Vista даёт сетевое решение на основе магистрали PCI для построения распределённых встраиваемых систем

Кроме Hard Hat Linux компании Monta Vista, есть еще минимум две версии Linux, адаптированные для встраиваемых приложений.

Первая из них это eCos компании Red Hat, представляющая собой последнюю версию того, что начиналось как конфигурируемая операционная системы прикладного назначения с открытым исходным кодом для встраиваемых систем, предложенной Cygnus Solutions. Эта система предназначена для производителей встраиваемых устройств и является специализированной Linux для таких устройств, как бытовые приборы с выходом в Internet, персональные цифровые секретари (PDA personal digital assistant) и карманные компьютеры. В последней версии eCos, 1.3 встроен набор протоколов TCP/IP, обеспечивающий подобным портативным устройствам обмен данными с Internet.

Исходные тексты eCos распространяются свободно. Разработчики встраиваемых систем могут бесплатно загрузить с web-сайта Red Hat варианты eCos для самых разных процессорных семейств и пакетов поддержки модулей, включая семейства процессоров ARM, Hitachi SuperH, Intel x86, Matsushita AM3x, MIPS, PowerPC и SPARC.

Второй версией Linux для встраиваемых приложений является система Embedix компании Lineo (ранее входящей в состав Caldera). Версия Lineo встраиваемой Linux рассчитана на решение специфических потребностей портативных устройств. В ее основе лежит OpenLinux компании Caldera Systems, и в настоящее время она поддерживает микропроцессоры архитектур PowerPC и х86. В конце этого года Lineo планирует добавить поддержку микропроцессоров MIPS, Hitachi и ARM.

В комплект поставки Embedix, кроме того, включены пакет инструментальных средств и встраиваемый web-браузер. В состав инструментального пакета входят набор специализированных встраиваемых технологий Linux и полный набор оригинальных средств разработки, т.е. средств конфигурирования, отладки, настройки и тестирования компонентов перед их объединением в единый исполняемый образ, предназначенный для установки в целевой платформе.

Есть и гибридные варианты. Некоторые поставщики традиционных систем реального времени уже рассматривают возможность расширить Linux своими уникальными продуктами.

6. Инструментальные возможности Linux

Вообще Linux это уже готовая к использованию законченная операционная система разработки. В частности, Linux-серверы таких поставщиков, как Caldera Systems, предоставляют весь набор требуемых сетевых услуг. В состав комплекта поставки для настольных систем входят TCP/IP, а также средства организации и использования сетевых узлов. Кроме того, имеется графическая утилита LISA, представляющая собой средство конфигурирования сетевой среды.

Несмотря на то, что большинство версий Linux для настольных систем превращают их в довольно неплохие инструментальные рабочие станции, тот факт, что имеющиеся на дистрибутивных дисках утилиты могут обеспечить и коллективную работу, недостаточно широко известен. Одной из таких групповых утилит является сетевая файловая система NFS (Network File System), которая обеспечивает членам сетевой группы одновременный доступ к определенным каталогам как к локальным. Таким образом, возможно создание единой для всех NFS-системы с общими файлами проекта и проектной документацией. Есть также утилита SAMBA UNIX-средство для разделения сообщений на блоки, которое позволяет использовать одни и те же диски с системами Windows.

Поддержка протоколов SLIP или РРР предоставляет все возможности коллективной работы, позволяя отдельным членам группы разработки находиться при этом вне офиса. Клиентские Linux-системы с удаленным доступом организуются утилитой LISA, создающей удаленные хосты и реализующей соответствующие протоколы.

Групповое взаимодействие и обмен информацией может быть организован с помощью web-сервера Apache, который позволяет разработчикам строить индивидуальные web-сайты для публикации своих документов. Кроме того, в его состав входит средства разработки web-приложений, позволяющие отдельным пользователям публиковать свою информацию и считывать чужую. Web-сервер на сетевом сервере может играть роль центрального распределителя общегрупповых данных и документов.

В Linux реализована также и электронная почта. В составе Linux-сервера есть почтовые POP- и IMAP-серверы, а в дистрибутиве для настольной системы наряду с уже давно известными Elm и Pine есть РОР-клиент и пакет поддержки мультимедийной почты. Сделать из сервера почтовый сервер и шлюз с внешними сетями можно с помощью утилиты Sendmail, которая прекрасно подойдет для сетей с поддержкой только SMTP.

С помощью некоторых очень интересных коммуникационных приложений в составе дистрибутивов Linux в рамках рабочей группы могут быть созданы серверы новостей и списков почтовой рассылки по протоколу NNTP. Построение общегруппового сервера новостей один из лучших методов организации постоянных дискуссий внутри коллективов разработчиков. После создания на сервере Linux сервера новостей любой клиент сможет обратиться к нему и прочитать чужое сообщение или разместить на нем свое.

Описанные компоненты это лишь вершина айсберга. На web-сайте Free Software Foundation (Linuxcare) можно найти бесчисленное множество самых разнообразных интегрированных сред разработки, систем повышения эффективности, компиляторов практически любого языка, систем управления исходными текстами и т.д. и т.п. Посетите его, прежде чем принимать решение о приобретении каких-либо программных средств.

Естественно, за "бесплатные" программы все равно, так или иначе, придется платить. В первую очередь ограниченными возможностями поддержки. И хотя есть распространённое мнение, что негарантированная поддержка программ для Linux, по крайней мере, не хуже, чем очевидно скверная поддержка со стороны поставщиков существующих инструментальных средств, это вполне может быть тот случай, когда "известный враг предпочтительнее неизвестного".

Менее очевидна цена, которую приходится платить, когда вы намереваетесь передавать свои программы и опыт Linux-сообществу, как из простого интереса, так и, понимая, что ваш вклад может помочь дальнейшему развитию Linux. Подобная передача может потребовать дополнительной работы, а также войти в противоречие с корпоративной заинтересованностью в защите своих разработок. Так что, рассматривая вопрос об использовании Linux и о подобном участии в деятельности Linux-сообщества, убедитесь в том, что ваши сотрудники участники проекта и обладатели интеллектуальной собственности знают об этом и согласны на такие условия.

7. Интегрированная среда разработки

По мере увеличения программного проекта становится необходимым сборка и управление им. Компонентами, которые участвуют в процессе разработки программы, являются:

Текстовый редактор: необходимо писать файлы исходного кода. Удобнее работать с текстовыми редакторами, которые понимают ваш язык программирования. Подсветка синтаксиса, автозавершение ввода символов и навигация по коду - желательные для редактора функции.

Компилятор: для генерации объектного кода.

Библиотеки: для локализации повторно используемого кода.

Компоновщик: для компоновки объектного кода и создания конечного двоичного файла.

Отладчик: отладчик на уровне исходных текстов для поиска программных ошибок.

Система сборки на базе make: для эффективного управления процессом сборки.

Можно сэкономить много времени, если инструменты, необходимые для выполнения вышеуказанных задач, работают вместе в единой среде разработки, то есть, под IDE (Integrated Development Environment, Интегрированной Средой Разработки). IDE объединяет все инструменты, которые необходимы в процессе разработки, в единую среду. IDE, используемая для разработки встраиваемых систем на базе Linux, должна иметь следующие возможности:

Сборка приложений: некоторыми из желаемых функций являются создание Makefile-ов для импортированного исходного кода, импорт существующих Makefile-ов и проверка зависимостей исходных кодов.

Управление приложениями: она должна интегрироваться с инструментами управления исходным кодом, такими как CVS, ClearCase®, Perforce®, и так далее.

Настройка и сборка ядра: она должна предоставить интерфейс для настройки и сборки ядра.

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

Отладка приложений: она должна предоставлять отладку приложений, работающих на целевой платформе, на уровне исходного кода.

Отладка ядра: если IDE обеспечивает поддержку для отладки ядра и его модулей, это является дополнительным преимуществом.

Рассмотрим интегрированные среды разработки как с открытым исходным кодом, так и коммерческие, которые могут быть использованы в качестве среды разработки.

Eclipse

Eclipse является проектом для разработки с открытым исходным кодом (www.eclipse.org) предназначенным для обеспечения надёжной, полнофункциональной платформы для разработки IDE. Eclipse предоставляет основную платформу и различные функции интегрированных сред разработки, реализованные в виде отдельных модулей, называемых плагинами. На самом деле эта плагинная платформа и делает Eclipse очень мощным. При запуске Eclipse пользователю предоставляется IDE, состоящая из набора доступных плагинов. Большинство коммерческих интегрированных сред разработки, таких как TimeStorm, строятся с использованием платформы Eclipse.

KDevelop

KDevelop является IDE с открытым исходным кодом для KDE™ (www.kdevelop.org). Некоторые возможности KDevelop:

- Он управляет в одной среде всеми средствами разработки, такими как компилятор,компоновщик и отладчик.

Он предоставляет простой в использовании пользовательский интерфейс для большинства необходимых функций систем управления исходным кодом, таких как CVS.

Он поддерживает проекты Automake для автоматической генерации Makefile и управления процессом сборки. Он также поддерживает пользовательские проекты, чтобы пользователь мог управлять Makefile-ми и процессами сборки.

Поддержка кросс-компиляции.

Встроенный текстовый редактор на основе Kwrite от KDE, Qeditor от Trolltec, и так далее с такими функциями, как подсветка синтаксиса, автоматическое завершение ввода символов, и так далее.

Интеграция с Doxygen для создания документации об интерфейсах.

Мастер создания приложений для создания приложений-примеров.

Поддержка проектов Qt/embedded.Графический пользовательский интерфейс для GDB.

TimeStorm

TimeStorm Linux Development Suite (LDS) является коммерческой средой разработки для встраиваемого Linux, предоставляемой TimeSys (www.timesys.com). Она основана на платформе IDE от Eclipse. Некоторые из её возможностей:

Работает на системах Linux и Windows.

Интегрирована с инструментов управления исходным кодом, такими как CVS, ClearCase, Perforce и так далее.

Инструменты для разработки и отладки приложений для встраиваемой системы.

Работа с дистрибутивами Linux не от TimeSys.

Интерфейс для настройки и компиляции ядра Linux для выбранной целевой платформы.

Графический интерфейс для создания корневой файловой системы для целевой платформы.

Предоставляет возможность загружать и исполнять программы на целевой платформе.

Графический пользовательский интерфейс для удалённой отладки приложений с помощью GDB.

CodeWarrior

Metrowerks CodeWarrior Development Studio является полноценной коммерческой IDE, которая облегчает разработку от запуска оборудования до отладки приложений (www.metrowerks.com). Некоторые из её возможностей:

Встроенный текстовый редактор с такими функциями, как подсветка синтаксиса, авто-отступы, и так далее.

Включает в себя поисковую систему для быстрой навигации по исходному коду.

Интегрированный эмулятор набора инструкций для быстрого старта разработки приложений.

Она предоставляет высокопроизводительный оконный отладчик на уровне исходных текстов. Отладчик включает в себя программатор флеш-памяти и инструменты для диагностики оборудования.

Встроенная система управления версиями, такими как CVS, Perforce, и так далее.

Заключение

Итак, Embedded Linux представляет собой полноценную ОС, современную и функциональную, способную работать на любой архитектуре и адаптированную под особенности этой архитектуры, безопасную и не подверженную разрушительному влиянию вирусов. А главное - полностью бесплатную и поддерживаемую миллионами свободных разработчиков во всём мире.

История использования Linux как в качестве инструментальной, так и в качестве целевой операционной системы, пока еще коротка. Использование этой ОС дает существенные преимущества благодаря широкой распространенности исходных текстов Linux, бесплатности или, по крайней мере, невысокой стоимости высококачественных инструментальных средств и быстрому распространению технологий Linux. Несомненно, проектировщики встраиваемых систем по достоинству оценят возможность переделки своих разработок под конкретные задачи без необходимости построения этой операционной системы с самого начала.

Вместе с тем создание встраиваемого продукта на основе дистрибутива Linux это пока еще дорога проб и ошибок. Документации, как производить настройку Linux для конкретного применения, пока еще чрезвычайно мало. Прежде чем добиться эффективности работы Linux, разработчику приходится досконально изучить всю ее "от корки до корки". Кроме того, при создании ОС Linux не заботились о компактности кода и масштабируемости. Возможно, ОС Linux и модульная операционная система, однако это, скорей, от необходимости, чем вследствие заранее поставленной цели. Для уменьшения объема памяти до требуемого можно затратить сил больше, чем на создание операционной системы с самого начала.

Нельзя легкомысленно начинать разработку проекта встраиваемой системы с выбора именно Linux. Прежде чем отказаться от существующих методов в пользу Linux, необходимо тщательно оценить несколько моментов. Прежде всего, необходимо иметь ясное понимание того, чего вы хотите добиться в своем проекте с помощью Linux. Ознакомтесь с Web-ресурсами Linux, есть ли там все требуемые для реализации вашего проекта инструментальные средства. Прежде чем начать работу, убедитесь, что имеете все необходимые компиляторы, библиотеки, отладчики, драйверы и утилиты. Если вам дополнительно нужны кросс-компиляторы для вашей целевой платформы, убедитесь сначала в их надежности.

Изучите также всю доступную информацию и ресурсы возможной поддержки. Бесплатную поддержку можно найти в Web, в форумах Usenet и на серверах почтовой рассылки. Однако не полагайтесь только на этот вид поддержки, хотя она совершенно бесплатна и часто очень подробна. Убедитесь, что вы можете найти платную поддержку со стороны профессионалов с большим опытом в области разработки встраиваемых систем.

Нет никаких сомнений, что через несколько лет Linux и как инструментальная, и как целевая платформа станет одной из главных сильных сторон разработки встраиваемых приложений. В последнее время все больше и больше разработчиков встраиваемых систем ищет для своих проектов небольшие и быстродействующие системы управления базами данных. Однако Linux это ни чудодейственная технология, ни средство спасения плохого проекта. Требования к разработке встраиваемых систем с применением Linux те же самые, что и для приложений с другими операционными системами.


Подобные документы

  • История создания, архитектура операционной системы и перечень возможностей, реализуемых в Linux. Инструментальные средства и цикл разработки новой версии ядра. Жизненный цикл патча. Структура принятия решений при добавлении новых функций (патчей) в ядро.

    лекция [303,8 K], добавлен 29.07.2012

  • Изучение операционной системы Linux: элементов файлов, структуры каталогов и прав доступа к ним. Получение практических навыков по работе с некоторыми командами данной ОС. Теоретические сведения и практические навыки по работе с процессами Linux.

    лабораторная работа [847,5 K], добавлен 16.06.2011

  • Знакомство с этапами разработки трёх приложений для системы семейства Linux с использованием языка программирования С++. Анализ особенностей операционной системы Ubuntu 12.10. Характеристика способов тестирования команд с помощью стандартных средств.

    контрольная работа [732,1 K], добавлен 06.08.2013

  • Linux - ядро операционной системы с монолитной архитектурой. Прародители операционной системы Linux, ее стабильные и экспериментальные версии. Процесс внедрения Linux и свободного программного обеспечения в школах и государственных учреждениях России.

    реферат [18,2 K], добавлен 19.01.2013

  • Основные понятия операционных систем. Современное оборудование компьютера. Преимущества и недостатки операционной системы Linux. Функциональные возможности операционной системы Knoppix. Сравнительная характеристика операционных систем Linux и Knoppix.

    реферат [1,5 M], добавлен 17.12.2014

  • История развития и версии Linux. Ключевые черты, преимущества и сравнительные характеристики операционной системы. Программные характеристики, основные причины успеха и бурного развития Linux. Главные проблемы распространения операционной системы.

    курсовая работа [64,4 K], добавлен 13.12.2011

  • Рассмотрение различных дистрибутивов операционной системы. Изучение протоколов обмена данными и форматов физического хранения данных. Разработка дистрибутива на основе операционной системы Linux для функционирования в составе сетевого хранилища StarNAS.

    курсовая работа [1,6 M], добавлен 05.11.2015

  • Порядок, определяющий организацию, хранения и именования данных на носителях информации в компьютерах. Классификация файловых систем. Основные функции файловой системы Linux. Нарушения целостности файловой системы при некорректном завершении работы.

    презентация [405,2 K], добавлен 10.10.2011

  • Linux – одна из наиболее популярных распространяемых бесплатно операционных систем. Работа с базовым ограниченным набором программ по умолчанию. Характеристика основных программ, которые расширяют возможности операционной системы Linux для пользователя.

    презентация [486,5 K], добавлен 09.10.2013

  • Понятие операционной системы. Фундаментальные особенности Linux. Обзор основных качеств. Программное и аппаратное обеспечение, безопасность системы. Преимущества ОС - общественная доступность проекта, открытость, бесплатность, развитая оболочка.

    реферат [63,2 K], добавлен 09.01.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.