Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Структуры данных




 

Таблица процессов.

 

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

 

 

Операции над процессами в Unix/

 

Создание поцесса – выполнение системного вызова. PID=fork(). – его значение – идентификатор процесса. При обработке такого вызова создается дочерний процесс. Различие дочернего и родительского процесса – родительскому процесу будет возвращаться идентификатор дочернего процесса, а дочернемцу- идентификаторр родительского. Таким образом возврат из fork() должен осуществляться в оба процесса. В Unix процесс получается копированием родительского.

 

Этапы:

1) проверяется наличие ресурсов. В случае неудачи возвращается отрицательный иидентификатор.

2) Выделяется место в таблице процессов

3) Систма вырабатывает и присваивает процессу уникальный идентификатор.

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

 

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

Вызов fork() прекращается при возвращении двух разных значений PID/

 

Лекция 16.

Переключение контекста

Осуществляется по принципу: A->B->C->B (в действительности выполняется несколько процедур параллельно) – сохранить сведения о процессе Аб сохранить, а затем восстановить сведения о процессе В и т.д.

Переключение контекста происходит кода:

1) процесс завершил свою работу

2) выполнение системного вызова и блокирование работы

3) Данный процесс не является наиболее подходящим для выполнения (после системного вызова и обработки прерываний)

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

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

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

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

Характеристика управляющего потока:

1) -содержимое регистров процессор

-указатель команд

-сожержиммое РОН

2) –текущее состояние стеков (проверка вызовов подпрограмм)

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

Пример:

Ввод массива А

Ввод массива В

Ввод массива С

A[i]]:=A+B

A:=A+C

Вывод А

- в этой программе присутствует паралелизм и операции блокирования

Паралелизм: после ввода А и В уже можно посчитать их сумму, а потом блокироваться на ввод С, это обеспечивает быстроту.

Существует две возможности реализовать паралелизм

1) после ввода 2-х массивов организовать новый процесс для их суммирования, для суммирования с третьим – еще одинпроцесс, обеспечить всем процессам совместный доступ к областям памяти. Существенный недостаток такого подхода: при запуске второго процесса требуется выделить, а затем освободить ресурсы. Выигрыш по времени исчезает

2) не привлекать ОС и не создавать новый процесс

Нить – управляющий поток внутри текущего процесса. Они позволяют перераспределить, а не выделяют новые ресурсы..

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

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

Для нити вводится понятие состояния:

- состояние готов процесса – если хотя бы она нить находится в состоянии готов

- процесс находится в состоянии ожидания – если все нити находятся в состоянии ожидания

-процесс выполняется – если хотя бы одна из нитей испоняется

Процесс создается с одной нитью. Процесс с одной нитью назывется традиционным.

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

Существует два способа реализации нитей: реализация в процессе пользователя и реализация средствами ОС.

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

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

Система поддержки так же переключает выполнение с одной нти на другую.

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

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

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

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

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

Обчно используются обе возможности.

Пример – Windows

 

Лекция 17.

Операции над процессами в Unix/

Создание поцесса – выполнение системного вызова. PID=fork(). – его значение – идентификатор процесса. При обработке такого вызова создается дочерний процесс. Различие дочернего и родительского процесса – родительскому процесу будет возвращаться идентификатор дочернего процесса, а дочернемцу- идентификаторр родительского. Таким образом возврат из fork() должен осуществляться в оба процесса. В Unix процесс получается копированием родительского.

Этапы:

1) проверяется наличие ресурсов. В случае неудачи возвращается отрицательный иидентификатор.

2) Выделяется место в таблице процессов

3) Систма вырабатывает и присваивает процессу уникальный идентификатор.

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

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

Вызов fork() прекращается при возвращении двух разных значений PID/

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

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

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

алгоритм выполнения:

1) проверка существования файла

2) проверка формата файла

3) Проверка прав доступа

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

5) Модификация системного и регистрового контекста

Системный контекст:

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

- может быть дано указание игнорировать сигналы – замена пользовательского контекста на это не влияет, сигналы новой программы будут по-прежнему игнорироваться

Регистровый контекст:

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

6) ОС ставит процесс в состояние готов

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

Системный вызов exit() - завершение выполнения процесса.

1) отменяет обработку всех сигналов в силу бессмысленности последней

2) просматривает дескрипторы открытых файлов и выполняет процесс завершения

3) записывает данные на диск

4) освобождает индексы текущего корневого каталога и текущей директории

5) освобождает области памяти процесса состояния

6) переводит процесс в стадию завершения существования в таблицу процессов записывается код завершения процесса

7) запись в таблице остается до запроса родительского процесса или до его закрытия

Планирование процессов

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

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

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

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

От планирования процессов зависят внешние характеристики ОС, в частности производительность.

Уровни планирования:

- планирование заданий

- планирование подкачки

- планирование использования процессора

Планирование заданий (в настоящее время редко используемый уровень)

Появился в пакетных системах. Выбранное задание выполнялось достаточно долго – планирование называлось долгосрочным.Позволяло определить степень многозадачности системы (означало реальное количество запущеннных параллельно задач).

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

Планирование подкачки:

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

Планирование использования процессов:

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

Критерии планирования и алгоритм планирования

Критерии:

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

- эффективность – оптимизация степени загрузки вычислительной системы (обычно н превышает 5%, редко достигает 90%).алгоритм должен загружать процесор на 100%, учитывая и загрузку остальных устройств

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

-минимизация среднего времени ожидания (процесс находится в состоянии готов, а процессор не выделяется)

- минимизация времени отклика

Свойства алгоритмов планирования

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

- минимальные накладные расходы

- равномерная загрузка ресурсов вычислительной истемы

- обладают свойством масштабируемости

Параметры планирования:

Параметры планирования – численные характеристики, показывающие степень выполнения критериев

- статические – которые не изменяются в процессе работы вычислительной системы

- динамические – изменяемые

Параметры планирования К статическим параметрам вычислительной системы можно отнести предельные значения ее ресурсов (размер оперативной памяти, максимальное количество памяти на диске для осуществления свопинга, количество подключенных устройств ввода-вывода и т. п.). Динамические параметры системы описывают количество свободных ресурсов на данный момент.Алгоритмы долгосрочного планирования используют в своей работе статические и динамические параметры вычислительной системы и статические параметры процессов (динамические параметры процессов на этапе загрузки заданий еще не известны). Алгоритмы краткосрочного и среднесрочного планирования дополнительно учитывают и динамические характеристики процессов. Для краткосрочного планирования нам понадобится ввести еще два динамических параметра. Деятельность любого процесса можно представить как последовательность циклов использования процессора и ожидания завершения операций ввода-вывода. Промежуток времени непрерывного использования процессора носит название CPU burst, а промежуток времени непрерывного ожидания ввода-вывода – I/O burst. Значения продолжительности последних и очередных CPU burst и I/O burst являются важными динамическими параметрами процесса.

100%
Загрузка процессора

Где сооотв. Надписи означают работу соотв. Устройств

Таким образом, программу можно описать в виде последовательности загружает процессор/ожидает EDD

- интервал времени непрерывной загрузки процессора

= интервал времени непрерывного выполнения операций ввода/вывода

 

Лекция 18




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 372; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.055 сек.