Многопроцессорные системы (Операционные системы UNIX)

Автор работы: Пользователь скрыл имя, 11 Сентября 2011 в 10:03, курсовая работа

Описание работы

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

Содержание работы

Введение
Структура и специфика многопроцессорных систем
История появления и развития многопроцессорных систем
Общая структура многопроцессорной системы
Спецификация аппаратных средств многопроцессорной системы
Операционные системы для работы с многопроцессорными системами
Первые операционные системы для работы в многопроцессорной конфигурации
Виды многопроцессорных систем и операционные системы для работы с ними
Операционная система UNIX в многопроцессорной конфигурации
Общий обзор особенностей системы UNIX
Преимущества операционная система UNIX
Недостатки операционная система UNIX
Cистемы UNIX в многопроцессорной конфигурации
Проблемы, связанные с многопроцессорными системами и решение их в операционной системе UNIX

Заключение

Список используемой литературы

Файлы: 1 файл

курсовая работа.doc

— 177.50 Кб (Скачать файл)

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

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

 

    3.1.2 Недостатки операционная система UNIX

Известно, что любая медаль имеет две  стороны. Один из наиболее объективных  обзоров UNIX был создан не кем иным, как Денисом Ритчи. В январе 1987 года на конференции USENIX в разделе  «Ретроспективы UNIX» Ритчи сделал доклад, где провел анализ многих недостатков системы. Хотя UNIX изначально была весьма простой системой, это вскоре закончилось. Например, AT&T добавила в стандартную библиотеку ввода-вывода буферизацию данных, что повысило ее эффективность и сделало программы переносимыми на не-UNIX-системы.

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

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

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

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

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

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

 

    3.2 Cистемы UNIX в многопроцессорной конфигурации

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

В традиционных системах UNIX приоритет процесса определяется двумя факторами: фактором «любезности» и фактором утилизации. Пользователи

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

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

Синхронизация

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

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

♦ операции блокировки;

♦ прерывания;

♦ работа многопроцессорных систем.

Операции блокировки

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

Синхронизация

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

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

♦ операции блокировки;

♦ прерывания;

♦ работа многопроцессорных систем.

 

    3.3  Проблемы, связанные с многопроцессорными системами и решение их в операционной системе UNIX

    В  классической постановке для системы UNIX предполагается использование

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

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

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

1.Исполнять все критические операции  на  одном  процессоре,  опираясь  на стандартные методы сохранения целостности данных в однопроцессорной системе;

Информация о работе Многопроцессорные системы (Операционные системы UNIX)