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

Современный компьютер – сложнейшая аппаратно-программная система.

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

Типичная структура вычислительной системы включает в себя три основных типа устройств:

  • процессор;
  • память, включающую оперативную память (ОЗУ, RAM – Random Access Memory) и постоянную память (ПЗУ, ROM – Read Only Memory), которая служит для хранения данных и программ;
  • устройства ввода/вывода (УВВ, I/O – Input/Output Devices), служащие для связи микропроцессорной системы с внешними устройствами, для приема (ввода, чтения, Read) входных сигналов и выдачи (вывода, записи, Write) выходных сигналов.

Все устройства вычислительной системы объединяются общей системной шиной. [2]

Всё программное обеспечение ВС принято делить на две части: прикладное и системное. К прикладному программному обеспечению относятся пользовательские программы (разнообразные банковские и прочие бизнес-программы, игры, текстовые процессоры и т. п). Под системным программным обеспечением обычно понимают программы, способствующие функционированию и разработке прикладных программ. Всё программное обеспечение ВС можно разделить на несколько слоёв (рис. 1.1), выделив отдельно наиболее общую часть системного программного обеспечения – операционную систему. [1]

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

Наиболее важными частями ОС является: файловая система, драйверы, внешние устройства, загрузчики, системная библиотека. [3]

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


Рисунок 1.1 – Слои программного обеспечения ВС [1]

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

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

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

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

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

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


Рисунок 1.2 - Иерархическая структура программно-аппаратных средств компьютера [4]

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

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

Назначение операционных систем можно разделить на четыре основные составляющие.

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

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

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

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

Классификация операционных систем по структуре и назначению:

  • по назначению:

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

    2. Системы реального времени. Предназначены для работы в контуре управления объектами.

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

  • по структуре:

    1. многозадачные и однозадачные;

    2. многопользовательские и однопользовательские;

    3. системы, поддерживающие многоуровневую обработку и не поддерживающие ее;

    4. многопроцессорные и однопроцессорные системы. [6]

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

  1. Операционные системы для смарт-карт. Некоторые из них могут управлять только одной операцией, например, электронным платежом.
  2. Встроенные операционные системы. Управляют карманными компьютерами (lialm OS, Windows CE – Consumer Electronics – бытовая техника), мобильными телефонами, телевизорами, микроволновыми печами и т.п.
  3. Операционные системы для персональных компьютеров, например, Windows, Linux, Mac OSX и др.
  4. Операционные системы мини-ЭВМ, например, RT-11 дляPDP-11 – OC реального времени, RSX-11 M для PDP-11 – ОС разделения времени, UNIX для PDP-7.
  5. Операционные системы мэйнфреймов (больших машин), например, OS/390, происходящая от OS/360 (IBM). Обычно ОС мэйнфреймов предполагает одновременно три вида обслуживания: пакетную обработку, обработку транзакций (например, работа с БД, бронирование авиабилетов, процесс работы в банках) и разделение времени.
  6. Серверные операционные системы, например, UNIX, Windows 2000, Linux. Область применения – ЛВС, региональные сети, Intranet, Internet.
  7. Кластерные операционные системы. Кластер – слабосвязанная совокупность нескольких вычислительных систем, работающих совместно для выполнения общих приложений и представляющихся пользователю единой системной, например, Windows 2000 Cluster Server, Windows2008 Server, Sun Cluster (базовая ОС – Solaris). [4]

1.3. Архитектура операционной системы

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

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

  • модульная организация;
  • функциональная избыточность;
  • функциональная избирательность;
  • параметрическая универсальность;
  • концепция многоуровневой иерархической вычислительной системы, по которой ОС представляется многослойной структурой;
  • разделение модулей на две группы по функциям: ядро – модули, выполняющие основные функции ОС, и модули, выполняющие вспомогательные функции ОС;
  • разделение модулей ОС на две группы по размещению в памяти вычислительной системы: резидентные, постоянно находящиеся в оперативной памяти, и транзитные, загружаемые в оперативную память только на время выполнения своих функций;
  • реализация двух режимов работы вычислительной системы: привилегированного режима (режима ядра – Kernel mode), или режима супервизора (supervisor mode), и пользовательского режима (user mode), или режима задачи (task mode);
  • ограничение функций ядра до минимального количества необходимых самых важных функций.

Первые ОС разрабатывались как монолитные системы без четко выраженной структуры (рис. 1.3).

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

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


Рисунок 1.3 - Монолитная архитектура

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

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

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

Вспомогательные модули обычно подразделяются на группы:

  1. - утилиты – программы, выполняющие отдельные задачи управления и сопровождения вычислительной системы;
  2. - системные обрабатывающие программы – текстовые и графические редакторы, компиляторы и др.;
  3. - программы предоставления пользователю дополнительных услуг (специальный вариант пользовательского интерфейса, калькулятор, игры, средства мультимедиа);
  4. - библиотеки процедур различного назначения, упрощения разработки приложений, например, библиотека функций ввода-вывода, библиотека математических функций и т.п.

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

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


Рисунок 1.4 - Многослойная структура ОС

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

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

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


Рисунок 1.5 - Переход к микроядерной архитектуре

В то же время признаны следующие достоинства микроядерной архитектуры:

  • единообразные интерфейсы;
  • простота расширяемости;
  • высокая гибкость;
  • возможность переносимости;
  • высокая надежность;
  • поддержка распределенных систем;
  • поддержка объектно-ориентированных ОС. [7]

1.4. Основные принципы построения ОС

Основные принципы построения операционных систем:

  1. Частотный принцип. Основан на выделении в алгоритмах программ, а в обрабатываемых массивах действий и данных по частоте использования. Действия и данные, которые часто используются, располагаются в операционной памяти, для обеспечения наиболее быстрого доступа. Основным средством такого доступа является организация многоуровневого планирования. На уровень долгосрочного планирования выносятся редкие и длинные операции управления деятельностью системы. К краткосрочному планированию подвергаются часто используемые и короткие операции. Система инициирует или прерывает исполнение программ, предоставляет или забирает динамически требуемые ресурсы, и прежде всего центральный процессор и память.
  2. Принцип модульности. Модуль - это функционально законченный элемент системы, выполненный в соответствии с принятыми межмодульными интерфейсами. Модуль по определению предполагает возможность замены его на любой другой при наличии соответствующих интерфейсов. Чаще всего при построении ОС разделение на модули происходит по функциональному признаку. Принцип модульности отражает технологические и эксплуатационные свойства системы. Максимальный эффект от использования достигается, если принцип распространяется и на ОС, и на прикладные программы, и на аппаратуру.
  3. Принцип функциональной избирательности. Выделение некоторых модулей, которые должны постоянно находиться в оперативной памяти для повышения производительности вычислений. Эту часть ОС называют ядром. С одной стороны, чем больше модулей в ОЗУ, тем выше скорость выполнения операций. С другой стороны, объем памяти, занимаемой ядром, не должен быть слишком большим, поскольку в противном случае обработка прикладных задач будет низкоэффективной. В состав ядра включают модули по управлению прерываниями, модули для обеспечения мультизадачности и передачи управления между процессами, модули по распределению памяти и т.д.
  4. Принцип функциональной избыточности. Принцип учитывает возможность проведения одной и той же операции различными средствами. В состав ОС могут входить несколько разных мониторов, управляющих тем или иным видом ресурса, несколько систем управления файлами и т.д. Это позволяет быстро и достаточно адекватно адаптировать ОС к определенной конфигурации вычислительной системы, обеспечить максимально эффективную загрузку технических средств при решении конкретного класса задач и получить при этом максимальную производительность.
  5. Принцип умолчания. Основан на хранении в системе некоторых базовых описаний, структур процесса, модулей, конфигураций оборудования и данных, определяющих прогнозируемые объемы требуемой памяти, времени счета программы, потребности во внешних устройствах, которые характеризуют пользовательские программы и условия их выполнения. Применение этого принципа позволяет сократить число параметров устанавливаемых пользователем, когда он работает с системой.
  6. Принцип перемещаемости. Предусматривает построение модулей, исполнение которых не зависит от места расположения в операционной памяти.
  7. Принцип виртуализации. Принцип позволяет представить структуру системы в виде определенного набора планировщиков процессов и распределителей ресурсов (мониторов), используя единую централизованную схему. Концепция виртуальности выражается в понятии виртуальной машины. Любая ОС фактически скрывает от пользователя реальные аппаратные и иные ресурсы, заменяя их некоторой абстракцией. В результате пользователи видят и используют виртуальную машину как достаточно абстрактное устройство, способное воспринимать их программы, выполнять их и выдавать результат. Виртуальная машина может воспроизводить и реальную архитектуру, однако элементы архитектуры выступают с новыми, либо улучшенными, характеристиками, зачастую упрощающими работу с системой.
  8. Чем больше виртуальная машина, реализуемая ОС, приближена к идеальной, т.е. чем больше ее архитектурно-логические характеристики отличны от реальных, тем большая степень виртуальности достигнута. ОС строится как иерархия вложенных друг в друга виртуальных машин. Нижним уровнем программ является аппаратные средства машин. Следующим уровнем уже является программным, который совместно с нижним уровнем обеспечивает достижение машиной новых свойств. Каждый новый уровень дает возможность расширять функции возможности по обработке данных и позволяет достаточно просто производить доступ к низшим уровням.

  9. Принцип независимости ПО от внешних устройств. Принцип заключается в том, что связь программы с конкретными устройствами производится не на уровне трансляции программы, а в период планирования ее использования. При работе программы с новым устройством, перекомпиляция не требуется. Принцип реализуется в подавляющем большинстве ОС.
  10. Принцип совместимости. Этот принцип определяет возможность выполнения ПО, написанного для другой ОС или для более ранних версий данной ОС. Различают совместимость на уровне исполняемых файлов и на уровне исходных текстов программ. В первом случае готовую программу можно запустить на другой ОС. Совместимость на уровне исходных текстов требует наличия соответствующего транслятора и также совместимости на уровне системных вызовов и библиотек.
  11. Принцип открытости и наращиваемости. Открытость подразумевает возможность доступа для анализа как системным специалистам, так и пользователям. Наращиваемость подразумевает возможность введения в состав ОС новых модулей и модификации существующих.
  12. Принцип мобильности (переносимости). Подразумевает возможность перенесения ОС с аппаратной платформы одного типа на платформу другого типа.
  13. Принцип безопасности. Подразумевает защиту ресурсов одного пользователя от другого, а также предотвращения захвата всех системных ресурсов одним пользователем, включая и защиту от несанкционированного доступа. Он обеспечивает:
    • средства секретного входа, позволяющие идентифицировать пользователя путем ввода уникального имени и пароля при входе в систему;
    • избирательный контроль доступа, позволяющий владельцу ресурса определить, кто имеет доступ к ресурсу и его права;
    • средства учета и наблюдения (аудита), обеспечивающие возможность обнаружения и фиксации событий, связанных с безопасностью системы и доступом к системным ресурсам;
    • защита памяти, подразумевающая инициализацию перед повторным использованием. [8]

Источники:

  1. ИНТУИТ. Основы операционных систем. Лекция 1. - URL: http://www.intuit.ru/studies/courses/913/31/lecture/968
  2. Лекции по Вычислительным системам, сетям и телекоммуникациям. Базовые принципы организации вычислительных систем. – URL: http://siblec.ru/index.php?dn=html&way=bW9kL2h0bWwvY29udGVudC84c2VtLzA5NC8xLTUuaHRt
  3. StudFiles. Программное обеспечение ВС. – URL: https://studfiles.net/preview/3186728/
  4. Назаров, С. В. Современные операционные системы [Электронный ресурс] / С. В. Назаров, А. И. Широков. — Электрон. текстовые данные. — М. : Интернет-Университет Информационных Технологий (ИНТУИТ), 2016. — 351 c. — 978-5-9963-0416-5. — Режим доступа: http://www.iprbookshop.ru/52176.html
  5. Мир знаний. Классификация операционных систем. – URL: http://mirznanii.com/a/116323/klassifikatsiya-operatsionnykh-sistem
  6. Компьютер с нуля. Классификация операционных систем. – URL: http://komputercnulja.ru/operacionnye-sistemy/klassifikaciya-operacionnyx-sistem\
  7. ИНТУИТ. Современные операционные системы. Лекция 1: Архитектура, назначение и функции операционных систем. - URL: https://www.intuit.ru/studies/courses/631/487/lecture/11048?page=4
  8. Сабуров П.С. Учебное пособие: часть 1. Основные принципы построения операционных систем. - URL: https://studfiles.net/preview/5773380/page:9/