Сходства потоков и процессов 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Сходства потоков и процессов



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

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

Рисунок 3 - Многоуровневая приоритетная очередь (массив распределения)

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

В Linux / Unix используется две стратегии планирования процессов: FIFO, RR (рисунок 4).

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

Переключение контекста происходит тогда, когда процессор переключается с одного процесса на другой.

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

- БУП-блок прерванного процесса обновляется и изменяется поле состояния процесса (выполнение - готовность, блокирования, "зомби")

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

Рисунок 4 - FIFO, RR

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

· процесс выгружается;

· процесс добровольно отказывается от процессора;

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

· процесс переходит из пользовательского режима в режим ядра.

Создание процесса.

Действие при создании:

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

- создается и инициализируется БУП и в его раздел идентификации процесса записывается уникальный ID процесса и ID родительского процесса;

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

- процесс инициализируется любыми требуемыми атрибутами;

- если процессу не присвоено значение приоритета, то по умолчанию присваивается самое низкое значение.

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

Процесс "входит" в состояние выполнения и помещается в очередь готовых к выполнению процессов.

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

Завершение процесса.

Действия при завершении:

- БУП разрушается;

- освобождается адресное пространство;

- освобождаются ресурсы;

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

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

Процесс завершается если:

- все инструкции выполнены;

- процесс явным образом передает управление родительскому процессу или вызывает системную функцию, которая завершает процесс;

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

- родительский процесс посылает сигнал о завершении своих дочерних процессов.

Аварийное завершение в случае следующих действий:

- процесс требует больше памяти, чем система может ему предоставить;

- процесс пытается получить доступ к неразрешенным ресурсам;

- процесс пытается выполнить некорректную инструкцию или запрещенное вычисление.

Ресурсы процессов.

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

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

Ресурсы могут также быть модифицируемыми и немодифицируемыми со стороны процессов.

Ресурсы подразделяются на: аппаратные, информационные и программные.

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

- размер стека процесса;

- размер создаваемого файла или файла ядра;

- объем времени ЦП, выделенный процессу;

- объем памяти, используемый процессом;

- количество дескрипторов открытых файлов

Асинхронные и синхронные процессы.

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

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

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

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

Ошибка (fault) - программный дефект, который может привести к отказу в работе некоторой части ПО.

Сбой в системе ПО (failure) - выполнение некоторого компонента ПО, который отклоняется от системных спецификаций.

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

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

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

Аппаратные и программные сбои:

ПО:

· уровень ошибок пользователя;

· программные сбои на уровне приложений;

· программные сбои на уровне библиотеки;

· программные сбои на уровне ОС компьют. и сети

АП:

· сбои процессора и устройств памяти;

· сбои устройств ввода - вывода;

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

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

Таблица. Типы тестирования, используемые в процессе разработки ПО.

1) Блочное тестирование, или тестирование элементов (unit testing) - ПО тестируется поэлементно. Под элементом может подразумеваться отдельный программный модуль, группа модулей, функция, процедура, алгоритм, программа или комплект.

2) Проверка взаимодействия и функционирования компонентов системы (integration testing) - тестируется некоторая совокупность элементов. Элементы объединяются в логические группы, и каждая группа тестируется как единый блок. Эти группы могут подвергаться одинаковым проверкам. Если группа элементов проходит тест, ее присоединяют к тестируемой совокупности, которая в свою очередь должна быть протестирована с новым дополнением.

3) Регрессивное тестирование (regression testing) - программные модули должны повторно тестироваться, если в них были внесены изменения. Регрессивное тестирование дает гарантию, что изменение любого компонента не приведёт к потере функциональности.

4) Испытания в утяжелённом режиме (stress testing) - тестирование, которое проводится для компонента или всей системы при предельных и "запредельных" значений выходных параметров. Использование граничных условий позволяет определить, что может произойти с компонентом или системой в некоторых ситуациях.

5) Эксплуатационные испытания (operational testing) - тестирование системы с полной нагрузкой. Для этого используется реальная среда, создающая реальную нагрузку. Этот тип тестирования также применяется для определенной производительности системы в совершенно незнакомой среде.

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

7) Приёмочные испытания (acceptance testing) - тестирование этого типа выполняется конечным пользователем модуля, компонента или системы для определения его производительности. Этот этап является частью процесса аттестации ПО.

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

Обработка ошибок:

Ø логические ошибки обнаруживаются на этапе тестирования и доставки;

Ø Корректно работающие программы не содержат ошибок;

Ø для предупреждения и исправления ошибок используется программная логика;

Ø поддерживается нормальный ход выполнения программы.

Обработка исключительных ситуаций6

Ø описывание непредвиденного условия во время выполнения;

Ø корректно написанные программы могут попадать в исключительные ситуации;

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

Обработка нежелательных условий:

Ø описывание нежелательных условий, которые весьма вероятны во время выполнения;

Ø корректно написанные программы могут попадать в нежелательные ситуации;

Ø для исправления нежелательных условий используется программная логика

Ø делается попытка поддержать нормальный ход выполнения программы

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

Ø завершить программу;

Ø возвратить значение, обозначающее ошибку;

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

Ø вызвать функцию, предназначенную для вызова в случае ошибки.,

Разбиение программ на множество потоков.

Потоки

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

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

Основной поток - программный поток управления или выполнения.

Многопоточный процесс - такой процесс, который имеет несколько потоков.

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

Информация в контексте процесса: в основном это адресное пространство процесса, ресурсы, которые он владеет.

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

Планирование потоков и область конкуренции

- уровень процесса;

- уровень системы.

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

уровень приоритета - очередь потоков с одинаковым значением приоритета.

Стратегии FIFO и RR

Ресурсы потоков.

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

Синхронизация потоков.

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

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

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

Рисунок 3 - Многоуровневая приоритетная очередь (массив распределения)

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

В Linux / Unix используется две стратегии планирования процессов: FIFO, RR (рисунок 4).

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

Переключение контекста происходит тогда, когда процессор переключается с одного процесса на другой.

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

- БУП-блок прерванного процесса обновляется и изменяется поле состояния процесса (выполнение - готовность, блокирования, "зомби")

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

Рисунок 4 - FIFO, RR

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

· процесс выгружается;

· процесс добровольно отказывается от процессора;

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

· процесс переходит из пользовательского режима в режим ядра.

Создание процесса.

Действие при создании:

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

- создается и инициализируется БУП и в его раздел идентификации процесса записывается уникальный ID процесса и ID родительского процесса;

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

- процесс инициализируется любыми требуемыми атрибутами;

- если процессу не присвоено значение приоритета, то по умолчанию присваивается самое низкое значение.

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

Процесс "входит" в состояние выполнения и помещается в очередь готовых к выполнению процессов.

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

Завершение процесса.

Действия при завершении:

- БУП разрушается;

- освобождается адресное пространство;

- освобождаются ресурсы;

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

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

Процесс завершается если:

- все инструкции выполнены;

- процесс явным образом передает управление родительскому процессу или вызывает системную функцию, которая завершает процесс;

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

- родительский процесс посылает сигнал о завершении своих дочерних процессов.

Аварийное завершение в случае следующих действий:

- процесс требует больше памяти, чем система может ему предоставить;

- процесс пытается получить доступ к неразрешенным ресурсам;

- процесс пытается выполнить некорректную инструкцию или запрещенное вычисление.

Ресурсы процессов.

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

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

Ресурсы могут также быть модифицируемыми и немодифицируемыми со стороны процессов.

Ресурсы подразделяются на: аппаратные, информационные и программные.

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

- размер стека процесса;

- размер создаваемого файла или файла ядра;

- объем времени ЦП, выделенный процессу;

- объем памяти, используемый процессом;

- количество дескрипторов открытых файлов

Асинхронные и синхронные процессы.

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

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

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

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

Ошибка (fault) - программный дефект, который может привести к отказу в работе некоторой части ПО.

Сбой в системе ПО (failure) - выполнение некоторого компонента ПО, который отклоняется от системных спецификаций.

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

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

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

Аппаратные и программные сбои:

ПО:

· уровень ошибок пользователя;

· программные сбои на уровне приложений;

· программные сбои на уровне библиотеки;

· программные сбои на уровне ОС компьют. и сети

АП:

· сбои процессора и устройств памяти;

· сбои устройств ввода - вывода;

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

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

Таблица. Типы тестирования, используемые в процессе разработки ПО.

1) Блочное тестирование, или тестирование элементов (unit testing) - ПО тестируется поэлементно. Под элементом может подразумеваться отдельный программный модуль, группа модулей, функция, процедура, алгоритм, программа или комплект.

2) Проверка взаимодействия и функционирования компонентов системы (integration testing) - тестируется некоторая совокупность элементов. Элементы объединяются в логические группы, и каждая группа тестируется как единый блок. Эти группы могут подвергаться одинаковым проверкам. Если группа элементов проходит тест, ее присоединяют к тестируемой совокупности, которая в свою очередь должна быть протестирована с новым дополнением.

3) Регрессивное тестирование (regression testing) - программные модули должны повторно тестироваться, если в них были внесены изменения. Регрессивное тестирование дает гарантию, что изменение любого компонента не приведёт к потере функциональности.

4) Испытания в утяжелённом режиме (stress testing) - тестирование, которое проводится для компонента или всей системы при предельных и "запредельных" значений выходных параметров. Использование граничных условий позволяет определить, что может произойти с компонентом или системой в некоторых ситуациях.

5) Эксплуатационные испытания (operational testing) - тестирование системы с полной нагрузкой. Для этого используется реальная среда, создающая реальную нагрузку. Этот тип тестирования также применяется для определенной производительности системы в совершенно незнакомой среде.

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

7) Приёмочные испытания (acceptance testing) - тестирование этого типа выполняется конечным пользователем модуля, компонента или системы для определения его производительности. Этот этап является частью процесса аттестации ПО.

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

Обработка ошибок:

Ø логические ошибки обнаруживаются на этапе тестирования и доставки;

Ø Корректно работающие программы не содержат ошибок;

Ø для предупреждения и исправления ошибок используется программная логика;

Ø поддерживается нормальный ход выполнения программы.

Обработка исключительных ситуаций6

Ø описывание непредвиденного условия во время выполнения;

Ø корректно написанные программы могут попадать в исключительные ситуации;

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

Обработка нежелательных условий:

Ø описывание нежелательных условий, которые весьма вероятны во время выполнения;

Ø корректно написанные программы могут попадать в нежелательные ситуации;

Ø для исправления нежелательных условий используется программная логика

Ø делается попытка поддержать нормальный ход выполнения программы

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

Ø завершить программу;

Ø возвратить значение, обозначающее ошибку;

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

Ø вызвать функцию, предназначенную для вызова в случае ошибки.,

Разбиение программ на множество потоков.

Потоки

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

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

Основной поток - программный поток управления или выполнения.

Многопоточный процесс - такой процесс, который имеет несколько потоков.

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

Информация в контексте процесса: в основном это адресное пространство процесса, ресурсы, которые он владеет.

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

Сходства потоков и процессов

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

· и поток, и процесс имеют атрибуты, которые описывают их особенности для ОС;

· как поток, так и процесс имеют атрибуты, которые описывают их особенности для ОС;

· как поток, так и процесс имеют информационные блоки;

· оба разделяют ресурс с родительским процессом;

· Оба функционируют независимо от родительского процесса

· их создатель может управлять потоком или процессом;

· и поток, и процесс могут изменять свои атрибуты;

· оба могут создавать новые ресурсы;

· как поток, так и процесс не имеют доступа к ресурсам другого процесса.

Различия:

· потоки разделяют адреса пространства процесса, который их создал; процессы имеют свое адресное пространство;

· потоки имеют прямой доступ к разделу данных своего процесса; процессы имеют собственную копию раздела данных родительского процесса;

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

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

· новые потоки создать легко; новый процесс требует дублирования родительского процесса;

· Потоки могут в значительной степени управлять потоками того же процесса;

· изменения, вносимые в поток, могут влиять на поведение других потоков процесса; изменения, вносимые в родительский поток процесс, не влияют на сыновные процессы;

Преимущество исполняемых потоков:

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

· достигается более высокая производительность приложений;

· для обеспечения взаимодействия между задачами не требуется никакого специального механизма;

· программа имеет более простую структуру.

Недостатки:

· потоки могут легко разрушить адресное пространство процесса;

· потоки необходимо синхронизировать при параллельном доступе;

· один поток может ликвидировать целый процесс или программу;

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

Потоки отличаются друг от друга:

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

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

Состояние потока - условия, в которых поток пребывает в любой момент времени.

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

Состояния потоков:

Планирование потоков и область конкуренции

- уровень процесса;

- уровень системы.

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

уровень приоритета - очередь потоков с одинаковым значением приоритета.

Стратегии FIFO и RR



Поделиться:


Последнее изменение этой страницы: 2020-10-24; просмотров: 303; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.203.68 (0.135 с.)