А. В. Яковлев Операционные системы и системное программирование Раздел Операционная система unix учебное пособие
Вид материала | Учебное пособие |
Содержание4. Мобильное программирование в среде ОС UNIX. Стандартные библиотеки 4.1. Библиотека системных вызовов 4.2. Библиотека ввода/вывода |
- Ые системы", "Операционные системы, среды и оболочки" и "Операционные системы и системное, 1294.27kb.
- Программа вступительного экзамена по специальности 05. 13. 18 Математическое моделирование,, 115.33kb.
- Учебное пособие Часть 1 основы персонального компьютера. Операционные системы, 1386.35kb.
- М. В. Ломоносова Факультет вычислительной математики и кибернетики Н. В. Вдовикина,, 2124.49kb.
- Unix-подобные операционные системы, характеристики, особенности, разновидности, 40.63kb.
- Программа-минимум кандидатского экзамена по специальности 05. 13. 12 «Системы автоматизации, 99.32kb.
- Общий курс физики т-1 Механика: учебное пособие М.: Физматлит, 2002. Сивухин Д. В.,, 679.32kb.
- Учебное пособие на тему: «windows xp, файловые системы и оптимизация работы», 29.32kb.
- Рабочая программа учебной дисциплины (модуля) Системное программирование, 108.12kb.
- Конспект лекций по дисциплинам «Информатика и компьютерная техника», 550.15kb.
4. Мобильное программирование в среде ОС UNIX.
Стандартные библиотеки
Одним из основных преимуществ семейства операционных систем типа UNIX и возникшего на их основе подхода к стандартизации интерфейсов операционных систем (важная часть общего подхода открытых систем) является то, что они обеспечивают единую операционную среду на компьютерах с разной архитектурой. Конечно, в начальном периоде истории ОС UNIX эта единообразность операционной среды являлась следствием мобильности единого текстового варианта системы. Когда начали появляться варианты ОС UNIX с разными исходными текстами, единообразность операционной среды стала нарушаться. И разработчикам ОС, и поставщикам аппаратных и программных средств было понятно, что складывающаяся ситуация наносит урон и производителям, и пользователям. Вместе с тем уже нельзя было надеяться, что когда-нибудь удастся вернуться к единой реализации ОС UNIX. Выход был найден на пути стандартизации интерфейсов и семантики программных средств разного уровня, которые должна поддерживать любая операционная система, претендующая на операционную совместимость с ОС UNIX.
Конечно, и до сих пор в разных реализациях ОС UNIX операционные среды несколько отличаются. Иногда бывает так, что утрачивается операционная совместимость даже при выпуске новой версии ОС. Но тем не менее, можно говорить о некотором общем подмножестве операционных средств, которые полностью стандартизованы и должны поддерживаться любым современным вариантом ОС UNIX. Этого подмножества оказывается достаточно для создания широкого класса мобильных приложений (хотя, конечно, некоторые особо сложные приложения, в особенности связанные с реальным временем, пока удается делать мобильными только при использовании единой реализации ОС UNIX). В этой части будут рассмотрены основные приемы прикладного мобильного программирования в среде ОС UNIX, неявно подразумевая использование языка Си.
Замечание: язык Си был и остается основным инструментом мобильного программирования в среде UNIX-систем. Многие считают, что более удобно, эффективно и надежно использовать языки объектно-ориентированного программирования, среди которых в настоящее время наиболее распространен язык Си++. Однако поддержка мобильного программирования на Си++ пока гораздо слабее, чем в случае Си. Можно, правда, надеяться, что после принятия летом 1995 г. Международного стандарта языка Си++, который включает стандарты наиболее важных библиотек классов, через некоторое время такая поддержка появится.
Очевидным требованием к операционной среде, поддерживающей мобильное прикладное программирование, является то, что все функции, предоставляемые ею прикладной программе, должны быть четко специфицированы и должны точно соответствовать этим спецификациям в любой реализации операционной среды. В UNIX-ориентированных средах это требование удовлетворяется за счет наличия нескольких стандартизованных библиотек функций и соответствующих наборов файлов заголовков (header-файлов).
4.1. Библиотека системных вызовов
Базовой библиотекой любого варианта системы UNIX является библиотека системных вызовов. Сейчас невозможно найти два варианта ОС UNIX с разными названиями, наборы системных вызовов которых полностью бы совпадали. Однако любой такой вариант поддерживает системные вызовы, которые специфицированы в стандартах, упоминаемых далее. К полностью стандартным системным вызовам относятся системные вызовы для работы с файлами (включая специальные файлы), системные вызовы для управления процессами (fork и семейство exec), системные вызовы класса IPC. Пользователя, стремящегося создать мобильное приложение с использованием системных вызовов, не должны волновать детали реализации. Важно, чтобы состав системных вызовов, их интерфейсы и семантика соответствовали стандартам.
Теперь можно сформулировать правило прикладного мобильного программирования с использованием системных вызовов:
проектируя и разрабатывая прикладную систему, убедитесь, что вы не используете системные вызовы, не входящие в стандарт.
Придерживаясь этого правила, с большой вероятностью вы не будете иметь проблем с переносом программы в среду другого варианта ОС UNIX по причине несовместимости наборов системных вызовов.
4.2. Библиотека ввода/вывода
Традиционной для ОС UNIX библиотекой функций более высокого уровня, чем библиотека системных вызовов, является так называемая стандартная библиотека ввода/вывода (stdio). Основной набор функций этой библиотеки служит для выполнения файловых операций с буферизацией данных в памяти пользовательского процесса. Библиотека ввода/вывода фактически стандартизована очень давно, и ею можно безопасно пользоваться в любой операционной среде. В частности, единообразные библиотеки ввода/вывода поддерживаются во всех современных реализациях системы программирования языка Си, выполненных не в среде ОС UNIX (включая реализации в среде MS-DOS).
Поэтому можно сформулировать правило мобильного программирования с использованием библиотеки ввода/вывода:
если для разрабатываемой вами прикладной программы достаточно возможностей библиотеки ввода/вывода, ограничьтесь использованием этой библиотеки.
Придерживаясь этого правила, с большой вероятностью вы не будете иметь проблем, связанных с вводом/выводом, при переносе вашей программы в любую операционную среду (не обязательно UNIX-ориентированную), в которой поддерживается стандартная библиотека ввода/вывода.