В данном разделе рассматриваются следующие темы. Обзор программного обеспечения, его классификация, функции прикладного и системного программного обеспечения, описана процедура запуска операционной системы.
Сам по себе компьютер не обладает знаниями ни в одной из областей его применения. Все эти знания сосредоточены в выполняемых на компьютере программах. Программное обеспечение (ПО) – неотъемлемая часть компьютерной системы. Оно является логическим продолжением технических средств. Область применения конкретного компьютера определяется установленным на него программным обеспечением. ПО современных компьютеров содержит миллионы программ, для успешной работы с которыми необходима их классификация. Для этой операции не существует стандарта, поэтому имеет место не один способ классификации. Приведем один из возможных вариантов, графически изображенный на рис.3.1.
|
|
|
|
|
Рис.3.1. Структура программного обеспечения.
Обзор программного обеспечения. На самом общем уровнепрограммное обеспечение делится на две категории: прикладное программное обеспечение (англ.application software) и системное программное обеспечение (system software).
Прикладное программное обеспечение (ППО) представляет собой комплекс прикладных программ, с помощью которых на данном рабочем месте выполняются конкретные задания. Диапазон этих заданий необычайно широк: от производственных до творческих и развлекательно-обучающих. Огромный функциональный диапазон использования вычислительной техники как раз и обусловлен наличием прикладных программ для разных видов деятельности.Компьютер, используемый на складе, имеет набор прикладных программ, существенно отличающийся от набора, установленного в дисплейном классе ВУЗа.
Примером прикладного программного обеспечения являются системы программирования, интегрированные пакеты программ, пакеты прикладных программ, рассчитанные на общее применение в определенной проблемной области и дополненные соответствующей технической документацией.
Один из возможных вариантов классификации программных средств (ПС), составляющих прикладное программное обеспечение, отражен на рис.3.2. Как и почти всякая классификация, приведенная на рис.3.2. не является единственно возможной. В ней представлены даже не все виды прикладных программ. Тем не менее, использование классификации полезно для создания общего представления о ППО.
Рис.3.2. Вариант классификация прикладного программного обеспечения.
Система программирования – это система для разработки новых программ на конкретном языке программирования. Современные системы программирования предоставляют пользователям следующие возможности:
-средства создания и редактирования текстов программ
-компилятор или интерпретатор
-библиотеки стандартных подпрограмм
-графические библиотеки
-многооконный режим работы
-дружественная диалоговая среда
-встроенная справочная служба
-другие возможности
Популярные системы программирования – Turbo Basic, Turbo Pascal, Turbo C, DevC++.
Интегрированные пакеты представляют собой набор нескольких программных продуктов, объединенных в единый удобный инструмент. Они содержат некоторое ядро, обеспечивающее взаимодействие между составляющими. Microsoft Office – наиболее известный интегрированный пакет. В его состав входят текстовый редактор Word, электронная таблица Excel, программа создания презентаций PowerPoint, система управления базами данных Access, настольная издательская система Microsoft Publisher, средство поддержки электронной почты Mail и др. Сами системы, входящие в пакет, являются независимыми, более того, они сами представляют локально интегрированный пакет, поскольку помимо основной своей задачи поддерживают функции других систем. Например, текстовый редактор Word обладает возможностью манипулировать с электронными таблицами и базами данных, а в электронной таблице Excel встроен мощный текстовый редактор. Для сопряжения информационных данных из различных программных систем в них предусматривают импорт-экспортную систему обмена с перекодировкой форматов представления данных.
Более полные знания по упомянутым системам можно получить, выполнив лабораторные работы из части 2 настоящего пособия.
В отличие от прикладного программного обеспечения, системное программное обеспечение выполняет задачи, общие для всех вычислительных систем. Фактически системное программное обеспечение формирует среду, в которой функционирует прикладное программное обеспечение. Внутри класса системного программного обеспечения также есть две категории: первая – операционная система, вторая – элементы программного обеспечения, объединяемые под названием обслуживающие программы или утилиты. Основное назначение обслуживающих программ состоит в автоматизации работ по проверке, наладке и настройке компьютерной системы. В некотором смысле обслуживающие программы объединяют элементы программного обеспечения, расширяющие возможности операционной системы. Например, обычно операционная система сама по себе не предоставляет средств форматирования диска или копирования файлов, поэтому данные функции обеспечиваются обслуживающими программами. Кроме того обслуживающие программы выполняют операции сжатия и распаковки данных, выполняют функции оптимизации и контроля качества дискового пространства, восстановления информации, обеспечивают сетевые соединения.
Хотя некоторые служебные программы изначально включают в состав операционной системы, но большинство служебных программ являются для операционной системы внешними и служат для расширения ее функций.
Предоставление определенных функциональных возможностей с помощью обслуживающих программ существенно упрощает разработку операционной системы. Более того, выполнение рутинных операций, реализуемых с помощью утилит, легче настроить в соответствии с требованиями конкретной установки.
В разработке и эксплуатации служебных программ существует два альтернативных направления: интеграция с операционной системой и автономное функционирование. В первом случае служебные программы могут изменять потребительские свойствасистемных программ, делая их более удобными для практической работы. Во втором случае они слабо связаны с системным программным обеспечением, но предоставляют пользователю больше возможностей для персональной настройки их взаимодействия с аппаратным и программным обеспечением.
Различие между прикладным и обслуживающим программным обеспечением весьма условно. Таким образом, новое приложение может превратиться в утилиту, если оно становится одной из основных сервисных программ. Различие между обслуживающими программами и операционной системой также условно. В некоторых системах такая основная функция, как ведение списка файлов в массовой памяти, представлена в виде обслуживающих программ, в то время как другие системы встраивают ее в операционную систему.
Компоненты операционной системы. Операционная система выполняет роль связующего звена между аппаратурой компьютера и пользователем.Операционная система обычно хранится во внешней памяти – на диске. При включении компьютера она считывается с дисковой памяти и размещается в ОЗУ. Этот процесс называется загрузкой операционной системы.
Часть операционной системы, которая обеспечивает интерфейс операционной системы с пользователями, часто называют оболочкой (shell). Назначение оболочки – организация взаимодействия с пользователями системы. Современные оболочки выполняют эту задачу с помощью графического интерфейса пользователя (англ.graphical user interface – GUI), в котором объекты манипуляции, подобные файлам и программам, представлены на экране монитора в виде небольших рисунков – пиктограмм. Подобные системы позволяют пользователям вводить команды, указывая на эти пиктограммы и щелкая на них с помощью мыши. Прежние оболочки поддерживали общение с пользователями посредством текстовых сообщений, вводимых с клавиатуры и отображаемых на экране монитора.
Хотя оболочка операционной системы играет важную роль в определении доступной на данной машине функциональности, она, тем не менее, является всего лишь интерфейсом между пользователем и ядром самой операционной системы. Различие между оболочкой и внутренними частями операционной системы подчеркивается тем фактом, что некоторые операционные системы разрешают пользователю выбрать наиболее удобный для него тип оболочки. Так, например, ранние версии Windows представляли собой всего лишь оболочки для операционной системы MS-DOS. Во всех этих случаях сама операционная система остается прежней – меняется лишь способ ее общения с пользователями.
Главным компонентом современных графических оболочек является система управления окнами или оконный менеджер (англ.windows manager), который распределяет отдельные блоки пространства экрана, называемые окнами, и отслеживает, какое приложение ассоциируется с каждым из этих окон. Когда приложение намеревается отобразить что-нибудь на экране, оно сообщает об этом программе управления окнами. В результате программа размещает предоставленный трафарет в окне, соответствующем данному приложению. В свою очередь, когда пользователь нажимает кнопку мыши, именно программа управления окнами определяет положение указателя мыши на экране и уведомляет соответствующее приложение об этом действии пользователя.
В отличие от оболочки операционной системы, ее внутренняя часть обычно называется ядром (kernel), которое включает компоненты программного обеспечения, выполняющие основные функции в процессе приведения компьютера в рабочее состояние. То есть наличие ядра операционной системы – непременное условие для возможности практической работы человека с вычислительной системой.
1. Одним из компонентов ядра является система управления файлами, или просто файловая система (англ.file manager), в задачу которой входит координация использования запоминающих устройств. Эта подсистема поддерживает записи обо всех файлах, содержащихся в массовой памяти, а именно информацию о том, где каждый из файлов находится, каким пользователям разрешен доступ к различным файлам и какой объем массовой памяти может быть использован для записи новых и расширения уже имеющихся файлов. Для удобства пользователей большинство подсистем управления файлами разрешает объединять файлы в группы, называемые каталогами (англ.directory), или папками (англ.folder). Такой подход позволяет пользователям размещать свои файлы так, как им это удобно, помещая связанные друг с другом файлы в один каталог. Более того, каталоги могут содержать в себе другие каталоги, называемые подкаталогами, что позволяет создавать из файлов иерархические структуры. Например, пользователь может создать каталог "Программы", который будет включать подкаталоги программ, написанных на разных языках "Fortran", "Pascal" и "Java". В каждом подкаталоге будут размещаться файлы, относящиеся к соответствующей категории. Цепочка каталогов, ведущая к файлу, называется путем (англ.path). Так путь к файлу abc.java, содержащему программу на языке Java, будет иметь следующий вид:
…/Программы/ Java/ abc.java
Файл обладает уникальным идентификатором (именем), обеспечивающим доступ к файлу. Идентификатор включает в себя собственно имя - буквенно-цифровое обозначение файла, которое может содержать специальные символы и расширение имени файла Расширение от собственно имени файла отделяется точкой. Имена создаваемых файлов пользователь может задавать произвольно, а в расширениях следует придерживаться традиции, согласно которой расширение указывает на тип файла, характер его содержимого. Например, в операционной системе MS-DOS исполняемые файлы имеют расширения com, exe, bat; текстовые – txt, doc; файлы баз данных – dbf; тексты программ на языках программирования Паскаль, Бейсик, Си, Фортран, соответственно – pas, bas, c, for.
Каждый каталог рассматривается как файл, имеет собственное имя. Продвижение по дереву при поиске некоторого каталога или файла возможно как вниз по дереву от текущего узла, так и вверх в направлении к корню.
Любой доступ к файлу со стороны других компонентов программного обеспечения предоставляется и контролируется системой управления файлами. Процедура получения доступа к файлу начинается с запроса к файловой системе, который называется процедурой открытия файла. Если система управления файлами разрешает доступ, то она предоставляет информацию, необходимую для поиска файла и работы с ним. Эта информация записывается в область основной памяти, называемую дескриптором файла (англ.file descriptor). Любые действия с файлом осуществляются посредством обращения к информации, содержащейся в дескрипторе файла.
2. Другой компонент ядра операционной системы представляет собой набор драйверов устройств (англ.devices drivers), т.е. элементов программного обеспечения, взаимодействующих с контроллерами устройств или же непосредственно с устройствами в целях выполнения различных операций в периферийных устройствах машины. Каждый драйвер устройства специально разрабатывается для конкретного типа устройства, например, принтера, дисковода, накопителя на магнитных лентах или монитора. Он преобразует поступающие запросы в последовательность команд выполнения отдельных физических операций, которые требуется выполнить устройству, связанному с этим драйвером. В результате разработка других элементов программного обеспечения может вестись независимо от специфических особенностей конкретных устройств. Все это позволяет создать обобщенную операционную систему, которая будет настраиваться на использование определенных периферийных устройств с помощью простой установки соответствующих драйверов.
3. Еще один компонент ядра операционной системы – система управления памятью (англ.memory manager), которая решает задачу координации использования машиной ее основной памяти. В среде, где машина выполняет только одно задание в каждый момент времени, обязанности этой программы минимальны. В этом случае необходимая текущему заданию программа помещается в основную память, выполняется, а затем заменяется cледующей программой. Однако в многопользовательской среде или в среде со многими задачами, когда машина должна обрабатывать множество запросов, поступающих в одно и то же время, у подсистемы управления памятью обязанности расширяются. В этой ситуации в основной памяти одновременно должно находиться множество программ и блоков данных, причем каждая из программ занимает собственную область памяти, отведенную ей программой управления памятью. По мере того как возникает необходимость в выполнении различных действий и после их окончания, подсистема управления памятью должна находить области памяти для удовлетворения возникающих потребностей в памяти, а также отслеживать информацию о тех участках памяти, которые уже освободились.
Задача подсистемы управления памятью еще больше усложняется, когда требуемый объем основной памяти превышает реально существующий объем. В этом случае программа управления памятью может создать иллюзию увеличения объема памяти путем перемещения программ и данных из основной памяти в массовую и обратно. Этот иллюзорный объем памяти называется виртуальной памятью (англ.virtual memory). Предположим, что выполняемым программам требуется 256 Мбайт основной памяти, а в наличии имеется только 128. Чтобы создать иллюзию большего объема памяти, программа управления памятью делит требуемый объем на элементы, называемые страницами (pages), и хранит содержимое этих страниц в массовой памяти. Типичный объем страницы – не больше 4 кбайт. Подсистема управления памятью помещает в основную память те страницы, которые в данный момент должны там находиться, замещая ими те, в которых в данный момент нет потребности. Таким образом, остальные компоненты программного обеспечения могут работать так, как если бы объем основной памяти машины действительно составлял 256 Мбайт.
4. Кроме того, в состав ядра операционной системы входят планировщик (англ.scheduler) и диспетчер (англ.dispatcher). Коротко говоря, в системах с разделением времени планировщик определяет последовательность выполняемых действий, а диспетчер контролирует распределение временных квантов для них.
Запуск операционной системы осуществляется с помощью процесса, называемого самозагрузкой (booting), который выполняется при каждом включении машины. Центральный процессор машины (ЦП) разработан таким образом, что при его включении выполняемая им программа каждый раз стартует с определенного, наперед заданного адреса. Следовательно, именно в этом месте основной памяти ЦП ожидает найти первую команду, которую требуется выполнить. Чтобы гарантировать, что требуемая программа всегда будет присутствовать на указанном месте, этот участок памяти обычно конструируется так, чтобы его содержание было неизменным. Такая память, как уже упоминалось в предыдущем разделе, носит название постоянной памяти или постоянного запоминающего устройства – ПЗУ. Когда код помещается в ПЗУ, он находится там постоянно, независимо от того, включена машина или выключена. Для начальной загрузки в компьютерах общего назначения лишь малая часть основной памяти строится из микросхем ПЗУ. Эта область содержит ячейки памяти, в которых ЦП ожидает найти команды, выполняемые при включении машины. Небольшая программа, которая постоянно находится в этой области памяти, называется программой первоначальной загрузки (англ.bootstrap). Эта программа выполняется автоматически при каждом включении компьютера. Она предписывает ЦП считать данные из заранее определенного участка массовой памяти в энергозависимую основную память. В большинстве случаев этими данными является программный код операционной системы. Как только программы операционной системы будут помещены в основную память, программа первоначальной загрузки потребует от ЦП выполнить команду перехода в данную область памяти. В результате стартуют программы ядра, и операционная система начинает контролировать дальнейшую деятельность машины.
Вопросы
1. Что такое текстовые редакторы? Для чего они нужны?
2. Что такое графические редакторы? Для чего они нужны?
3. Что такое электронные таблицы? Для чего они нужны?
4. Что такое интегрированные системы? Для чего они нужны?
5. Каковы функции операционной системы?
6. Охарактеризуйте функции основных компонент операционных систем.
7. В чем состоит назначение файловой системы ОС?
8. Что такое файл? Какие структуры файлов поддерживаются различными ОС?
9. Что такое каталог (директорий)? Для чего каталоги служат?
10. Назовите минимальный состав системы программирования, необходимый для разработки программы.
11. Какие имеются сравнительные преимущества и недостатки у компиляторов иинтерпретаторов?