close

Вход

Забыли?

вход по аккаунту

?

Отчёт по ЛР 1

код для вставкиСкачать
 ???????????? ??????????? ? ????? ?????????? ????????? ??????????? ??????????????? ?????????? ??????????????? ?????????? ??????? ????????????????? ??????????? "???????????? ????????????????? ??????? ??????????? "????" ??????????????? ????????-?????? ???? ????
??????? ?????????????? ?????????? ? ?????????? ??????????
????? ?? ???????????? ?????? ?1
"?????????? ??????????? ???????"
???????????? ??????? ?.?.(?????????)(???????)(?.?. ???????)??????? ??????? ?.?.(??????)(???????)(?.?. ???????)
?????? 2012
??????? 1.
??????? ?????????????? ????????? ? ??????? ? ???????. ???????? ?? ??????: ????? ?????????? ? ?? ?????? ????? ???????????? ? ??????????? ??????????? ??????? ??????????? ???????? ??????????????? ?????????? ?????? ??????????. ??? 3-? ???????????? ????????? ?????????? ?????????????? ? ?????? ???????????, ? ??? ?? ??????? ?????????????? ?????? ?????????????? ?????????? ??????.
? ?????????? TaskInfo ? ?????? ?????????????? ????????? ? ??????? ? ???????. ??????? Interrupts Time Placeholder ????? pri = Hard (???????????? ?????????).
?????????????? ?????????? ??????????: ??? ??????????? ??????????, ? ??????? ???????? ??????? ????? ????????? ???????????????. ?? ??? ????? ????????, ???? ???? ?? ???????? ???? ??????? ????????.
??????? System Idle Process ????? pri = Very Idle (??????????? ?????????).
?????????????? ?????????? ??????????: ??? ??????? ???? ???????????? ??????? ????????? Windows, ?????????????? ????? ????????? ????? (??? ????????? ??????? ?? ???????????? ????????), ?????????? ?????, ????? ????????? ?? ????????? ?????? ???????. ????????, ? ??????? ????? ?? ???? ?????????? ???????, ???? ??? ??? ????? ??????????? ?? ?????? ??????????.
??????????? ??????? ???????????? Windows ??? ????????? ????????????????? ??????????. ?????????? ????? ??????????? ????????????????? ???????????? ?????????? ???????????? ? ????????????? ?????????????? ???????. ????????, ?? x86 ???????????, ???? ??????? ????? ????????? ? ????? ?????????? HLT, ??????? ????????? ?????????? ????????? ????????? ?????????? ?????????? ? ????? ??????????? ??????????. ?? ??????????? ? ?????????? ??????????? ????????????????? ????????? ????? ????????????? ? ????? ????????? ?????, ????????, ??? ?????? ?????????? Intel Speedstep.
??????? 3 ???????????? ????????:
1. Taskinfo prioritet = High
??? = ???? + ???
13 = 13 + 0
Th1: ???. ????. 0 (Normal)
Th2: ???. ????. 0 (Normal)
Th3: ???. ????. 0 (Normal)
Th4: ???. ????. 0 (Normal)
Th5: ???. ????. 0 (Normal)
Th6: ???. ????. 0 (Normal)
2. File and archive manager = Norm
??? = ???? + ???
8 = 8 + 0
Th1: ???. ????. 0 (Normal)
Th2: ???. ????. 0 (Normal)
3. Windows WordPad Application = Norm
??? = ???? + ???
8 = 8 + 0
Th1: ???. ????. 0 (Normal); Th2: ???. ????. 0 (Normal)
??????? 2.
????????? ?????????? multimdi, ???????? 2 ??????, ???????? TID'? ???????. ??? ?????????? ????????????? ? ?????????? ?????????? ??????? ??? ????????? ?????? ?????????? ????????? ??? ??????? ?????????? ???????? ????????? ???????? ? ????? ?? ?????????? ???????? ? ?????????????? ?????????? ??????? ?????????? ?? ?????????? ???????? ?????????? ?????? ????? ????????? ??? ?????????????? ???????????
?????? ?????????? TaskInfo. ?????? 2 ?????? ? ?????????? Multimdi, ????????? ?? TID'?:
????? 1: TID = B00 h
????? 2: TID = 904 h
??????? ???????? ?????? ?????????? ???????? Multimdi ?? ???????????? ?? ?????????????.
Multimdi prioritet = Idle
Th1: ???. ????. 0, ???. ????. 4
Th2: ???. ????. 0, ???. ????. 4
Multimdi prioritet = Normal
Th1: ???. ????. 0, ???. ????. 8
Th2: ???. ????. 0, ???. ????. 8
Multimdi prioritet = High
Th1: ???. ????. 0, ???. ????. 13
Th2: ???. ????. 0, ???. ????. 13
Multimdi prioritet = Real Time
Th1: ???. ????. 0, ???. ????. 13
Th2: ???. ????. 0, ???. ????. 13
??????? ???????? ?????? ?????????? ???????? Multimdi ?? ???????????? ?? ?????????????, ???????? ?????????????? ?????????? ??????? ?? ????????. ?????????? ???????? ????????? ???????? ? ????? ? ??????????? ?? ?????????? ???????? ? ?????????????? ?????????? ?????? ?? ??????????. ??????? ???????? ?????????????? ?????????? ??????: Multimdi prioritet = Idle
??? = ???? + ???
Th1: ???. -2; ???. 4 - 2 = 2
Multimdi prioritet = Normal
Th1: ???. +2; ???. 8 + 2 = 10
Multimdi prioritet = High, Real Time
Th1: ???. -1; ???. 13 - 1 = 12
?????????? ???????? ?????????? ?????? ????? ????????? ??? ?????????????? ?????????? ????????.
? ?????? ?????????? Multimdi ??? ???????? ????????? MDI-???? ?????????????? API ??????? CreateThread ? ???????????? ???? ???????????:
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadRoutine, (LPVOID)hwndChild, 0,(LPDWORD)&dwIDThread);.
??? ????????? ?????? ?????????? ???????? ?????????? ?????????????? API ??????? SetPriorityClass ? ???????????: SetPriorityClass(GetCurrentProcess(),"???????? ?????? ??????????");.
?????? ??? ???????? ????, ???????? ?????????? ???? ?? ????? ? ?? ??????? ??????, ????????????? ?????? ?????? ??????????? ??? ?????? ??????????? ??????. ????? ??????????? ???? ? ??????????? ??????, ????????? ????????? ???????????, ????????? ? ???????? ????, ???????????? ????????? ??????????? ? ????? ?? ??????????? ??????.
??? ????? ? ??????????? ?????? ? ?????? ?? ??? ?????????????? API ??????? ??????????????:
EnterCriticalSection(&(lpMyWndTag->csChildWindowPaint)) ? LeaveCriticalSection(&(lpMyWndTag->csChildWindowPaint));.
??? ???????????? ?????? ?????? ?????????????? API ??????? SuspendThread(lpMyWndTag->hThread); ??? ????????????? ???????????????? ?????? - ResumeThread(lpMyWndTag->hThread);.
??????? ?????? ThreadRoutine ??????????? ??? ??????? ???????????? ????????? MDI-????. ????, ? ??????? ???????? ??????, ???????????, ???? ??????? ?????????? ?????? ?? ????? 1: if(!lpMyWndTag->fActive) break;.
? ????? ?????? ????????? ????????? ???????. ????? ?????????? ????????? ??????????? ?????? ?????? ? ??????????? ??????. ????? ?????????? ????????? ?????? ??????????? ???????? ???????????, ??????? ?? ??????????? ?????? ? ????????? ????????? ????????. ????? ?????????? ????? ??????? ?????? ??????? ??????????? ??????:
DeleteCriticalSection(&(lpMyWndTag->csChildWindowPaint)); free(lpMyWndTag);.
??????? 3.
??? ?????? ?????????? testlimit ?????????? ???????????? ?????????? ??????????? ??????? ? ??????? (x86 ? x86-64) ??? ??????????? ????????? ??????? ????? ??????. *???????? ?????????? ?????? ????????? testlimit ?? ????? ??????????, ?????????? ????????? ????????. ????? ??????????? ???????? ????? ?????? ????????? ???????????? testlimit? ??????? ??????? ??????? ????? ????????? testlimit ? ?????? ?????? ?? ??? ??????????? ???????? ??????? ????? ??????? ????????? ???????????? ??? ???????????? ???????? ??????? ????? ??????.
??????? Testlimit ? ??????? -t -n (?????? ??????????? ?????? ?????).
??? ?86-64 ?????????? ???????????? ?????????? ??????????? ??????? ? ??????? ??? ??????????? ????????? ??????? ????? ?????? 512 ?????.
??? ?86-64 ?????????? ??????????? ???????? ????? ??????, ??????? ????????? ???????????? Testlimit (64 ?????).
?????? ???????? ????? ???????? ???????????, ?????? ??? ??? ??????? ????????? ?????? ?????????? ??????????? ? 64 ????? ??????.
??? ??????????? ???????? ??????? ????? ?????? ?????????? Testlimit ????? ????????? 75701 Threads (???????). ????? ??????? ???????????? ??? ????????????? ???????? ????? ??????. ??????? ?????????????? ????????????, ?? ????????, ??? ???????????? ???????? ????? ?????? ????? 950 ?????:
??? ?86 ?????????? ???????????? ?????????? ??????????? ??????? ? ??????? ??? ??????????? ????????? ??????? ????? ?????? 512 ?????.
??? ?86 ?????????? ??????????? ???????? ????? ??????, ??????? ????????? ???????????? Testlimit (64 ?????). ?????? ???????? ????? ???????? ???????????, ?????? ??? ??? ??????? ????????? ?????? ?????????? ??????????? ? 64 ????? ??????. ??? ??????????? ???????? ??????? ????? ?????? ?????????? Testlimit ????? ????????? 30445 Threads (???????). ????? ??????? ???????????? ??? ????????????? ???????? ????? ??????. ??????? ?????????????? ????????????, ?? ????????, ??? ???????????? ???????? ????? ?????? ????? 800 ?????:
??????? 5.
???????? ?????????? cr_pr_a.exe. ???????? ?????????? ????????? (PID ????????? cr_pr_a.exe ? cr_pr_b.exe). ?????????? ??? ??? ??? ???????? (Wait User Request - ???????? ???????, ????????????? ?????????????; Wait LPC Reply - ???????? ??????????? ?????). ??????????????? ???????? ????, ??????? ? ??????? ??????? ????, ???????????? ??? ????????????? ?????????. ????????????? ? cmd, ??????? ??????? ???????. ????????, ????? ??????? ????????? ? ?????????? cr_pr_a.exe ? cr_pr_b.exe. ????????????? ? cmd, ??????? ??????? ??????? ??? ?????????? ??????????? ????????. ?????????? - ? ?????.
?????? (????? cmd) ?????????? cr_pr_a.exe, ??????? ?????????? ????????? (PID ????????? cr_pr_a.exe ? cr_pr_b.exe).
?????? TaskInfo, ????????? ??? ???????? ??? ?????????. ??????? ProcA - Wait Executive (???????? ??????????? ?????);
??????? ProcB - Wait User Request (???????? ???????, ???????????? ?????????????).
? ??????? Handle ????????? ??? ???????: Process
?????? ???? ??? ????????????? ?????? ????????? - ??? ???????, ??????????? ? ?????????? ????????? ??? ???????? ??????? ??????????. ?????????????? ? TaskInfo, ????????, ??? ?????????? cr_pr_a.exe ???????????, ? ?????????? cr_pr_b.exe ???? ????? ? ???????
?????????????? ? cmd, ? ????? ????? ??????, ???????? ?????????? cr_pr_b.exe.
? ??????????? cr_pr_a.exe ? cr_pr_b.exe ?????????????? ????????? API ??????? ? ?????????? ???? ???????????: idp=GetCurrentProcessId(); //???????? PID ???????? ???????? ? ???????? ??? ???????? ??????
hPrh=OpenProcess(SYNCHRONIZE,NULL,idh); //NT - ???????? Handle ???????? (PH), ???. TID
WaitForSingleObject(hPrh,INFINITE); //????? ?????????? ???????? A, ????????? ??? PH
??????? 6.
???????? ?????????? Event1, Event2. ??????? ????????? ???????? ? ?????????? ???? Event2, ??? ?????????? ? ???? Event1? ?????????? ???? Handl'?? ???????? ????, ???????????? ??? ?????????????, ?? ?????????? ????? ? ?????????????? ?????????? ??? ????????? Event1, Event2. ????????? ??????????, ???????? ??????????.
?????? ?????????? Event1 ? Event2. ???? ????????? ???????? ? ?????????? ???? Event2, ? ???? Event1 ?????????? "*" ????? ??????? ??????? ??????? ? ?????????? ???? Event2.
?????????????? ? TaskInfo, ?????????, ??? ??? ????????????? ????????? ???????????? Handles ???? Event. ? ??????????? Event1 ? Event2 ????????? ??????? ? ??????????? ???????:
$MyVerySpecialEventName$ ? MyVerySpecialEventTerminationName$.
Event1 ?????? ?? ??????? Event2, ??????? ????????? ??????? ??????? ? ?????????? ?? ? ????? ????, ??? ???? ? ???? ??????????????? ?????????? Event1 ???????????? ??????? "*".
? ??????????? ?????????????? ????????? API ??????? ? ???????????? ???? ???????????:
CreateEvent(NULL, FALSE, FALSE, lpEventName);
CreateEvent(NULL, FALSE, FALSE, lpEventTerminationName);
WaitForSingleObject(hEventTermination, 0);
OpenEvent(EVENT_ALL_ACCESS, FALSE, lpEventName);
OpenEvent(EVENT_ALL_ACCESS, FALSE, lpEventTerminationName);
??????? 7.
???????? ?????????? Mutexsdi. ?????????? TID ???????, ???? Handl'?? ???????? ?????????????, ?? ????? ? ?????????????? ?????????? ??? ???????? Mutexsdi. ????????? ??????????, ???????? ??????????.
?????? ?????????? Mutexsdi. ?????????????? ? Process Explorer, ????????? TID'? ???????, ????????? ??????????? Mutexsdi.
??? Handle ????????????? ??? ????????????? ???????: Mutant, ??????? ? ?????? ?????????? ????? ?????????? ???: $MyMutex$MutexMultiSDI$.
? ?????????? Mutexsdi ?????????????? ???? ????????????? API ???????:
hMutex = CreateMutex(NULL, FALSE, szMutexName); // FALSE-?????? ????? ? ?????????? ?????????
WaitForSingleObject(hMutex, INFINITE); // ????? ???????? ????????? ????????? ??? ?????????? ????? ??????, ????? ??? ??????????? - ReleaseMutex(hMutex), // ?????? ??????, ??????????? ????????, ????? ?????????? ??????.
??????? 8.
???????? ?????????? Semmdi. ?????????? TID ???????, ???? Handl'?? ???????? ?????????????, ?? ????? ? ?????????????? ?????????? ??? ???????? Mutexsdi. ????????? ??????????, ???????? ??????????.
?????? ?????????? Semmdi. ????? ?????????? TID'? ???????, ????????? ??????????? Semmdi.
??? Handle ????????????? ??? ????????????? ??????? Semaphore, ??????? ? ?????? ?????????? ????? ?????????? ???:
$MyVerySpecialSemaphoreName$For$SemMDI$Application$
? ?????????? Semmdi ?????????????? ???? ????????????? API ???????:
hSemaphore = CreateSemaphore(NULL, 2, 2, lpSemaphoreName);
? ?????? ?????????? Semmdi ??? ???????? ????????? MDI-???? ?????????????? API ??????? CreateThread ? ???????????? ???? ???????????:
hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadRoutine,
(LPVOID)hwndChild, 0,(LPDWORD)&dwIDThread).
??? ???????????? ?????? ?????? ?????????????? API ???????
SuspendThread(lpMyWndTag->hThread);
Документ
Категория
Без категории
Просмотров
4
Размер файла
1 937 Кб
Теги
отчет
1/--страниц
Пожаловаться на содержимое документа