Министерство образования и науки Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
____________________________________________________________________
Гунько А.В.
СИСТЕМНОЕ ПРОГРАММНОЕ
ОБЕСПЕЧЕНИЕ
Новосибирск
2011
Рецензенты: А.А. Малявко, канд. техн. наук, доцент,
А.Б. Колкер, канд. техн. наук, доцент
Работа подготовлена на кафедре автоматики
Новосибирского государственного технического университета
для студентов 4 курса
по направлению 220200 «Автоматизация и управление»
Гунько А.В.
Системное программное обеспечение. Конспект лекций. – Новосибирск: Изд-во НГТУ, 2011.– 127 с.
В конспекте лекций изложены основные сведения об организации операционных систем и сред, обсуждаются методы и средства разработки многозадачного и многопоточного программного обеспечения в операционных системах семейства Windows и Linux, а также средства межзадачной и межпоточной коммуникации: неименованные и именованные каналы, семафоры, очереди сообщений, разделяемая память, взаимные исключения и условные переменные.
Конспект лекций может быть полезен студентам и аспирантам ряда других технических специальностей, связанных с разработкой многозадачного и многопоточного программного обеспечения.
©
Новосибирский государственный технический университет, 2011
1. Операционные системы и среды
1.1. Определение и состав системного программного обеспечения
Под системным программным обеспечением
(
System Software) понимаются программы и комплексы программ, являющиеся общими для всех, кто совместно использует технические средства компьютера, и применяемые как для автоматизации разработки новых программ, так и для организации выполнения программ существующих. С этих позиций системное программное обеспечение может быть разделено на следующие пять групп:
-
Операционные системы;
-
Системы управления файлами;
-
Интерфейсные оболочки для взаимодействия пользователя с ОС и программные среды;
-
Системы программирования;
-
Утилиты.
Рассмотрим вкратце эти группы системных программ.
1.1.1. Операционные системы
Под
операционной системой (ОС) понимают комплекс управляющих и обрабатывающих программ, который, с одной стороны, выступает как интерфейс между аппаратурой компьютера и пользователем с его задачами, а с другой — предназначен для наиболее эффективного использования ресурсов вычислительной системы и организации надежных вычислений [1]. Любой из компонентов прикладного программного обеспечения обязательно работает под управлением ОС. На рис. 1.1 изображена обобщенная структура программного обеспечения вычислительной системы. Видно, что ни один из компонентов программного обеспечения, за исключением самой ОС, не имеет непосредственного доступа к аппаратуре компьютера. Даже пользователи взаимодействуют со своими программами через интерфейс ОС. Любые их команды, прежде чем попасть в прикладную программу, сначала проходят через ОС.
Основными функциями, которые выполняет ОС, являются следующие:
Рис. 1.1. Структура системного программного обеспечения
-
прием от пользователя (или от оператора системы) заданий или команд, сформулированных на соответствующем языке - в виде директив (команд) оператора или в виде указаний (своеобразных команд) с помощью соответствующего манипулятора (например, с помощью мыши), - и их обработка;
-
прием и исполнение программных запросов на запуск, приостановку, остановку других программ;
-
обеспечение работы систем управлений файлами (СУФ) и/или систем управления базами данных (СУБД), что позволяет резко увеличить эффективность всего программного обеспечения;
-
обеспечение режима мультипрограммирования, то есть выполнение двух или более программ на одном процессоре, создающее видимость их одновременного исполнения;
-
обеспечение функций по организации и управлению всеми операциями ввода/вывода;
-
удовлетворение жестким ограничениям на время ответа в режиме реального времени (характерно для соответствующих ОС);
-
распределение памяти, а в большинстве современных систем и организация виртуальной памяти;
-
планирование и диспетчеризация задач в соответствии с заданными стратегией и дисциплинами обслуживания;
-
организация механизмов обмена сообщениями и данными между выполняющимися программами;
-
защита одной программы от влияния другой; обеспечение сохранности данных;
-
предоставление услуг на случай частичного сбоя системы;
-
обеспечение работы систем программирования, с помощью которых пользователи готовят свои программы.
1.1.2. Системы управления файлами
Назначение
системы управления файлами — организация более удобного доступа к данным, организованным как файлы. Именно благодаря системе управления файлами вместо низкоуровневого доступа к данным с указанием конкретных физических адресов нужной нам записи используется логический доступ с указанием имени файла и записи в нем.
Выделение этого вида системного программного обеспечения в отдельную категорию представляется целесообразным, поскольку ряд ОС позволяет работать с несколькими файловыми системами (либо с одной из нескольких, либо сразу с несколькими одновременно). В этом случае говорят о монтируемых файловых системах, и в этом смысле они самостоятельны. Более того, можно назвать примеры простейших ОС, которые могут работать и без файловых систем, а значит, им необязательно иметь систему управления файлами, либо они могут работать с одной из выбранных файловых систем.
1.1.3. Интерфейсные оболочки
Основное назначение
интерфейсных оболочек — прием от пользователя команд, сформулированных на соответствующем языке в виде команд оператора, или в виде указаний (своеобразных команд) с помощью графического манипулятора. Интерфейсные оболочки могут также расширять возможности по управлению ОС, либо изменять встроенные в систему возможности. Интерфейсные оболочки могут быть текстовыми (NC, VC для DOS, FAR для Windows, MC для UNIX/Linux) и графическими (KDE, Gnome для Linux).
Интерфейс также необходим программам для обращения к ОС с целью получить определенный сервис — выполнить операцию ввода/вывода, получить или освободить участок памяти и т. д. В случае, если программа реализована для другой ОС, то для ее нормальной работы в текущей ОС нужны соответствующие средства:
-
VDM (Virtual DOS machine) для выполнения DOS-программ в Windows 9x/NT/2000;
-
WINE для выполнения Windows-программ в Linux.
Существуют также программы-эмуляторы, позволяющие смоделировать в одной операционной системе какую-либо другую операционную систему (VMWare Workstation, VirtualPC, VirtualBox).
1.1.4. Системы программирования
Система программирования представлена такими компонентами, как транслятор с соответствующего языка программирования, библиотеки подпрограмм, редакторы, компоновщики и отладчики.
Не бывает самостоятельных (оторванных от ОС) систем программирования. Любая система программирования может работать только в соответствующей ОС, под которую она и создана, однако при этом она может позволять разрабатывать программное обеспечение и под другие ОС. Так, коммерческая система программирования Kylix на языке C/C++ от фирмы Borland (ныне не поддерживаемая) и инструментарий разработки ПО на языке программирования C++ Qt 4.х, распространяемый по лицензии GNU GPL позволяют получать программы, разрабатываемые в Windows, в версиях для Windows и для Linux.
В том случае, когда создаваемые программы должны работать совсем на другой аппаратной базе, говорят о кросс-системах. Так, для ПК на базе микропроцессоров семейства i80x86 имеется большое количество кросс-систем, позволяющих создавать программное обеспечение для различных микропроцессоров и микроконтроллеров.
1.1.5. Утилиты
Утилиты — специальные системные программы, с помощью которых можно как обслуживать саму операционную систему, так и подготавливать для работы носители данных, выполнять перекодирование данных, осуществлять оптимизацию размещения данных на носителе и производить некоторые другие работы, связанные с обслуживанием вычислительной системы. К утилитам следует отнести и программу разбиения накопителя на магнитных дисках на разделы, и программу форматирования.
Естественно, что утилиты могут работать только в соответствующей операционной среде.
следующая страница>