
на первый
заказ
Реферат на тему: Процессы, нити и волокна в ОС Windows
Купить за 250 руб.Введение
Процессом обычно называют экземпляр выполняемой программы. Хотя на первый взгляд кажется, что программа и процесс понятия практически одинаковые, они фундаментально отличаются друг от друга. Программа представляет собой статический набор команд, а процесс это набор ресурсов и данных, использующихся при выполнении программы. Процесс в 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 к приоритету процесса;
Time critical: устанавливает базовый приоритет потока для Real time класса в 31,
для остальных классов - в 15;
Idle: устанавливает базовый приоритет потока для Real time класса в 16,
для остальных классов - в 1.
Если операционная система выполняется на машине, где установлено более одного процессора, то по умолчанию, нить выполняется на любом доступном процессоре. Однако в некоторых случаях, набор процессоров, на которых нить может работать, может быть ограничен. Это явление называется привязкой к процессорам (processor affinity). Можно изменить привязку к процессорам программно, через Win32-функции планирования.
Волокна поддерживаются в WIN32 API, начиная с Windows2000. Под волокном понимается упрощенная нить, выполнение которой планируется самим приложением, а не планировщиком процессорного времени ОС. Планирование волокон может осуществляться только путем переключения на них только из других волокон. Волокна выполняются в контексте нитей, в которых планируется их применение, и допускают полную их идентификацию с нитями. В каждой нити может быть запланировано несколько волокон. Для каждого волокна создается собственный стек, в котором хранится информация о состоянии волокна.
Оглавление
- Процессы, нити и волокна в ОС Windows- Создание процессов
- Завершение процессов
- Создание нитей
- Завершение нитей
- Создание волокон
- Уничтожение волокон
- Wait-функции Выводы
- Список литературы
Список литературы
1. Бэрри Нанс. Компьютерные сети пер. с англ. - М.: БИНОМ, 1996.2. Глоссарий сетевых терминов http://www.bilim.com/koi8/library/glossary/
3. Компьютерные сети: Учебный курс Microsoft Corporation - М.: Издательский отдел "Русская редакция", 1999.
4. Основы современных компьютерных технологий под редакцией А.Д. Хомоненко - СПб КОРОНА принт, 1998.
5. Ресурсы Microsoft Windows NТ Workstation 4.0 пер. с англ. яз. BNV - СПб, 1998.
6. Сетевые операционные системы Н.А. Олифер, В.Г. Олифер, 2001, СПб, Питер, 544 стр.
7. Синхронизация нитей внутри процесса в ОС Windows, http://subscribe.ru/ archive/comp.soft.win.swodniwgniqaf/200305/23131921.text
8. Современные операционные системы, Э. Таненбаум, 2002, СПб, Питер, 1040 стр.
9. Справочник Novell Netware 4 С.Б. Орлов, по заказу ИИЦ "Попурри", 1994.
10. Титтел Эд, Хадсон Курт, Дж. Майкл Стюард Networking Essentials - СПб ПИТЕР, 1999.
11. Титтел Эд, Хадсон Курт, Дж. Майкл Стюард TCP/IР - СПб ПИТЕР, 1999.
12. Якубайтис Э.А. Информационные сети и системы: Справочная книга. - М.: Финансы и статистика, 1996.
или зарегистрироваться
в сервисе
удобным
способом
вы получите ссылку
на скачивание
к нам за прошлый год