ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 7. 1. Получение статистической информации о задании

1. Получение статистической информации о задании.

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

Дляполучения более полной статистической информации о работе насосных штанг в настоящее время разрабатывается технология лазерной маркировки штанг для обеспечения последующего внедрения системы учета и использования штанг глубинных насосов. [2]

Пассивный эксперимент состоит вполучении статистической информации об объекте по данным его нормальной эксплуатации. Значения параметров процесса, знание которых необходимо для расчетов статических и динамических характеристик, регистрируются многоточечными приборами. [3]

Довольно часто возникает необходимость вполучении статистической информации непосредственно по мере ее поступления. Для этой цели могут быть использованы приборы типа режимомеров и классификаторов. [4]

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

Эта задача была рассмотрена Ламли [505], однакополучению подробной статистической информации до сих пор препятствовали трудности интегрирования. [6]

Описанные экспериментальные методы исследования старения материалов должны стать базой дляполучения статистической информации о долговечности объектов МН. [7]

Особенностью организации статистики финансов является решение трудной и актуальной задачи - получение статистической информации о размерах теневой экономики. От успешного выполнения этой задачи зависит наполнение бюджетов всех уровней. Отсутствие данной статистической информации затрудняет формирование налоговой базы федерального и консолидированного бюджетов. [8]

Форма федерального государственного наблюдения № 11 - МП служит только дляполучения сводной статистической информации и не может быть использована в налоговых целях или для предоставления другим коммерческим организациям. [9]

Расчленение ИС на компоненты ненадежности условно и определяется возможностями и удобствомполучения статистической информации их надежности. [10]

В настоящее время существует множество разнообразных методов статистического анализа и способовполучения статистической информации исследуемого объекта, но вьюор одного из них производится в зависимости от решен. [11]

Расчленение ИМС или БИС на компоненты ненадежности условно и в каждом конкретном случае определяется возможностями и удобствомполучения статистической информации об их надежности. [12]

Территориальные органы и находящиеся в ведении Госкомстата России организации обязаны по просьбе отчитывающегося субъекта проставить отметку на копии полученной ими формы государственного статистического наблюдения о принятии и дату ее представления, или приполучении статистической информации по телекоммуникационным каналам связи передать отчитывающемуся субъекту квитанцию о приемке в электронном виде. [13]

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

2. Объекты синхронизации потоков.

При создании многопоточных приложений необходимо контролировать взаимодействие отдельных потоков. Большинство ошибок при работе с потоками возникает из-за того, что во время работы приложения различные потоки пытаются обратиться к одним и тем же данным. Для предотвращения подобной ситуации в ОС Windows (как впрочем и в других операционных системах) существуют средства синхронизации, которые позволяют контролировать доступ к разделяемым ресурсам. Для обеспечения синхронного взаимодействия потоков создаются объекты синхронизации, используемые в так называемых wait-функциях, которые приостанавливают выполнение потока до тех пор, пока не будет выполнено определенное условие (оно зависит от типа wait-функции). В Windows существует три группы wait-функций: 1) single-object К этой группе относится функция WaitForSingleObject(), которая приостанавливает поток до освобождения заданного объекта синхронизации. DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds ); Параметр hHandle - это дескриптор объекта синхронизации. Параметр dwMilliseconds указывает время, по истечении которого функция завершается, даже если объект синхронизации не освободился. В этом случае функция возвращает значение WAIT_TIMEOUT. 2) multiple-object Функции этой группы позволяют потоку ждать освобождения или нескольких объектов синхронизации, или одного из них. К этой группе относится функция WaitForMultipleObjects(). DWORD WaitForMultipleObjects( DWORD nCount, const HANDLE* lpHandles, BOOL bWaitAll, DWORD dwMilliseconds ); Параметр nCount указывает количество дескрипторов объектов, содержащихся в массиве, на который указывает параметр lpHandles. Максимально возможное число дескрипторов объектов равно константе MAXIMUM_WAIT_OBJECTS. Параметр lpHandles - указатель на массив, в котором содержаться дескрипторы объектов синхронизации. Параметр bWaitAll - если этот параметр равен TRUE, то функция возвращает управление потоку, когда освобождаются все объекты синхронизации, дескрипторы которых содержатся в массиве. Если параметр равен FALSE, то функция завершается при освобождении любого из объектов. Параметр dwMilliseconds указывает время, по истечении которого функция завершается, даже если объект синхронизации не освободился. В этом случае функция возвращает значение WAIT_TIMEOUT. 3) сигнализирующие (alertable). При вызове любой wait-функции можно задавать время ожидания, по истечении которого функция завершается, не дождавшись выполнения заданного условия, и возвращает потоку значение WAIT_TIMEOUT. Объекты синхронизации: Семафор (Semaphore) Мьютекс (Mutex) Событие (Event) Таймер (Timer) Критическая секция (Critical Section) Критические секции Критическая секция — часть программы, в которой есть обращение к совместно используемым данным. При нахождении в критической секции двух (или более) процессов, возникает состояние «гонки» («состязания»). Для избежания данной ситуации необходимо выполнение четырех условий: Два процесса не должны одновременно находиться в критических областях. В программе не должно быть предположений о скорости или количестве процессоров. Процесс, находящийся вне критической области, не может блокировать другие процессы. Невозможна ситуация, в которой процесс вечно ждет попадания в критическую область. Критическая секция — объект синхронизации потоков, позволяющий предотвратить одновременное выполнение некоторого набора операций (обычно связанных с доступом к данным) несколькими потоками. Критическая секция выполняет те же задачи, что и мьютекс. Между мьютексом и критической секцией есть терминологические различия, так процедура, аналогичная захвату мьютекса, называется входом в критическую секцию, снятию блокировки мьютекса — выходом из критической секции. Процедура входа и выхода из критических секций обычно занимает меньшее время, нежели аналогичные операции мьютекса, что связано с отсутствием необходимости обращаться к ядру ОС. В операционных системах семейства Microsoft Windows разница между мьютексом и критической секцией в том, что мьютекс является объектом ядра и может быть использован несколькими процессами одновременно, критическая секция же принадлежит процессу и служит для синхронизации только его потоков. Критические секции Windows имеют оптимизацию, заключающуюся в использовании атомарно изменяемой переменной наряду с объектом «событие синхронизации» ядра. Захват критической секции означает атомарное увеличение переменной на 1. Переход к ожиданию на событии ядра осуществляется только в случае, если значение переменной до захвата было уже больше 1, то есть происходит реальное «соревнование» двух или более потоков за ресурс. Таким образом, при отсутствии соревнования захват/освобождение критической секции обходятся без обращений к ядру. Кроме того, захват уже занятой критической секции до обращения к ядру какое-то небольшое время ждёт в цикле опроса переменной, и, если переменная становится равной 0, то захват происходит без обращений к ядру. Сходный объект в ядре Windows называется FAST_MUTEX (ExAcquire/ReleaseFastMutex). Он отличается от критической секции отсутствием поддержки рекурсивного повторного захвата тем же потоком. Аналогичный объект в Linux называется фьютекс. Функции ожидания Объекты синхронизации используются совместно с функциями ожидания. Эти функции связываются с одним или несколькими синхронизирующими объектами и ждут, когда эти объекты перейдут в сигнальное состояние. Тем самым выполнение процесса может быть приостановлено до тех пор, пока в системе не произойдёт некоторое событие. Ожидание одного события может быть организовано вызовом функции WaitForSingleObject: DWORD WaitForSingleObject( IN HANDLE hHandle, IN DWORD dwMilliseconds ); Параметр hHandle - дескриптор объекта синхронизации. Параметр dwMilliseconds - время ожидания (тайм-аут) в миллисекундах. Если объект, на который указывает hHandle, в данный момент находится в несигнальном состоянии, функция ждёт, пока он перейдёт в сигнальное состояние, или пока не закончится время ожидания. Если объект в момент вызова функции находится в сигнальном состоянии, функция возвращается немедленно. Если возвращённое функцией значение равно WAIT_TIMEOUT, это свидетельствует о том, что время ожидания истекло, а объект так и не перешёл в сигнальное состояние. Значение WAIT_OBJECT_0 свидетельствует о том, что объект сразу был в сигнальном состоянии или перешёл в это состояние во время ожидания. Возвращённое функцией WaitForSingleObject значение WAIT_ABANDONED возможно только для мьютексов и свидетельствует о том, что мьютекс освободился вследствие окончания выполнения владевшего им потока. Подробнее это будет рассмотрено в статье "Мьютексы". Значение WAIT_FAILED свидетельствует об ошибке выполнения функции. Если параметр dwMilliseconds задан равным 0, функция тестирует состояние объекта и немедленно возвращается, независимо от состояния объекта. Если dwMilliseconds = INFINITE, функция возвращается только при переходе объекта в сигнальное состояние. Такое значение параметра dwMilliseconds надо задавать с большой осторожностью при этом надо быть абсолютно уверенным, что рано или поздно объект перейдёт в сигнальное сотояние. В противном случае приложение "зависнет". Перед возвращением функция WaitForSingleObject изменяет состояние объекта, например, захватывает мьютекс, уменьшает число семафора на 1 и т.д. Ожидание нескольких синхронизирующих объектов может быть организовано функцией WaitForMultipleObjects: DWORD WaitForMultipleObjects ( IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds ); Параметр lpHandles является указателем на массив дескрипторов объектов синхронизации. Параметр nCount определяет число дескрипторов в этом массиве, используемых функцией. Параметр bWaitAll определяет логику ожидания. При bWaitAll = true функция ждёт, пока все объекты окажутся в сигнальном состоянии. При bWaitAll = false функция возвращается, если в сигнальном состоянии находится хотя бы один объект. В этом случае возвращаемое функцией значение указывает, какой именно объект находится в этом состоянии. Параметр dwMilliseconds определяет время ожидания и всё, сказанное выше об аналогичном параметре функции WaitForSingleObject, относится и к данной функции. Функция работает аналогично функции WaitForSingleObject, отличаясь только возвращаемыми значениями. При bWaitAll = true функция возвращает значения WAIT_OBJECT_0, WAIT_TIMEOUT, WAIT_ABANDONED_0 или WAIT_FAILED. Смысл этих значений рассматривался ранее. При bWaitAll = false возможные значения WAIT_TIMEOUT, WAIT_FAILED, от WAIT_OBJECT_0 до WAIT_OBJECT_0 + nCount – 1 и от WAIT_ABANDONED_0 до WAIT_ABANDONED_0 + nCount - 1. Разности возвращённого результата - WAIT_OBJECT_0 или возвращённого результата - WAIT_ABANDONED_0 дают индекс того объекта в массиве lpHandles, который вызвал завершение выполнения функции.

3. Архитектура управления памятью в Win32.

Функция VirtualFree освобождает ряд страниц в виртуальном адресном

пространстве. А функция VirtualFreeEx освобождает ряд страниц в

виртуальном адресном пространстве указанного процесса.

BOOL VirtualFree(LPVOID lpvAddress, DWORD dwSize,

DWORD dwFreeType)

BOOL VirtualFreeEx(HANDLE hProcess, LPVOID lpvAddress,

DWORD dwSize, DWORD dwFreeType)

Функция VirtualLock блокирует область виртуального адресного

пространства в памяти. А функция VirtualUnLock дает возможность

разблокировать указанный ряд страниц в виртуальном адресном пространстве

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

необходимости.

BOOL VirtualLock (LPVOID lpvAddress, DWORD dwSize),

BOOL VirtualUnlock (LPVOID lpvAddress, DWORD dwSize)

Функция VirtualProtect изменяет установки защиты доступа к области

выделенных страниц в виртуальном адресном пространстве. Функция

VirtualProtectEx может действовать в виртуальном адресном пространстве

других процессов, тогда как VirtualProtect действует толька в рамках

вызывающего процесса.

BOOL VirtualProtect(LPVOID lpvAddress, DWORD dwSize, DWORD

dwNewProtect, DWORD pdwOldProtect)

BOOL VirtualProtectEx(HANDLE hProcess, LPVOID lpvAddress,

DWORD dwSize, DWORD dwNewProtect, DWORD pdwOldProtect)

Наши рекомендации