Процессы. Процессы и потоки. Процессы и потоки
Скачать 0.73 Mb.
|
Модель потока (5)Каждый поток обладает собственным стеком Потоки в POSIXIEEE standard 1003.1с — стандарт создания переносимых многопоточных программ. Пакет Pthreads, реализует работу с потоками, поддерживается большинством UNIX-систем. В стандарте определено более 60 вызовов функций. Все потоки Pthreads имеют определенные свойства.
Потоки в POSIXФункции пакета Ptheads Реализация потоковЕсть два основных способа реализации пакета потоков: в пространстве пользователя и ядре. Реализация потоков (смешанная реализация)Активация планировщикаЦель активации планировщика заключается в имитации функциональных возможностей потоков на уровне ядра, но при лучшей производительности и более высокой гибкости, свойственной пакетам потоков, реализуемых в пользовательском пространстве. Пользовательские потоки не должны осуществлять специальные неблокирующие системные вызовы. Когда поток блокируется на системном вызове или на ошибке обращения к отсутствующей странице, должна оставаться возможность выполнения другого потока в рамках того же процесса. Эффективность достигается путем уклонения от ненужных переходов между пространствами пользователя и ядра. Активация планировщикаПри использовании активации планировщика ядро назначает каждому процессу определенное количество виртуальных процессоров, а системе поддержки исполняемых программ (в пользовательском пространстве) разрешается распределять потоки по процессорам. ЯДРО ВП №1 ЯДРО ВП №2 ЯДРО ВП №3 ЯДРО ВП №4 Поток №1 Поток №2 Поток №3 Поток №4 Процесс Центральный процессор Виртуальные процессора Всплывающие потокиПотоки часто используются в распределенных системах. Пример:
При поступлении сообщения система создает новый поток для его обработки, называется всплывающий поток. Основное преимущество всплывающих потоков заключается в том, что они создаются заново и не имеют прошлого — никаких регистров, стека и всего остального, что должно быть восстановлено. Каждый такой поток начинается с чистого листа, и каждый их них идентичен всем остальным. Это позволяет создавать такие потоки довольно быстро. Новый поток получает сообщение для последующей обработки. В результате использования всплывающих потоков задержку между поступлением и началом обработки сообщения можно свести к минимуму. Всплывающие потокиСоздание нового потока при поступлении сообщения Межпроцессорное взаимодействиеМежпроцессорное взаимодействиеПроцессам часто бывает необходимо взаимодействовать между собой. Например, в конвейере ядра выходные данные первого процесса должны передаваться второму по цепочке. Проблема разбивается на три пункта. Первое: передача информации от одного процесса другому. Второе: контроль над деятельностью процессов: как гарантировать, что два процесса не пересекутся в критических ситуациях. Третье: касается согласования действий процессов: если процесс А должен поставлять данные, а процесс В выводить их на печать, то процесс В должен подождать и не начинать печатать, пока не поступят данные от процесса А. Состояние состязанияВ некоторых операционных системах процессы, работающие совместно, могут сообща использовать некое общее хранилище данных. Каждый из процессов может считывать из общего хранилища данных и записывать туда информацию. Это хранилище представляет собой участок в основной памяти или файл общего доступа. Пример: спулер печати. Если процессу требуется вывести на печать файл, он помещает имя файла в специальный каталог спулера. Другой процесс, демон печати, периодически проверяет наличие файлов, которые нужно печатать, печатает файл и удаляет его имя из каталога. |