Введение
Как известно, процесс проникновения информационных
технологий практически во все сферы человеческой
деятельности продолжает развиваться
и углубляться. Помимо уже привычных и
широко распространенных персональных
компьютеров, общее число которых достигло
многих сотен миллионов, становится все
больше и встроенных средств вычислительной
техники. Пользователей всей этой разнообразной
вычислительной техники становится все
больше, причем наблюдается развитие двух
вроде бы противоположных тенденций. С
одной стороны, информационные технологии
все усложняются, и для их применения,
и тем более дальнейшего развития, требуется
иметь очень глубокие познания. С другой
стороны, упрощаются интерфейсы взаимодействия
пользователей с компьютерами. Компьютеры
и информационные системы становятся
все более дружественными и понятными
даже для человека, не являющегося специалистом
в области информатики и вычислительной
техники. Это стало возможным, прежде всего
потому, что пользователи и их программы
взаимодействуют с вычислительной техникой
посредством специального (системного)
программного обеспечения – через операционную
систему.
Операционная система
предоставляет интерфейсы и для выполняющихся
приложений, и для пользователей. Программы
пользователей, да и многие служебные
программы запрашивают у операционной
системы выполнение тех операций, которые
достаточно часто встречаются практически
в любой программе. К таким операциям,
прежде всего, относятся операции ввода-вывода,
запуск или остановка какой-нибудь программы,
получение дополнительного блока памяти
или его освобождение и многие другие.
Подобные операции невыгодно каждый раз
программировать заново и непосредственно
размещать в виде двоичного кода в теле
программы, их удобнее собрать вместе
и предоставлять для выполнения по запросу
из программ. Это и есть одна из важнейших
функций операционных систем. Прикладные
программы, да и многие системные обрабатывающие
программы, не имеют непосредственного
доступа к аппаратуре компьютера, а взаимодействуют
с ней только через обращения к операционной
системе. Пользователи также путем ввода
команд операционной системы или выбором
возможных действий, предлагаемых системой,
взаимодействуют с компьютером и своими
программами. Такое взаимодействие осуществляется
исключительно через операционную систему.
Помимо выполнения этой важнейшей функции
операционные системы отвечают за эффективное
распределение вычислительных ресурсов
и организацию надежных вычислений.
Понятие операционной системы
Классификация операционных
систем
Операционная система предназначена
для управления выполнением пользовательских
программ, планирования и управления вычислительными
ресурсами ЭВМ, то есть это совокупность
программных средств, обеспечивающая
управление аппаратной частью компьютера
и прикладными программами, а также их
взаимодействие между собой и пользователем.
Широко известно высказывание,
согласно которому любая наука начинается
с классификации. Само собой, что
вариантов классификации может быть очень
много, здесь все будет зависеть от выбранного
признака, по которому один объект мы будем
отличать от другого. Однако, что касается
операционной системы, здесь уже давно
сформировалось относительно небольшое
количество классификаций: по назначению,
по режиму обработки задач, по способу
взаимодействия с системой и, наконец,
по способам построения (архитектурным
особенностям системы).
В составе операционной системы
различают 3 группы компонентов:
· ядро, содержащее планировщик;
драйверы устройств, непосредственно
управляющие оборудование; сетевая подсистема,
файловая система
· системные библиотеки
· оболочка с утилитами
В определении состава операционной
системы значение имеет критерий операциональной
целостности (замкнутости): система должна
позволять полноценно использовать (включая
модификацию) свои компоненты. Поэтому
в полный состав операционной системы
включают и набор инструментальных средств
(от текстовых редакторов до компиляторов,
отладчиков и компоновщиков).
Операционные системы могут
различаться особенностями реализаций
внутренних алгоритмов управления основными
ресурсами компьютера (процессорами, устройствами,
памятью), особенностями использованных
методов проектирования, типами аппаратных
платформ, областями использования и многими
другими свойствами.
Существует несколько классификаций
операционных систем, в которых выделяют
определенные критерии, отражающие разные
существенные характеристики систем,
рассмотрим наиболее часто встречающиеся:
По назначению
1. Системы общего назначения.
Подразумевает ОС, предназначенные
для решения широкого круга задач, включая
запуск различных приложений, разработку
и отладку программ, работу с сетью и мультимедиа.
2. Системы реального времени.
Предназначены для работы в
контуре управления объектами.
3. Прочие специализированные
системы.
Это различные ОС, ориентированные,
прежде всего на эффективное решение определенного
класса, с большим или меньшим ущербом
для прочих задач
По характеру взаимодействия
с пользователем
1. Пакетные ОС, обрабатывающие
заранее подготовленные задания
2. Диалоговые ОС, выполняющие
задания пользователя в интерактивном
режиме
3. ОС с графическим
интерфейсом
4. Встроенные ОС, не взаимодействующие
с пользователем
По числу одновременного выполнения
задач
1. Однозадачные ОС.
В таких систем ах в каждый момент
времени может существовать не более чем
один пользовательский процесс. Однако,
одновременно с этим, могут работать системные
процессы
2. Многозадачные ОС.
Они обеспечивают параллельное
выполнение некоторых пользовательских
процессов. Реализация многозадачности
требует значительного усложнения алгоритмов
и структур данных, используемых в системе.
По числу одновременных пользователей
1. Однопользовательские
ОС.
Для них характерен полный пользовательский
доступ к ресурсам. Подобные системы приемлемы
в основном на изолированных компьютерах.
2. Многопользовательские
ОС.
Их важной компонентой являются
средства защиты данных и процессов каждого
пользователя, основанные на понятии владельца
ресурса и на точном указании прав доступа,
предоставленных каждому пользователю
системы.
По аппаратурной основе
1. Однопроцессорные ОС.
2. Многопроцессорные ОС.
В задачи такой системы входит
эффективное распределение выполняемых
заданий по процессорам и организация
согласованной работы всех процессоров.
3. Сетевые ОС.
Они включают возможность доступа
к другим компьютерам локальной сети,
работы с файловыми и другими серверами.
4. Распределенные ОС.
Распределенная система, используя
ресурсы локальной сети, представляет
их пользователю как единую систему, не
разделенную на отдельные машины.
По способу построения
1. Микроядерные
2. Макроядерные
Ядро́ —
это центральная часть операционной системы (ОС), обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память и внешнее аппаратное обеспечение. Также обычно ядро предоставляет сервисы файловой системы и сетевых протоколов.
Как основополагающий элемент ОС, ядро представляет собой наиболее низкий уровень абстракции для доступа приложений к ресурсам системы, необходимым для его работы. Как правило, ядро предоставляет такой доступ исполняемым процессам соответствующих приложений за счёт использования механизмов межпроцессного взаимодействия и обращения приложений к системным вызовам ОС.
Функции операционных систем
(основные):
1. Загрузка приложений
в оперативную память и их
выполнение;
2. Стандартизированный доступ
к периферийным устройствам;
3. Управление оперативной
памятью;
4. Управление доступом
к данным на энергонезависимых
носителях;
5. Пользовательский интерфейс;
6. Сетевые операции
7. Параллельное или псевдопараллельное
выполнение задач (многозадачность)
8. Взаимодействие между
процессами: обмен данными, взаимная
синхронизация
9. Разграничение прав
доступа и многопользовательский
режим работы (авторизация, аутентификация)
1.2 Свойства операционной
системы
Свойства операционной системы,
прежде всего, вытекают из требований
предъявляемых к ним, таких как:
Надежность. Операционная система
должна быть надежной, как и аппаратура,
с которой она взаимодействует. Она должна
иметь возможность определения и диагностирования
собственных ошибок, а также восстановления
работоспособности компьютера после большинства
характерных ошибок, происходящих по вине
пользователя. Кроме того, ОС должна минимизировать
вред, который пользователь может причинить
системе своими неправильными действиями.
Защита программ и данных. Операционная
система должна защищать выполняемые
программы и данные от взаимного влияния
их друг на друга.
Предсказуемость. Операционная
система должна отвечать на запросы пользователя
предсказуемым образом. Результаты выполнения
любых команд пользователя должны быть
одними и теми же, вне зависимости от последовательности,
в которой эти команды посылаются на исполнение.
Удобство. Операционная система
должна облегчать работу пользователю,
освобождая его от задач по управлению
ресурсами ЭВМ и распределению их между
программами. Система должна быть спроектирована
с учетом основных факторов человеческой
психологии.
Эффективность. При распределении
ресурсов операционная система должна
использовать минимум системных ресурсов
для собственных нужд, максимально предоставляя
их выполняющимся задачам (программам)
пользователя.
Гибкость. ОС должна позволять
увеличивать или уменьшать используемые
аппаратные ресурсы для того, чтобы улучшать
эффективность и скорость работы программ.
Модифицируемость. ОС должна
иметь возможность добавления новых функциональных
модулей, появляющихся в процессе ее совершенствования.
Ясность. Пользователь может
оставаться в неведении относительно
механизма внутренних операций ОС, но
в то же время должен иметь возможность
получения полного отчета о ходе их выполнения.
Структура монолитной (макроядерной)
операционной системы.
В монолитных, или макроядерных, операционных
системах ядро, состоящее из множества
управляющих модулей и структур данных,
не разделено на центральную часть и периферийные
(по отношению к этой центральной части)
модули. Ядро получается монолитным, неделимым.
В этом смысле макроядерные операционные
системы являются прямой противоположностью микроядерным. В монолитной операционной системе,
несмотря на ее возможную сильную структуризацию,
очень трудно удалить один из уровней
многоуровневой модульной структуры.
Добавление новых функций и изменение
существующих для монолитных операционных
систем требует очень хорошего знания
всей архитектуры операционной системы
и чрезвычайно больших усилий. Очень плодотворным
оказался подход, основанный на модели
клиент-сервер. Эта модель предполагает
наличие программного компонента — потребителя
какого-либо сервиса, или клиента, и программного
компонента — поставщика этого сервиса,
или сервера.
Взаимодействие между клиентом и сервером
стандартизируется, так что сервер может
обслуживать клиентов, реализованных
различными способами и, возможно, разными
разработчиками. При этом главным требованием
является то, чтобы использовался единообразный
интерфейс. Инициатором обмена обычно
является клиент, который посылает запрос
на обслуживание серверу, находящемуся
в состоянии ожидания запроса. Один и тот
же программный компонент может быть клиентом
по отношению к одному виду услуг и сервером
для другого вида услуг. Модель клиент-сервер
является скорее удобным концептуальным
средством ясного представления функций
того или иного программного элемента
в той или иной ситуации, нежели технологией.
Эта модель успешно применяется не только
при построении операционных систем, но
и на всех уровнях программного обеспечения,
и имеет в некоторых случаях более узкий,
специфический смысл, сохраняя, естественно,
при этом все свои общие черты. Микроядерные
операционные системы в полной мере используют
модель клиент-сервер.
При поддержке монолитных операционных
систем возникает ряд проблем, связанных
с тем, что все компоненты макроядра работают
в едином адресном пространстве. Во-первых,
это опасность возникновения конфликта
между различными частями ядра, во-вторых,
сложность подключения к ядру новых драйверов.
Преимущество микроядерной архитектуры
перед макроядерной заключается в том,
что каждый компонент системы представляет
собой самостоятельный процесс, запуск
или остановка которого не отражается
на работоспособности остальных процессов.
Микроядерные операционные системы в
наше время разрабатываются чаще монолитных.
Однако следует заметить, что использование
технологии клиент-сервер — это еще не
гарантия того, что операционная система
станет микроядерной. В качестве подтверждения
этому можно привести пример с операционными
системами класса Windows NT, которые построены
на идеологии клиент-сервер, но которые
тем не менее трудно назвать микроядерными.
Их «микроядро» имеет уже достаточно большой
размер, приставка «микро» здесь вызывает
улыбку. Хотя по своей архитектуре супервизорная
часть этих систем без каких-либо условностей
может быть отнесена к системам, построенным
на базе модели клиент-сервер. Причем для
последних версий операционных систем
с общим названием NT (New Technology) еще более
заметным является отход от микроядерной
архитектуры, но сохранение принципа клиент-сервер
во взаимодействиях между модулями управляющей
(супервизорной) части. Для того чтобы
согласиться с таким высказыванием, достаточно
сравнить операционную систему QNX и
операционные системы Windows NT/2000/ХР.
Монолитное ядро предоставляет богатый набор абстракций оборудования. Все части монолитного ядра работают в одном адресном пространстве.