Операционные системы и среды. Операционные системы, среды и оболочки


Операционные системы (ОС) в современном их понимании (их назначении и сущности) появились значительно позже первых компьютеров (правда, по всей видимости, и исчезнут в этой сущности в компьютерах будущего). Почему и когда появились ОС? Считается 1) что первая цифровая вычислительная машина ENIAC (Electronic Numerical Integrator and Computer) была создана в 1946 году по проекту "Проект РХ" Министерства обороны США. На реализацию проекта затрачено 500 тыс. долларов. Компьютер содержал 18000 электронных ламп, массу всякой электроники, включал в себя 12 десятиразрядных сумматоров, а для ускорения некоторых арифметических операций имел умножитель и "делитель-извлекатель" квадратного корня. Программирование сводилось к связыванию различных блоков проводами. Конечно, никакого программного обеспечения и тем более операционных систем тогда еще не существовало .

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

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

· запуск транслятора и получение программы в машинных кодах;

· связывание программы с библиотечными подпрограммами;

· запуск программы;

· вывод результатов работы программы на печатающее или другое периферийное устройство.

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


С целью исключения простоев были предприняты попытки разработки специальных программ – мониторов, прообразов первых операционных систем, которые осуществляли автоматический переход от задания к заданию. Считается, что первую операционную систему создала в 1952 году для своих компьютеров IBM-701 исследовательская лаборатория фирмы General Motors . В 1955 году эта фирма и North American Aviation совместно разработали ОС для компьютера IBM-704.

В конце 50-х годов прошлого века ведущие фирмы изготовители поставляли операционные системы со следующими характеристиками:

· пакетная обработка одного потока задач;

· наличие стандартных программ ввода-вывода;

· возможности автоматического перехода от программы к программе;

· средства восстановления после ошибок, обеспечивающие автоматическую "очистку" компьютера в случае аварийного завершения очередной задачи и позволяющие запускать следующую задачу при минимальном вмешательстве оператора;

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

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

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

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

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

На микроархитектурном уровне находятся внутренние регистры центрального процессора (их может быть несколько) и арифметико-логические устройства со средствами управления ими. На этом уровне реализуется выполнение машинных команд. В процессе выполнения команд используются регистры процессора и устройств, а также другие возможности аппаратуры. Команды, видимые для работающего на ассемблере программиста, формируют уровень ISA (Instruction Set Architecture – архитектура системы команд), часто называемый машинным языком.

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

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

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

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

Еще одно важное понятие, связанное с операционной системой, относится к реализации пользовательских интерфейсов. Как правило, любая операционная система обеспечивает удобную работу пользователя за счет средств пользовательского интерфейса. Эти средства могут быть неотъемлемой частью операционной среды (например, графический интерфейс Windows или текстовый интерфейс командной строки MS DOS), а могут быть реализованы отдельной системной программой – оболочкой операционной системы (например, Norton Commander для MS DOS). В общем случае под оболочкой операционной системы понимается часть операционной среды, определяющая интерфейс пользователя, его реализацию (текстовый, графический и т.п.), командные и сервисные возможности пользователя по управлению прикладными программами и компьютером.

Перейдем к рассмотрению эволюции операционных систем.

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

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

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

Предоставляет пользователю дружественный интерфейс;

Обеспечивает эффективное использование аппаратно- программных ресурсов ЭВМ.

Интерфейс, предоставляемый пользователю, действует как интерфейс между приложениями и пользователем, с одной стороны, и аппаратурой ЭВМ - с другой.

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

Программисту ОС предоставляет программный интерфейс (интерфейс прикладного программирования) - API (application programming interface). Он представляет собой стандартизированный набор функций, процедур, других программных компонентов, который освобождает программиста от выполнения рутинных операций. При помощи указанного набора функций приложение запрашивает функции нижнего уровня (как правило, функции операционной системы). Чем богаче этот набор, чем шире возможности той или иной функции из этого набора, тем проще программисту реализовать рутинные, типичные функции приложения при взаимодействии его с ОС. На рис. 3.4 представлена схема интерфейсов ОС.

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

Решение любой задачи на ЭВМ требует определенных информационных, программных и аппаратных средств, которые

Рис. 3.4. Интерфейсы операционной системы

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

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

Обработка нештатных (аварийных) ситуаций, возникающих при решении задач;

Диагностика и сервисное обслуживание дисков - исправление ошибок в адресации данных, расположенных на дисках, оптимизация расположения данных на диске;

Конфигурирование аппаратных средств ЭВМ под нужды пользователя.

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

ОС персональных ЭВМ можно разделить на:

Однозадачные и многозадачные (в зависимости от допустимого числа одновременно решаемых задач);

Однопользовательские и многопользовательские (в зависимости от допустимого числа одновременно обслуживаемых пользователей);

Одно- и многопроцессорные (в зависимости от допустимого количества процессоров в аппаратуре компьютера);

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

Следует отметить, что современные ОС, как правило, являются в той или иной степени сетевыми. Если в локальной сети выделен специальный компьютер (называемый сервером) для обслуживания сетевого взаимодействия, то ОС, ориентированная на такое обслуживание всей сети, называется серверной. В таком случае ОС, установленные на других компьютерах (клиентах), называют клиентскими (или ОС рабочей станции). Так, например, ОС \Vindows 98 не только поддерживает работу компьютера в автономном режиме, но и может выступать в роли клиентской ОС.

Более подробно о сетевых ОС рассказывается в гл. 5.

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

Это потребовало как более эффективной организации их работы на ЭВМ, так и более эффективного использования аппаратных ресурсов ЭВМ, прежде всего процессора (необходимо было свести к минимуму простои процессора при подготовке задания к выполнению на ЭВМ оператором). Для решения этой проблемы были разработаны системы пакетной обработки данных, автоматизировавшие работы оператора по подготовке вычислительного процесса и позволявшие запускать на выполнение не одну, а несколько задач (пакет). Эти системы стали первыми системными программами, прообразом ОС, т. е. появилось разделение программного обеспечения на системное и прикладное. На 1965-1975 гг. приходится «золотой век» в развитии ОС. Именно в эти годы были разработаны и реализованы все основные методы и механизмы, характеризующие современные ОС. Наиболее значимым событием стала промышленная реализация мультипрограммирования - способа организации вычислительного процесса, при котором в памяти ЭВМ размещается одновременно несколько программ, использующих один и тот же процессор. Это позволило существенно повысить эффективность использования дорогостоящих ЭВМ. Следующим достижением, уже непосредственно затрагивающим возможности интерфейса пользователя, стала разработка систем разделения времени, которые обеспечивали пользователю возможность работать за собственным монитором (терминалом) и при многопользовательском (многотерминальном) режиме работы создавали у пользователя иллюзию монопольного владения ресурсами ЭВМ (на основе мультипрограммного режима работы). Это существенно повышало удобство работы пользователей ЭВМ. В начале 70-х гг. появились первые сетевые ОС, что потребовало значительных усилий по стандартизации протоколов (правил) обмена в сетях. Начало 80-х гг. ознаменовалось появлением персональных компьютеров. Одной из основных задач, в связи с ориентацией этих ЭВМ на массового, обычного пользователя, стала задача разработки дружественного интерфейса пользователя. Другая важная задача - развитие сетевых компонентов ОС в целях приближения возможностей персональных ЭВМ при решении сложных задач к возможностям мощных больших ЭВМ - мейнфреймов (за счет «объединения» их вычислительных ресурсов в сети). Именно решение этих задач определяет направление разработки современных ОС.

Как указывалось выше, современные ОС предусматривают возможность работы ЭВМ в сети. Наиболее распространены в настоящее время ОС семейств Unix, Windows, Netware. ОС MS DOS - до недавнего времени одна из наиболее популярных ОС для персональных компьютеров - уже практически не используется в качестве ОС современного компьютера. Тем не менее существует достаточно много программ, ориентированных на работу под управлением именно этой ОС. Как достоинства, так и недостатки этой ОС оказали серьезное влияние на разработку более совершенных ОС. При разработке современных ОС большое внимание уделяется вопросам их переносимости (т. е. возможности функционирования) на разные аппаратные платформы, совершенствованию интерфейса пользователя с ОС, разработке методов организации параллельных вычислений, способных существенно ускорить решение задач на ЭВМ.

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

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

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

Операционная среда - это комплекс системных программ, основным назначением которого является предоставление в распоряжение пользователя как интерфейса пользователя (UI), так и интерфейса прикладного программирования (API), существенно превосходящих по своим возможностям аналогичные интерфейсы, предоставляемые операционной системой. Отличительная черта операционной среды - то, что она надстраивается над существующей ОС, т. е. ее работа невозможна без этой ОС. Наиболее типичным примером удачной операционной среды является Windows-3.1, которая реализована как надстройка над ОС MS DOS.

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

Из чего состоит любая вычислительная система? Из того, что в англоязычных странах принято называть словом hardware, или техническое обеспечение: процессор, память, монитор, дисковые устройства и т.д., объединенные магистральным соединением, которое называется шиной.


Поделитесь работой в социальных сетях

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


екция 1 Операционные системы, среды и оболочки стр. 18 из 18

Лекция 1

Лекция 1 –Введение в операционные системы – определение, назначение и история развития.

Что такое операционная система

Структура вычислительной системы

Что такое ОС

Операционная система как виртуальная машина

Операционная система как менеджер ресурсов

Операционная система как защитник пользователей и программ

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

Краткая история эволюции вычислительных систем

Первый период (1945–1955 гг.). Ламповые машины. Операционных систем нет

Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы

Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ОС

Четвертый период (с 1980г. по настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы

Основные понятия, концепции ОС

Системные вызовы

Прерывания

Исключительные ситуации

Файлы

Процессы, нити

Архитектурные особенности ОС

Монолитное ядро

Многоуровневые системы (Layered systems)

Виртуальные машины

Микроядерная архитектура

Смешанные системы

Классификация ОС

Реализация многозадачности

Поддержка многопользовательского режима

Многопроцессорная обработка

Системы реального времени

Заключение

Приложение 1.

Некоторые сведения об архитектуре компьютера

Взаимодействие с периферийными устройствами

  1. Лекция 1 –Введение в операционные системы – определение, назначение и история развития.
  2. Что такое операционная система
    1. Структура вычислительной системы

Из чего состоит любая вычислительная система? Во-первых, из того, что в англоязычных странах принято называть словом hardware, или техническое обеспечение: процессор , память, монитор, дисковые устройства и т.д., объединенные магистральным соединением, которое называется шиной.

Во-вторых, вычислительная система состоит из программного обеспечения. Все программное обеспечение принято делить на две части: прикладное и системное. К прикладному программному обеспечению, как правило, относятся разнообразные банковские и прочие бизнес-программы, игры, текстовые процессоры и т. п. Под системным программным обеспечением обычно понимают программы, способствующие функционированию и разработке прикладных программ. Надо сказать, что деление на прикладное и системное программное обеспечение является отчасти условным и зависит от того, кто осуществляет такое деление. Так, обычный пользователь, неискушенный в программировании, может считать Microsoft Word системной программой, а, с точки зрения программиста, это – приложение. Компилятор языка Си для обычного программиста – системная программа, а для системного – прикладная. Несмотря на эту нечеткую грань, данную ситуацию можно отобразить в виде последовательности слоев (см. рис. 1.1), выделив отдельно наиболее общую часть системного программного обеспечения – операционную систему:

Рис. 1.1. Слои программного обеспечения компьютерной системы

  1. Что такое ОС

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

  1. Операционная система как виртуальная машина

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

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

Ясно, что средний программист не в состоянии учитывать все особенности работы оборудования (в современной терминологии – заниматься разработкой драйверов устройств), а должен иметь простую высокоуровневую абстракцию, скажем, представляя информационное пространство диска как набор файлов. Файл можно открывать для чтения или записи, использовать для получения или сброса информации, а потом закрывать. Это концептуально проще, чем заботиться о деталях перемещения головок дисков или организации работы мотора. Аналогичным образом, с помощью простых и ясных абстракций, скрываются от программиста все ненужные подробности организации прерываний , работы таймера, управления памятью и т. д. Более того, на современных вычислительных комплексах можно создать иллюзию неограниченного размера операционной памяти и числа процессоров . Всем этим занимается операционная система . Таким образом, операционная система представляется пользователю виртуальной машиной , с которой проще иметь дело, чем непосредственно с оборудованием компьютера.

  1. Операционная система как менеджер ресурсов

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

  1. Операционная система как защитник пользователей и программ

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

  1. Операционная система как постоянно функционирующее ядро

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

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

  1. Краткая история эволюции вычислительных систем

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

  1. Первый период (1945–1955 гг.). Ламповые машины. Операционных систем нет

Мы начнем исследование развития компьютерных комплексов с появления электронных вычислительных систем (опуская историю механических и электромеханических устройств).

Первые шаги в области разработки электронных вычислительных машин были предприняты в конце Второй мировой войны. В середине 40-х были созданы первые ламповые вычислительные устройства, и появился принцип программы, хранящейся в памяти машины (John Von Neumann, июнь 1945 г.). В то время одна и та же группа людей участвовала и в проектировании, и в эксплуатации, и в программировании вычислительной машины. Это была скорее научно-исследовательская работа в области вычислительной техники, а не регулярное использование компьютеров в качестве инструмента решения каких-либо практических задач из других прикладных областей. Программирование осуществлялось исключительно на машинном языке. Об операционных системах не было и речи, все задачи организации вычислительного процесса решались вручную каждым программистом с пульта управления. За пультом мог находиться только один пользователь. Программа загружалась в память машины в лучшем случае с колоды перфокарт, а обычно с помощью панели переключателей.

Вычислительная система выполняла одновременно только одну операцию (ввод-вывод или собственно вычисления). Отладка программ велась с пульта управления с помощью изучения состояния памяти и регистров машины. В конце этого периода появляется первое системное программное обеспечение: в 1951–1952 гг. возникают прообразы первых компиляторов с символических языков (Fortran и др.), а в 1954 г. Nat Rochester разрабатывает Ассемблер для IBM-701.

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

  1. Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы

С середины 50-х годов начался следующий период в эволюции вычислительной техники, связанный с появлением новой технической базы – полупроводниковых элементов. Применение транзисторов вместо часто перегоравших электронных ламп привело к повышению надежности компьютеров. Теперь машины могут непрерывно работать достаточно долго, чтобы на них можно было возложить выполнение практически важных задач. Снижается потребление вычислительными машинами электроэнергии, совершенствуются системы охлаждения. Размеры компьютеров уменьшились. Снизилась стоимость эксплуатации и обслуживания вычислительной техники. Началось использование ЭВМ коммерческими фирмами. Одновременно наблюдается бурное развитие алгоритмических языков (LISP, COBOL, ALGOL-60, PL-1 и т.д.). Появляются первые настоящие компиляторы, редакторы связей, библиотеки математических и служебных подпрограмм. Упрощается процесс программирования. Пропадает необходимость взваливать на одних и тех же людей весь процесс разработки и использования компьютеров. Именно в этот период происходит разделение персонала на программистов и операторов, специалистов по эксплуатации и разработчиков вычислительных машин.

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

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

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

  1. Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ОС

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

Повышению эффективности использования процессорного времени мешает низкая скорость работы механических устройств ввода-вывода (быстрый считыватель перфокарт мог обработать 1200 перфокарт в минуту, принтеры печатали до 600 строк в минуту). Вместо непосредственного чтения пакета заданий с перфокарт в память начинают использовать его предварительную запись, сначала на магнитную ленту, а затем и на диск. Когда в процессе выполнения задания требуется ввод данных, они читаются с диска. Точно так же выходная информация сначала копируется в системный буфер и записывается на ленту или диск, а печатается только после завершения задания. Вначале действительные операции ввода-вывода осуществлялись в режиме off-line, то есть с использованием других, более простых, отдельно стоящих компьютеров. В дальнейшем они начинают выполняться на том же компьютере, который производит вычисления, то есть в режиме on-line. Такой прием получает название spooling (сокращение от Simultaneous Peripheral Operation On Line ) или подкачки-откачки данных. Введение техники подкачки-откачки в пакетные системы позволило совместить реальные операции ввода-вывода одного задания с выполнением другого задания, но потребовало разработки аппарата прерываний для извещения процессора об окончании этих операций.

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

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

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

  • Реализация защитных механизмов. Программы не должны иметь самостоятельного доступа к распределению ресурсов, что приводит к появлению привилегированных и непривилегированных команд. Привилегированные команды, например команды ввода-вывода, могут исполняться только операционной системой . Говорят, что она работает в привилегированном режиме. Переход управления от прикладной программы к ОС сопровождается контролируемой сменой режима. Кроме того, это защита памяти, позволяющая изолировать конкурирующие пользовательские программы друг от друга, а ОС – от программ пользователей.
  • Наличие прерываний . Внешние прерывания оповещают ОС о том, что произошло асинхронное событие, например завершилась операция ввода-вывода. Внутренние прерывания (сейчас их принято называть исключительными ситуациями ) возникают, когда выполнение программы привело к ситуации, требующей вмешательства ОС , например деление на ноль или попытка нарушения защиты.
  • Развитие параллелизма в архитектуре . Прямой доступ к памяти и организация каналов ввода-вывода позволили освободить центральный процессор от рутинных операций.

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

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

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

Появление электронно-лучевых дисплеев и переосмысление возможностей применения клавиатур поставили на очередь решение этой проблемы. Логическим расширением систем мультипрограммирования стали time-sharing системы, или системы разделения времени . В них процессор переключается между задачами не только на время операций ввода-вывода, но и просто по прошествии определенного времени. Эти переключения происходят так часто, что пользователи могут взаимодействовать со своими программами во время их выполнения, то есть интерактивно. В результате появляется возможность одновременной работы нескольких пользователей на одной компьютерной системе. У каждого пользователя для этого должна быть хотя бы одна программа в памяти. Чтобы уменьшить ограничения на количество работающих пользователей, была внедрена идея неполного нахождения исполняемой программы в оперативной памяти. Основная часть программы находится на диске, и фрагмент, который необходимо в данный момент выполнять, может быть загружен в оперативную память, а ненужный – выкачан обратно на диск. Это реализуется с помощью механизма виртуальной памяти. Основным достоинством такого механизма является создание иллюзии неограниченной оперативной памяти ЭВМ.

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

Параллельно внутренней эволюции вычислительных систем происходила и внешняя их эволюция. До начала этого периода вычислительные комплексы были, как правило, несовместимы. Каждый имел собственную операционную систему , свою систему команд и т. д. В результате программу, успешно работающую на одном типе машин, необходимо было полностью переписывать и заново отлаживать для выполнения на компьютерах другого типа. В начале третьего периода появилась идея создания семейств программно совместимых машин, работающих под управлением одной и той же операционной системы . Первым семейством программно совместимых компьютеров, построенных на интегральных микросхемах , стала серия машин IBM/360. Разработанное в начале 60-х годов, это семейство значительно превосходило машины второго поколения по критерию цена/производительность. За ним последовала линия компьютеров PDP, несовместимых с линией IBM, и лучшей моделью в ней стала PDP-11.

Сила "одной семьи" была одновременно и ее слабостью. Широкие возможности этой концепции (наличие всех моделей: от мини-компьютеров до гигантских машин; обилие разнообразной периферии; различное окружение; различные пользователи) порождали сложную и громоздкую операционную систему . Миллионы строчек Ассемблера, написанные тысячами программистов, содержали множество ошибок, что вызывало непрерывный поток публикаций о них и попыток исправления. Только в операционной системе OS/360 содержалось более 1000 известных ошибок. Тем не менее идея стандартизации операционных систем была широко внедрена в сознание пользователей и в дальнейшем получила активное развитие.

  1. Четвертый период (с 1980г. по настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы

Следующий период в эволюции вычислительных систем связан с появлением больших интегральных схем (БИС). В эти годы произошло резкое возрастание степени интеграции и снижение стоимости микросхем. Компьютер, не отличающийся по архитектуре от PDP-11, по цене и простоте эксплуатации стал доступен отдельному человеку, а не отделу предприятия или университета. Наступила эра персональных компьютеров. Первоначально персональные компьютеры предназначались для использования одним пользователем в однопрограммном режиме, что повлекло за собой деградацию архитектуры этих ЭВМ и их операционных систем (в частности, пропала необходимость защиты файлов и памяти, планирования заданий и т. п.).

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

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

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

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

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

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

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

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

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

  1. Основные понятия, концепции ОС

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

  1. Системные вызовы

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

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

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

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

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

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

  1. Прерывания

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

  1. Исключительные ситуации

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

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

  1. Файлы

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

Главная задача файловой системы (file system ) – скрыть особенности ввода-вывода и дать программисту простую абстрактную модель файлов, независимых от устройств.

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

  1. Процессы, нити

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

  1. Архитектурные особенности ОС

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

  1. Монолитное ядро

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

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

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

Монолитное ядро – старейший способ организации операционных систем . Примером систем с монолитным ядром является большинство Unix-систем .

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

  1. Многоуровневые системы (Layered systems)

Продолжая структуризацию, можно разбить всю вычислительную систему на ряд более мелких уровней с хорошо определенными связями между ними, так чтобы объекты уровня N могли вызывать только объекты уровня N-1. Нижним уровнем в таких системах обычно является hardware, верхним уровнем – интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Впервые такой подход был применен при создании системы THE (Technishe Hogeschool Eindhoven) Дейкстрой (Dijkstra) и его студентами в 1968 г. Эта система имела следующие уровни:

Рис. 1.2. Слоеная система THE

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

  1. Виртуальные машины

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

Рис. 1.3. Вариант виртуальной машины

Первой реальной системой такого рода была система CP/CMS, или VM/370, как ее называют сейчас, для семейства машин IBM/370.

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

  1. Микроядерная архитектура

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

Рис. 1.4. Микроядерная архитектура операционной системы

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

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

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

  1. Смешанные системы

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

Другим примером смешанного подхода может служить возможность запуска операционной системы с монолитным ядром под управлением микроядра. Так устроены 4.4BSD и MkLinux, основанные на микроядре Mach. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов. Все остальные функции, в том числе взаимодействие с прикладными программами, осуществляется монолитным ядром . Данный подход сформировался в результате попыток использовать преимущества микроядерной архитектуры , сохраняя по возможности хорошо отлаженный код монолитного ядра .

Наиболее тесно элементы микроядерной архитектуры и элементы монолитного ядра переплетены в ядре Windows NT. Хотя Windows NT часто называют микроядерной операционной системой , это не совсем так. Микроядро NT слишком велико (более 1 Мбайт), чтобы носить приставку "микро". Компоненты ядра Windows NT располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений, как и положено в микроядерных операционных системах . В то же время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром . По мнению специалистов Microsoft, причина проста: чисто микроядерный дизайн коммерчески невыгоден, поскольку неэффективен.

Таким образом, Windows NT можно с полным правом назвать гибридной операционной системой

  1. Классификация ОС

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

  1. Реализация многозадачности

По числу одновременно выполняемых задач операционные системы можно разделить на два класса:

  • многозадачные (Unix, OS/2, Windows);
  • однозадачные (например, MS-DOS).

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

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

В некоторых ОС (Windows 3.11, например) пользовательская программа может монополизировать процессор , то есть работать в невытесняющем режиме. Как правило, в большинстве систем не подлежит вытеснению код собственно ОС . Ответственные программы, в частности задачи реального времени, также не вытесняются. Более подробно об этом рассказано в лекции, посвященной планированию работы процессора .

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

  1. Поддержка многопользовательского режима

По числу одновременно работающих пользователей ОС можно разделить на:

  • однопользовательские (MS-DOS, Windows 3.x);
  • многопользовательские (Windows NT, Unix).

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

  1. Многопроцессорная обработка

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

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

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

  1. Системы реального времени

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

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

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

Приведенная классификация ОС не является исчерпывающей. Более подробно особенности применения современных ОС рассмотрены в Олифер, 2001 ].

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

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

  1. Заключение

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

  1. Приложение 1.
    1. Некоторые сведения об архитектуре компьютера

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

Рис. 1.5. Некоторые компоненты компьютера

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

Выполнение различных операций с данными осуществляется изолированной частью компьютера, называемой центральным процессором (ЦП). ЦП также имеет ячейки для запоминания информации, называемые регистрами. Их разделяют на регистры общего назначения и специализированные регистры. В современных компьютерах емкость регистра обычно составляет 4–8 байт. Регистры общего назначения используются для временного хранения данных и результатов операций. Для обработки информации обычно организовывается передача данных из ячеек памяти в регистры общего назначения, выполнение операции центральным процессором и передача результатов операции в основную память.

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

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

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

  1. Взаимодействие с периферийными устройствами

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

Любая операция ввода-вывода предполагает диалог между ЦП и контроллером устройства. Когда процессору встречается команда, связанная с вводом-выводом, входящая в состав какой-либо программы, он выполняет ее, посылая сигналы контроллеру устройства. Это так называемый программируемый ввод-вывод.

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

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

Вопросы

  1. Назначение ОС в вычислительных машинах;
  2. Краткая история развития вычислительных систем и операционных систем;
  3. Определения понятий теории и практики ОС: системные вызовы, прерывания, исключительные ситуации, файлы;
  4. Классификация ОС

Другие похожие работы, которые могут вас заинтересовать.вшм>

13757. Создание сетевой системы тестирования электронного сопровождения курса Операционные системы (на примере инструментальной оболочки Joomla) 1.83 MB
Программа для составления тестов позволит работать с вопросами в электронном виде использовать все виды цифровой информации для отображения содержания вопроса. Целью курсовой работы является создание современной модели webсервиса тестирования знаний с помощью средств webразработки и программная реализация для эффективной работы тестовой системы – защита от копирования информации и списывания при контроле знаний т. Последние два означают создание равных для всех условий прохождения контроля знаний невозможность списывания и...
6179. ОПЕРАЦИОННЫЕ СИСТЕМЫ 13.01 KB
Для рассмотрения функций операционной системы людей условно можно разделить на две группы: пользователи и программисты здесь понятие пользователя более ограничено чем понимание пользователя как любого человека общающегося с компьютером. Программисту от операционной системы требуется набор таких средств которые помогали бы ему в разработке и отладке конечного продукта программ. Командная строка строка экрана начинающаяся с приглашения операционной системы.
9146. Введение в операционные системы 11.94 KB
Операционная система. Определение и назначение. Функции операционных систем. Основные качества ОС. Поколения операционных систем. Краткий обзор современных ОС. Классификация операционных систем по особенностям алгоритмов управления ресурсами, особенностям аппаратных платформ, особенностям областей использования.
10804. Аллергические поражения слизистой оболочки полости рта у детей 47.16 KB
Мотивационная характеристика темы занятия: в результате практического занятия интерны должны приобрести следующие практические и теоретические навыки: изучить основные и дополнительные методы исследования детей с аллергическими поражениями слизистой оболочки полости рта; на основании полученных данных и сбора анамнеза уметь поставить предварительный диагноз; составить план лечения с учетом возраста ребенка; знать показания и противопоказания применения лекарственных средств при данной патологии. Это связано повидимому с загрязнением...
2622. Экология микроорганизмов, их экологические среды. Действие физических и химических факторов окружающей среды на микроорганизмы 41.12 KB
Действие физических и химических факторов окружающей среды на микроорганизмы.Влияние физических факторов на микроорганизмы.Влияние химических факторов на микроорганизмы. Распространение микроорганизмов в природе В природе микроорганизмы заселяют практически любую среду почва воздух вода и распространены гораздо шире чем другие живые существа.
8621. Языки программирования. Системы программирования. Среды визуального проектирования 21.13 KB
Bsic язык имеющий и компиляторы и интерпретаторы по популярности он занимает первое место в мире. Этот язык занимает по популярности второе место после Bsic. В настоящее время наиболее популярны следующие среды визуального программирования для языков...
16438. Анализ среды функционирования 39.84 KB
Все эти показатели называются частными одномерными показателями эффективности. Более объективные технологии оценки эффективности деятельности сложных систем появились лишь во второй половине XX го века. В настоящее время широко распространенные во всем мире в качестве инструмента для анализа эффективности сложных социально-экономических систем крупных нефтяных компаний банков производственных фирм объектов ЖКХ университетов больниц и других коммерческих и некоммерческих учреждений. При этом Фаррелл выделял следующие виды...
342. Инструментальные среды программирования 14.75 KB
Инструментальные среды программирования содержат прежде всего текстовый редактор позволяющий конструировать программы на заданном языке программирования инструменты позволяющие компилировать или интерпретировать программы на этом языке а также тестировать и отлаживать полученные программы. Различают следующие классы инструментальных сред программирования см. Инструментальные среды программирования общего назначения содержат набор программных инструментов поддерживающих разработку программ на разных языках программирования например...
561. Качество среды обитания 5.35 KB
Качество среды обитания Качество среды обитания это степень соответствия параметров среды потребностям людей и других живых организмов. Их требования к качеству среды обитания достаточно консервативны поэтому техносфера по качеству не должна значительно отличаться от природной среды. В результате значительных антропогенных нагрузок в большинстве городов происходит деградация растительности что ухудшает состояние городской среды. Загрязнение среды обитания вредными веществами неуклонно снижает качество потребляемых продуктов питания воды...
522. Восприятие среды обитания. Анализаторы 5.11 KB
Восприятие среды обитания. Анализаторы Человеку необходимы постоянные сведения о состоянии и изменении внешней среды и обработка этой информации. Возможность получать информацию об окружающей среде способность ориентироваться в пространстве и оценивать свойства окружающей среды обеспечиваются анализаторами. Информация поступающая из внешней среды анализируется в коре головного мозга высшем звене центральной нервной системы.



Учебник создан в соответствии с Федеральным государственным образовательным стандартом среднего профессионального образования по специальностям: 230111 «Компьютерные сети», ОП.04 «Операционные системы», 230113 «Компьютерные системы и комплексы», ОП.07 «Операционные системы и среды», 230115 «Программирование в компьютерных системах», ОП.01 «Операционные системы», 230401 «Информационные системы (по отраслям)», ОП.02 «Операционные системы», 230701 «Прикладная информатика (по отраслям)», ОП.07 «Операционные системы и среды».
Изложены основные сведения о базовых объектах, находящихся под управлением ОС - файлах, пользователях и задачах. Рассмотрены задания операционной системы, определяющие логическую последовательность выполнения задач пользователя. Особое внимание уделяется обеспечению работы множества пользователей в ОС UNIX и WINDOWS - рассмотрены вопросы идентификации пользователей, размещения их личных данных, управление доступом пользователей к файлам и каталогам, определены языковые средства BASH для работы с правами доступа. Описаны методы управления учетными записями пользователей, а также методика персонификации сеансов пользователей при помощи файлов инициализации сеанса в системах UNIX. Дан краткий обзор методов построения прикладных программ на языке С в UNIX-подобных операционных системах и операционных системах WINDOWS.
Для студентов учреждений среднего профессионального образования.

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

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

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

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

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

Большая часть материала, излагаемого в учебнике, дается на примере общих механизмов, существующих в операционных системах семейства UNIX и Windows. Часть материала применима и для операционных систем семейства DOS (в частности, раздел, посвященный заданиям в Windows).

В качестве основной учебной операционной системы рассматривается свободно распространяемая ОС Linux и операционная система Windows 7, однако большая часть материала книги применима для всех основных версий UNIX-систем и Windows семейства NT.

Учебник состоит из трех частей и приложений:

  • терминологическое введение содержит определения основных понятий и принципов работы операционных систем, на которые опирается дальнейшее изложение;
  • главы 1-6 дают читателю представление об основных этапах истории развития, объектах, поддерживаемых операционной системой: памяти, файлах, пользователях, заданиях и методах работы с ними;
  • главы 7 -10 углубляют знания читателя о файлах и пользователях, затрагивают вопросы администрирования ОС. Также в этих главах вводятся в рассмотрение вопросы управления процессами и механизмы взаимодействия между процессами, поддерживаемые операционными системами UNIX и Windows;
  • приложения содержат справочную информацию по структуре каталогов системы «Контроль знаний» и по основным командам операционной системы UNIX.

ТЕРМИНОЛОГИЧЕСКОЕ ВВЕДЕНИЕ

ОСНОВНЫЕ ПОНЯТИЯ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

УНИВЕРСАЛЬНЫЕ И СПЕЦИАЛИЗИРОВАННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМЫ. ОПЕРАЦИОННЫЕ СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ

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

К классу операционных систем общего назначения относят операционные системы, которые могут являться как однопроцессными, так и многопроцессными, как многопользовательскими, так и однопользовательскими. Это операционные системы, которые работают в составе обычных настольных систем. Их основное предназначение состоит в том, чтобы предоставить пользователю системы удобный и понятный механизм управления аппаратными средствами вычислительной системы, обрабатывать запросы пользователя, максимально изолируя его от низкоуровневых операций и интерфейсов. Такие операционные системы ориентируются в первую очередь на простоту применения, поскольку их основными пользователями обычно являются не программисты, а пользователи средней или низкой квалификации. Зачастую такие пользователи могут даже не представлять, что за красивой картинкой анимированных обоев и разнообразием всевозможных красот графических интерфейсов скрывается мощнейший программный комплекс, управляющий всем аппаратным комплексом компьютера. К подобным операционным системам относятся настольные версии операционных систем семейства Windows, Linux, Apple iOS и т.д. Иными словами, это те операционные системы, с которыми пользователь может иметь дело как на работе для выполнения каких-то необходимых задач, так и дома для развлечения.

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

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

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

ОПЕРАЦИОННЫЕ СИСТЕМЫ СЕМЕЙСТВ UNIX И WINDOWS

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

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

ФАЙЛОВЫЕ СИСТЕМЫ

ОРГАНИЗАЦИЯ ХРАНЕНИЯ ДАННЫХ НА ДИСКЕ

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

Для продолжительного хранения данных пользователя используются накопители данных - дисковые (жесткие диски, CD-и DVD-диски, флоппи-диски), ленточные (стримеры) или твердотельные (flash-накопители). Взаимодействие с накопителем берет на себя операционная система, а единицей пользовательских данных в этом случае является файл.

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

ФАЙЛОВЫЕ СИСТЕМЫ

Что же представляет собой файл с точки зрения операционной системы, а точнее, с точки зрения файловой системы как части ядра ОС?

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

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

УПРАВЛЕНИЕ ПАМЯТЬЮ В ОПЕРАЦИОННЫХ СИСТЕМАХ

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

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

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

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

  1. сократить время доступа к основной памяти;
  2. увеличить размер доступной процессам основной памяти;
  3. увеличить эффективность доступа процессов к основной памяти.

ПРОЦЕССЫ

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

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

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

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

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

ПОЛЬЗОВАТЕЛИ СИСТЕМЫ

ВХОД В СИСТЕМУ

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

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

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

В ответ на это приглашение требуется ввести свое учетное имя, после чего на экран будет выведен запрос пароля:

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

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

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

Кроме обычных пользователей и псевдопользователей в системе еще существует как минимум один суперпользователь, выполняющий функцию системного администратора. Этот пользователь имеет исключительное право доступа ко всем ресурсам, предоставляемым операционной системой. В UNIX-системах этот пользователь обычно имеет учетное имя root.

УПРАВЛЕНИЕ ПОЛЬЗОВАТЕЛЯМИ

СОЗДАНИЕ ПОЛЬЗОВАТЕЛЕЙ И ГРУПП

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

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

Для создания новой учетной записи пользователя используется команда useradd, выполнять которую можно только от лица пользователя root. В самой простой форме запуска

useradd <логин>

она создает в файле /etc/passwd новую учетную запись с первым незанятым UID и GID, домашним каталогом вида /1юте/<логин> и командным интерпретатором по умолчанию (обычно /bin/bash).

Для того чтобы явно задать UID, GID, домашний каталог и командный интерпретатор, можно воспользоваться расширенной формой команды:

useradd -u -g -d <каталог> -s <интерпретатор> <логин>

Например, для создания учетной записи пользователя vasya с UID = 10001, GID = 200, домашним каталогом /home2/vasya и командным интерпретатором по умолчанию /bin/zsh необходимо выполнить команду…

ФАЙЛЫ ИНИЦИАЛИЗАЦИИ СЕАНСА ПОЛЬЗОВАТЕЛЯ

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

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

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

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

ПРИКЛАДНОЕ ПРОГРАММИРОВАНИЕ ПОД UNIX И WINDOWS

ЗАГОЛОВОЧНЫЕ ФАЙЛЫ

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

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

В UNIX и Linux стандартные заголовочные файлы, содержащие определения системных вызовов, находятся в каталоге /usr/ include. Каждый файл содержит определения функций и типов данных. При этом для определений системных вызовов характерен отказ от использования стандартных типов файлов. Например, системный вызов…

В операционных системах Windows, в отличие от операционных систем UNIX или Linux, система разработки на языке С недоступна по умолчанию, она требует дополнительной установки. Существует целый ряд систем разработки под ОС семейства Windows, в частности, есть семейство систем разработки Microsoft Visual Studio, включающих в себя компилятор языка С. Также существует несколько разновидностей системы компиляции дсс, распространенной в Linux, адаптированной для Windows, например идущие в составе MinGW или cygwin.

3.2.1. Операционные системы, среды и оболочки

Операционные системы (ОС) в настоящее время являются обязательной составляющей системного ПО ЭВМ. Без ОС функционирование ЭВМ и выполнение ею пользовательских задач невозможны.
Операционная система — это комплекс взаимосвязанных программ, обеспечивающих интерфейс между приложениями и пользователями, с одной стороны, и аппаратурой компьютера — с другой, и реализующих рациональное управление ресурсами компьютера (в соответствии с некоторыми критериями).
Таким образом, с точки зрения обычного пользователя (не являющегося профессионалом в области информационных технологий), ОС выполняет две основные функции:
— предоставляет пользователю дружественный интерфейс;
— обеспечивает эффективное использование аппаратно- программных ресурсов ЭВМ.
Интерфейс, предоставляемый пользователю, действует как интерфейс между приложениями и пользователем, с одной стороны, и аппаратурой ЭВМ — с другой.Типичными объектами, с которыми манипулирует обычный пользователь, работая в среде той или иной ОС, являются диски, папки и файлы, окна и различные графические (если используется графический интерфейс пользователя) элементы окон (кнопки и т. п.). ОС обеспечивает для манипуляций с этими объектами интерфейс пользователя — UI (user interface). Задача ОС — обеспечить максимально дружественный, т. е. требующий в минимальном объеме специальных знаний, интуитивно понятный пользовательский интерфейс. В настоящее время для решения этой задачи в UI широко используется графика. Такой интерфейс получил название графического интерфейса пользователя — GUI (graphical user interface).
Программисту ОС предоставляет программный интерфейс (интерфейс прикладного программирования) — API (application programming interface). Он представляет собой стандартизированный набор функций, процедур, других программных компонентов, который освобождает программиста от выполнения рутинных операций. При помощи указанного набора функций приложение запрашивает функции нижнего уровня (как правило, функции операционной системы). Чем богаче этот набор, чем шире возможности той или иной функции из этого набора, тем проще программисту реализовать рутинные, типичные функции приложения при взаимодействии его с ОС. На рис. 3.4 представлена схема интерфейсов ОС.
Из этой схемы следует, что пользователь и приложения (программы) взаимодействуют между собой не непосредственно, а через ОС. Сами приложения также взаимодействуют между собой только через «посредника» — ОС.
Решение любой задачи на ЭВМ требует определенных информационных, программных и аппаратных средств, которые

выступают по отношению к решаемой задачи как ресурсы. В общем случае какой-либо процесс (процедура) решаемой программы либо другая программа (при выполнении на ЭВМ нескольких программ одновременно) могут потребовать доступа к ресурсу, который уже занят другой процедурой (программой). Возникает проблема оптимального, исходя из определенных критериев, распределения ограниченных ресурсов между процессами (программами). Именно эту проблему и должна решать ОС.
Наряду с указанными выше двумя основными функциями ОС выполняет и ряд других, в том числе сервисных, основными из которых являются:
— обработка нештатных (аварийных) ситуаций, возникающих при решении задач;
— диагностика и сервисное обслуживание дисков — исправление ошибок в адресации данных, расположенных на дисках, оптимизация расположения данных на диске;
— конфигурирование аппаратных средств ЭВМ под нужды пользователя.
В настоящее время специфика той или иной ОС во многом определяется типом аппаратуры (аппаратной платформы), на которую она ориентирована. Поэтому по типу аппаратных средств, для которых предназначена ОС, различают ОС мейнфреймов (больших ЭВМ) и ОС персональных ЭВМ.
ОС персональных ЭВМ можно разделить на:
— однозадачные и многозадачные (в зависимости от допустимого числа одновременно решаемых задач);
— однопользовательские и многопользовательские (в зависимости от допустимого числа одновременно обслуживаемых пользователей);
— одно- и многопроцессорные (в зависимости от допустимого количества процессоров в аппаратуре компьютера);
— локальные и сетевые (по ориентации на возможность работы в локальных вычислительных сетях; локальные ОС предназначены для автономного компьютера; сетевые ОС ориентированы на обеспечение работы компьютеров в локальной сети).
Следует отметить, что современные ОС, как правило, являются в той или иной степени сетевыми. Если в локальной сети выделен специальный компьютер (называемый сервером) для обслуживания сетевого взаимодействия, то ОС, ориентированная на такое обслуживание всей сети, называется серверной. В таком случае ОС, установленные на других компьютерах (клиентах), называют клиентскими (или ОС рабочей станции). Так, например, ОС Windows 98 не только поддерживает работу компьютера в автономном режиме, но и может выступать в роли клиентской ОС.
Более подробно о сетевых ОС рассказывается в гл. 5.
Рассмотрим эволюцию операционных систем. Первые ЭВМ не имели ОС. Одни и те же специалисты проектировали, программировали и эксплуатировали ЭВМ. Программирование велось на машинном языке. Никакого системного программного обеспечения не было. Постепенно, с совершенствованием аппаратуры, появились первые алгоритмические языки, применение которых позволило расширить круг пользователей ЭВМ. Это потребовало как более эффективной организации их работы на ЭВМ, так и более эффективного использования аппаратных ресурсов ЭВМ, прежде всего процессора (необходимо было свести к минимуму простои процессора при подготовке задания к выполнению на ЭВМ оператором). Для решения этой проблемы были разработаны системы пакетной обработки данных, автоматизировавшие работы оператора по подготовке вычислительного процесса и позволявшие запускать на выполнение не одну, а несколько задач (пакет). Эти системы стали первыми системными программами, прообразом ОС, т. е. появилось разделение программного обеспечения на системное и прикладное. На 1965—1975 гг. приходится «золотой век» в развитии ОС. Именно в эти годы были разработаны и реализованы все основные методы и механизмы, характеризующие современные ОС. Наиболее значимым событием стала промышленная реализация мультипрограммирования — способа организации вычислительного процесса, при котором в памяти ЭВМ размещается одновременно несколько программ, использующих один и тот же процессор. Это позволило существенно повысить эффективность использования дорогостоящих ЭВМ. Следующим достижением, уже непосредственно затрагивающим возможности интерфейса пользователя, стала разработка систем разделения времени, которые обеспечивали пользователю возможность работать за собственным монитором (терминалом) и при многопользовательском (многотерминальном) режиме работы создавали у пользователя иллюзию монопольного владения ресурсами ЭВМ (на основе мультипрограммного режима работы). Это существенно повышало удобство работы пользователей ЭВМ. В начале 70-х гг. появились первые сетевые ОС, что потребовало значительных усилий по стандартизации протоколов (правил) обмена в сетях. Начало 80-х гг. ознаменовалось появлением персональных компьютеров. Одной из основных задач, в связи с ориентацией этих ЭВМ на массового, обычного пользователя, стала задача разработки дружественного интерфейса пользователя. Другая важная задача — развитие сетевых компонентов ОС в целях приближения возможностей персональных ЭВМ при решении сложных задач к возможностям мощных больших ЭВМ — мейнфреймов (за счет «объединения» их вычислительных ресурсов в сети). Именно решение этих задач определяет направление разработки современных ОС.
Как указывалось выше, современные ОС предусматривают возможность работы ЭВМ в сети. Наиболее распространены в настоящее время ОС семейств Unix, Windows, Netware. ОС MS DOS — до недавнего времени одна из наиболее популярных ОС для персональных компьютеров — уже практически не используется в качестве ОС современного компьютера. Тем не менее существует достаточно много программ, ориентированных на работу под управлением именно этой ОС. Как достоинства, так и недостатки этой ОС оказали серьезное влияние на разработку более совершенных ОС. При разработке современных ОС большое внимание уделяется вопросам их переносимости (т. е. возможности функционирования) на разные аппаратные платформы, совершенствованию интерфейса пользователя с ОС, разработке методов организации параллельных вычислений, способных существенно ускорить решение задач на ЭВМ.
Типичный пример системного ПО наряду с ОС — операционные среды и оболочки, основной причиной разработки которых явилось стремление более полно удовлетворить требования пользователя к интерфейсу с ЭВМ. Обычный пользователь достаточно часто не совсем доволен возможностями той или иной операционной системы. Прежде всего данная ситуация характерна для тех ОС, которые требуют от пользователя жесткого соблюдения правил диалога с ЭВМ. Типичным представителем таких ОС является MS DOS. Однако даже развитые (в сравнении с MS DOS) средства интерфейса пользователя ОС семейства Windows могут по тем или иным причинам не устраивать пользователя.
Аналогичная ситуация имеет место и в том случае, когда пользователем является программист. Кроме удобного интерфейса, как и обычному пользователю, программисту требуются развитые средства интерфейса прикладного программирования (API), которые необходимы для взаимодействия приложений с операционной системой посредством вызова системных процедур.
Возможности API в первую очередь определяются тем инструментарием, который предоставляет программисту операционная система. Однако программист бывает часто неудовлетворен предоставляемыми ему возможностями, особенно таких ОС, как MS DOS.
Операционная среда — это комплекс системных программ, основным назначением которого является предоставление в распоряжение пользователя как интерфейса пользователя (UI), так и интерфейса прикладного программирования (API), существенно превосходящих по своим возможностям аналогичные интерфейсы, предоставляемые операционной системой. Отличительная черта операционной среды — то, что она надстраивается над существующей ОС, т. е. ее работа невозможна без этой ОС. Наиболее типичным примером удачной операционной среды является Windows-3.1, которая реализована как надстройка над ОС MS DOS.
Операционная оболочка — это комплекс системных программ, обеспечивающий дружественный интерфейс пользователя (UI) с операционной системой, превосходящий по тем или иным параметрам (как правило, по уровню непроцедурности и близости к языку профессиональной деятельности пользователя) аналогичные средства интерфейса пользователя, предоставляемые самой операционной системой.
Примером операционной оболочки является популярная системная программа Norton Commander.







2024 © gtavrl.ru.