Sprawdzanie procesów

dział ogólny

Sprawdzanie procesów

Nowy postprzez Mietek » niedziela, 21 września 2008, 21:48

Witam,

Mam troche nie typowe pytanko, jest możliwość sprawdzenia czy jakiś włączony proces korzysta z Timera. Głównie chodzi o sprawdzenie czy robi coś cyklicznie, albo zacznie za 1 min, można jakoś pozyskać te informacje. Byłbym bardzo bardzo wdzięczny za każdą porade w tej sprawie jak można by to odkryć.

Pozdrawiam.
Avatar użytkownika
Mietek
 
    NieznanyNieznana

Re: Sprawdzanie procesów

Nowy postprzez Cyfrowy Baron » poniedziałek, 22 września 2008, 09:25

To czy dany proces coś robi można sprawdzić, poprzez sprawdzenie w jakim stopniu wykorzystuje procesor patrz serwis Cyfrowy Baron dział: porady -> API -> sprawdzanie użycia procesora.

Czy można sprawdzić, czy zacznie coś robić za minutę? Nie wiem, ale jeżeli program nie poinformuje systemu o tym, że zrobi coś za minutę, to chyba nie da się sprawdzić.

Jeżeli w programie znajduje się zegar który tyka, to każde cykl tego zegara - nawet jeżeli nie w każdym cyklu wykonuje jakieś operacje - będzie w niewielkim stopniu korzystał z czasu procesora, więc da się wychwycić, że program pracuje i korzysta z procesora, nie jest to jednak jednoznaczne z tym, że korzysta z Timer'a. Nie widzę jednak sposobu na to, żeby sprawdzić, w którym cyklu zegara program wykona jakąś operację, gdyż w każdym cyklu program tylko sprawdza, czy wartość zmiennej w zdarzeniu OnTimer zegara równa się zadanej wartości, jednym słowem zegar tylko tyka, nie odlicza czasu, a tylko przeskakuje w określonym interwale przez kolejne cykle. Gdy bardziej zagłębisz się w mechanizm zegara, to okaże się, że działa on w oparciu o zegar BIOS'u (nie zegarek , ani czas) i tyka zawsze ze stałą prędkością, a właściwość interwal służy tylko do... - i tutaj nie wiem jak to nazwać, więc napiszę jak to widzę (spostrzeżenie subiektywne) - grupowania poszczególnych cykli w jeden. Jeżeli ustawisz interwał zegara na 100 (1/100 sek.), a zegar BIOS'u tyka co 1 (1/1000 sek.) to Timer po prostu zlicza 100 cykli zegara BIOS'u i wywołuje zdarzenie OnTimer po 100 cyklach zegara BIOS'u.

W tym wszystkim dochodzi jeszcze czas procesora, jeżeli procesora będzie wykorzystywany przez inny program (proces) w 100 %, to zegar w Twoim programie może zostać wstrzymany i będzie przeskakiwał przez cykle, co sprawi, że nie będzie prawidłowo odliczał czas, dlatego dla dokładnego odliczania czasu konieczna jest synchronizacja Timer'a z zegarem BIOS'u.

Jak widzisz czas to pojęcie względne.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4719
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości

cron