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

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

В начале любого сеанса пользователь идентифицирует себя, в конце указывает, что сеанс закончен, Описание последовательности использования программных инструментов, записанное па некотором формальном языке, называется заданием, а сам язык — языком управления заданиями.

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

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

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

Операционная система выполняет функции управления аппаратными ресурсами, их распределения между выполняемыми программами пользователя и формирует среду исполнения, которая содержит все данные, необходимые для программы. Такая среда в дальнейшем и будет называться информационным окружением. В информационное окружение входят данные и объекты, обрабатываемые операционной системой, которые влияют на выполнение программы, т.е. на решение задачи пользователя, В ходе дальнейшего изложения будут приведены примеры информационного окружения различного характера.

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

Выполняемая программа образует процесс. Процесс представляет собой совокупность информационного окружения и области памяти, содержащей исполняемый код и данные программы. Обычно в памяти, контролируемой операционной системой, может одновременно работать большое число процессов.

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

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

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

Ресурсом может быть как физический объект, к которому ОС предоставляет доступ, — процессор, оперативная память, дисковые накопители, так и логический объект, который существует только в пределах самой ОС, например таблица выполняемых процессов или сетевых подключений. Необходимость в управлении ресурсами со стороны ОС вызвана в первую очередь тем, что ресурсы ограничены (по объему, времени использования, количеству обслуживаемых пользователей и т. п.). Операционная система в данной ситуации либо управляет ограничениями ресурсов, предотвращая их исчерпание, либо предоставляет средства обработки ситуаций, связанных с исчерпанием ресурсов. Лимиты многих ресурсов, заданные в ОС по умолчанию, могут изменяться затем администратором системы. Примером такого ресурса может служить максимальное количество файлов, одновременно открытых пользователем.

В случае, если операционная система позволяет одновременно использовать ресурсы нескольким процессам, ее ресурсы можно подразделить на типы, указанные на рис. 1.1 .

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

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

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

Рис 1.1. Типы ресурсов, доступных в операционной системе
Рис 1.1. Типы ресурсов, доступных в операционной системе

В этом случае используется квантование моментов использования ресурса по времени.

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

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

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

1.1.1. Типовая структура операционной системы

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

В ядро типичной операционной системы входят следующие компоненты: система управления сеансами пользователей, файловая система, система управления задачами (процессами), система ввода/вывода. Интерфейс ядра ОС с прикладными программами осуществляется при помощи программного интерфейса системных вызовов, интерфейс с аппаратным обеспечением — при помощи драйверов (рис. 1.2).

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

Рис 1.2. Структура ядра типичной операционной системы
Рис 1.2. Структура ядра типичной операционной системы

Файловая система выполняет преобразование данных, хранимых на внешних запоминающих устройствах (например, на дисковых накопителях или на flash-накопителях}, в логические объекты — файлы и каталоги. Также файловая система выполняет функции разграничения доступа к файлам и каталогам при обращении к ним со стороны системы управления сеансами или при использовании файловой системы через интерфейс системных вызовов.

Система управления процессами распределяет ресурсы между выполняемыми задачами (процессами), обеспечивает защиту памяти процессов от модификации ее другими процессами, реализует механизмы межпроцессного взаимодействия,

Система ввода/вывода обрабатывает запросы всех рассмотренных выше компонент ядра и преобразует их в вызовы логических устройств, поддерживаемых ОС. Каждое такое устройство представляет собой логический объект, обращение к которому происходит стандартными для ОС средствами (например, как к адресу в оперативной памяти либо как к специальному файлу). Логическое устройство может быть чисто виртуальным (целиком функционировать внутри ядра ОС) или представлять логический объект, связанный через драйверы с реальными аппаратными устройствами.

Примером чисто виртуального устройства может служить «черная дыра» /dev/null в UNIX-системах. Вся информация, записываемая в данное устройство, пропадает, т.е. оно может быть использовано для поглощения данных, несущественных для решаемой задачи,

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

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

1.1.2. Классификация операционных систем

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

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

Рассмотрим особенности этих типов ОС более подробно.

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

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

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

Система управления сеансами однопользовательских ОС включает в себя только средства инициации и завершения сеанса и средства поддержки информационного окружения пользователя. Причем во многих однопользовательских ОС (например, РОЗ) момент инициации сеанса пользователя наступает сразу же после загрузки ядра и инициализационных сценариев.

Момент завершения сеанса совпадает с моментом выгрузки ядра ОС из памяти (непосредственно перед завершением работы ОС или вследствие обесточивания оборудования}. Таким образом, время жизни сеанса пользователя в однопользовательских ОС приблизительно равно времени жизни работающего ядра системы.

Вследствие неразличимости пользователей система управления сеансами и файловая система в значительной мере упрощаются.

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

Поддержка операционной системой только одного сеанса работы пользователя не исключает возможности одновременного выполнения многих задач пользователя. Иными словами, однопользовательская операционная система может быть многозадачной.

Многопользовательские ОС. Данный тип ОС обеспечивает одновременную работу большого количества пользователей, что в значительной мере расширяет набор функций, реализуемых файловой системой и системой поддержки сеансов. В несколько меньшей степени поддержка множества пользователей отражается на системе ввода/вывода и системе управления процессами.

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

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

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

Система ввола/вывода многопользовательских ОС, кроме непосредственного доступа к устройствам и буферизации ввода/вывода, также управляет разделением доступа пользователей к устройствам, т.е. управляет устройствами как разделяемыми ресурсами.

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

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

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

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

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

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

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

  • создание и уничтожение процессов — загрузка программы в память, создание информационного окружения и передача управления процессу при его создании, удаление информационного окружения и выгрузка процесса из памяти при его уничтожении;

  • распределение системных ресурсов между процессами — планирование выполнения процессов, формирование очереди процессов и управление приоритетами процессов в очереди;

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

  • синхронизация выполнения процессов — приостановка выполнения процессов до достижения некоторых условий, например посылки управляющего воздействия одним из процессов.

Система ввода/вывода в таких ОС также усложняется, посколь-ку любой ресурс (файл или устройство} может использоваться совместно несколькими процессами. Аля предотвращения конфликтов доступа используется механизм блокировок, разрешающий доступ к неразделяемому ресурсу только одному процессу в один момент времени.

ОС семейства UNIX относятся к многопользовательским много- задачным операционным системам. Именно поэтому этот класс операционных систем был взят за основу данного учебника.

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

В учебнике рассматриваются только базовые средства ОС UNIX, при этом не уделяется никакого внимания различным расширениям, например графическим средствам Х Windows System.