next up previous contents
Next: Przenośna warunkowa kompilacja Up: Kontrola i informacja o Previous: ptrace i system plików   Contents

Kontrola procesów pod Linuxem

Pod Linuxem wywołanie systemowe ptrace jest obsługiwane i działa tak jak w 4.3BSD. Do otrzymywania informacji o procesach i systemie można posłużyć się również systemem plików /proc, jednakże różni się on znacząco od tego z SVR4. Pod Linuxem /proc zawiera pliki z ogólnymi informacjami o systemie, np.: użycie pamięci, średnie obciążenie, załadowane moduły, informacje o sieci. Do obsługi tych plików używa się read i write, a ich zawartość może być przetworzona przez scanf. System plików /proc dostarcza katalogu dla każdego uruchomionego procesu, mający za nazwę id procesu. Katalog zawiera pliki dostarczające informacji na temat: linii poleceń, odnośników do katalogu roboczego i wykonywanego pliku, otwartych deskryptorów plików, itd. Jądro dostarcza tych informacji 'w locie', w odpowiedzi na żądania read. Implementacja taka powoduje, że program taki jak ps musi przejść przez wiele katalogów i otworzyć wiele plików. Dla porównania, funkcje kvm używane w innych Unixach odczytują bezpośrednio struktury danych jądra za pomocą kilku wywołań systemowych.

Oczywiście, każda implemetacja jest tak odmienna, iż przenoszenie takich aplikacji może być naprawdę ciężkie. Powinniśmy zaznaczyć, że system plików /proc z SVR4 znacznie różni się od tego z Linuxa i nie powinno ich się używać w tym samym znaczeniu. Notabene każdy program, który korzysta z kvm lub systemu plików /proc z SVR4 nie jest zbytnio przenośny i części kodu zawierające te wywołania muszą być przepisane dla każdego systemu operacyjnego.

Wywołania ptrace w Linuksie są prawie identyczne z tymi z BSD, jednakże istniją różnice:

Linux nie dostarcza funkcji kvm do czytania przestrzeni adresowej jądra przez program użytkowy, jednak niektóre programy ( w szczególności kmem_ps ) używają swoich własnych wersji tych funkcji. Ogólnie rzecz biorąc, nie są one przenośne, jakikolwiek kod używający funkcji kvm jest prawdopodobnie zależny od dostępności symboli lub struktur danych jądra, nie jest to zbyt bepieczne. Użycie funkcji kvm powinno być uznane za specyficzne dla architektury.


next up previous contents
Next: Przenośna warunkowa kompilacja Up: Kontrola i informacja o Previous: ptrace i system plików   Contents

2000-03-01


Poltronic