рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

BOOL SwitchToThread();

BOOL SwitchToThread(); - раздел История, Определение ОС. Функции ОС. Процессы и потоки. Классификация ОС. История развития Функция Switchtothread Позволяет Подключить К Процессору Другой Поток ...

Функция SwitchToThread позволяет подключить к процессору другой поток (если он есть).

Вызов SwitchToThread аналогичен вызову Sleep с передачей в dwMilliseconds нулевого значения. Разница лишь в том, что SwitchToThread дает возможность выполнять потоки с более низким приоритетом, которым не хватает процессорного времени, а Sleep действует без оглядки на "голодающие" потоки.

 

Определение периодов выполнения потока:

BOOL GetThreadTimes(

HANDLE hThread,

PFILETIME pftCreationTime,

PFILETIME pftExitTime,

PFILETIME pftKernelTime,

PFILETIME pftUserTime

);

С помощью этой функции можно определить время, необходимое для выполнения сложного алгоритма.

GetThreadTimes не годится для высокоточного измерения временных интервалов.

 

Создание процесса:

Вызов функции CreateProcess.

Система создает объект ядра "процесс" с начальным значением счетчика числа его пользователей, равным 1. Этот объект – не сам процесс, а компактная структура данных, через которую ОС управляет процессом.

Затем система создает для нового процесса виртуальное адресное пространство и загружает в него код и данные как для исполняемого файла, так и для любых DLL (если таковые требуются).

Далее система формирует объект ядра "поток" (со счетчиком, равным 1) для первичного потока нового процесса. Как и в первом случае, объект ядра "поток" – это компактная структура данных, через которую система управляет потоком.

Первичный поток начинает с исполнения стартового кода из библиотеки С/С++, который в конечном счете вызывает функцию WinMain или main в Вашей программе.

Если системе удастся создать новый процесс и его первичный поток, CreateProcess вернет TRUE.

CreateProcess возвращает TRUE до окончательной инициализации процесса. Это означает, что на данном этапе загрузчик ОС еще не искал все необходимые DLL. Если он не сможет найти хотя бы одну из DLL или корректно провести инициализацию, процесс завершится. Но, поскольку CreateProcess уже вернула TRUE, родительский процесс ничего не узнает об этих проблемах.

 

BOOL CreateProcess (

PCTSTR pszApplicationName, // имя исполняемого файла

PTSTR pszCommandLine, // командная строка

PSECURITY_ATTRIBUTES psaProcess,

PSECURITY_ATTRIBUTES psaThread, // атрибуты защиты потоков

BOOL bInheritHandles, // наследование дескрипторов

DWORD fdwCreate, // флаги

PVOID pvEnvironment, // блок памяти, хранящий строки переменных

окружения

PCTSTR pszCurDir, // текущий диск и каталог для процесса

PSTARTUPINFO psiStartInfo, // используется Windows-функциями при

создании нового процесса

PPROCESS_INFORMATION ppiProcInfo // инициализируемая структура

);

Параметры CreateProcess:

Параметры pszApplicationName и pszCommandLine. Эти параметры определяют имя исполняемого файла, которым будет пользоваться новый процесс, и командную строку, передаваемую этому процессу.

Параметры psaProcess, psaThread и blnheritHandles . Параметры psaProcess и psaThread позволяют определить нужные атрибуты защиты для объектов "процесс" и "поток" соответственно. В эти параметры можно занести NULL, и система закрепит за данными объектами дескрипторы защиты по умолчанию.

Параметр fdwCreate определяет флаги, влияющие на то, как именно создается новый процесс Флаги комбинируются булевым оператором OR.

Параметр pvEnvironment указывает на блок памяти, хранящий строки переменных окружения, которыми будет пользоваться новый процесс. Обычно вместо этого параметра передается NULL, в результате чего дочерний процесс наследует строки переменных окружения от родительского процесса.

Параметр pszCurDir позволяет родительскому процессу установить текущие диск и каталог для дочернего процесса. Если его значение — NULL, рабочий каталог нового процесса будет тем же, что и у приложения, его породившего.

Параметр psiStartlnfo указывает на структуру STARTUPINFO. Элементы структуры STARTUPINFO используются Windows-функциями при создании нового процесса.

Параметр ppiProclnfo указывает на структуру PROCESS_INFORMATION, которую Вы должны предварительно создать; ее элементы инициализируются самой функцией CreateProcess.

Параметр fdwCreate определяет флаги, влияющие на то, как именно создается новый процесс

Флаги комбинируются булевым оператором OR.

Флаг DEBUG_PROCESS даст возможность родительскому процессу проводить отладку дочернего, а также всех процессов, которые последним могут быть порождены.

Флаг DEBUG_ONLY_THIS_PROCESS аналогичен флагу DEBUG_PROCESS с тем исключением, что заставляет систему уведомлять родительский процесс о возникновении специфических событий только в одном дочернем процессе — его прямом потомке.

Флаг CREATE_SUSPENDED позволяет создать процесс и в то же время приостановить его первичный поток Это позволяет родительскому процессу модифицировать содержимое памяти в адресном пространстве дочернего, изменять приоритет его первичного потока или включать этот процесс в задание (job) до того, как он получит шанс на выполнение. Внеся нужные изменения в дочерний процесс, родительский разрешает выполнение его кода вызовом функции ResumeThread.

Флаг DETACHED_PROCESS блокирует доступ процессу, инициированному консольной программой, к созданному родительским процессом консольному окну и сообщает системе, что вывод следует перенаправить в новое консольное окно.

Флаг CREATE_NEW_CONSOLE приводит к созданию нового консольного окна для нового процесса. Имейте в виду, что одновременная установка флагов CREATE_NEW_CONSOLE и DETACHED_PROCESS недопустима.

Флаг CREATE_NO_WINDOW не дает создавать никаких консольных окон для данного приложения и тем самым позволяет исполнять его без пользовательского интерфейса.

Флаг CREATE_BREAKAWAY_FROM_JOB позволяет процессу, включенному в задание, создать новый процесс, отделенный от этого задания

 

Параметр fdwCreate разрешает задать и класс приоритета процесса Однако это необязательно и даже, как правило, не рекомендуется, система присваивает новому процессу класс приоритета по умолчанию. Возможные классы приоритета перечислены в следующей таблице.

Idle (простаивающий) IDLE_PRIORITY_CLASS

Below normal (ниже обычного) BELOW_NORMAL_PRIORITY_CLASS

Normal (обычный) NORMAL_PRIORITY_CLASS

Above normal (выше обычного) ABOVE_NORMAL_PRIORITY_CLASS

High (высокий) HIGH_PRIORITY_CLASS

Realtime (реального времени) REALTIME_PRIORITY_CLASS

 

Классы приоритета влияют на распределение процессорного времени между процессами и их потоками.

Классы приоритета BELOW_NORMAL_PRIORITY_CLASS и ABOVE_NORMAL_ PRIORITY_CLASS введены лишь в Windows 2000; они не поддерживаются в Windows NT 4.0, Windows 95 или Windows 98.

 

Завершение процесса:

Существует 4 гипотетических варианта завершения процесса:

- входная функция первичного потока возвращает управление (рекомендуемый способ);

- один из потоков процесса вызывает функцию ExitProcess (нежелательный способ);

- поток другого процесса вызывает функцию TerminateProcess (тоже нежелательно);

- все потоки процесса умирают (большая редкость).

 

Явный вызов ExitProcess и TerminateProcess – распространенная ошибка, которая мешает правильной очистке ресурсов.

Возврат управления входной функцией первичного потока

При этом:

- любые С++-объекты, созданные данным потоком, уничтожаются соответствующими деструкторами;

- система освобождает память, которую занимал стек потока;

- система устанавливает код завершения процесса (поддерживаемый объектом ядра "процесс") – его и возвращает Ваша входная функция;

- счетчик пользователей данного объекта ядра "процесс" уменьшается на 1.

Функция ExitProcess:

Процесс завершается, когда один из его потоков вызывает ExitProcess:

VOID ExitProcess(UINT fuExitCode);

Эта функция завершает процесс и заносит в параметр fuExitCode код завершения процесса.

Функция TerminateProcess:

Вызов функции TerminateProcess тоже завершает процесс:

BOOL TerminateProcess (HANDLE hProcess, UINT fuExitCode);

Параметр bProcess идентифицирует описатель завершаемого процесса, а в параметре fuExitCode возвращается код завершения процесса.

TerminateProcess – функция асинхронная, т. e. она сообщает системе, что Вы хотите завершить процесс, но к тому времени, когда она вернет управление, процесс может быть еще не уничтожен. Так что, если Вам нужно точно знать момент завершения процесса, используйте WaitForSingleObject или аналогичную функцию, передав ей описатель этого процесса.

Когда все потоки процесса “уходят”

Обнаружив, что в процессе не исполняется ни один поток, операционная система немедленно завершает его.

При этом код завершения процесса приравнивается коду завершения последнего потока.

Действия при завершении процесса:

1. Выполнение всех потоков в процессе прекращается.

2. Все User- и GDI-объекты, созданные процессом, уничтожаются, а объекты ядра закрываются (если их не использует другой процесс).

3. Код завершения процесса меняется со значения STILL_ACTIVE на код, переданный в ExitProcess или TerminateProcess.

4. Объект ядра "процесс" переходит в свободное, или незанятое (signaled), состояние.

5. Счетчик объекта ядра "процесс" уменьшается на 1.

BOOL GetExitCodeProcess

( HANDLE hProcess, PDWORD pdwExitCode);

 

Управление динамическими приоритетами потоков процесса

BOOL SetProcessPriorityBoost(

HANDLE hProcess, // дескриптор процесса

BOOL DisablePriorityBoost // состояние //форсированного приоритета

);

BOOL GetProcessPriorityBoost(

HANDLE hProcess, // дескриптор процесса

PBOOL pDisablePriorityBoost // состояние //форсированного приоритета

);

Для выполнения процесс должен иметь право доступа PROCESS_SET_INFORMATION

 

– Конец работы –

Эта тема принадлежит разделу:

Определение ОС. Функции ОС. Процессы и потоки. Классификация ОС. История развития

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

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: BOOL SwitchToThread();

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Машинный язык.
Микропрограмма действует просто как интерпретатор, который получает машинные команды, такие как MOVE, JUMP или ADD, и выполняет их в несколько маленьких шагов. Набор интерпретируемых инструкций опр

Системное и прикладное ПО.
Операционная система предназначена для тот, чтобы скрыть от пользователя все эти сложности. Она состоит из уровня программного обеспечения, который частично избавляет от необходимости общения с апп

Дополнительная функция ОС.
Кроме основной функции управления ресурсами ВС, от ОС зачастую требуется решение еще одной важной задачи – предоставления программного интерфейса доступа к аппаратным ресурсам в виде некоторой вирт

Процессы и потоки.
Процесс – абстракция, описывающая выполняющуюся программу. Для ОС процесс представляет собой единицу работы, заявку на потребление системных ресурсов. Одним из основных ресурсов является ад

Состояния процессов и потоков.
Выделяют 3 основных дискретных состояния процесса (потока): - Готов к выполнению – ждет ЦП; - Выполняется – выделен ЦП; - Приостановлен (блокирован) – ждет некоторого соб

Поддержка многозадачности.
По числу одновременно выполняемых задач ОС могут быть разделены на два класса: - однозадачные (например, MS-DOS, MSX); - многозадачные (OC EC, UNIX, Windows 9х, NT и выше).

Многозадачность.
Способ распределения процессорного времени между несколькими одновременно существующими в системе задачами (процессами или потоками) в режиме мультипрограммирования во многом определяет специфику О

Дисциплины обслуживания.
Бесприоритетные дисциплины – выбор из очереди производится без учета относительной важности задач и времени их обслуживания. Приоритетное обслуживание – отдельным задачам пре

Поддержка многопользовательского режима.
По числу “одновременно” работающих пользователей ОС делятся на: - однопользовательские (MS-DOS, Windows 3.x, Windows 9x); - многопользовательские (UNIX, Windows NT, 2000-2007).

Многопроцессорная обработка.
Другим важным свойством ОС является отсутствие или наличие в ней средств поддержки многопроцессорной обработки. Мультипроцессирование приводит к усложнению всех алгоритмов управления ресурсами.

Особенности алгоритмов управления ресурсами.
Выше были рассмотрены характеристики ОС, связанные с управлением только одним типом ресурсов – процессором. Важное влияние на облик операционной системы в целом, на возможности ее использования в т

Системы пакетной обработки.
Системы пакетной обработки (batch processing) предназначались для решения задач в основном вычислительного характера, не требующих быстрого получения результатов. Главной целью и критерием

Системы пакетной обработки.
  Для одновременного выполнения выбираются задачи, предъявляющие отличающиеся требования к р

Системы реального времени.
Системы реального времени применяются для управления различными техническими объектами, такими, (станок, научная экспериментальная установка) или технологическими процессами (гальв

Многоуровневая структура.
Развитием монолитного подхода является многоуровневый, когда ОС реализуется как иерархии уровней. Уровни образуются группами функций ОС – файловая система, управление процессами и устройст

Монолитное ядро.
Наиболее распространенным и классическим вариантом реализации ядерного подхода является моноли́тное ядро́. Монолитность ядер усложняет их отладку, понимание кода

Модульное ядро.
Cовременная, усовершенствованная модификация архитектуры монолитных ядер ОС. В отличие от «классических» монолитных ядер, считающихся ныне устаревшими, модульные ядра, как правило, не треб

Достоинства и недостатки микроядра.
При микроядерном построении ОС работает более медленно, так как часто выполняются переходы между привилегированным и пользовательским режимом. Систему проще функционально развивать, добавл

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

Этап (1940-60).
Середина 40-х XX-века – первые ламповые вычислительные устройства. ОС еще не появились, все задачи организации вычислительного процесса решались программистом вручную с пульта управления.

Этап (1965-75).
1965-1975 годы переход к ИС, новое поколение ЭВМ – IBM/360, многопроцессорная ЭВМ для централизованных вычислений. Реализованы основные концепции, присущие современным ОС: - мульт

Этап (1970-80).
Начало 70-х годов – первые сетевые ОС, которые в отличие от многотерминальных ОС позволяли не только рассредоточить пользователей, но и организовать распределенное хранение и обработку данных между

Этап (1980-90).
Постоянное развитие версий ОС UNIX для ЭВМ различных архитектур. Начало 80-х годов – появление персональных компьютеров (ПК), которые стали мощным катализатором для бурног

Операционная система MS Windows 2000 и выше. Общая характеристика и основные функции. Структура MS Windows 2000-2003. Объекты в MS Windows 2000-2003.
  2.2 Основная характеристика Windows 2000-2008.   Система Windows 2000-2008 не является дальнейшим развитием ранее существовавших пр

Краткая характеристика.
  l Многоуровневая ОС. l Ядро работает в защищенном режиме. l Присутствует микроядро, но оно дополнительно не защищено от остальных фрагментов ядра (т.е. по сути при

Структура ядра.
l Исполняющая система, которая включает управление памятью, процессами, потоками, безопасностью, вводом/выводом, межпроцессорными обменами; Важные для производительности О

Типы объектов Windows 2000-2008.
Объекты исполнительной системы (executive object) представляются различными компонентами исполнительной системы. Они доступны программам пользовательского режима (защищенным

Структура объектов Windows 2000-2003.
Имя объекта Делает объект видимым другим процессам для совместного использования Каталог объектов Обеспечивает иерархичес

Защита объектов.
ОС Windows 2000 поддерживает два вида контроля доступа к объектам: - управление избирательным доступом (discretionary access control) – основной механизм контроля д

Избирательный доступ.
Основан на списках контроля доступа (access control list, ACL), которые описывают каким пользователям можно выполнять какие операции. При отсутствии ACL объект является незащищенным, и сис

Кэширование диска.
Перехват запросов к внешним блочным ЗУ, промежуточным программным слоем – подсистемой буферизации (ПБ). ПБ представляет собой буферный пул, располагающийся в ОЗУ, и комплекс программ, упра

RAID - 0.
Представляет собой дисковый массив, в котором данные разбиваются на блоки, и каждый блок записываются (или же считывается) на отдельный диск. Таким образом, можно осуществлять несколько оп

RAID - 1.
Зеркалирование - традиционный способ для повышения надежности дискового массива небольшого объема. В простейшем варианте используется два диска, на которые записываетс

RAID - 4.
Данные разбиваются на блочном уровне. Каждый блок данных записывается на отдельный диск и может быть прочитан отдельно. Четность для группы блоков генерируется при записи и проверяется при чтении.

Сравнение RAID-систем.
  Составные RAID системы: l RAID 0+1 / RAID 1+0 l RAI

Фрагментация и дефрагментация.
Файл, который занимает на диске более одного непрерывного участка, называется фрагментированным. Фрагментация диска- это появление на диске множества свободных учас

Long File Names.
FAT32 преодолела ограничение прежней системы наименования файлов "8.3". В VFAT имя файла может содержать до 255 символов. К счастью, FAT32 воспринимает файлы, которые уже существовали на

Перечень метафайлов
$MFT список содержимого тома NTFS $MFTmirr копия первых 4 записей таблицы MFT $LogFile

Заголовок атрибута
Смещение, байт Размер, байт Описание 0x00 Тип атрибута 0x04

Атрибуты файлов NTFS - 1
Standard Information (стандартная информация) Стандартный атрибут. Дата и время создания и последнего изменения файла, дата и время последнего доступа к файлу

Атрибуты файлов NTFS - 2
Volume Version версия тома, используется только в системных файлах тома Volume Information (информация о томе) Использует

Страничное распределение.
Виртуальное адресное пространство (ВАП) каждого процесса делится на части одинакового, фиксированного для данной ОС размера, называемые виртуальными страницами. Размер страницы кратен степени двойк

Сегментное распределение.
При страничной организации виртуальное адресное пространство процесса делится механически на равные части. Это не позволяет дифференцировать способы доступа к разным частям программы (сегментам), а

Сегментно-страничное распределение.
Данный метод представляет собой комбинацию страничного и сегментного распределения памяти и, вследствие этого, сочетает в себе достоинства обоих подходов. ВАП процесса делится на сегменты,

Архитектура API управления памятью.
    Адресное пространство процесса:

Проецируемые файлы.
“Как и виртуальная память, проецируемые файлы позволяют резервировать регион адресного пространства и передавать ему физическую память. Различие между этими механизмами состоит в том, что в последн

Взаимодействие процессов через общую область данных
      Для обеспечения когерентности процессы должны работ

Объекты Windows .
Основные понятия: Задание – набор процессов, управляемых как единое целое, с общими квотами и лимитами Процесс – контейнер для ресурс

Процессы.
Процесс – это совокупность системных ресурсов, задействованная для выполнения определенной работы. Понятие "процесс" включает следующее: - исполняемый код;

Потоки.
Поток (нить) – это непрерывная последовательность инструкций, выполняющих определенную функцию. Потоки не имеют собственного адресного пространства и получают доступ к адресному пр

Волокна (fibers).
Введены в Windows 2000 для переноса существующих серверных приложений из UNIX. Реализованы на уровне кода пользовательского режима. В потоке может быть одно или несколько волокон. Для ядра

Планирование загрузки однопроцессорной системы.
  Планирование загрузки процессорного времени: - В Windows реализована вытесняющая многозадачность, при которой ОС не ждет, когда поток сам захочет освободит

Граф состояний потоков в MS Windows 2000-2003. Поток простоя. Принципы адаптивного планирования.
16.1 Граф состояний потоков в MS Windows 2000.

Граф состояний потоков в MS Windows 2000-2003. Особенности планирования в многопроцессорных системах.
17.2 Особенности планирования в многопроцессорных системах.   Управление потоками в МПС: Операционные системы Wind

Граф состояний потоков в MS Windows 2000-2003. Особенности планирования в ОС MS Windows Vista и Server 2008.
18.2 Особенности планирования в ОС MS Windows Vista и Server 2008.   Проблема неравномерного распределения ресурсов процессора:

Планирование загрузки процессорного времени в MS WINDOWS 2000-2003. Функции WIN 32 API создания и завершение процессов и потоков, управление потоками
  Планирование загрузки процессорного времени: В Windows реализована вытесняющая многозадачность, при которой ОС не ждет, когда поток сам захочет освободить

Параметры создания потока
Параметр psa является указателем на структуру SECURITY_ATTRIBUTES. Если Вы хотите, чтобы объекту ядра "поток" были присвоены атрибуты за

Функция CreateRemoteThread
Функция CreateRemoteThread создает поток, который запускается в виртуальном адресном пространстве другого процесса.   HANDLE Cre

Приоритеты потоков
Приоритет Назначение THREAD_PRIORITY_ABOVE_NORMAL Приоритет на 1 пункт выше класса приоритета. TH

Функция TerminateThread
Вызов этой функции также завершает поток: BOOL TerminateThread( HANDLE hThread, DWORD dwExitCode); В параметр dwExitCode помещается код завершения потока.

Засыпание и переключение потоков
VOID Sleep ( DWORD dwMilliseconds ); Эта функция приостанавливает поток па dwMilliseconds миллисекунд. Отметим несколько важных моментов, с

DWORD SuspendThread(HANDLE hThread);
Засыпание и переключение потоков VOID Sleep ( DWORD dwMilliseconds ); Эта функция приостанавливает поток па dwMilliseconds миллисекунд. Отметим несколько важных моментов, с

Межпроцессорное взаимодействие. Передача информации в MS Windows 2000-2003. Анонимные каналы. Почтовые ящики. Функции WIN 32 API.
  Анонимные каналы Анонимные каналы не имеют имен. Не пригодны для обмена через сеть. Главная цель – служить каналом между родительским и дочерним процессом

Межпроцессорное взаимодействие. Передача информации в MS Windows 2000-2003. Именованные каналы. Почтовые ящики. Функции WIN 32 API.
  Виды межпроцессорного взаимодействия (IPC) Предотвращение критических ситуаций Синхронизация процессов Передача информации от одного процесса другому

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги