Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика / Лекция 13 Операционные системы, их виды и характеристики

.doc
Скачиваний:
166
Добавлен:
31.05.2015
Размер:
249.34 Кб
Скачать

Операционные системы для персональных ЭВМ. Их виды и характеристики.

Часть 1. Принципиальное устройство операционной системы. Состав ОС и их функции.

Понятие операционной системы. Состав операционной системы. Функции и характеристики основных компонентов операционных систем

{ Прежде, чем приступить к рассмотрению данной темы, давайте договоримся вот о чём: НЕ СУЩЕСТВУЕТ плохих и хороших операционных систем – бывают неграмотные пользователи или неквалифицированные системные администраторы. Все эти сетевые и околокомпьютерные распри и «священные войны» пользователей ЮНИКС с пользователями Windows бессмысленны. Быть апологетом единственной операционной системы, и считать, что она и только она лучше всех остальных – по меньшей мере, глупо: хотя бы потому, что для каждой реально выполнимой задачи существует как минимум, один, а как максимум – бесконечное количество вариантов решений. Из них выбирается наиболее оптимальный – в силу тех, либо иных причин. Поэтому будем считать, что для каждой операционной системы существует своя ниша применимости/доля рынка/группа пользователей, где её преимущества наиболее очевидны, а недостатки некритичны – следовательно, её применение максимально эффективно. Но это не означает, что тот же класс задач нельзя реализовать с помощью другой операционной системы. Всем всё понятно? Тогда мы начинаем… }

Операционная систе́ма, сокр. ОС (англ.operating system, OS)— комплекс управляющих и обрабатывающих программ, которые, с одной стороны, выступают как интерфейс между устройствами вычислительной системы и прикладными программами, а с другой стороны — предназначены для управления устройствами, управления вычислительными процессами, эффективного распределения вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений. Это определение применимо к большинству современных операционных систем общего назначения.

В логической структуре типичной вычислительной системы операционная система занимает положение между устройствами с их микроархитектурой, машинным языком и, возможно, собственными (встроенными) микропрограммами — с одной стороны — и прикладными программами с другой.

Разработчикам программного обеспечения операционная система позволяет абстрагироваться от деталей реализации и функционирования устройств, предоставляя минимально необходимый набор функций (интерфейс программирования приложений или API: Applications Programm Interface).

В большинстве вычислительных систем операционная система является основной, наиболее важной (а иногда и единственной) частью системного программного обеспечения. С 1990-х годов наиболее распространёнными операционными системами являются системы семейства Windows и системы семейства UNIX (особенно Linux и Mac OS).

Основные функции любой операционной системы:

  • Исполнение запросов программ (ввод и вывод данных, запуск и остановка других программ, выделение и освобождение дополнительной памяти и др.).

  • Загрузка программ в оперативную память и их выполнение.

  • Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода).

  • Управление оперативной памятью (распределение между процессами, организация виртуальной памяти).

  • Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск, оптические диски и др.), организованным в той или иной файловой системе.

  • Обеспечение пользовательского интерфейса.

  • Сохранение информации об ошибках системы.

Дополнительные функции:

  • Параллельное или псевдопараллельное выполнение задач (многозадачность).

  • Эффективное распределение ресурсов вычислительной системы между процессами.

  • Разграничение доступа различных процессов к ресурсам.

  • Организация надёжных вычислений (невозможности одного вычислительного процесса намеренно или по ошибке повлиять на вычисления в другом процессе), основана на разграничении доступа к ресурсам.

  • Взаимодействие между процессами: обмен данными, взаимная синхронизация.

  • Защита самой системы, а также пользовательских данных и программ от действий пользователей (злонамеренных или по незнанию) или приложений.

  • Многопользовательский режим работы и разграничение прав доступа (если он реализован).

Компоненты операционной системы:

  • Загрузчик

  • Ядро

  • Командный процессор (интерпретатор)

  • Драйверы устройств

  • Интерфейс

{ Чтобы проще и понятнее было говорить о составе операционной системы, представим её в виде многослойного торта. 

В состав этого программного торта входит:

  • Самый нижний слой-корж (ядро), состоящий, как повелось из муки, яичного порошка, молока и т.д. (то есть из вспомогательных модулей, которые вместе и выполняют все функции ядра);

  • загрузчик – пропитка для коржа, благодаря которой на нем держится крем;

  • драйверы устройств – это масло, благодаря которому наш торт не прилипает к одному подносу, а может быть переложен и на другой, который красивее или удобнее;

  • командный процессор – это слой орехов между коржом и кремом, благодаря которому торт вкуснее и интереснее (а операционная система быстрее и функциональнее);

  • интерфейс – те самые кремовые «розочки».

Самый нижний слой этого торта составляет ядро ОС. Это основание, обязующееся держать все под контролем, обрабатывать ошибки и команды. Если не вдаваться в подробности структуры аппаратной составляющей ПК, то лежит этот слой прямо на «подносе», т.е. на машинной логике. Самый верхний слой ОС (кремовые «розочки» ) – это то, что видит пользователь: изображения, объекты, курсоры и т.д.

В общей вычислительной системе компьютера расположена «ось» между встроенным программным обеспечением компьютера (тут он, BIOS и всё то, что заставляет работать самые простые команды: сложение, вычитание и сдвиг регистра) и программными приложениями пользователя (вот тут уже область пользователя: приложения, файлы и др.). }

Существуют две группы определений операционной системы: «набор программ, управляющих оборудованием» и «набор программ, управляющих другими программами». Обе они имеют свой точный технический смысл, который связан с вопросом, в каких случаях требуется операционная система.

Есть приложения вычислительной техники, для которых операционные системы излишни. Например, встроенные микрокомпьютеры, содержащиеся во многих бытовых приборах, автомобилях (иногда по десятку в каждом), простейших сотовых телефонах, постоянно исполняют лишь одну программу, запускающуюся по включении. Многие простые игровые приставки — также представляющие собой специализированные микрокомпьютеры — могут обходиться без операционной системы, запуская при включении программу, записанную на вставленном в устройство «картридже» или компакт-диске.

Операционные системы нужны, если:

  • вычислительная система используется для различных задач, причём программы, решающие эти задачи, нуждаются в сохранении данных и обмене ими. Из этого следует необходимость универсального механизма сохранения данных; в подавляющем большинстве случаев операционная система отвечает на неё реализацией файловой системы. Современные системы, кроме того, предоставляют возможность непосредственно «связать» вывод одной программы со вводом другой, минуя относительно медленные дисковые операции;

  • различные программы нуждаются в выполнении одних и тех же рутинных действий. Например, простой ввод символа с клавиатуры и отображение его на экране может потребовать исполнения сотен машинных команд, а дисковая операция — тысяч. Чтобы не программировать их каждый раз заново, операционные системы предоставляют системные библиотеки часто используемых подпрограмм (функций);

  • между программами и пользователями системы необходимо распределять полномочия, чтобы пользователи могли защищать свои данные от несанкционированного доступа, а возможная ошибка в программе не вызывала тотальных неприятностей;

  • необходима возможность имитации «одновременного» исполнения нескольких программ на одном компьютере (даже содержащем лишь один процессор), осуществляемой с помощью приёма, известного как «разделение времени». При этом специальный компонент, называемый планировщиком, делит процессорное время на короткие отрезки и предоставляет их поочерёдно различным исполняющимся программам (процессам);

  • оператор должен иметь возможность так или иначе управлять процессами выполнения отдельных программ. Для этого служат операционные среды — оболочка и наборы утилит — они могут являться частью операционной системы.

Таким образом, современные универсальные операционные системы можно охарактеризовать, прежде всего, как:

  • использующие файловые системы (с универсальным механизмом доступа к данным),

  • многопользовательские (с разделением полномочий),

  • многозадачные (с разделением времени).

Многозадачность и распределение полномочий требуют определённой иерархии привилегий компонентов самой операционной системе. В составе операционной системы различают три группы компонентов:

  • ядро, содержащее планировщик; драйверы устройств, непосредственно управляющие оборудованием; сетевая подсистема, файловая система;

  • системные библиотеки;

  • оболочка с утилитами.

Большинство программ, как системных (входящих в операционную систему), так и прикладных, исполняются в непривилегированном («пользовательском») режиме работы процессора и получают доступ к оборудованию (и, при необходимости, к другим ресурсам ядра, а также ресурсам иных программ) только посредством системных вызовов. Ядро исполняется в привилегированном режиме: именно в этом смысле говорят, что система (точнее, её ядро) управляет оборудованием.

В определении состава операционной системы значение имеет критерий операциональной целостности (замкнутости): система должна позволять полноценно использовать (включая модификацию) свои компоненты. Поэтому в полный состав операционной системы включают и набор инструментальных средств (от текстовых редакторов до компиляторов, отладчиков и компоновщиков).

Ядро — центральная часть операционной системы (ОС), обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память, внешнее аппаратное обеспечение, внешнее устройство ввода и вывода информации. Также обычно ядро предоставляет сервисы файловой системы и сетевых протоколов.

Как основополагающий элемент ОС, ядро представляет собой наиболее низкий уровень абстракции для доступа приложений к ресурсам системы, необходимым для их работы. Как правило, ядро предоставляет такой доступ исполняемым процессам соответствующих приложений за счёт использования механизмов межпроцессного взаимодействия и обращения приложений к системным вызовам ОС.

Описанная задача может различаться в зависимости от типа архитектуры ядра и способа её реализации.

Объекты ядра ОС:

  • Процессы

  • Файлы

  • События

  • Потоки

  • Семафоры и Мьютексы (разновидности семафоров, работающие на устранение ситуаций взаимоисключений).

  • Каналы

  • Файлы, проецируемые в память

Процессы – это выполнение пассивных инструкций компьютерной программы на процессоре ЭВМ. Стандарт ISO 9000/2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.Компьютерная программа сама по себе это только пассивная совокупность инструкций, в то время как процесс — это непосредственное выполнение этих инструкций. Часто процессом называют выполняющуюся программу и все её элементы: адресное пространство, глобальные переменные, регистры, стек, открытые файлы и т.д.

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

  • области данных (необязательно на диске);

  • устройства — как физические, например, порты или принтеры, так и виртуальные (генератор случайных чисел);

  • потоки данных (именованный канал);

  • сетевые ресурсы, сокеты;

  • объекты операционной системы.

События - последовательность действий операционной системы за 1 рабочий такт процессора.

Потоки - не следует путать с потоками данных и с потоком выполнения для процессора.

Многопото́чность — свойство платформы (например, операционной системы, виртуальной машины и т.д.) или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени. При выполнении некоторых задач такое разделение может достичь более эффективного использования ресурсов вычислительной машины. Такие потоки называют также потоками выполнения (от англ. thread of execution); иногда называют «нитями» (буквальный перевод англ.thread) или неформально «тредами». Сутью многопоточности является квазимногозадачность на уровне одного исполняемого процесса, то есть все потоки выполняются в адресном пространстве процесса. Кроме этого, все потоки процесса имеют не только общее адресное пространство, но и общие дескрипторы файлов. Выполняющийся процесс имеет как минимум один (главный) поток.

Многопоточность (как доктрину программирования) не следует путать ни с многозадачностью, ни с многопроцессорностью, несмотря на то, что операционные системы, реализующие многозадачность, как правило реализуют и многопоточность.

К достоинствам многопоточности в программировании можно отнести следующее:

  • упрощение программы в некоторых случаях за счет использования общего адресного пространства.

  • меньшие относительно процесса временны́е затраты на создание потока.

  • повышение производительности процесса за счет распараллеливания процессорных вычислений и операций ввода/вывода.

Семафоры - объект, позволяющий войти в заданный участок кода не более чем n потокам. Определение введено Эдсгером Дейкстрой. Семафоры используются при передаче данных через разделяемую память. В более сложных семафорах может использоваться очередь; при этом потоки, ожидающие освобождения семафора, будут проходить через семафор именно в том порядке, в котором они вызывали процедуру входа.

Мьютексы (англ. mutex, от mutual exclusion— «взаимное исключение»)— одноместный семафор, служащий в программировании для синхронизации одновременно выполняющихся потоков. Мьютексы — это один из вариантов семафорных механизмов для организации взаимного исключения. Они реализованы во многих ОС, их основное назначение — организация взаимного исключения для потоков из одного и того же или из разных процессов. Мьютексы — это простейшие двоичные семафоры, которые могут находиться в одном из двух состояний — отмеченном или неотмеченном (открыт и закрыт соответственно). Когда какой-либо поток, принадлежащий любому процессу, становится владельцем объекта mutex, последний переводится в неотмеченное состояние. Если задача освобождает мьютекс, его состояние становится отмеченным. Задача мьютекса — защита объекта от доступа к нему других потоков, отличных от того, который завладел мьютексом. В каждый конкретный момент только один поток может владеть объектом, защищённым мьютексом. Если другому потоку будет нужен доступ к переменной, защищённой мьютексом, то этот поток засыпает до тех пор, пока мьютекс не будет освобождён. Цель использования мьютексов — защита данных от повреждения; однако им порождаются другие проблемы — такие, как взаимная блокировка (клинч) и состояние гонки.

Каналы - именованный канал или именованный конвейер (англ. named pipe) — расширение понятия конвейера в Unix и подобных ОС, один из методов межпроцессного взаимодействия. Это понятие также существует и в Microsoft Windows, хотя там его семантика существенно отличается. Традиционный канал — «безымянен», потому что существует анонимно и только во время выполнения процесса. Именованный канал — существует в системе и после завершения процесса. Он должен быть «отсоединён» или удалён когда уже не используется. Процессы обычно подсоединяются к каналу для осуществления взаимодействия между процессами.

Файлы, проецируемые в память - это такой способ работы с файлами в некоторых операционных системах, при котором всему файлу или некоторой непрерывной части этого файла ставится в соответствие определённый участок памяти (диапазон адресов оперативной памяти). При этом чтение данных из этих адресов фактически приводит к чтению данных из отображенного файла, а запись данных по этим адресам приводит к записи этих данных в файл. Примечательно то, что отображать на память часто можно не только обычные файлы, но и файлы устройств.

{ Вот так выглядит принципиальное устройство большинства современных ОС. Продолжим на следующей лекции… }