Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

Implementacja PCB w Linuksie

środa,

Implementacja PCB w Linuksie

W systemie Linux blok kontrolny procesu (PCB) jest implementowany jako struktura task_struct. Ta struktura jest kompleksowa i umożliwia jądru szczegółowe zarządzanie każdym aspektem procesu. To kluczowy element architektury systemu operacyjnego, który wspiera zaawansowane funkcjonalności takie jak wielozadaniowość, współbieżność i izolacja procesów. Każdy proces w systemie Linux jest reprezentowany przez unikalną strukturę task_struct, która zawiera niezbędne informacje do zarządzania i planowania procesu.

Główne elementy task_struct

  1. Stan procesu: Zawiera informacje o bieżącym stanie procesu, np. czy jest on w stanie gotowości, uruchomiony, zatrzymany, zombi itd.

  2. Licznik rozkazów (Program Counter): Wskaźnik do miejsca w kodzie, gdzie proces został zatrzymany i skąd będzie kontynuowany.

  3. Rejestry procesora: Kopie wszystkich głównych rejestrów procesora, które są niezbędne do kontynuowania wykonania procesu po przełączeniu kontekstu.

  4. Wskaźniki stosu: Adresy stosu jądra i stosu użytkownika, które są używane przez proces.

  5. Lista powiązań: Procesy w systemie Linux są połączone w listy za pomocą wskaźników, co umożliwia jądru łatwe przeglądanie wszystkich procesów.

  6. Priorytet i polityka planowania: Zawiera informacje dotyczące priorytetu procesu i używanej polityki planowania, co wpływa na to, jak często i jak długo proces może być wykonywany.

  7. Informacje o pamięci: Obejmuje wskaźniki do struktur zarządzania pamięcią, takich jak tabela stron, obszary pamięci itp.

  8. Czas procesora: Zawiera informacje o tym, ile czasu procesora zostało wykorzystane przez proces.

  9. Informacje o kontekście I/O: Przechowuje informacje o plikach i deskryptorach plików otwartych przez proces, obecnych operacjach I/O itd.

  10. Sygnały: Informacje o sygnałach, które zostały wysłane do procesu, ale jeszcze nie zostały obsłużone.

  11. Informacje o użytkowniku i grupie: UID (User ID) i GID (Group ID) właściciela procesu.

Funkcje task_struct

  • Zarządzanie procesami: task_struct umożliwia jądru Linux zarządzanie procesami, przechowując informacje o stanie procesu, jego priorytecie, rejestrach, pamięci itd.
  • Przełączanie kontekstu: Jądro używa task_struct do zapisywania i przywracania stanu procesu podczas przełączania kontekstu między procesami.
  • Planowanie: Struktura pomaga planiście (scheduler) w podejmowaniu decyzji dotyczących tego, który proces powinien być następnie uruchomiony, na podstawie jego priorytetu i polityki planowania.

Katalog /proc

Katalog /proc w systemie Linux ma bezpośredni związek z informacjami o procesach, które są zarządzane przez struktury typu PCB (Process Control Block), jednak nie przechowuje bezpośrednio struktur PCB. /proc stanowi mechanizm dla administratorów systemów i narzędzi do monitorowania, oferujący wgląd w wewnętrzne działanie systemu i jego procesów. Jest wirtualnym systemem plików, który dostarcza interfejs do struktur danych jądra. Nie znajdują się tam rzeczywiste pliki zapisane na dysku – zamiast tego reprezentuje on stanowiące dynamicznie generowane widoki struktur jądra, w tym informacje o procesach.

Związek /proc z PCB

  1. Informacje o procesach: Dla każdego działającego procesu w systemie Linux, w katalogu /proc istnieje podkatalog z numerem odpowiadającym identyfikatorowi PID (Process ID) tego procesu. Wewnątrz tego katalogu znajdują się pliki i pseudopliki, które zawierają informacje o procesie, takie jak jego stan, użycie pamięci, statystyki, i wiele innych. Te informacje są bezpośrednio powiązane z danymi przechowywanymi w PCB.

  2. Czytanie danych procesu: Kiedy użytkownik lub aplikacja odczytuje pliki w katalogu /proc/[pid], system generuje informacje na bieżąco, odbijając stan wewnętrznych struktur danych jądra, takich jak task_struct. Dostarcza to szczegółowy obraz aktualnego stanu procesu, co jest bardzo przydatne do celów diagnostycznych i monitorowania.

  3. Interakcja z jądrem: Niektóre pliki w /proc są interaktywne, co oznacza, że można je nie tylko czytać, ale również zapisywać do nich, aby zmienić działanie jądra lub konkretnego procesu. Na przykład, pisząc odpowiednie wartości do niektórych plików, można zmieniać priorytet procesu, przyłączać sygnały, czy modyfikować inne jego aspekty.

  4. Ujednolicenie interfejsu: System plików /proc zapewnia ujednolicony interfejs do informacji systemowych, co pozwala na łatwą integrację z różnymi narzędziami i skryptami systemowymi, które mogą wyświetlać te informacje lub monitorować zachowanie systemu i procesów.

Artykuł: Marc Andreessen

Marc Andreessen

Artykuł: Zakończenie staży

Zakończenie staży

Artykuł: Brendan Eich

Brendan Eich

Artykuł: Nvidia GeForce 200

Nvidia GeForce 200

Artykuł: Pierwszy dzień w Splicie

Pierwszy dzień w Splicie

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły