|
|
Вопрос 1

1. Классификация программного обеспечения
Назначением ЭВМ является выполнение программ. Программа содержит команды,
определяющие порядок действии компьютера. Совокупность программ для
компьютера образует программное обеспечение (ПО). По
функциональному признаку различают системное и прикладное программное
обеспечение.
В первом приближении все программы, работающие на компьютере, можно условно
разделить на три категории (смотри рисунок):
1.
прикладные программы, непосредственно обеспечивающие выполнение
необходимых пользователям работ;
2.
системные программы, выполняющие различные вспомогательные функции,
например:
-
управление ресурсами
компьютера;
-
создание копий
используемой информации;
-
проверка
работоспособности устройств компьютера;
-
выдача справочной
информации о компьютере и др.;
3.
инструментальные программные системы, облегчающие процесс создания
новых программ для компьютера.

При
построении классификации ПО нужно учитывать тот факт, что стремительное
развитие вычислительной техники и расширение сферы приложения компьютеров
резко ускорили процесс эволюции программного обеспечения.
Если раньше можно было по пальцам перечислить основные категории ПО —
операционные системы, трансляторы, пакеты прикладных программ, то сейчас
ситуация коренным образом изменилась.
Развитие ПО пошло как вглубь (появились новые подходы к построению
операционных систем, языков программирования и т.д.), так и вширь
(прикладные программы перестали быть прикладными и приобрели самостоятельную
ценность).
Соотношение между требующимися программными продуктами и имеющимися на рынке
меняется очень быстро. Даже классические программные продукты, такие, как
операционные системы, непрерывно развиваются и наделяются интеллектуальными
функциями, многие из которых ранее относились только к интеллектуальным
возможностям человека.
Кроме того, появились нетрадиционные программы, классифицировать которые по
устоявшимся критериям очень трудно, а то и просто невозможно, как, например,
программа — электронный собеседник.
На сегодняшний день можно сказать, что более или менее определённо сложились
следующие группы программного обеспечения:
-
операционные системы и
оболочки;
-
системы
программирования (трансляторы, библиотеки подпрограмм, отладчики и
т.д.);
-
инструментальные
системы;
-
интегрированные пакеты
программ;
-
динамические
электронные таблицы;
-
системы машинной
графики;
-
системы управления
базами данных (СУБД);
-
прикладное программное
обеспечение.
Структура программного обеспечения показана на рисунке. Разумеется, эту
классификацию нельзя считать исчерпывающей, но она более или менее наглядно
отражает направления совершенствования и развития программного обеспечения.

2. Системное
программное обеспечение
Системное (базовое) ПО - программное обеспечение, включающее в себя
операционные системы, сетевое ПО, сервисные программы, а также средства
разработки программ (трансляторы, редакторы связей, отладчики и пр.).
Основные функции операционных систем (ОС) заключаются в
управлении ресурсами (физическими и логическими) и процессами вычислительных
систем. Физическими ресурсами являются: оперативная намять, процессор,
монитор, печатающее устройство, магнитные и оптические диски. К логическим
ресурсам можно отнести программы, файлы, события и т. д. Под процессом
понимается некоторая последовательность действий, предписанная
соответствующей программой и используемыми ею данными.
В настоящее время существует большое количество ОС, разработанных для ЭВМ
различных типов. На ЭВМ Единой Системы (ЕС ЭВМ), например, используются
такие операционные системы, как СВМ и ОС ЕС, на малых ЭВМ (СМ-4, СМ-1420 и
др.) - ОС РВ и RSX-11 М, на ПЭВМ - DOS 6.22, Windows 95, Windows NT, Unix,
OS/ 2.
Сетевое ПО предназначено для управления общими ресурсами в
распределенных вычислительных системах: сетевыми накопителями на магнитных
дисках, принтерами, сканерами, передаваемыми сообщениями и т. д. К сетевому
ПО относят ОС, поддерживающие работу ЭВМ в сетевых конфигурациях (так
называемые сетевые ОС), а также отдельные сетевые программы (пакеты),
используемые совместно с обычными, не сетевыми ОС.
Например, большое распространение получили следующие сетевые ОС: NetWare 4.1
(4)ирма Novell), Windows NT Server 3.5 (фирма Microsoft) и LAN Server 4.0
Advanced (фирма IBM).
Для расширения возможностей операционных систем и предоставления набора
дополнительных услуг используются сервисные программы. Их
можно разделить на следующие группы:
-
интерфейсные системы;
-
оболочки операционных
систем;
-
утилиты.
Интерфейсные системы
являются естественным продолжением операционной системы
и модифицируют как пользовательский, так и программный интерфейсы, а также
реализуют дополнительные возможности по управлению ресурсами ЭВМ. В связи с
тем, что развитая интерфейсная система может изменить весь пользовательский
интерфейс, часто их также называют операционными системами. Эго относится,
например, к Windows 3.11 и Windows 3.11 for Work Groups (для рабочих групп).
Оболочки операционных систем, в отличие от интерфейсных
систем, модифицируют только пользовательский интерфейс, предоставляя
пользователю качественно новый интерфейс по сравнению с реализуемым
операционной системой. Такие системы существенно упрощают выполнение часто
запрашиваемых функций, например, таких операций с файлами, как копирование,
переименование и уничтожение, а также предлагают пользователю ряд
дополнительных услуг. В целом, программы-оболочки заметно повышают уровень
пользовательского интерфейса, наиболее полно удовлетворяя потребностям
пользователя.
На ПЭВМ широко используются такие программы-оболочки, как Norton Commander и
DOS Navigator.
Утилиты предоставляют пользователям средства обслуживания
компьютера и его ПО. Они обеспечивают реализацию следующих действий:
-
обслуживание магнитных
дисков;
-
обслуживание файлов и
каталогов;
-
предоставление
информации о ресурсах компьютера;
-
шифрование информации;
-
защита от компьютерных
вирусов;
-
архивация файлов и др.
Существуют отдельные утилиты, используемые для решения одного из
перечисленных действий, и многофункциональные утилиты. В настоящее время для
ПЭВМ среди многофункциональных утилит одним из наиболее совершенных является
комплект утилит Norton Utilities. Существуют его версии для использования в
среде DOS и Windows.
Средства разработки программ используются для разработки
нового программного обеспечения как системного, так и прикладного.
3. Прикладное
программное обеспечение
Прикладным называется ПО, предназначенное для решения
определенной целевой задачи из проблемной области. Часто такие программы
называют приложениями. Спектр проблемных областей в настоящее время весьма
широк.
Из всего разнообразия прикладного ПО выделяют группу наиболее
распространенных программ (типовые пакеты и программы), которые можно
использовать во многих областях человеческой деятельности.
К типовому прикладному ПО относят следующие программы:
• текстовые процессоры;
• табличные процессоры;
• системы иллюстративной и деловой графики (графические процессоры);
• системы управления базами данных;
• экспертные системы;
• программы математических расчетов, моделирования и анализа
экспериментальных данных.
Предлагаемые на рынке ПО приложения, в общем случае, могут быть выполнены
как отдельные программы либо как интегрированные системы. Интегрированными
системами обычно являются экспертные системы, программы математических
расчетов, моделирования и анализа экспериментальных данных, а также офисные
системы. Примером мощной и широко распространенной интегрированной системы
является офисная система Microsoft Office.
4. Операционные системы
Операционная система (ОС)
- система программ, предназначенная для управления
устройствами ЭВМ, управления обработкой и хранением данных, обеспечения
пользовательского интерфейса.
Операционная система обычно хранится во внешней памяти компьютера — на
диске. При включении компьютера она считывается с дисковой памяти и
размещается в ОЗУ.
Этот процесс называется загрузкой операционной системы.
В функции операционной системы входит:
• осуществление диалога с пользователем;
• ввод-вывод и управление данными;
• планирование и организация процесса обработки программ;
• распределение ресурсов (оперативной памяти и кэша, процессора, внешних
устройств);
• запуск программ на выполнение;
• всевозможные вспомогательные операции обслуживания;
• передача информации между различными внутренними устройствами;
• программная поддержка работы периферийных устройств (дисплея, клавиатуры,
дисковых накопителей, принтера и др.).
В зависимости от количества одновременно обрабатываемых задач и числа
пользователей, которых могут обслуживать ОС, различают четыре основных
класса операционных систем:
1. однопользовательские однозадачные, которые поддерживают одну
клавиатуру и могут работать только с одной (в данный момент) задачей;
2. однопользовательские однозадачные с фоновой печатью, которые
позволяют помимо основной задачи запускать одну дополнительную задачу,
ориентированную, как правило, на вывод информации на печать. Это ускоряет
работу при выдаче больших объёмов информации на печать;
3. однопользовательские многозадачные, которые обеспечивают одному
пользователю параллельную обработку нескольких задач. Например, к одному
компьютеру можно подключить несколько принтеров, каждый из которых будет
работать на "свою" задачу;
4. многопользовательские многозадачные, позволяющие на одном
компьютере запускать несколько задач нескольким пользователям. Эти ОС очень
сложны и требуют значительных машинных ресурсов.
В различных моделях компьютеров используют операционные системы с разной
архитектурой и возможностями. Для их работы требуются разные ресурсы. Они
предоставляют разную степень сервиса для программирования и работы с
готовыми программами.
Операционная система для персонального компьютера, ориентированного на
профессиональное применение, должна содержать следующие основные компоненты:
• программы управления вводом/выводом;
• программы, управляющие файловой системой и планирующие задания для
компьютера;
• процессор командного языка, который принимает, анализирует и выполняет
команды, адресованные операционной системе.
Каждая операционная система имеет свой командный язык, который позволяет
пользователю выполнять те или иные действия:
• обращаться к каталогу;
• выполнять разметку внешних носителей;
• запускать программы;
• ... другие действия.
Анализ и исполнение команд пользователя, включая загрузку готовых программ
из файлов в оперативную память и их запуск, осуществляет командный процессор
операционной системы.
Для управления внешними устройствами компьютера используются специальные
системные программы — драйверы. Драйверы стандартных устройств образуют в
совокупности базовую систему ввода-вывода (BIOS), которая обычно заносится в
постоянное ЗУ компьютера.
Современные операционные системы для ПЭВМ отличаются друг от друга, прежде
всего ориентацией на машины определенного класса, поддерживаемыми ими
режимами обработки, предоставляемыми сервисными возможностями. Примерами ОС
для ПЭВМ являются СР/М, MS DOS, OS/2 Warp (IBM), Windows 95 (Microsoft).
5. Системы программирования
Система программирования — это система для разработки новых программ на
конкретном языке программирования.
Современные системы программирования обычно предоставляют пользователям
мощные и удобные средства разработки программ. В них входят:
• компилятор или интерпретатор;
• интегрированная среда разработки;
• средства создания и редактирования текстов программ;
• обширные библиотеки стандартных программ и функций;
• отладочные программы, т.е. программы, помогающие находить и устранять
ошибки в программе;
• "дружественная" к пользователю диалоговая среда;
• многооконный режим работы;
• мощные графические библиотеки; утилиты для работы с библиотеками
• встроенный ассемблер;
• встроенная справочная служба;
• другие специфические особенности.
Популярные системы программирования – Turbo Basic, Quick Basic, Turbo
Pascal, Turbo C.
В последнее время получили распространение системы программирования,
ориентированные на создание Windows-приложений:
|


|
пакет Borland Delphi (Дельфи) — блестящий наследник
семейства компиляторов Borland Pascal, предоставляющий качественные
и очень удобные средства визуальной разработки. Его исключительно
быстрый компилятор позволяет эффективно и быстро решать практически
любые задачи прикладного программирования.
пакет Microsoft Visual Basic — удобный и популярный
инструмент для создания Windows-программ с использованием визуальных
средств. Содержит инструментарий для создания диаграмм и
презентаций.
пакет Borland C++ — одно из самых распространённых
средств для разработки DOS и Windows приложений.
|
6. Инструментальные программы
Инструментальные программные средства — это программы, которые используются в ходе
разработки, корректировки или развития других прикладных или системных
программ.
По своему назначению они близки системам программирования. К
инструментальным программам, например, относятся:
-
редакторы;
-
средства компоновки
программ;
-
отладочные программы,
т.е. программы, помогающие находить и устранять ошибки в программе;
-
вспомогательные
программы, реализующие часто используемые системные действия;
-
графические пакеты
программ и т.п.
Инструментальные программные средства могут оказать помощь на всех стадиях
разработки ПО.
Операционные системы.

Операционная система (ОС) - программа или
совокупность программ, управляющая основными действиями ЭВМ, ее
периферийными устройствами и обеспечивающая запуск всех остальных программ,
а также взаимодействие с оператором.
Функции ОС:
-
Управление памятью;
-
Управление доступом к
устройствам ввода-вывода;
-
Управление файловой
системой;
-
Управление
взаимодействием процессов, диспетчеризация процессов;
-
Управление
использованием ресурсов;
-
Загрузка программ в
оперативную память и их выполнение;
-
Интерфейс с
пользователем;
-
Межмашинное
взаимодействие (сеть);
-
Защита самой системы и
пользовательских данных и программ;
-
Разграничение прав
доступа и многопользовательский режим работы.
Многозадачность (multitasking,
multiprogramming) - свойство операционной системы и
ЭВМ, при которой один процессор может обрабатывать несколько разных программ
или разных частей одной программы одновременно. При этом все программы
вместе удерживаются в оперативной памяти и каждая выполняется за какой-то
период времени. Например, одна программа может работать, пока другие ожидают
включения периферийного устройства или сигнала (команды) оператора.
Способность к многозадачности зависит в большей степени от операционной
системы, чем от типа ЭВМ. Наиболее распространенной многозадачной системой
является Unix фирмы AT&T’s Bell Laboratories (США).
Виды ОС:
-
Многопользовательская
система, система с
коллективным доступом, система коллективного доступа (multiuser
system, multiaccess system) - вычислительная
система или ее часть (например операционная система), позволяющая
нескольким пользователям одновременно иметь доступ к одной ЭВМ со своего
терминала (локального или удаленного). Многопользовательский характер
работы достигается благодаря режиму разделения времени, который
заключается в очень быстром переключении ЭВМ между разными терминалами и
программами и соответственно быстрой отработке команд каждого
пользователя. При этом последний не замечает задержек времени, связанных
с обслуживанием других пользователей. Примерами разработок указанного
вида могут служить помимо Windows операционные системы:
NetWare, созданная и развиваемая фирмой Novell (США) для
локальных информационных вычислительных систем; Unix фирмы
AT&T’s Bell Laboratories (США); REAL/32 и др.
-
Однопользовательская
система (one user
system) - операционная система, не обладающая свойствами
многопользовательской. Примерами однопользовательских ОС являются
MS DOS фирмы Microsoft (США) и ОС/2, созданная
совместно Microsoft и IBM.
-
Сетевая операционная
система, СОС (NOS,
Network Operating System) - операционная система,
предназначенная для обеспечения работы вычислительной сети. Примерами
сетевых операционных систем являются Windows NT, Windows 2000, Novel
Netware, Unix, Linux и др.
Типы ОС:
-
графические (с
наличием графического пользовательского интерфейса - GUI) -
текстовые (только командная строка);
-
бесплатные - платные;
-
открытые (с
возможностью редактировать исходный код) - закрытые (без возможности
редактировать исходный код);
-
клиентские -
серверные;
-
высокая стабильность
(устойчивость к сбоям аппаратной части)- низкая стабильность;
-
простая в
администрировании (для рядового пользователя) - сложная, для системных
администраторов;
-
16-разрядная -
32-разрядная - 64-разрядная (в далеком прошлом были еще и 8-разрядные);
-
с высоким уровнем
безопасности данных - с низким уровнем безопасности;
Понятие операционной системы
Существуют две группы определений ОС: «совокупность программ, управляющих
оборудованием» и «совокупность программ, управляющих другими программами».
Обе они имеют свой точный технический смысл, который, однако, становится
ясен только при более детальном рассмотрении вопроса о том, зачем вообще
нужны операционные системы.
Есть приложения вычислительной техники, для которых ОС излишни. Например,
встроенные
микрокомпьютеры содержатся сегодня во
многих бытовых приборах, автомобилях (иногда по десятку в каждом), сотовых
телефонах и т. п. Зачастую такой компьютер постоянно исполняет лишь одну
программу, запускающуюся по включении. И простые игровые приставки — также
представляющие собой специализированные микрокомпьютеры — могут обходиться
без ОС, запуская при включении программу, записанную на вставленном в
устройство «картридже» или
компакт-диске. (Многие встроенные
компьютеры и даже некоторые игровые приставки на самом деле работают под
управлением своих ОС).
Операционные системы, в свою очередь, нужны, если:
-
вычислительная система
используется для различных задач, причём программы, исполняющие эти
задачи, нуждаются в сохранении данных и обмене ими. Из этого следует
необходимость универсального механизма сохранения данных; в подавляющем
большинстве случаев ОС отвечает на неё реализацией файловой системы.
Современные ОС, кроме того, предоставляют возможность непосредственно
«связать» вывод одной программы с вводом другой, минуя относительно
медленные дисковые операции;
-
различные программы
нуждаются в выполнении одних и тех же рутинных действий. Напр., простой
ввод символа с клавиатуры и отображение его на экране может потребовать
исполнения сотен машинных команд, а дисковая операция — тысяч. Чтобы не
программировать их каждый раз заново, ОС предоставляют
системные библиотеки часто используемых подпрограмм (функций);
-
между программами и
пользователями системы необходимо распределять полномочия, чтобы
пользователи могли защищать свои данные от чужого взора, а возможная
ошибка в программе не вызывала тотальных неприятностей;
-
необходима возможность
имитации «одновременного» исполнения нескольких программ на одном
компьютере (даже содержащем лишь один процессор), осуществляемой с
помощью приёма, известного как
«разделение времени». При этом специальный компонент, называемый
планировщиком, «нарезает» процессорное время на короткие отрезки и
предоставляет их поочередно различным исполняющимся программам
(процессам);
-
наконец, оператор
должен иметь возможность, так или иначе, управлять процессами выполнения
отдельных программ. Для этого служат
операционные среды, одна из которых — оболочка и набор стандартных
утилит — является частью ОС (прочие, такие, как графическая операционная
среда, образуют независимые от ОС прикладные платформы). Таким образом,
современные универсальные ОС можно охарактеризовать прежде всего как
-
использующие файловые
системы (с универсальным механизмом доступа к данным),
-
многопользовательские
(с разделением полномочий),
-
многозадачные (с
разделением времени).
Многозадачность и распределение полномочий требуют определённой иерархии
привилегий компонентов самой ОС. В составе ОС различают три группы
компонентов:
-
ядро,
содержащее планировщик; драйверы устройств, непосредственно управляющие
оборудованием; сетевую подсистему, файловую систему;
Большинство программ, как системных (входящих в ОС), так и прикладных,
исполняются в непривилегированном («пользовательском») режиме работы
процессора и получают доступ к
оборудованию (и, при необходимости, к другим ядерным ресурсам, а также
ресурсам иных программ) только посредством
системных вызовов.
Ядро исполняется в привилегированном режиме: именно в этом смысле говорят,
что ОС (точнее, её ядро) управляет оборудованием.
Текущая редакция стандарта на ОС содержит определения около тысячи
системных вызовов и других библиотечных
подпрограмм (часть из которых должна
реализоваться только в определённых классах систем; напр., в системах
«реального времени») и около 200 команд оболочки и утилит ОС. Стандарт
определяет лишь функции вызовов и команд, и не содержит указаний
относительно способов их реализации.
Стандарт, кроме этого, определяет способ адресации файлов в системе,
локализацию (установки, касающиеся национально-специфических моментов,
таких, как язык сообщений или формат даты и времени), совместимый набор
символов, синтаксис регулярных выражений, структуру каталогов в файловой
системе, формат командной строки и некоторые другие аспекты поведения ОС.
В
определении состава ОС значение имеет критерий операциональной целостности
(замкнутости): система должна позволять полноценно использовать (включая
модификацию) свои компоненты. Поэтому в полный состав ОС включается и набор
инструментальных средств (от текстовых редакторов до компиляторов,
отладчиков и компоновщиков). Операциональной замкнутостью обладают системы,
удовлетворяющие «разработческому» профилю в терминах стандарта.
ОС
как система управления ресурсами
Операционная система не только предоставляет пользователям и программистам
удобный интерфейс к аппаратным средствам компьютера, но и является
механизмом, распределяющим ресурсы компьютера.
К
числу основных ресурсов современных вычислительных систем могут быть
отнесены такие ресурсы, как процессоры, основная память, таймеры, наборы
данных, диски, накопители на магнитных лентах, принтеры, сетевые устройства
и некоторые другие. Ресурсы распределяются между процессами. Процесс
(задача) представляет собой базовое понятие большинства современных ОС и
часто кратко определяется как программа в стадии выполнения. Программа — это
статический объект, представляющий собой файл с кодами и данными. Процесс —
это динамический объект, который возникает в операционной системе после
того, как пользователь или сама операционная система решает «запустить
программу на выполнение», то есть создать новую единицу вычислительной
работы. Например, ОС может создать процесс в ответ на команду пользователя
run prgl. exe,
где
prgl. exe
— это имя файла, в котором хранится код программы.
ПРИМЕЧАНИЕ
Во
многих современных ОС для обозначения минимальной единицы работы ОС
используют термин «нить», или «поток», при этом изменяется суть термина
«процесс». Подробнее об этом рассказывается в главе 4 «Процессы и потоки». В
остальных главах мы будем придерживаться упрощенного толкования, в
соответствии с которым для обозначения выполняемой программы будет
использоваться только термин «процесс».
Управление ресурсами вычислительной системы с целью наиболее эффективного их
использования является назначением операционной системы. Например,
мультипрограммная операционная система организует одновременное выполнение
сразу нескольких процессов на одном компьютере, поочередно переключая
процессор с одного процесса на другой, исключая простои процессора,
вызываемые обращениями процессов к вводу-выводу. ОС также отслеживает и
разрешает конфликты, возникающие при обращении нескольких процессов к одному
и тому же устройству ввода-вывода или к одним и тем же данным. Критерий
эффективности, в соответствии с которым ОС организует управление ресурсами
компьютера, может быть различным. Например, в одних системах важен такой
критерий, как пропускная способность вычислительной системы, в других —
время ее реакции. Соответственно выбранному критерию эффективности
операционные системы по-разному организуют вычислительный процесс.
Управление ресурсами включает решение следующих общих, не зависящих от типа
ресурса задач:
-
планирование ресурса
— то есть определение, какому процессу, когда и в каком количестве (если
ресурс может выделяться частями) следует выделить данный ресурс;
-
удовлетворение
запросов на ресурсы;
-
отслеживание
состояния и учет использования ресурса — то есть поддержание оперативной
информации о том, занят или свободен ресурс и какая доля ресурса уже
распределена;
-
разрешение конфликтов
между процессами.
Для
решения этих общих задач управления ресурсами разные ОС используют различные
алгоритмы, особенности которых в конечном счете и определяют облик ОС в
целом, включая характеристики производительности, область применения и даже
пользовательский интерфейс. Например, применяемый алгоритм управления
процессором в значительной степени определяет, может ли ОС использоваться
как система разделения времени, система пакетной обработки или система
реального времени.
Задача организации эффективного совместного использования ресурсов
несколькими процессами является весьма сложной, и сложность эта порождается
в основном случайным характером возникновения запросов на потребление
ресурсов. В мультипрограммной системе образуются очереди заявок от
одновременно выполняемых программ к разделяемым ресурсам компьютера:
процессору, странице памяти, к принтеру, к диску. Операционная система
организует обслуживание этих очередей по разным алгоритмам: в порядке
поступления, на основе приоритетов, кругового обслуживания и т. д. Анализ и
определение оптимальных дисциплин обслуживания заявок является предметом
специальной области прикладной математики — теории массового обслуживания.
Эта теория иногда используется для оценки эффективности тех или иных
алгоритмов управления очередями в операционных системах. Очень часто в ОС
реализуются и эмпирические алгоритмы обслуживания очередей, прошедшие
проверку практикой.
Таким образом, управление ресурсами составляет важную часть функций любой
операционной системы, в особенности мультипрограммной. В отличие от функций
расширенной машины большинство функций управления ресурсами выполняются
операционной системой автоматически и прикладному программисту недоступны.
|