Добавлен: 29.10.2018
Просмотров: 47982
Скачиваний: 190
1.4. Зоопарк операционных систем
61
качественная поддержка работы отдельного пользователя. Они широко используются
для обработки текстов, создания электронных таблиц, игр и доступа к Интернету. Ти-
пичными примерами могут служить операционные системы Linux, FreeBSD, Windows 7,
Windows 8 и OS X компании Apple. Операционные системы персональных компьютеров
известны настолько широко, что в особом представлении не нуждаются. По сути, многим
людям даже невдомек, что существуют другие разновидности операционных систем.
1.4.5. Операционные системы карманных
персональных компьютеров
Продолжая двигаться по нисходящей ко все более простым системам, мы дошли до
планшетов, смартфонов и других карманных компьютеров. Эти компьютеры, изна-
чально известные как КПК, или PDA (Personal Digital Assistant — персональный
цифровой секретарь), представляют собой небольшие компьютеры, которые во время
работы держат в руке. Самыми известными их представителями являются смартфоны
и планшеты. Как уже говорилось, на этом рынке доминируют операционные системы
Android от Google и iOS от Apple, но у них имеется множество конкурентов. Большин-
ство таких устройств могут похвастаться многоядерными процессорами, GPS, камера-
ми и другими датчиками, достаточным объемом памяти и сложными операционными
системами. Более того, у всех них имеется больше сторонних приложений (apps) для
USB-носителей, чем вы себе можете представить.
1.4.6. Встроенные операционные системы
Встроенные системы работают на компьютерах, которые управляют различными
устройствами. Поскольку на этих системах установка пользовательских программ не
предусматривается, их обычно компьютерами не считают. Примерами устройств, где
устанавливаются встроенные компьютеры, могут послужить микроволновые печи,
телевизоры, автомобили, пишущие DVD, обычные телефоны и MP3-плееры. В основ-
ном встроенные системы отличаются тем, что на них ни при каких условиях не будет
работать стороннее программное обеспечение. В микроволновую печь невозможно
загрузить новое приложение, поскольку все ее программы записаны в ПЗУ. Следова-
тельно, отпадает необходимость в защите приложений друг от друга и операционную
систему можно упростить. Наиболее популярными в этой области считаются опера-
ционные системы Embedded Linux, QNX и VxWorks.
1.4.7. Операционные системы сенсорных узлов
Сети, составленные из миниатюрных сенсорных узлов, связанных друг с другом и с ба-
зовой станцией по беспроводным каналам, развертываются для различных целей. Такие
сенсорные сети используются для защиты периметров зданий, охраны государственной
границы, обнаружения возгораний в лесу, измерения температуры и уровня осадков
в целях составления прогнозов погоды, сбора информации о перемещениях противника
на поле боя и многого другого.
Узлы такой сети представляют собой миниатюрные компьютеры, питающиеся от ба-
тареи и имеющие встроенную радиосистему. Они ограничены по мощности и должны
работать длительный период времени в необслуживаемом режиме на открытом возду-
хе, часто в сложных климатических условиях. Сеть должна быть достаточно надежной
62
Глава 1. Введение
и допускать отказы отдельных узлов, что по мере потери емкости батарей питания
будет случаться все чаще.
Каждый сенсорный узел является настоящим компьютером, оснащенным процессо-
ром, оперативной памятью и постоянным запоминающим устройством, а также одним
или несколькими датчиками. На нем работает небольшая, но настоящая операционная
система, обычно управляемая событиями и откликающаяся на внешние события или
периодически производящая измерения по сигналам встроенных часов. Операционная
система должна быть небольшой по объему и несложной, поскольку основными про-
блемами этих узлов являются малая емкость оперативной памяти и ограниченное время
работы батарей. Так же как и у встроенных систем, все программы являются предвари-
тельно загруженными, и пользователи не могут запустить программу, загруженную из
Интернета, что значительно упрощает всю конструкцию. Примером широко известной
операционной системы для сенсорных узлов может послужить TinyOS.
1.4.8. Операционные системы реального времени
Еще одна разновидность операционных систем — это системы реального времени. Эти
системы характеризуются тем, что время для них является ключевым параметром. На-
пример, в системах управления производственными процессами компьютеры, работаю-
щие в режиме реального времени, должны собирать сведения о процессе и использовать
их для управления станками на предприятии. Довольно часто они должны отвечать
очень жестким временным требованиям. Например, когда автомобиль перемещается по
сборочному конвейеру, то в определенные моменты времени должны осуществляться
вполне конкретные операции. Если, к примеру, сварочный робот приступит к сварке
с опережением или опозданием, машина придет в негодность. Если операция должна
быть проведена точно в срок (или в определенный период времени), то мы имеем
дело с системой жесткого реального времени. Множество подобных систем встре-
чается при управлении производственными процессами, в авиационно-космическом
электронном оборудовании, в военной и других подобных областях применения. Эти
системы должны давать абсолютные гарантии того, что определенные действия будут
осуществляться в конкретный момент времени.
Другой разновидностью подобных систем является система мягкого реального вре-
мени
, в которой хотя и нежелательно, но вполне допустимо несоблюдение срока како-
го-нибудь действия, что не наносит непоправимого вреда. К этой категории относятся
цифровые аудио- или мультимедийные системы. Смартфоны также являются систе-
мами мягкого реального времени.
Поскольку к системам реального времени предъявляются очень жесткие требования,
иногда операционные системы представляют собой простую библиотеку, сопряженную
с прикладными программами, где все тесно взаимосвязано и между частями системы
не существует никакой защиты. Примером такой системы может послужить eCos.
Категории операционных систем для КПК, встроенных систем и систем реального
времени в значительной степени перекрываются друг с другом по свойственным им
признакам. Практически все они имеют по крайней мере некоторые аспекты систем
мягкого реального времени. Встроенные системы и системы реального времени рабо-
тают только с тем программным обеспечением, которое вложили в них разработчики
этих систем; пользователи не могут добавить в этот арсенал собственное программное
обеспечение, что существенно облегчает решение задач защиты. КПК и встроенные
системы предназначены для индивидуальных потребителей, а системы реального
1.5. Понятия операционной системы
63
времени чаще используются в промышленном производстве. Тем не менее, несмотря
на все это, у них есть определенное количество общих черт.
1.4.9. Операционные системы смарт-карт
Самые маленькие операционные системы работают на смарт-картах. Смарт-карта
представляет собой устройство размером с кредитную карту, имеющее собственный
процессор. На операционные системы для них накладываются очень жесткие огра-
ничения по требуемой вычислительной мощности процессора и объему памяти. Не-
которые из смарт-карт получают питание через контакты считывающего устройства,
в которое вставляются, другие — бесконтактные смарт-карты — получают питание за
счет эффекта индукции, что существенно ограничивает их возможности. Некоторые
из них способны справиться с одной-единственной функцией, например с электрон-
ными платежами, но существуют и многофункциональные смарт-карты. Зачастую они
являются патентованными системами.
Некоторые смарт-карты рассчитаны на применение языка Java. Это значит, что ПЗУ
смарт-карты содержит интерпретатор Java Virtual Machine (JVM — виртуальная ма-
шина Java). На карту загружаются Java-апплеты (небольшие программы), которые
выполняются JVM-интерпретатором. Некоторые из этих карт способны справляться
сразу с несколькими Java-апплетами, что влечет за собой работу в мультипрограммном
режиме и необходимость установки очередности выполнения программ. При одно-
временном выполнении двух и более апплетов приобретают актуальность вопросы
управления ресурсами и защиты, которые должны быть решены с помощью имеющейся
на карте операционной системы (как правило, весьма примитивной).
1.5. Понятия операционной системы
Большинство операционных систем используют определенные основные понятия
и абстракции, такие как процессы, адресные пространства и файлы, которые играют
главную роль в осмыслении самих систем. В следующих разделах мы кратко, как это
и должно быть во введении, рассмотрим некоторые из этих основных понятий. К под-
робностям каждого из них мы еще вернемся в следующих главах. Для иллюстрации
этих понятий мы время от времени будет использовать примеры, взятые преимуще-
ственно из UNIX. Как правило, аналогичные примеры можно найти и в других опера-
ционных системах, и некоторые из них будут рассмотрены далее.
1.5.1. Процессы
Ключевым понятием во всех операционных системах является процесс. Процессом, по
существу, является программа во время ее выполнения. С каждым процессом связано его
адресное пространство
— список адресов ячеек памяти от нуля до некоторого максиму-
ма, откуда процесс может считывать данные и куда может записывать их. Адресное про-
странство содержит выполняемую программу, данные этой программы и ее стек. Кроме
этого, с каждым процессом связан набор ресурсов, который обычно включает регистры
(в том числе счетчик команд и указатель стека), список открытых файлов, необрабо-
танные предупреждения, список связанных процессов и всю остальную информацию,
необходимую в процессе работы программы. Таким образом, процесс — это контейнер,
в котором содержится вся информация, необходимая для работы программы.
64
Глава 1. Введение
Более подробно понятие процесса будет рассмотрено в главе 2, а сейчас, для того чтобы
выработать интуитивное представление о процессе, рассмотрим систему, работающую
в мультипрограммном режиме. Пользователь может запустить программу редакти-
рования видео и указать конвертирование одночасового видеофайла в какой-нибудь
определенный формат (процесс займет несколько часов), а затем переключиться на
блуждания по Интернету. При этом может заработать фоновый процесс, который пе-
риодически «просыпается» для проверки входящей электронной почты. И у нас уже
будет (как минимум) три активных процесса: видеоредактор, веб-браузер и программа
получения (клиент) электронной почты. Периодически операционная система будет
принимать решения остановить работу одного процесса и запустить выполнение дру-
гого, возможно, из-за того, что первый исчерпал свою долю процессорного времени
в предыдущую секунду или две.
Если процесс приостанавливается таким образом, позже он должен возобновиться
именно с того состояния, в котором был остановлен. Это означает, что на период
приостановки вся информация о процессе должна быть явным образом где-то сохра-
нена. Например, у процесса могут быть одновременно открыты для чтения несколь-
ко файлов. С каждым из этих файлов связан указатель текущей позиции (то есть
номер байта или записи, которая должна быть считана следующей). Когда процесс
приостанавливается, все эти указатели должны быть сохранены, чтобы вызов read,
выполняемый после возобновления процесса, приводил к чтению нужных данных.
Во многих операционных системах вся информация о каждом процессе, за исклю-
чением содержимого его собственного адресного пространства, хранится в таблице
операционной системы, которая называется таблицей процессов и представляет со-
бой массив (или связанный список) структур, по одной на каждый из существующих
на данный момент процессов.
Таким образом, процесс (в том числе приостановленный) состоит из собственного
адресного пространства, которое обычно называют образом памяти, и записи в таблице
процессов с содержимым его регистров, а также другой информацией, необходимой
для последующего возобновления процесса.
Главными системными вызовами, используемыми при управлении процессами, явля-
ются вызовы, связанные с созданием и завершением процессов. Рассмотрим простой
пример. Процесс, называемый интерпретатором команд, или оболочкой, считывает
команды с терминала. Пользователь только что набрал команду, требующую ком-
пиляции программы. Теперь оболочка должна создать новый процесс, запускающий
компилятор. Когда этот процесс завершит компиляцию, он произведет системный
вызов для завершения собственного существования.
Если процесс способен создавать несколько других процессов (называющихся дочер-
ними процессами
), а эти процессы в свою очередь могут создавать собственные дочер-
ние процессы, то перед нами предстает дерево процессов, подобное изображенному на
рис. 1.13. Связанные процессы, совместно работающие над выполнением какой-нибудь
задачи, зачастую нуждаются в обмене данными друг с другом и синхронизации своих
действий. Такая связь называется межпроцессным взаимодействием и будет подробно
рассмотрена в главе 2.
Другие системные вызовы, предназначенные для управления процессом, позволяют
запросить выделение дополнительной памяти (или освобождение незадействованной),
организовать ожидание завершения дочернего процесса или загрузку какой-нибудь
другой программы поверх своей.
1.5. Понятия операционной системы
65
Рис. 1.13. Дерево процессов. Процесс A создал два дочерних процесса, B и C.
Процесс B создал три дочерних процесса, D, E и F
Временами возникает потребность в передаче информации запущенному процессу,
который не находится в состоянии ожидания этой информации. Можно привести
в пример процесс, который обменивается информацией с другим процессом, за-
пущенным на другом компьютере, и посылает удаленному процессу сообщение по
сети. Чтобы застраховаться от возможной утраты сообщения или ответа на него,
отправитель может запросить собственную операционную систему уведомить его
по истечении определенного интервала времени, чтобы он мог повторно отправить
сообщение, если не получит подтверждения его получения раньше. После установки
такого таймера программа может продолжить выполнение другой работы.
Когда истечет заданный интервал времени, операционная система посылает процессу
сигнал тревоги
. Этот сигнал заставляет процесс приостановить выполняемую работу,
сохранить в стеке состояние своих регистров и запустить специальную процедуру
обработки сигнала тревоги, для того чтобы, к примеру, заново передать предполо-
жительно утраченное сообщение. Когда обработчик сигнала завершит свою работу,
запущенный процесс возобновится в том самом состоянии, которое было до поступле-
ния сигнала. Сигналы являются программными аналогами аппаратных прерываний.
Они могут генерироваться в различных ситуациях, а не только по истечении времени,
установленного в таймере. Многие аппаратные прерывания (например, выполнение
недопустимой команды или обращение по неверному адресу) также транслируются
процессу, при выполнении которого произошла ошибка.
Каждому пользователю, которому разрешено работать с системой, системным админи-
стратором присваивается идентификатор пользователя (User IDentification (UID)).
Каждый запущенный процесс имеет UID того пользователя, который его запустил.
Дочерние процессы имеют такой же UID, как и у родительского процесса. Пользо-
ватели могут входить в какую-нибудь группу, каждая из которых имеет собственный
идентификатор группы
(Group IDentification (GID)).
Пользователь с особым значением UID, называемый в UNIX суперпользователем
(superuser), а в Windows администратором (administrator), имеет особые полномочия,
позволяющие пренебрегать многими правилами защиты. В крупных компьютерных
системах только системный администратор знает пароль, необходимый для получения
прав суперпользователя, но многие обычные пользователи (особенно студенты) при-
кладывают немалые усилия, пытаясь отыскать бреши в системе, которые позволили бы
им стать суперпользователем без пароля
1
.
1
Что, согласно УК РФ, является уголовным преступлением. За исключением действий с со-
гласия владельца данной вычислительной системы (например, при проверке систем защиты
или выполнении соответствующих лабораторных работ по этой теме). — Примеч. ред.