Операционные системы. Учебное пособие. Марапулец Ю.В. - 73 стр.

UptoLike

Составители: 

екта - одну из функций Openxxx. Две программы могут заранее определить имя совме-
стно используемого объекта. Кроме того, одна из программ способна передать другой
это имя посредством совместно используемой области памяти функций DDEML (DDE
Management Library - библиотека управления динамическим обменом данных) или кана-
ла.
BOOL DuplicateHandle(
HANDLE hSourceProcess, // процесс, которому принадлежит
// исходный объект
HANDLE hSource, // дескриптор исходного объекта
HANDLE hTargetProcess, // процесс, который хочет создать
// копию дескриптора
LPHANDLE lphTarget, // переменная для записи копии дескриптора
DWORD fdwAccess, // запрашиваемые привилегии доступа
BOOL bInherit, // может ли наследоваться копия дескриптора?
DWORD fdwOptions ); // дополнительные операции, например
// закрытие исходного дескриптора
HANDLE OpenMutex(
DWORD fdwAccess, //запрашиваемые привилегии доступа
BOOL binherit, // TRUE - дочерний процесс может
// наследовать этот дескриптор
LPTSTR lpszName ); // имя исключающего семафора
HANDLE OpenSemaphore(
DWORD fdwAccess, // запрашиваемые привилегии доступа
BOOL bInherit, //TRUE - дочерний процесс может
// наследовать этот дескриптор
LPTSTR lpszName ); // имя семафора
HANDLE OpenEvent(
DWORD fdwAccess, // запрашиваемые привилегии доступа
BOOL bInherit, // TRUE - дочерний процесс может
// наследовать этот дескриптор
LPTSTR lpszName ); // имя события
Используемый в этом примере тип данных LPTSTR - это обобщенный текстовый
тип, который компилируется по-разному в зависимости от того, какой стандарт, Unicode
или ASCII, поддерживается приложением.
Семафоры, исключающие семафоры и объекты событий будут сохраняться в памя-
ти до тех пор, пока не завершатся все использующие их процессы или пока с помощью
функции CloseHandle не будут закрыты все дескрипторы соответствующего объекта:
BOOLCloseHandle(hObject);
Критический раздел представляет собой объект, выполняющий те же функции,
что и исключающий семафор, но в отличие от последнего критический раздел не может
наследоваться. Оба объекта доступны только для одного процесса. Преимущество кри-
тических разделов перед исключающими семафорами состоит в том, что они проще в
управлении и гораздо быстрее работают [12].
Терминология, принятая для функций, которые используются при работе с крити-
ческими разделами, отличается от терминологии, разработанной для функций управле-
ния семафорами, исключающими семафорами и событиями, однако сами функции вы-
полняют одни и те же операции. В частности, принято говорить не о создании
75
екта - одну из функций Openxxx. Две программы могут заранее определить имя совме-
стно используемого объекта. Кроме того, одна из программ способна передать другой
это имя посредством совместно используемой области памяти функций DDEML (DDE
Management Library - библиотека управления динамическим обменом данных) или кана-
ла.

BOOL DuplicateHandle(
     HANDLE hSourceProcess,            // процесс, которому принадлежит
                                      // исходный объект
      HANDLE hSource,                 // дескриптор исходного объекта
      HANDLE hTargetProcess,          // процесс, который хочет создать
                                      // копию дескриптора
      LPHANDLE lphTarget,             // переменная для записи копии дескриптора
      DWORD fdwAccess,                // запрашиваемые привилегии доступа
      BOOL bInherit,                  // может ли наследоваться копия дескриптора?
      DWORD fdwOptions );             // дополнительные операции, например
                                      // закрытие исходного дескриптора
HANDLE OpenMutex(
    DWORD fdwAccess,                  //запрашиваемые привилегии доступа
    BOOL binherit,                    // TRUE - дочерний процесс может
                                      // наследовать этот дескриптор
      LPTSTR lpszName );              // имя исключающего семафора

HANDLE OpenSemaphore(
    DWORD fdwAccess,                  // запрашиваемые привилегии доступа
    BOOL bInherit,                    //TRUE - дочерний процесс может
                                      // наследовать этот дескриптор
      LPTSTR lpszName );              // имя семафора

HANDLE OpenEvent(
    DWORD fdwAccess,                  // запрашиваемые привилегии доступа
    BOOL bInherit,                    // TRUE - дочерний процесс может
                                      // наследовать этот дескриптор
      LPTSTR lpszName );              // имя события

      Используемый в этом примере тип данных LPTSTR - это обобщенный текстовый
тип, который компилируется по-разному в зависимости от того, какой стандарт, Unicode
или ASCII, поддерживается приложением.
      Семафоры, исключающие семафоры и объекты событий будут сохраняться в памя-
ти до тех пор, пока не завершатся все использующие их процессы или пока с помощью
функции CloseHandle не будут закрыты все дескрипторы соответствующего объекта:
BOOLCloseHandle(hObject);
       Критический раздел представляет собой объект, выполняющий те же функции,
что и исключающий семафор, но в отличие от последнего критический раздел не может
наследоваться. Оба объекта доступны только для одного процесса. Преимущество кри-
тических разделов перед исключающими семафорами состоит в том, что они проще в
управлении и гораздо быстрее работают [12].
      Терминология, принятая для функций, которые используются при работе с крити-
ческими разделами, отличается от терминологии, разработанной для функций управле-
ния семафорами, исключающими семафорами и событиями, однако сами функции вы-
полняют одни и те же операции. В частности, принято говорить не о создании


                                        75