УРОВЕНЬ ОПЕРАЦИОННОЙ СИСТЕМЫ

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

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

Назначение, структура и функции операционной системы

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

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

С 1990-х гг. наиболее распространенными операционными системами являются системы семейства Vindows, 1Ш1Х и 1Ш1Х-подобные системы.

Хотя и уровень операционной системы, и уровень архитектуры команд абстрактны (в том смысле, что не являются реальными устройствами), между ними есть важное различие. Все команды уровня операционной системы доступны для прикладных программистов. Это практически все команды более низкого уровня, а также новые команды, добавленные операционной системой. Новые команды называются системными вызовами. Они вызывают предопределенную службу операционной системы, в частности одну из ее команд. Обычный системный вызов считывает какие-нибудь данные из файла. Уровень операционной системы всегда интерпретируется. Когда пользовательская программа вызывает команду операционной системы, например чтение данных из файла, операционная система выполняет эту команду шаг за шагом точно так же, как микропрограмма выполняет команду ADD. Однако, когда программа вызывает команду уровня архитектуры команд, эта команда выполняется непосредственно уровнем микроархитектуры без участия операционной системы.

С точки зрения программиста, операционная система — это программа, добавляющая ряд команд и функций к командам и функциям, предлагаемым уровнем архитектуры команд [1].

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

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

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

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

Разделение времени и многозадачность. Уже пакетный режим в своем развитом варианте требует разделения процессорного времени между выполнением нескольких программ. Необходимость в разделении времени (многозадачности, мультипрограммировании) проявилась еще сильнее при распространении в качестве устройств ввода/вывода телетайпов (а позднее — терминалов с электроннолучевыми дисплеями) (1960-е гг.). Поскольку скорость клавиатурного ввода (и даже чтения с экрана) данных оператором много ниже, чем скорость обработки этих данных компьютером, использование компьютера в «монопольном» режиме (с одним оператором) могло привести к простою дорогостоящих вычислительных ресурсов.

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

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

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

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

Файловые системы и структуры. Постепенная замена носителей с последовательным доступом (перфолент, перфокарт и магнитных лент) накопителями произвольного доступа (на магнитных дисках).

Файловая система — способ хранения данных на внешних запоминающих устройствах.

Структура операционных систем

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

Современные процессоры имеют минимум два режима работы — привилегированный (supervisor mode) и пользовательский (user mode).

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

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

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

Термин «ядро» также используется в разных смыслах. Например, в Windows термин «ядро» (NTOS kernel) обозначает совокупность двух компонентов — исполнительной системы (executive layer) и собственно ядра (kernel layer).

Существует два основных вида ядер — монолитные ядра (monolithic kernel) и микроядра (microkernel). В монолитном ядре реализуются все основные функции операционной системы, и оно является, по сути, единой программой, представляющей собой совокупность процедур [5]. В микроядре остается лишь минимум функций, который должен быть реализован в привилегированном режиме: планирование потоков, обработка прерываний, межпроцессное взаимодействие. Остальные функции операционной системы по управлению приложениями, памятью, безопасностью и пр. реализуются в виде отдельных модулей в пользовательском режиме.

Ядра, которые занимают промежуточное положение между монолитными и микроядрами, называют гибридными (hybrid kernel).

Кроме ядра, в привилегированном режиме (в большинстве операционных систем) работают драйверы (driver) — программные модули, управляющие устройствами.

В состав операционной системы также входят:

  • • системные библиотеки (system DLL — Dynamic Link Library, динамически подключаемая библиотека), преобразующие системные вызовы приложений в системные вызовы ядра;
  • • пользовательские оболочки (shell), предоставляющие пользователю интерфейс — удобный способ работы с операционной системой.

Пользовательские оболочки реализуют один из двух основных видов пользовательского интерфейса:

  • • текстовый интерфейс (Text User Interface, TUI), другие названия — консольный интерфейс (Console User Interface, CUT), интерфейс командной строки (Command Line Interface, CLI);
  • • графический интерфейс (Graphic User Interface, GUI).

Пример реализации текстового интерфейса в Windows — интерпретатор командной строки cmd.exe; пример графического интерфейса — проводник Windows (explorer.exe).

Функции операционной системы

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

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

Использование вычислительных машин на уровне машинного языка затруднительно, особенно это касается ввода/вывода. Например, чтобы считать или записать информацию на дискету, надо:

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

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

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

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

3. Операционная система как API (Application Programming Interface) — интерфейс прикладного программирования. Интерфейс между операционной системой и программами определяется набором системных вызовов. Например, если пользовательскому процессу необходимо считать данные из файла, он должен выполнить команду системного вызова, т.е. выполнить прерывание с переключением в режим ядра и активизировать функцию операционной системы для считывания данных из файла.

Функционирование компьютера после включения питания

Функционирование компьютера после включения питания начинается с запуска программы первоначальной загрузки — Boot Track. Программа Boot Track инициализирует основные аппаратные блоки компьютера и регистры процессора (CPU), накопитель памяти, контроллеры периферийного оборудования. Затем загружается ядро ОС, т.е. Operating System Kernel. Дальнейшее функционирование ОС осуществляется как реакция на события, происходящие в компьютере. Наступление того или иного события сигнализируется прерываниями — Interrupt. Источниками прерываний могут быть как аппаратура (Hardware), так и программы (Software).

Аппаратура «сообщает» о прерывании асинхронно (в любой момент времени) путем пересылки в CPU через общую шину сигналов прерываний. Программа «сообщает» о прерывании путем выполнения операции System Call. Примеры событий, вызывающих прерывания:

  • • попытка деления на ноль;
  • • запрос на системное обслуживание;
  • • завершение операции ввода/вывода;
  • • неправильное обращение к памяти.

Каждое прерывание обрабатывается соответственно обработчиком прерываний (Interrupt handler), входящим в состав ОС.

Главные функции механизма прерываний — это:

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

Переход от прерываемой программы к обработчику и обратно должен выполняться как можно быстрее. Одним из быстрых методов является использование таблицы, содержащей перечень всех допустимых для компьютера прерываний и адреса соответствующих обработчиков. Такая таблица называется вектором прерываний (Interrupt vector) и хранится в начале адресного пространства основной памяти (UNIX/MS'DOS).

Для корректного возвращения к прерванной программе перед передачей управления обработчику прерываний содержимое регистров процессора запоминается либо в памяти с прямым доступом, либо в системном стеке — System Stack.

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

 
< Пред   СОДЕРЖАНИЕ     След >