Процессы и потоки управления (thread). Состояния процессов и потоков (выполнение, готовность, блокировка, приостановка). Статические и динамические приоритеты потоков.
В ОС Windows 9x, NT, UNIX и др. реализована приоритетная (вытесняющая) многозадачность. Это означает, что ОС имеет право временно прекратить выполнение одной программы и переключить процессор на выполнение другой программы. Переключение происходит вне зависимости от желания каждой из программ, благодаря чему зависание одной программы не приводит к зависанию всей системы.
Достоинство: надежность, простота программирования. Недостатки: усложнение синхронизации между процессами, необходимость использовать многопоточную библиотеку при программировании.
Не вытесняющая многозадачность (кооперативная), пример – Windows 3.1, Novell Netware. Инициатором в данном случае выступает сам процесс. Достоинства: сокращение затрат на планирование, переключение производится синхронно, а следовательно, происходит упрощение обмена данными между процессами. Недостатки: сложность программирования, зависание всей системы при зависании одного процесса.Процессы и потоки. Управление ими.
Термин ПРОЦЕСС (синоним - ЗАДАЧА) появился в 60-х годах, в настоящее время под процессом понимается программа, запущенная на выполнение под управлением операционной системы (ОС). В общем случае в вычислительной системе одновременно существуют несколько процессов. В некоторых многопоточных ОС (UNIX, WINDOWS) каждый процесс состоит из одного или нескольких параллельно выполняющихся потоков (thread), и применительно к этим ОС далее по тексту термин "процесс" следует заменять на термин "поток".
Запуская на выполнение какую-нибудь программу, вы создаёте новый процесс Процесс – это экземпляр программы, загруженный в память и запущенный на выполнение.Процесс обычно определяют как “экземпляр” (иногда говорят, копию) выполняемого приложения. Для управления процессом система создаёт объект ядра “процесс”. Каждому объекту ядра выделяется в системе блок памяти, инициализируемый той или иной управляющей информацией, сопоставляется счетчик числа пользователей и описатель — идентификатор объекта (дескриптор). Сам по себе процесс ничего не исполняет — он просто “владеет” четырехгигабайтным адресным пространством, содержащим код и данные для ехе-файла программы. Помимо адресного пространства, процессу принадлежат такие ресурсы, как файлы, динамические области памяти и потоки. Ресурсы, создаваемые при жизни процесса, обязательно уничтожаются при его завершении. Процесс – это «оболочка» над потоками.
Чтобы процесс что-нибудь выполнил, в нем нужно создать поток. Поток (thread) описывает последовательность исполнения кода внутри процесса. Первичный поток процесса создаётся системой автоматически во время создания процесса. Именно он отвечает за исполнение кода ехе-файла, помещенного в адресное пространство процесса. Потоку в системе сопоставляется объект ядра “поток”, используемый для управления потоком. Соответственно, этому объекту также выделяется в системе блок памяти, инициализируемый некоторой управляющей информацией, счетчиком числа пользователей и дескриптор.
Использование нескольких потоков в одном процессе очень важно по нескольким причинам. Во-первых, это позволяет добиться минимального простоя процессора, а значит – работать более эффективно. Во-вторых, потоки могут выполнять какие-либо действия в фоновом режиме относительно основной программы. В-третьих, потоки удобно использовать также в случае, если блокирование или подвисание какой-либо процедуры не должно стать причиной нарушений функционирования основной программы. Контекст потока – текущее состояние прерванного процесса (точнее область памяти, где хранится состояние). После выделения потока из процесса появилась идея о создании многопоточности в одном процессе (идея впервые появилась в Unix в 80-х годах). Поток – последовательность машинных команд, выполняющих определенные действия или текущее состояние процесса. Потоки как правило асинхронные. Потоки – «алгоритмы». Планировщик – распределяет процессорное время между потоками, часть ОС.Состояния процессов и потоков.
Поток находится в состоянии выполнения, если ему в данных момент времени выделен центральный процессор, если ему предоставлен квант процессорного времени. Поток находится в состоянии блокировки, если он ожидает появление некоторого события для продолжения его деятельности.Сам себя поток возобновить не может!!! Может это сделать, например таймер, ОС и т.д.