background image

LABORATORIUM: 08, 09 i 10 

 
 
 
Procmon.exe – program 

pozwalający na obserwacje działania procesu w zakresie: rejestru, systemu 

plików, sieci, wątków i procesów, zasobów (profilowanie). 

Wątek – jednostka dla której system przydziela czas procesora. Kontekst wątku składa się z: 
licznika rozkazów, stanu rejestrów, stosu (ale nie sterty!).  
Proces –  jest obiektem dostarczającym wątkowi przestrzeni adresowej. Każdy proces ma co 
najmniej  jeden  wątek.  Proces  nie  wykonuje  kodu,  kod  zawarty  w  przestrzeni  adresowej 
procesu jest wykonywany przez wątek. 
Zdarzenie  –  każdy  oczekujący  wątek  widzi  zdarzenie  jako  pewną  dwustanową  flagę: 
zdarzenie jest zgłoszone albo odwołane. 

 
 

GŁÓWNE ZAKŁADKI PROGRAMU PROCMON.EXE 

 
Show Registry Activity - wyświetlenie aktywności rejestru. 
Show  File  System  Activity  -  Wyświetla  aktywny  system  plików  dla  wszystkich  systemów 
plików, w tym pamięci lokalnej i zdalnych systemów plików. 
Network  -  Wyświetla  aktywność  sieciową  (aktywność  protokołu  TCP  i  UDP  za  pomocą 
Event Tracing for Windows (ETW)). 
Show Process and Thread Activity - Wyświetla wszystkie aktualne procesy systemowe oraz  
tworzenie wątków i operacji wyjścia 
Drzewo Procesów - procesów ukazuje się struktura podzielona na zagnieżdżone procesy tego 
samego typu. Wyświetlone są informacje: m. in. ścieżka, komenda, użytkownik, PID itd. 
Include Process from Window - zawężenie informacji do wskazanego procesu. 
 
 

KARTY PROCESU 

 
Event - wyświetla informacje dotyczące danego zdarzenia, np. klasę, wynik, trwanie, ścieżkę 
dostępu, datę i godzinę powstania. 
Process  –  wyświetla  bardziej  szczegółowe  informacje  dotyczące  wybranego  procesu,  np. 
identyfikator procesu, atrybuty wykonywania, linia komend itd. 
Stack  -  przekazuje  informacje  o  bibliotekach,  np.  informacje  o  ramce  biblioteki,  modułach, 
lokacjach, adresach i ścieżkach. 
 
 

PROCESY I WĄTKI – FUNKCJE 

 
WinAPI  -  to  zbiór  niezbędnych  funkcji,  stałych  i  zmiennych  umożliwiających  działanie 
programu w systemie operacyjnym Microsoft Windows. 
CreateProcess – funkcja tworząca proces. 
CreateThread – funkcja tworząca wątek. 
GetCurrentProcess – funkcja kojarzy istniejący zasób z nowym procesem. 
SetThreadPriority - funkcja ustawia poziom priorytetu bieżącego wątku w swojej klasie. 
SetPriorityClass – funkcja ustawia klasę priorytetu dla procesu. 
GetPriorityClass – funkcja pozwala sprawdzić klasę priorytetu procesu. 

background image

ResumeThread – funkcja wznawiająca uśpiony wątek. 
SuspendThread – funkcja zawieszająca wątek. 
ExitThread – funkcja kończąca działanie wątku. 
TerminateThread – funkcja wymusza zakończenie wykonywania wątku. 
GetExitCodeThread – funkcja zwracająca kod powrotu zakończonego wątku. 
WaitForSingleObject  –  funkcja  służąca  do  synchronizacji  poprzez  oczekiwania  na 
zakończenie  działającego  wątku.  Oczekuje  ona  dwMilliseconds  (należy  wpisać  wartość)  na 
zakończenie wątku.  
CreateEvent – funkcja tworząca zdarzenie. 
SetEvent – funkcja informująca system o zaistnieniu zdarzenia 
OpenEvent – funkcja zwraca uchwyt istniejącego zdarzenia. 
PulseEvent – funkcja ustawia zdarzenie w stan sygnalizowany, a następnie przedstawia je w 
stan niesygnalizowany. 
ResetEvent – funkcja resetuje zdarzenie (przestawia je w stan niesygnalizowany). 
InitializeCriticalSection – funkcja inicjująca obiekt sekcji krytycznej. 
EnterCriticalSection – funkcja czeka na uzyskanie wyłącznego dostępu do sekcji krytycznej. 
LeaveCriticalSection  –  funkcja  powodująca  zrzeczenie  się  wyłącznego  dostępu  do  sekcji 
krytycznej. 
TryEnterCriticalSection  –  funkcja  czeka  na  uzyskanie  wyłącznego  dostępu  do  sekcji 
krytycznej. 
DeleteCriticalSection – funkcja zwalnia wszystkie zasoby używane przez sekcję krytyczną. 
CreateMutex – funkcja tworzy nazwany lub nienazwany muteks i zwraca uchwyt dla niego. 
RelaseMutex – funkcja zwalnia muteks. 
WaitForMultipleObjects – funkcja czeka na ustawienie jednego lub wszystkich obiektów w 
stan sygnalizowania. 
CloseHandle – funkcja zamyka obiekt identyfikowany przez uchwyt. 
  
 

MECHANIZMY SYNCHRONIZACJI WĄTKÓW 

 
Mutex  –  obiekt  służący  do  synchronizacji.  Jego  stan  jest  ustawiony  jako  „sygnalizowany” 
kiedy żaden wątek nie sprawuje nad nim kontroli oraz „niesygnalizowany” kiedy jakiś wątek 
sprawuje nad nim kontrolę. 
 
Semafor – działa jak furtka kontrolująca ilość wątków wykonujących jakiś fragment kodu. Za 
pomocą  semaforów  aplikacja  może  kontrolować  na  przykład  maksymalną  ilość  otwartych 
plików, czy utworzonych okien. Semafor w działaniu jest bardzo podobny do muteksu. 
 
Sekcja krytyczna – najszybsza i najwydajniejsza metoda służąca do synchronizacji wątków. 
Mechanizm sekcji krytycznej możliwy jest do wykorzystania tylko w obrębie jednego procesu 
(synchronizacji  wątków).  Pozostałe  metody  (zdarzenia,  semafory,  muteksy  itd.)  mogą  być 
stosowane również dla wielu procesów. 
 
 
 
 
 
 
 
 

background image

KLASY PRIORYTETÓW PROCESÓW 

 
REALTIME_PRIORITY_CLASS – czasu rzeczywistego 
HIGH_PRIORITY_CLASS – wysoki 
ABOVE_NORMAL_PRIORITY_CLASS – powyżej normalnego 
NORMAL_PRIORITY_CLASS – normalny 
BELOW_NORMAL_PRIORITY_CLASS – poniżej normalnego 
IDLE_PRIORITY_CLASS – niski 
 
 

PRIORYTETY WĄTKÓW 

 
THREAD_PRIORITY_TIME_CRITICAL – krytyczny 
THREAD_PRIORITY_HIGHEST – najlepszy 
THREAD_PRIORITY_ABOVE_NORMAL – powyzej normalnego 
THREAD_PRIORITY_NORMAL – normalny 
THREAD_PRIORITY_BELOW_NORMAL – poniżej normalnego 
THREAD_PRIORITY_LOWEST – najgorszy 
THREAD_PRIORITY_IDLE – niski