Лекция системное программирование. Лекция 1. Задачи, архитектуры, виды
Скачать 0.64 Mb.
|
1 Введение в системное программирование Системное ПО: понятие, состав. Операционная система: задачи, архитектуры, виды. Цель: изучение основ системного программного обеспечения, средств современного системного программирования на примере операционной системе Windows, приемов системного программирования для решения широкого круга задач. Задачи: изучить основные понятия вычислительная машина, вычислительная система, информационная система; познакомиться с системным программным обеспечением; познакомиться с назначением и основными задачами операционных систем. Традиционно, программы, работающие на компьютере, можно разделить на следующие категории: прикладные программы, непосредственно обеспечивающие выполнение необходимых пользователям работ - редактирование текстов, рисование картинок, обработка информационных массивов и т. д.; системные программы - служат для нормальной работы аппаратных устройств компьютера, сети, управления прикладными программами и других служебных целей. Некоторые специалисты отдельно выделяют также и инструментальные системы (системы программирования), обеспечивающие создание новых программ для компьютера. Однако последнюю категорию зачастую также относят к классу системных программ. Прикладные программы предназначены для решения функциональных задач, они выполняют обработку информации различных предметных областей. Это самый многочисленный класс программных продуктов. Системное программное обеспечение (СПО) – совокупность служебных программ, предназначенных для выполнения следующих задач: общего управления системой на всех этапах вычислительного процесса; предоставления унифицированного доступа прикладных программ к ресурсам ВС; написания программ как таковых, представления их в виде загружаемых и исполняемых кодов; 2 предоставления специализированных сервисов общего назначения; обеспечения защиты ВС, конфиденциальности и сохранности пользовательских данных; предоставления доступа к внешним ресурсам, в т.ч. других ВС. Рассмотрение СПО неразрывно связано с понятием вычислительной системы. Вычислительная система – совокупность аппаратных и программных средств (рис. 1), предназначенная для решения вычислительных задач (выполнения вычислительных процессов). Аппаратное обеспечение ВС – совокупность физических устройств (электронных компонентов), связанная шинами передачи данных, реализующая вычислительный процесс. Программное обеспечение ВС – совокупность программ и данных, обеспечивающих организацию вычислительного процесса и управление им. Рисунок 1. Компоненты ВС и виды СПО Любая ВС имеет многоуровневую иерархическую структуру, подобную приведенной на рис. 2, где цветом выделены компоненты, относящиеся к системному программному обеспечению. Системное программное обеспечение реализует связь аппаратного и программного 3 обеспечения, выступая как "межслойный интерфейс" с одной стороны которого аппаратура, а с другой приложения пользователя. Рис. 2. Иерархия компонентов ВС Из этой иерархии видно, что системное ПО занимает промежуточное место между аппаратной частью ВС и прикладным ПО, что и определяет функционирование СПО как «посредника» в диалоге пользователя с компьютером. Строго говоря, СПО предоставляет интерфейс к вычислительным ресурсам системы (аппаратным и программным). В числе средств, представляемых этим интерфейсом следующие виды СПО: драйверы устройств – библиотеки функций, предоставляющих доступ к возможностям оборудования конкретных типов (например принтеров, сетевых адаптеров и т.п.); операционная система (ОС) – управляющая программа (как правил, набор программ), обеспечивающая доступ пользовательских программ к аппаратным ресурсам компьютера; загрузчики – программы, выполняющие загрузку исполнимого кода в основную память системы; трансляторы – программы, предназначенные для преобразования исходных кодов в исполняемые; утилиты – специализированные программы служебного назначения, предназначенные, например, для повышения надежности или производительности системы в целом; системные сервисы – программы, выполняющие специализированные функции общего назначения (например, доступ к разделяемым ресурсам). Наиболее значимым видом системного программного обеспечения являются операционные системы. Операционная система (ОС) - это комплекс программ, который обеспечивает управление аппаратными средствами компьютера, организует 4 работу с файлами (в том числе запуск и управление выполнением программ), а также реализует взаимодействие с пользователем, то есть интерпретацию 5 вводимых пользователем команд и вывод результатов обработки этих команд. Операционная система предназначена для управления выполнением пользовательских программ, планирования и управления вычислительными ресурсами ЭВМ. Операционная система, с одной стороны, выступает как интерфейс между аппаратурой компьютера и пользователем с его задачами, с другой стороны, предназначена для эффективного использования ресурсов вычислительной системы и организации надежных вычислений. Помимо рассмотренных, можно выделить еще одну группу программ, занимающих промежуточное положение между СПО и прикладным программным обеспечением. Это - специальное программное обеспечение информационных и управляющих систем. К специальному программному обеспечению информационных и управляющих систем относятся программы (системы) управления базами данных; программы управления языком интерфейса информационных систем; программы сбора и предварительной обработки информации (в информационно-измерительных системах, например, бортовые системы). ПО этого класса часто оказывается скрытым в составе драйверов оборудования или поставляется в виде библиотек функционального расширения языков программирования. Поэтому часто такие ПО относят к системному программному обеспечению. Мы будем считать ПО такого типа отдельным классом и в курсе “СПО” рассматривать не будем. Что касается непосредственно СПО, то данный класс программных продуктов тесно связан с типом компьютера и является его неотъемлемой частью. Программные продукты данного класса в основном ориентированы на квалифицированных пользователей - профессионалов в компьютерной области: системного программиста, администратора сети, прикладного программиста, оператора. Однако знание базовой технологии работы с этим классом программных продуктов требуется и конечным пользователям персонального компьютера, которые самостоятельно не только работают со своими программами, но и выполняют обслуживание компьютера, программ и данных. 6 К системным программным продуктам предъявляются высокие требования по надежности и технологичности работы, удобству и эффективности использования. Классификация системного программного обеспечения В СПО традиционно включают системные управляющие и системные обрабатывающие программы. Управляющие системные программы организуют корректное функционирование всех устройств системы. Основные системные функции управляющих программ - управление вычислительными процессами и вычислительными комплексами и работа с внутренними данными ОС. Как правило, они находятся в основной памяти. Это резидентные программы, составляющие ядро ОС. Управляющие программы, которые загружаются в память непосредственно перед выполнением, называю транзитными (transitive). В настоящее время системные управляющие программы поставляются фирмами-разработчиками и фирмами-дистрибьюторами в виде инсталляционных пакетов операционных систем и драйверов специальных устройств. Обрабатывающие системные программы выполняются как специальные прикладные задачи, или приложения. Эти программы поставляются чаще в виде дистрибутивных пакетов, включающих ПО Замечание. В пакеты системных программ помимо основных программ, допускающих реконфигурацию, входят специальные настроечные программы, называемые программами инсталляции. МЫ будем создавать и такие программы. Другая классификация Часто Системное ПО компьютера подразделяют на БАЗОВОЕ и СЕРВИСНОЕ программное обеспечение. БАЗОВОЕ программное обеспечение (base software) - минимальный набор программных средств, обеспечивающих работу компьютера. К базовому программному обеспечению компьютера относятся операционные системы и драйверы в составе ОС; интерфейсные оболочки для взаимодействия пользователя с ОС (операционные оболочки) и программные среды; системы управления файлами. 7 Что такое ОС и для чего она предназначена мы кратко рассмотрели ранее. Системы управления файлами предназначены для организации более удобного доступа к данным, организованным как файлы. Вместо низкоуровневого доступа к данным с указанием конкретных физических адресов система управления файлами позволяет использовать логический доступ с указанием имени файла. Любая система управления файлами не существует сама по себе - она разработана для работы в конкретной ОС и с конкретной файловой системой. То есть можно было бы систему управления файлами отнести к ОС. Но в связи с тем, что 1) ряд ОС позволяет работать с несколькими файловыми системами (либо с одной из нескольких, либо сразу с несколькими одновременно); а дополнительную файловую систему можно установить (т.е. они самостоятельны) 2) простейшие ОС могут работать и без файловых систем; системы управления файлами выделяются в отдельную группу системных программ. Заметим, что часто в специальной литературе системы управления файлами относят все-таки к операционным системам. СЕРВИСНОЕ программное обеспечение - программы и программные комплексы, которые расширяют возможности базового программного обеспечения и организуют более удобную среду работы пользователя. Это набор сервисных, дополнительно устанавливаемых программ, которые можно классифицировать по функциональному признаку следующим образом: драйверы специфических и специальных устройств (те, которые не поставляются в составе ОС). программы диагностики работоспособности компьютера; антивирусные программы, обеспечивающие защиту компьютера, обнаружение и восстановление зараженных файлов; программы обслуживания дисков, обеспечивающие проверку качества поверхности магнитного диска, контроль сохранности файловой системы на логическом и физической уровнях, сжатие дисков, создание страховых копий дисков, резервирование данных на внешних носителях и др.; программы архивирования данных, которые обеспечивают процесс сжатия информации в файлах с целью уменьшения объема памяти для ее хранения; программы обслуживания сети. Эти программы часто называются утилитами. (Заметим, что к антивирусным средствам этот термин обычно не применяется) 8 Утилиты - программы, служащие для выполнения вспомогательных операций обработки данных или обслуживания компьютеров (диагностики, тестирования аппаратных и программных средств, оптимизации использования дискового пространства, восстановления разрушенной на магнитном диске информации и т.п.). Наибольшее распространение сегодня имеют комплекты утилит: Norton Utilities - фирма Symantec; Checkit PRO Deliuxe 2.0 - фирма Touch Stone; PC Tools for Windows 2.0; программа резервного копирования HP Colorado Backup for Windows 95. Отдельно вспомним о такой группе системного ПО как системы программирования. Это набор специализированных программных продуктов, которые являются инструментальны средствами разработчика. Программные продукты данного класса поддерживают все этапы процесса программирования, отладки и тестирования создаваемых программ. Система программирования включает следующие программные компоненты: редактор текста; компоновщик (редактор связей); отладчик; библиотеки подпрограмм. Заметим, что любая система программирования может работать только в соответствующей ОС, под которую она и создана, однако при этом она может позволять разрабатывать программное обеспечение и под другие ОС. Например, одна из популярных систем программирования на языке С/С++ от фирмы Watcom для OS/2 позволяет получать программы и для самой OS/2, и для DOS, и для Windows. Редактор текста - это программа для ввода и модификации текста. Трансляторы предназначены для преобразования программ, написанных на языках программирования, в программы на машинном языке. Программа, подготовленная на каком-либо языке программирования, называется исходным модулем. В качестве входной информации трансляторы применяют исходные модули и формируют в результате своей работы объектные модули, являющиеся входной информацией для редактора связей. Объектный модуль содержит текст программы на машинном языке и дополнительную информацию, обеспечивающую настройку модуля по месту его загрузки и объединение этого модуля с другими независимо оттранслированными модулями в единую программу. Трансляторы делятся на два класса: компиляторы и интерпретаторы. Компиляторы переводят весь исходный модуль на машинный язык. 9 Интерпретатор последовательно переводит на машинный язык и выполнят операторы исходного модуля (У интерпретаторов два основных недостатка. Первый - низкая скорость работы интерпретируемых программ.) Преимущество интерпретатора перед компилятором состоит в том, что программа пользователя имеет одно представление - в виде текста. При компиляции одна и та же программа имеет несколько представлений - в виде текста и в виде выполняемого файла. Компоновщик, или редактор связей - системная обрабатывающая программа, редактирующая и объединяющая объектные (ранее оттраслированные) модули в единые загрузочные, готовые к выполнению программные модули. Загрузочный модуль может быть помещен ОС в основную память и выполнен. Отладчик позволяет управлять процессом исполнения программы, является инструментом для поиска и исправления ошибок в программе. Базовый набор функций отладчика включает: пошаговое выполнение программы (режим трассировки) с отображением результатов, остановка в заранее определенных точках, возможность остановки в некотором месте программы при выполнении некоторого условия; изображение и изменение значений переменных. Загрузчик - системная обрабатывающая программа, объединяющая основные функции редактора связей и программы выборки в одном пункте задания. Загрузчик помещает находящиеся в его входном наборе данных объектные и загрузочные модули в оперативную память, объединяет их в единую программу, корректирует перемещаемые адресные константы с учетом фактического адреса загрузки и передает управление в точку входа созданной программы. Средства сетевого доступа обеспечивают обработку, передачу и хранение данных в сети. Заметим, что чаще говорят о сетевых операционных системах, которые предоставляют пользователям различные виды сетевых служб (управление файлами, электронная почта, процессы управления сетью и др.) Ключом к использованию этих ресурсов является сервер, специальная программа на компьютере, подключенному к сети, которая принимает запросы (или команды) и посылает ответы автоматически. Программы, предназначенные для подачи запросов серверу, называются программами-клиентами. Сервер предназначен для их обслуживания. Клиент посылает запросы пользователя на сервер, используя 1 0 стандартизированный формат, называемый протоколом. Ответ сервера содержит информацию, представленную в виде файла, содержащего данные того или иного формата. Постоянно ведется разработка все новых программ-клиентов, предлагающих более удобные способы взаимодействия с сервером. Пример. Приложения Mozilla Fire4fox, Internet Explorer, Google Chrome - программы- клиенты. Таким образом, в системном ПО мы выделили пять групп системных программ: операционные системы; интерфейсные оболочки для взаимодействия пользователя с ОС (операционная оболочка) и программные среды; системы управления файлами; системы программирования; утилиты; средства сетевого доступа. Требования к системному программному обеспечению Системные программы должны удовлетворять следующим требованиям: прозрачность работы; гарантированная надежность выполнения в соответствии со спецификациями; (Функциональные требования называются спецификациями) максимальная скорость выполнения; минимальные затраты на хранение машинных кодов; поддержка стандартных средств связи с прикладными программами. Эффективность системных программ зависит от времени их создания и надежности исполняемого кода. Выводы: Требование эффективности системных программ вызывает необходимость использования специальных языков машинно-ориентированных типа языка Assembler и высокого уровня типа C или C++. К типам данных этих языков отнесены указатели на данные различных типов или адреса данных и программных объектов. Работа с большинством пакетов для разработки системного программного обеспечения предполагает знание и использование ассемблера для создания модулей и ассемблерных вставок. |