🗊Презентация Потоки и процессы

Нажмите для полного просмотра!
Потоки и процессы, слайд №1Потоки и процессы, слайд №2Потоки и процессы, слайд №3Потоки и процессы, слайд №4Потоки и процессы, слайд №5Потоки и процессы, слайд №6Потоки и процессы, слайд №7Потоки и процессы, слайд №8Потоки и процессы, слайд №9Потоки и процессы, слайд №10Потоки и процессы, слайд №11Потоки и процессы, слайд №12Потоки и процессы, слайд №13Потоки и процессы, слайд №14Потоки и процессы, слайд №15

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

Слайды и текст этой презентации


Слайд 1





Потоки и процессы
Описание слайда:
Потоки и процессы

Слайд 2





#include <iostream.h>
#include <iostream.h>
int main() 
{
int a, b;
cout <<  “ Input two integers: “  ; 
cin » a » b;
if (a == b) {
cout « "There is no min." « endl; 
return 0;
if (а < Ь)
cout « "min = “ « а « endl; 
else
cout « "min = “ « b « endl; 
return 0;
}
Описание слайда:
#include <iostream.h> #include <iostream.h> int main() { int a, b; cout << “ Input two integers: “ ; cin » a » b; if (a == b) { cout « "There is no min." « endl; return 0; if (а < Ь) cout « "min = “ « а « endl; else cout « "min = “ « b « endl; return 0; }

Слайд 3





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

int f(int n)
{
if (n > 0)
--n; 
if (n < 0)
++n;
return n;
}
Описание слайда:
В общем случае содержимое памяти, к которой поток имеет доступ во время своего исполнения, называется контекстом потока. В общем случае содержимое памяти, к которой поток имеет доступ во время своего исполнения, называется контекстом потока. Рассмотрим следующую функцию: int f(int n) { if (n > 0) --n; if (n < 0) ++n; return n; }

Слайд 4





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

Слайд 5





Теперь введем глобальную переменную n и изменим нашу функцию следующим образом:
Теперь введем глобальную переменную n и изменим нашу функцию следующим образом:
int n ;
void g() 
{
if (n > 0)
--n ;
if (n < 0)
++n;
}
Описание слайда:
Теперь введем глобальную переменную n и изменим нашу функцию следующим образом: Теперь введем глобальную переменную n и изменим нашу функцию следующим образом: int n ; void g() { if (n > 0) --n ; if (n < 0) ++n; }

Слайд 6





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

Слайд 7





Та же проблема встречается и в случае, когда функция использует статические переменные. Для разбора этого случая рассмотрим функцию
Та же проблема встречается и в случае, когда функция использует статические переменные. Для разбора этого случая рассмотрим функцию
int count()
{
static int n = 0; 
++n;
return n;
}
которая возвращает количество своих вызовов. Если эта функция будет вызвана несколькими параллельно исполняемыми потоками, то нельзя точно определить значение переменной n, которое вернет эта функция, т. к. это значение изменяется всеми потоками параллельно.
Описание слайда:
Та же проблема встречается и в случае, когда функция использует статические переменные. Для разбора этого случая рассмотрим функцию Та же проблема встречается и в случае, когда функция использует статические переменные. Для разбора этого случая рассмотрим функцию int count() { static int n = 0; ++n; return n; } которая возвращает количество своих вызовов. Если эта функция будет вызвана несколькими параллельно исполняемыми потоками, то нельзя точно определить значение переменной n, которое вернет эта функция, т. к. это значение изменяется всеми потоками параллельно.

Слайд 8





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

Слайд 9





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

Слайд 10





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

Слайд 11





Состояния процессора:
Состояния процессора:
процессор не выделен для исполнения программы;
процессор выделен для исполнения программы.
Состояния программы:
программа не готова к исполнению процессором;
программа готова к исполнению процессором.
Для краткости записи введем для этих состояний следующие названия:
Состояния процессора:
"не выделен";
"выделен".
Состояния программы:
"не готова";
"готова".
Описание слайда:
Состояния процессора: Состояния процессора: процессор не выделен для исполнения программы; процессор выделен для исполнения программы. Состояния программы: программа не готова к исполнению процессором; программа готова к исполнению процессором. Для краткости записи введем для этих состояний следующие названия: Состояния процессора: "не выделен"; "выделен". Состояния программы: "не готова"; "готова".

Слайд 12





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

Слайд 13


Потоки и процессы, слайд №13
Описание слайда:

Слайд 14


Потоки и процессы, слайд №14
Описание слайда:

Слайд 15


Потоки и процессы, слайд №15
Описание слайда:



Похожие презентации
Mypresentation.ru
Загрузить презентацию