Операционная система. 2
1. Назначение и основные функции операционной системы.
Под термином операционная система мы будем понимать комплекс программ, функциями которого является контроль за использованием и распределением ресурсов вычислительной системы. Мы говорили, что в вычислительной системе есть физические ресурсы, то есть те ресурсы, которые связаны с реальным оборудованием. Мы говорили также, что в системе для ее успешного функционирования имеются логические ресурсы, то есть ресурсы, которые в виде реального оборудования не существуют, но реализуются в виде некоторых средств, предоставляемых пользователю. Физические и логические ресурсы мы будем называть просто ресурсами вычислительной системы.
Любая операционная система (ОС) оперирует некоторыми сущностями, которые вместе со способами управления ими во многом характеризуют ее свойства. К таким сущностям могут относиться понятия файла, процесса, объекта, и т.д. Каждая ОС имеет свой набор таких сущностей. К примеру, в ОС Windows NT к таким сущностям можно отнести понятие объекта, и уже через управление этой сущностью предоставляются все возможные функции. Если мы посмотрим UNIX, то в ней такой сущностью, в первую очередь, является понятие файла, а во вторую очередь, понятие процесса.
Процесс - это некоторая сущность, которая присутствует практически во всех ОС. Процесс - это программа, имеющая права собственности на ресурсы. Рассмотрим две программы (то есть код и данные, которые используются) и рассмотрим все те ресурсы, которые принадлежат программе. Если множества ресурсов, принадлежащих двум программам, совпадают, то в этом случае мы не можем говорить об этих программах, как о двух процессах, - это один процесс. Если у каждой программы есть свое множество ресурсов, причем, эти множества могут пересекаться, но не совпадать, то мы говорим о двух процессах.
В том
случае, когда множества ресурсов
нескольких процессов имеют непустое
пересечение, то у нас возникает
вопрос об использовании, так называемых,
разделяемых ресурсов. Частично мы
говорили об этом на прошлой лекции:
вспомните пример с устройством печати.
У нас может быть несколько процессов,
каждый из которых имеет в качестве своего
ресурса устройство печати и в каждый
момент времени может обратиться к этому
ресурсу с заказом на печать какой-то информации.
Синхронизация работы процессов на примере
устройства печати иллюстрировала нам
одну из функций ОС, заключающуюся в управлении
функционированием процессов. Давайте
посмотрим, что понимается под управлением
процессом.
Управление процессами:
1. Управление использованием времени центрального процессора.
2. Управление «подкачкой» и буфером ввода.
3. Управление разделяемыми
ресурсами.
1
Теперь давайте посмотрим на конструкцию ОС. Практически любая ОС имеет понятие ядра. Ядром ОС обычно является ее резидентная часть, то есть та часть ОС, которая не участвует в процессах подкачки (она всегда присутствует в оперативной памяти) и работает в режиме ОС, или в режиме супервизора. В ядро входят базовые средства управления основными сущностями, характерными для данной ОС, а также может входить набор программ, обеспечивающих управление некоторыми физическими
устройствами. В функции ядра, в частности, входит обработка прерываний.
Мы иногда будем называть программы, управляющие ресурсами, драйверами устройств. К примеру, в ядро ОС должен входить драйвер оперативного запоминающего устройства.
Далее, вокруг ядра наращиваются программы управления ресурсами вычислительной системы. Первый уровень в основном состоит из драйверов физических устройств. Следующий уровень - управление логическими устройствами. И так далее. Таких уровней может быть достаточно много. Чем дальше от ядра, тем большая абстрактность имеет место быть. К примеру, где-то в нашей схеме могут появиться драйверы управления файлами, которые, на самом деле, связаны с драйверами управления логическими дисками, а те, в свою очередь, связаны с драйверами реальных физических устройств и так далее.
Вовсе не обязательно, что все компоненты ОС работают в режиме супервизора, или в режиме ОС. Многие из компонентов, которые логически достаточно удалены от ядра, могут работать в обыкновенном пользовательском режиме. Так же не обязательно, все эти компоненты ОС работают в резидентном режиме. Обычно, для многих функций это не требуется.
Теперь
перейдем к более подробному рассмотрению
основных функций ОС.
Управление
использованием времени
центрального процессора.
На самом деле, от того, какой алгоритм выбора задачи для передачи ей активности ЦП реализован в ОС, зависят многие реальные эксплуатационные свойства этой ОС. Выбор алгоритма почти целиком определяется теми критериями эффективности, которые используются для оценки эффективности работы ОС. Поэтому управление использованием времени ЦП мы с вами рассмотрим на фоне рассмотрения типов ОС.
Первая ситуация. У меня есть большое количество задач или программ, требующих большого объема вычислительных мощностей системы. Это те задачи, которые называют счетными задачами; они требуют большого объема вычислений и мало обращаются к внешним устройствам. Эти задачи должны выполняться на одной вычислительной системе. Что будет являться критерием эффективности для работы системы при выполнении этого пакета задач? Какой набор параметров можно взять и сказать: если они большие - то хорошо, если наоборот - то плохо? Для такой ситуации критерием эффективности работы вычислительной системы является степень загрузки ЦП. Если он мало простаивает (т.е. работает в режиме ожидания, а все процессы занимаются обменом, либо ОС берет на себя время), то мы можем сказать, что такая система работает эффективно. Этого можно добиться с использованием
2
соответствующего
алгоритма планирования, который
заключается в следующем. Мы запускаем
для обработки тот набор задач,
который у нас есть по возможностям
ОС, что обеспечивается режимом
1. Обращение к внешнему устройству.
2. Завершение процесса.
3. Зафиксированный факт зацикливания процесса.
Как только наступила одна из этих ситуаций, управление передается другому процессу. Количество передач управления от одного процесса к другому минимизировано. Так как при передаче управления с одного процесса на другой ОС должна выполнить набор некоторых действий, а это потеря времени, то здесь эти потери минимизированы. Такой режим работы ОС называется пакетным режимом. ОС, которая работает в таком режиме, называется пакетной ОС.
Теперь посмотрим следующую задачу. Предположим, у нас есть самолет, управляемый автопилотом, который на автопилоте производит операцию снижения. У каждого самолета есть прибор, который измеряет высоту от самолета до поверхности земли. Режим работы самолета таков, что управление его функциями по некоторой заданной программе осуществляет компьютер. Итак, если у нас есть система автопилота, и самолет снижается, это система должна контролировать высоту полета. Центральный компьютер этого самолета может решать несколько задач: он может контролировать высоту полета, уровень топлива в баках, какие-то показатели работы двигателей и т.д. Управлением каждой из этих функций занимается свой процесс. Предположим, у нас пакетная ОС, и мы внимательно контролируем уровень топлива в баках. При этом, очевидно, возникает аварийная ситуация, ведь самолет продолжает снижаться, а ОС этого не замечает.
Предположим, у нас система разделения времени. Одним из качеств системы разделения времени является неэффективность за счет того, что в системе предусмотрено большое количество переключений с процесса на процесс, а эта функция достаточно трудоемка. Та же ситуация: высота подходит к нулю, а ОС занимается переустановкой таблиц приписки. Такой вариант тоже не подходит.
Для решения такого рода задач нужны свои средства планирования. В этом случае используются, так называемые, ОС реального времени, основным критерием которых является время гарантированной реакции системы на возникновение того или иного события из набора заранее предопределенных событий. То есть в системе есть набор событий, на которые система в любой ситуации прореагирует и обработает их за некоторое наперед заданное время. Для нашего примера таким событием может быть поступление информации от датчика высоты. Реально для ОС этого класса используются достаточно простые алгоритмы. Все планирование заключается в этом критерии, то есть гарантируется обработка события за время, не превышающее некоторого порогового значения. Но ОС реального времени обычно имеет свое специфическое устройство, которое определяется не только этим простым алгоритмом планирования, но и внутренним переустройством системы.
Подводя некоторую черту под функцией управления использованием
3
времени
ЦП и планирования ЦП, обращаю внимание
на два факта. Первый факт это то,
что те алгоритмы, которые реализованы
в системе планирования распределением
времени ЦП во многом определяют эксплуатационные
свойства вычислительной системы. Я специально
приводил примеры, предлагая использовать
разные ОС для разных целей. Второй факт.
Мы рассмотрели три типовых разновидности
ОС: системы пакетной обработки, системы
разделения времени и системы реального
времени. На сегодняшний день можно
говорить о том, что система реального
времени это отдельный класс ОС. Гарантированно,
ОС Windows не будет управлять какими-то объектами,
у которых это реальное время очень критично.
Также не будет управлять такими объектами
и ОС СОЛЯРИС или LINUX и т.д., потому что эти
системы не являются системами реального
времени.
Управление
подкачкой и буфером
ввода.
Современные
ОС достаточно «ленивы» и откачку зачастую
осуществляют не единицами блоков памяти
процессов, а откачивается весь процесс.
Здесь возникает два вопроса: каков критерий
замещения процесса и каков критерий выбора
из буфера того процесса, который нам требуется
ввести для мультипрограммной обработки.
Самый простейший вариант заключается
в использовании времени нахождения в
том или ином состоянии. В первом случае,
если мы решаем вопрос об откачке процесса
из активного состояния из числа обрабатываемых
в область подкачки, то можем взять тот
процесс, который дольше всего находится
в состоянии обработки по астрономическому
времени. Обратный процесс может быть
симметричен, т.е. мы можем брать из буфера
ввода процессов тот процесс, который
дольше всего там находится. На самом деле,
это простые и реальные алгоритмы планирования,
и они могут видоизменяться из соображения
разных критериев.
Управление
разделяемыми ресурсами.
Предположим, есть два процесса, которые работают на общем пространстве оперативной памяти. При этом разделяемые ресурсы могут работать в разных режимах, т.е. не исключена ситуация, когда два процесса реально находятся на разных машинах, но они связаны общем полем оперативной памяти. В этом случае возникает проблема с буферизацией работы с памятью, потому что на каждой из машин есть свои механизмы буферизации чтения-записи. Здесь возникает нехорошая ситуация, когда состояние физической памяти не соответствует реальному ее содержимому. А также возникают некоторые проблемы для ОС, работающей на двух машинах.
Пусть есть два процесса, которые работают на одной машине. Должны быть определенные средства, которые позволят синхронизовать доступ к разделяемой памяти, то есть позволят создать условия, при которых обмен каждого из работающих процессов с оперативной памятью будет происходить корректно. Это значит, что при каждом чтении информации из разделяемой памяти должно быть гарантированно, что все пользователи, которые начали писать что-то в эту память, уже этот процесс завершили - должна быть синхронизация по обмену с разделяемой памятью.
В действительности при решении задач зачастую не требуется таких
4
разделяемых ресурсов, как общая память, но хотелось бы, чтобы процессы, которые функционируют одновременно, могли оказывать некоторое влияние друг на друга. Влияние, аналогичное аппарату прерываний. Для реализации этого во многих ОС имеются средства передачи сигналов между процессами, тогда возникает некоторая программная эмуляция прерываний. Один процесс говорит - передай сигнал другому процессу. В другом процессе возникает прерывание выполнения этого процесса и передача управления на некоторую предопределенную функцию, которая должна обработать полученный сигнал. Это третья функция ОС.
Любая
ОС также содержит огромный набор других
функций, которые обеспечивают работу
этой системы.
2.
Файловая система.
Мы с
вами говорили, что каждая из операционных
систем оперирует некоторыми сущностями,
одной из которых является процесс.
Есть вторая сущность, которая также важна
- это понятие файла. Файловая система
- это компонент операционной системы,
обеспечивающий организацию создания,
хранения и доступа к именованным наборам
данных. Эти именованные наборы данных
называются файлами.
Основные
свойства файлов
1. Файл - это некий объект, имеющий имя, и позволяющий оперировать с содержимым файла через ссылку на это имя. Обычно имя - это последовательность некоторых символов, длина которой зависит от конкретной операционной системы.
2. Независимость файла от расположения. Для работы с конкретным файлом не требуется иметь информацию о местоположении этого файла на внешнем устройстве.
3. Набор функций ввода/вывода. Практически каждая операционная система однозначно определяет набор функций, обеспечивающий обмен с файлом.
4. Защита
данных. На самом деле, проблема
защиты связана не только с файловой системой.
Реально операционная система обеспечивает
защиту данных во всех областях: это и
файлы, и процессы, и ресурсы, принадлежащие
процессам, запущенным от имени одного
пользователя. Здесь я обращаю ваше внимание
на этот факт, потому что для файлов это
наиболее критичная точка.
Персонификация
и защита данных в
операционной системе.
Персонификация - это возможность операционной системы идентифицировать конкретного пользователя и в соответствии с этим принимать те или иные действия, в частности, по защите данных.
Если мы с вами посмотрим на любимую нами операционную систему MS-DOS, то там не было понятия пользователя со всеми вытекающими последствиями - она однопользовательская.
Второй уровень операционных систем - это операционные системы, которые позволяют регистрировать пользователей, но все пользователи представляются
5
в виде единого набора некоторых субъектов и не связаны друг с другом никак. Примером таких операционных систем могут служить некоторые операционные системы фирмы IBM для mainframe-компьютеров. Например, лектор не знает, кто из его слушателей к какой группе относится, но все, сидящие перед ним, пользователи его курса. Это и хорошо, и плохо. С точки зрения прослушивания курса лекций - это хорошо, но для проведения этим лектором какого-то опроса это плохо, потому что за один день он не успеет опросить всех. Ему надо будет всех слушателей как-то поделить, а как - не известно.
Соответственно, при такой одномерной персонификации обеспечиваются все те функции, о которых мы с вами говорили, но такая организация пользователей не предполагает образования групп пользователей.
Соответственно,
аналогично файловой системе, появляется
иерархическая организация пользователей.
То есть у нас имеется понятие все пользователи
и понятие группа пользователей. В группе
есть реальные пользователи. Такая иерархическая
организация персонификации влечет за
собой следующие моменты. При регистрации
какого-то пользователя необходимо сначала
привязать его к какой-то группе - это может
быть лаборатория, кафедра или учебная
группа. Так как пользователи объединены
в группы, то появляется возможность разделения
прав доступа к ресурсам пользователей.
То есть пользователь может, например,
заявить, что все его ресурсы доступны
для всех пользователей группы. Такая
схема может быть многоуровневой с соответственным
распределением прав и возможностей. Сейчас
появляются операционные системы, в которых
права доступа могут определяться не только
такой иерархической структурой, но
и могут быть более сложными.
3.
Операционная система
UNIX.
В середине 60-х годов в Bell Laboratories фирмы AT&T проводились исследования и разработка одной из первых операционных систем в современном ее понимании - операционной системы Multix. Эта операционная система обладала свойствами операционной системы разделения времени, многопользовательской системы, а также в этой системе были предложены основные решения по организации файловых систем, в частности, была предложена иерархическая древообразная файловая система. От этой разработки через некоторое время получила начало операционная система UNIX. Одна из историй разработки этой системы говорит о том, что на фирме был ненужный компьютер PDP-7 с очень малоразвитым программным обеспечением и требовалась машина, которая позволяла бы организовывать комфортную работу пользователя, в частности, обработку текстовой информации. Известная группа людей - это Кен Томпсон и Деннис Ритчи, занялись разработкой новой операционной системы. Другой вариант этой истории гласит о том, что якобы они занимались реализацией некоторой игры и те средства, которые были им доступны, оказались неудобны - тогда они решили поиграть с этой машиной. В результате появилась операционная система UNIX.
Особенностью этой системы являлось то, что она была первой системной программой, которая была написана с использованием языка, отличного от машинного языка.
Итак, первым важным и революционным результатом было использование
6
языка высокого уровня. Этот факт вызывал обсуждения, потому что никто не верил, что это может быть долговременно, поскольку всегда язык высокого уровня ассоциировался с большой неэффективностью.
Первое свойство языка Си, которое повышало его эффективность, - это работа с указателями. Второе свойство заключается в том, что при программировании на ассемблере мы часто используем побочные эффекты. Например, эффект, когда результатом вычисления какого-то выражения является не только записанной значение, но и какие-то промежуточные значения, которые можно по ходу записать для последующего их использования. Эти возможности стали доступны и в языке Си, потому что понятие выражения в языке Си гораздо шире, чем в тех языках, которые имелись в наличии в то время. В частности, появилась операция присваивания, вместо оператора присваивания, которая позволила программировать побочные эффекты. Эти свойства и определили живучесть языка, пригодность для программирования системных компонентов и возможность оптимальной трансляции кода различных машин.
С профессиональной точки зрения, язык Си - ужасный язык. Основным требованием, которое предъявляется к языкам программирования, является обеспечение безопасности программирования. Средства языка должны минимизировать вероятность внесения ошибок в программу, и заведомо к таким средствам современных языков относится следующее: жесткий контроль типов. Язык Си обладает возможностью преобразования типов по умолчанию. Другая криминальная вещь - это обеспечение контроля за доступом к памяти программы. Возможность бесконтрольного использования этих значений предоставляют указатели. Более того, через указатель можно обманывать функции в соответствии и несоответствии фактических параметров формальным параметрам и.т.д. Третье свойство - это контроль за взаимодействием модулей. Много ошибок появляется в том случае, если в функции продекларирован один набор формальных параметров, а обращение к ней происходит по другому набору.
Итак, 1973 год - год появления написанной на языке Си операционной системы UNIX. Какими основными свойствами обладала эта система? Первое свойство - это концепция файлов. Основным объектом, которым оперирует операционная система, является файл. Файл, с точки зрения операционной системы UNIX, - это внешнее устройство. Файл - это каталог, который содержит информацию о содержащихся в нем файлах. И так далее, на сегодняшний день, файлом может считаться, в некотором смысле и процесс, который может работать.
Второе
свойство - это особая структура
операционной системы. В отличие
от предыдущих операционных систем, в
которых каждая команда была «зашита»
внутрь операционной системы, т.е. ее нельзя
было как -либо модифицировать, в UNIX-е проблемы
команд решены очень элегантно.
7

- Операционная система
- Операционная система
- Операционная система
- Операционная система Linux
- Операционная система Mac OS
- Операционная система MacOS
- Операционная система MacOS
- Операционная система
- Операционная система
- Операционная система
- Операционная система
- Операционная система
- Операционная система
- Операционная система