Домой

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




НазваниеМи, управления вычислительными процессами, эффективного распределения вычислительных ресурсов между вычислительными процессами и организации надёжных вычислений
страница1/6
Дата07.02.2013
Размер0.78 Mb.
ТипПрограмма
Содержание
Tcp/ip, udp/ip
Подобные работы:
  1   2   3   4   5   6

Введение


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


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

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

Основные функции:

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

Загрузка программ в оперативную память и их выполнение.

Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода).

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

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

Обеспечение пользовательского интерфейса.

Сохранение информации об ошибках системы.

Дополнительные функции:

Параллельное или псевдопараллельное выполнение задач (многозадачность).

Эффективное распределение ресурсов вычислительной системы между процессами.

Разграничение доступа различных процессов к ресурсам.

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

Взаимодействие между процессами: обмен данными, взаимная синхронизация.

Защита самой системы, а также пользовательских данных и программ от действий пользователей (злонамеренных или по незнанию) или приложений.

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

История операционных систем

Предыстория

Раньше пользователь получал машину в единоличное пользование; он приходил с программой и данными, обычно записанными на перфокартах или магнитных лентах. Программа загружалась в машину, которая начинала работать, до тех пор, пока программа не завершалась или не выдавала ошибку. Отладка программ осуществлялась при помощи панели управления, снабжённой тумблерами и лампочками. Наибольших успехов в этом достиг Алан Тьюринг на ранней машине Манчестерский Марк I, к тому времени он уже разрабатывал основные принципы работы операционных систем.

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

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

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

Эра мейнфреймов

Первой в мире операционной системой считается GM OS (General Motors Operating System).

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

Системы для оборудования IBM

Такое состояние дел продолжалось до 1960-х, когда IBM, лидирующий поставщик оборудования на тот момент, прекратила разработку существующих систем и направила усилия на создание серии машин System/360, все представители которой должны были использовать одинаковые инструкции и архитектуру ввода/вывода. IBM начала разрабатывать единую операционную систему для этих машин, OS/360. Проблемы, возникшие при создании OS/360, стали легендарными и были описаны в книге Мифический человеко-месяц Фредерика Брукса. Из-за различий в производительности и задержек при разработке программного обеспечения, вместо единой OS/360 было представлено семейство операционных систем под таким же названием.

IBM выпустила ещё несколько операционных систем, среди них три оказались наиболее долгоживущими:

OS/MFT для систем среднего класса. Она имела одного преемника, систему OS/VSI, развитие которой продолжалось до 1980-х.

OS/MVT для крупных машин. Она была сходна с OS/MFT (программы могли переноситься между ними без перекомпилирования), но имела более продвинутое управление памятью и систему разделения времени, TSO. MVT имела несколько наследников, включая z/OS.

DOS/360 для низших моделей System/360 имела несколько преемников, включая z/VSE, используемую до настоящего времени. Она значительно отличалась от OS/MFT и OS/MVT.

IBM поддерживает полную совместимость, поэтому разработанные в шестидесятых программы всё ещё можно запускать под z/VSE (если они создавались для DOS/360) или z/OS (если создавались для OS/MFT или OS/MVT) без изменений.

IBM разрабатывала, но официально не выпустила TSS/360, операционную сиcтему с разделением времени для S/360 Model 67.

Несколько операционных систем для архитектур IBM S/360 и S/370 были разработаны третьими фирмами, включая Michigan Terminal System (MTS) и MUSIC/SP.

Другие операционные системы для мейнфреймов

Control Data Corporation разработала операционную систему SCOPE в 1960-х для обработки пакетных заданий. В сотрудничестве с Университетом Миннесота были созданы операционные системы KRONOS и NOS в 1970-х, которые поддерживали одновременный запуск заданий и разделение времени.

В конце 1970-х Control Data и Университет Иллинойс разработали машину PLATO, привнесшей множество инноваций для своего времени. Система использовала язык программирования TUTOR, что позволило создавать такие программы, как чат в реальном времени и многопользовательские графические игры.

UNIVAC, первый производитель коммерческих компьютеров, создала серию операционных систем EXEC. Как большинство ранних операционных систем для мейнфреймов, это были операционные системы, ориентированные на обработку пакетных заданий. В 1970-х UNIVAC выпустила систему Real-Time Basic.

Burroughs Corporation представила машину B5000 в 1961 с операционной системой MCP (Master Control Program). B5000 поддерживала исключительно языки высокого уровня и не поддерживала машинные языки или ассемблер; таким образом, MCP стала первой операционной системой, написанной только на высокоуровневом языке (ESPOL, диалект Алгола). MCP также представила несколько инноваций, включая первую коммерческую реализацию виртуальной памяти. MCP по сей день используется на компьютерах Unisys ClearPath/MCP.

Project MAC разработал Multics и General Electric Comprehensive Operating Supervisor (GECOS), в которых была введена концепция уровней привилегий.

Digital Equipment Corporation разработала множество операционных систем для своих различных линеек компьютеров, включая системы TOPS-10 и TOPS-20 с разделением времени для 36-битных машин PDP-10. До широкого рапространения UNIX, TOPS-10 пользовалась большой популярностью в университетах и раннем сообществе ARPANET.

Миникомпьютеры и развитие UNIX

Начальные версии операционной системы UNIX были разработаны в AT&T Bell Laboratories в конце 1960-х. Будучи абсолютно бесплатной в первых версиях и легко модифицируемой, эта система завоевала большую популярность. Так как UNIX была написана на языке высокого уровня Си, её можно легко было перенести на новую аппаратную архитектуру. Эта переносимость позволила ей стать основной системой для второго поколения миникомпьютеров и первого поколения рабочих станций.

В то же время Digital Equipment Corporation создала простую операционную систему RT-11 для серии 16-битных машин PDP-11, и систему VMS для 32-битных компьютеровVAX.

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

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

Однозадачные и многозадачные

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

Однопроцессорные и многопроцессорные системы

Локальные и сетевые.

Однозадачные и многозадачные операционные системы

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

MS-DOS-- коммерческая операционная система фирмы Microsoft для IBM PC-совместимых персональных компьютеров. MS-DOS -- самая известная ОС из семейства DOS, ранее устанавливавшаяся на большинство IBM PC-совместимых компьютеров. Со временем она была вытеснена ОС семейства Windows 9x и Windows NT.

MS-DOS была создана в 1981 году и в ходе её развития было выпущено восемь крупных версий (1.0, 2.0 и т. д.) и два десятка промежуточных (3.1, 3.2 и т. п.), пока в 2000 году Microsoft не прекратила её разработку. Это был ключевой продукт фирмы, дававший ей существенный доход и маркетинговый ресурс в ходе развития Microsoft от разработчика языка программирования до крупной компании, производящей самое разнообразное программное обеспечение.

Последней коробочной версией стала 6.22, однако MS-DOS продолжала служить загрузчиком для Windows 95 (версии 7.0 и 7.1), Windows 98 (версия 7.1) и Windows ME (версия 8.0).

Минимальный набор файлов MS-DOS:

Файлы ядра:

BOOT.MBR -- загрузчик, находящийся на нулевом секторе и передающий управление на IO.SYS

IO.SYS -- расширение BIOS

MSDOS.SYS -- обработка прерываний

Командный процессор:

COMMAND.COM -- командный процессор (поддержка интерфейса командной строки).

Строго говоря, для запуска MS-DOS наличие файла COMMAND.COM не является необходимым. Его можно заменить другим командным процессором, способным выполнять нужные вам команды. Делается это добавлением в CONFIG.SYS строки shell=c:\my\myprog.com. В своё время сторонними разработчиками было выпущено множество командных процессоров. Наиболее распространённый командный процессор, выпущенный сторонней фирмой, был NDOS.COM (лицензированный 4DOS) из пакета Norton Utilities фирмы Symantec. Новые версии командного процессора 4DOS продолжают выпускаться до сих пор.

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

Многозадачность -- свойство операционной системы или среды программирования обеспечивать возможность параллельной (или псевдопараллельной) обработки нескольких процессов. Истинная многозадачность операционной системы возможна только в распределённых вычислительных системах.

Существует 2 типа многозадачности[1]:

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

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

Свойства многозадачной среды

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

Более развитые многозадачные системы проводят распределение ресурсов динамически, когда задача стартует в памяти или покидает память в зависимости от её приоритета и от стратегии системы. Такая многозадачная среда обладает следующими особенностями:

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

Система организует очереди задач так, чтобы все задачи получили ресурсы, в зависимости от приоритетов и стратегии системы

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

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

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

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

Система распознаёт сбои и зависания отдельных задач и прекращает их

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

Система гарантирует каждой задаче, что рано или поздно она будет активирована

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

Система обеспечивает коммуникацию между процессами

Типы псевдопараллельной многозадачности:

Невытесняющая многозадачность

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

Совместная или кооперативная многозадачность

Тип многозадачности, при котором следующая задача выполняется только после того, как текущая задача явно объявит себя готовой отдать процессорное время другим задачам. Как частный случай, такое объявление подразумевается при попытке захвата уже занятого объекта mutex (ядро Linux), а также при ожидании поступления следующего сообщения от подсистемы пользовательского интерфейса (Windows версий до 3.x включительно, а также 16-битные приложения в Windows 9x).

Кооперативную многозадачность можно назвать многозадачностью «второй ступени» поскольку она использует более передовые методы, чем простое переключение задач, реализованное многими известными программами (например, DOS Shell из MS-DOS 5.0 при простом переключении активная программа получает все процессорное время, а фоновые приложения полностью замораживаются. При кооперативной многозадачности приложение может захватить фактически столько процессорного времени, сколько оно считает нужным. Все приложения делят процессорное время, периодически передавая управление следующей задаче.

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

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

Реализована в таких ОС, как:

В пользовательском режиме ОС Windows версий до 3.х включительно

Mac OS версий до Mac OS X внутри ядер многих UNIX-подобных ОС, таких, как FreeBSD

Linux в течение долгого времени.

Вытесняющая или приоритетная многозадачность (режим реального времени)

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

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

Недостатки: необходимость особой дисциплины при написании кода, особые требования к его реентрантности, к защите всех разделяемых и глобальных данных объектами типа критических секций и mutex'ов.

Реализована в таких ОС, как:

VMS

Linux

в пользовательском режиме (а часто и в режиме ядра) всех UNIX-подобных ОС, включая версии Mac OS X, iOS; Symbian OS

в режиме ядра ОС Windows 3.x -- только при исполнении на процессоре 386 или старше, «задачами» являются только все Windows-приложения вместе взятые и каждая отдельная виртуальная машина ДОС, между приложениями Windows вытесняющая многозадачность не использовалась

Windows 95/98/ME -- без полноценной защиты памяти, что служило причиной крайне низкой, на одном уровне с MS-DOS, Windows 3.x и Mac OS версий до X -- надежности этих ОС

Windows NT/2000/XP/Vista/7 и в режиме ядра, и в пользовательском режиме.

AmigaOS -- все версии, до версии 4.0 без полноценной защиты памяти, что на практике для системных программ почти не сказывалось на надёжности из-за высокой стандартизированности, прозрачных API и SDK. Программы ориентированные на «железо» Амиги, наоборот не отличались надёжностью.

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

Защищенный режим работы процессора

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

Процессы и потоки

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

Процесс -- выполнение пассивных инструкций компьютерной программы на процессоре ЭВМ. Стандарт ISO 9000:2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие.

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

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

Процесс является «самой тяжёлой» единицей планирования ядра. Собственные ресурсы для процесса выделяются операционной системой. Ресурсы включают память, дескрипторы файлов, разъёмы, дескрипторы устройств и окна. Процессы используют адресное пространство и файлы ресурсов в режиме разделения времени только через явные методы, такие как наследование дескрипторов файлов и сегментов разделяемой памяти. Процессы, как правило, предварительно преобразованы к многозадачному способу выполнения.

Поток выполнения является наименьшей единицей обработки, исполнение которой может быть назначено операционной системой. Реализация потоков выполнения и процессов в разных операционных системах отличается друг от друга, но в большинстве случаев поток выполнения находится внутри процесса. Несколько потоков выполнения могут существовать в рамках одного и того же процесса и совместно использовать ресурсы, такие как память, тогда как процессы не разделяют этих ресурсов. В частности, потоки выполнения разделяют инструкции процесса (его код) и его контекст (значения переменных, которые они имеют в любой момент времени). В качестве аналогии потоки выполнения процесса можно уподобить нескольким вместе работающим поварам. Все они готовят одно блюдо, читают одну и ту же кулинарную книгу с одним и тем же рецептом и следуют его указаниям, причём не обязательно все они читают на одной и той же странице.
  1   2   3   4   5   6

Поиск по сайту:



База данных защищена авторским правом ©dogend.ru 2014
При копировании материала укажите ссылку
обратиться к администрации
Уроки, справочники, рефераты