Реферат по теме:
"Процессы, нити и волокна в ОС Windows"
Содержание
1. Процессы, нити и волокна в ОС Windows
2. Создание процессов
3. Завершение процессов
4. Создание нитей
5. Завершение нитей
6. Создание волокон
7. Уничтожение волокон
8. Wait-функции
Выводы
Список литературы
1. Процессы, нити и волокна в ОС Windows
Процессом обычно называют экземпляр выполняемой программы. Хотя на первый взгляд кажется, что программа и процесс понятия практически одинаковые, они фундаментально отличаются друг от друга. Программа представляет собой статический набор команд, а процесс это набор ресурсов и данных, использующихся при выполнении программы. Процесс в Windows состоит из следующих компонентов:
– структура данных, содержащая всю информацию о процессе, в том числе список открытых дескрипторов различных системных ресурсов, уникальный идентификатор процесса, различную статистическую информацию и т.д.;
– адресное пространство – диапазон адресов виртуальной памяти, которым может пользоваться процесс;
– исполняемая программа и данные, проецируемые на виртуальное адресное пространство процесса.
Процессы инертны. Отвечают же за исполнение кода, содержащегося в адресном пространстве процесса, нити. Нить (thread) – некая сущность внутри процесса, получающая процессорное время для выполнения. В каждом процессе есть минимум одна нить. Эта первичная нить создается системой автоматически при создании процесса. Далее эта нить может породить другие нити, те в свою очередь новые и т.д. Таким образом, один процесс может владеть несколькими нитями, и тогда они одновременно исполняют код в адресном пространстве процесса. Каждая нить имеет:
– уникальный идентификатор нити;
– содержимое набора регистров процессора, отражающих состояние процессора;
– два стека, один из которых используется нитью при выполнении в режиме ядра, а другой – в пользовательском режиме;
– закрытую область памяти, называемую локальной памятью нити (thread local storage, TLS) и используемую подсистемами, run-time библиотеками и DLL.
Чтобы все нити работали, операционная система отводит каждой из них определенное процессорное время. Тем самым создается иллюзия одновременного выполнения нитей (разумеется, для многопроцессорных компьютеров возможен истинный параллелизм). В Windows реализована система вытесняющего планирования на основе приоритетов, в которой всегда выполняется нить с наибольшим приоритетом, готовая к выполнению. Выбранная для выполнения нить работает в течение некоторого периода, называемого квантом. Квант определяет, сколько времени будет выполняться нить, пока операционная система не прервет ее. По окончании кванта операционная система проверяет, готова ли к выполнению другая нить с таким же (или большим) уровнем приоритета. Если таких нитей не оказалось, текущей нити выделяется еще один квант. Однако нить может не полностью использовать свой квант. Как только другая нить с более высоким приоритетом готова к выполнению, текущая нить вытесняется, даже если ее квант еще не истек.
Квант не измеряется в каких бы то ни было единицах времени, а выражается целым числом. Для каждой нити хранится текущее значение ее кванта. Когда нити выделяется квант процессорного времени, это значит, что ее квант устанавливается в начальное значение. Оно зависит от операционной системы. Например, для Win2000 Professional начальное значение кванта равно 6, а для Win2000 Server – 36.
Всякий раз, когда возникает прерывание от таймера, из кванта нити вычитается 3, и так до тех пор, пока он не достигнет нуля. Частота срабатывания таймера зависит от аппаратной платформы. Например, для большинства однопроцессорных x86 систем он составляет 10 мс, а на большинстве многопроцессорных x86 систем – 15 мс.
В любом случае операционная система должна определить, какую нить выполнять следующей. Выбрав новую нить, операционная система переключает контекст. Эта операция заключается в сохранении параметров выполняемой нити (регистры процессора, указатели на стек ядра и пользовательский стек, указатель на адресное пространство, в котором выполняется нить и др.), и загрузке аналогичных параметров для другой нити, после чего начинается выполнение новой нити.
Планирование в Windows осуществляется на уровне нитей, а не процессов. Это кажется понятным, так как сами процессы не выполняются, а лишь предоставляют ресурсы и контекст для выполнения нитей. Поэтому при планировании нитей, система не обращает внимания на то, какому процессу они принадлежат. Например, если процесс А имеет 10 готовых к выполнению нитей, а процесс Б – две, и все 12 нитей имеют одинаковый приоритет, каждая из них получит 1/12 процессорного времени.
В Windows существует 32 уровня приоритета, от 0 до 31. Они группируются так: 31–16 – уровни реального времени; 15–1 – динамические уровни; 0 – системный уровень, зарезервированный для процесса обнуления страниц (zero-page thread).
Приоритет каждой нити (базовый приоритет нити) складывается из приоритета ее процесса и относительного приоритета самой нити. Есть семь относительных приоритетов нитей:
Normal: такой же как и у процесса;
Above normal: +1 к приоритету процесса;
Below normal: –1;
Highest: +2;
Lowest: –2;
Time critical: устанавливает базовый приоритет потока для Real time класса в 31,
для остальных классов – в 15;
Idle: устанавливает базовый приоритет потока для Real time класса в 16,
для остальных классов – в 1.
Если операционная система выполняется на машине, где установлено более одного процессора, то по умолчанию, нить выполняется на любом доступном процессоре. Однако в некоторых случаях, набор процессоров, на которых нить может работать, может быть ограничен. Это явление называется привязкой к процессорам (processor affinity). Можно изменить привязку к процессорам программно, через Win32‑функции планирования.
Волокна поддерживаются в WIN32 API, начиная с Windows2000. Под волокном понимается упрощенная нить, выполнение которой планируется самим приложением, а не планировщиком процессорного времени ОС. Планирование волокон может осуществляться только путем переключения на них только из других волокон. Волокна выполняются в контексте нитей, в которых планируется их применение, и допускают полную их идентификацию с нитями. В каждой нити может быть запланировано несколько волокон. Для каждого волокна создается собственный стек, в котором хранится информация о состоянии волокна.
... нарушаются элементарные дидактические требования, преобладает пассивное восприятие учебной информации учащимися, нерационально тратится учебное время. Глава 2. Методика использования аудиовизуальных и технических средств обучения при изучении раздела «Технология обработки ткани 5 класс» 2.1 Комплексно-методическое обеспечение раздела 1. Учебно-методическая документация № п/п Наименование ...
... байта, содержание значения синего, зеленого и красного в том же порядке. Каждая строка дополняется нулями до границы 4 байт. Именно этот формат данных используется в разрабатываемой в подсистеме выделения текстильных волокон. 3.2 Преобразование изображения из RGB – представления в HSB Исходное изображение преобразуется из RGB – представления в HSB в случае выбора пунктов 2 либо 3 из главного ...
... и настройку локальной сети для разных операционных систем; исследовать правильное построение и настройку сети интернет; раскрыть проблемные аспекты, возникающие в процессе настройки локальной сети и подключению к сети интернет для разных операционных систем. Глава 1. Настройка локальной сети для Windows XP и Windows 7 1.1 Настройка локальной сети для Windows XP Первый этап настройки ...
... к локальным сетям. Поэтому требования международных стандартов удовлетворяют лишь ряд сетей, выпускаемых ведущими электронными фирмами мира. 2.2. Классификация сетей Локальные сети, широко используемые в научных, управленческих, организационных и коммерческих технологиях, можно классифицировать по следующим признакам: 1. По роли ПЭВМ в сети: - сети с сервером; - одноранговые ( ...
0 комментариев