Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Синхронизация процессов

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 2.11.2024

Министерство Образования и Науки Украины

Одесский Национальный Политехнический Университет

Институт компьютерных систем

Кафедра Компьютерных Систем

Протокол

Лабораторной работы № 24

« Синхронизация процессов »

                                                                                                                                                                                          

                                                                                     Выполнил

                                                                                                                    Студент гр. АЕ – 082

  Суслов А.Н.                                                                                                                                                       

                                                                           Проверил

                                                                                                                                    Нестерюк А. Г.                                                                                                                                          

Одесса 2011

Цель работы:

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

5. Задание:

5.1. Изучить приведенные примеры и использованные в них функции.

5.2. Исследовать работу программ. Убедиться, что при попытке запуска программа SlaveSemaphore сразу завершает свою работу.

5.3. Запустить программу MasterSemaphore и открыть с ее помощью файл a.txt. Убедиться, что каждые 5 секунд в окно отладки выводятся сообщения от программы master. Затем запустить программу SlaveSemaphore и убедиться, что она передает в программу master свою информацию.

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

Листинг программ.

Процедура MasterSemaphore программы :

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

.IF uMsg==WM_CREATE

 invoke GetMenu,hWnd

 mov  hMenu,eax

 mov ofn.lStructSize,SIZEOF ofn

 push hWnd

 pop  ofn.hWndOwner

 push hInstance

 pop  ofn.hInstance

 mov  ofn.lpstrFilter, OFFSET FilterString

 mov  ofn.lpstrFile, OFFSET buffer

 mov  ofn.nMaxFile,MAXSIZE

.ELSEIF uMsg==WM_DESTROY

 invoke KillTimer,hWnd,0 ;âèäàëèòè òàéìåð

 .if hMapFile!=0

  call CloseMapFile

 .endif

 invoke PostQuitMessage,NULL

.elseif uMsg==WM_TIMER

 ;Show Mapping content

 PrintStringByAddr MappingAddress

.ELSEIF uMsg==WM_COMMAND                                     

 mov eax,wParam

 .if lParam==0

  .if ax==IDM_OPEN

   mov  ofn.Flags, OFN_FILEMUSTEXIST or \

                               OFN_PATHMUSTEXIST or OFN_LONGNAMES or\

                               OFN_EXPLORER or OFN_HIDEREADONLY

   invoke GetOpenFileName, ADDR ofn

   .if eax==TRUE

    invoke CreateFile,ADDR buffer,\

                                               GENERIC_READ or GENERIC_WRITE,\

                                               0,\

                                               NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,\

                                               NULL

    mov hFileRead,eax

    PrintHex hFileRead

    mov eax,OFFSET buffer

    PrintStringByAddr OFFSET buffer

    invoke SetWindowText,hWnd,eax

    invoke CreateFileMapping,hFileRead,NULL, PAGE_READWRITE,0,0,OFFSET FileMappingName

    mov  hMapFile,eax

    invoke MapViewOfFile,hMapFile,FILE_MAP_ALL_ACCESS,0,0,0

    mov MappingAddress,eax

    invoke EnableMenuItem,hMenu,IDM_OPEN,MF_GRAYED

    invoke EnableMenuItem,hMenu,IDM_SAVE,MF_ENABLED

    invoke CreateSemaphore,NULL,2,2,offset SemaphoreName

    mov hSemaphore,eax

    PrintHex hSemaphore  

    PrintLine

    invoke SetTimer,hWnd,0,5000,0 ;ñòâîðèòè òàéìåð  

   .endif

  .else

   invoke DestroyWindow, hWnd

  .endif

 .endif

.ELSE

 invoke DefWindowProc,hWnd,uMsg,wParam,lParam

 ret

.ENDIF

xor    eax,eax

ret

WndProc endp

Процедура SlaveSemaphore программы :

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM

.IF uMsg==WM_CREATE

 invoke OpenSemaphore,SEMAPHORE_ALL_ACCESS,FALSE,offset SemaphoreName

 mov hSemaphore,eax

 PrintHex hSemaphore,"Slave OpenSemaphore"

 .IF hSemaphore == 0

  PrintHex eax,"Slave NoSemaphore"

  invoke CloseAll;,hWnd

 .else

  invoke WaitForSingleObject,hSemaphore, INFINITE

  .if eax == WAIT_OBJECT_0

   PrintHex 0,"Slave Signaled"

   invoke OpenFileMapping,FILE_MAP_ALL_ACCESS,FALSE,\

    OFFSET FileMappingName

   mov MappingAddress,eax

   .IF eax == 0

    ;Terminate process

    PrintHex eax,"Slave OpenFileMapping failed!"

    invoke CloseAll;,hWnd

    ;call CloseAll

   .ELSE

    PrintHex eax,"Slave MappingHandle Value"

    mov  hMapFile,eax

    invoke MapViewOfFile,hMapFile,FILE_MAP_ALL_ACCESS,0,0,0

    mov MappingAddress,eax

    .IF eax == 0

     PrintHex MappingAddress, "Slave MapViewOfFile failed"

     ;Terminate process

     invoke CloseAll;,hWnd

     ;call CloseAll

    .ELSE

     PrintHex MappingAddress, "Slave MapViewOfFile address"

     invoke SetTimer,hWnd,0,2500,0 ;ñòâîðèòè òàéìåð

    .ENDIF

   .ENDIF

  .elseif eax == WAIT_TIMEOUT

   PrintHex eax,"Slave TimeOut"

   mov hSemaphore,0

   invoke CloseAll;,hWnd

   ;call CloseAll

  .elseif eax == WAIT_FAILED

   PrintHex eax,"Slave WAIT_FAILED"

   mov hSemaphore,0

   invoke CloseAll;,hWnd

   ;call CloseAll

  .else

   PrintHex eax,"Slave What?"

  .ENDIF

 .endif

.ELSEIF uMsg==WM_DESTROY

 invoke CloseAll;,hWnd

 ;call CloseAll

.elseif uMsg==WM_TIMER

  ;Change and show counter

 inc CNTR

 mov eax,CNTR

 PrintHex CNTR,"Slave Cntr"

  ;Change Mapping content

 mov edx, MappingAddress

 or al,30h

 mov [edx],al

.ELSE

 invoke DefWindowProc,hWnd,uMsg,wParam,lParam

 ret

.ENDIF

xor    eax,eax

ret

WndProc endp

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




1. Оцінка персоналу
2. . Нематеріальні активи критерії їх визнання класифікація і оцінка Нематеріальний актив немонетарний ак
3. Монтаж одноповерхової промислової будівлі
4. Расскажите нам чтонибудь про искусство потому что мы студисты
5. 1Таможенная статистика аналитический инструмент для исследования импорта или экспорта товаров или кодов Т1
6. . Які черепні нерви найчастіше уражаються при інсультах А
7. КОНТРОЛЬНАЯ РАБОТА 2 по дисциплине- Английский язык
8. по теме Русь в 8 ~ Н
9. Тема- Банковская системаК пассивным операциям коммерческих банков относят
10. Тема 2. Группа веществ изолируемых экстракцией водой
11. Реферат- Освобождение юга и достижения украинской культуры в XVIII веке
12. Развитие креативности у дете
13. Журналистика бакалавриат 01
14. тематики КОНТРОЛЬНАЯ РАБОТА 2 ПО ДИСЦИПЛИНЕ- Теория вероятностей и математическая статистика
15. Правознавство Київ ~ 2013 Плани проведення семінарських і практичних занять
16. Known B ttrctive C fshionble D quiet E privte Choose the most suitble question to the nswer- We see ech other every weekend
17. пособие по изучению дисциплины и выполнению контрольных работ для студентов заочного и дистанционного обу
18. Можно ли утверждать, что литература сегодня воспитывает человека
19. реферата 1
20. el enfoque m~s trdicionl cuys r~ces se pierden en l lejn~ de los tiempos en l Ret~ric ntigu es l que describe estudi clsific los medios expresivos investig los mtices estil~sticos de ls u.