Linux/Definicje/Proces

Proces to w największym uproszczeniu program wykonujący się w komputerze. Nie jest to bynajmniej pojęcie jednoznaczne z pojęciem "program":

  • program - jest to kod wykonywalny, zawarty w pliku (wielu plikach), a więc np. zapisany na dysku
  • proces - jest to aktualnie wykonywany przez procesor ciąg poleceń (czyli np. program, ale też może to być część, jakaś funkcja programu)

Kluczowe jest tutaj stwierdzenie, że w obrębie jednego procesu, następna "czynność" może zostać rozpoczęta dopiero po zakończeniu poprzedniej, czyli jeżeli dany proces wykonuje jakieś działanie, to następne może on zacząć wykonywać, jak zakończy poprzednie.

ProcesEdytuj

Proces jest jednym z podstawowych pojęć w Unixie ( drugim jest plik). Na proces składa się :

  • wykonywany kod programu
  • zasoby komputera :
    • wewnętrzne dane jądra
    • przestrzeń adresowa pamięci
    • wątki
    • część pamięci zawierająca zmienne globalne [1]

WieloprocesowośćEdytuj

Jądro Linux umożliwia uruchamianie wielu procesów równocześnie - w rzeczywistości, każdy z procesów jest kolejno "włączany" na krótką chwilę, a potem zatrzymywany, uruchamiany następny itd. Jest to przełączanie procesów - więcej na ten temat w pojęciu Linux/Definicje/Wielozadaniowość.

Pojedynczy program może się wykonywać w postaci wielu procesów - np. może przetwarzać w tle dane, ale nie zatrzymuje to działania interfejsu, ponieważ jest on wykonywany w osobnym procesie.

Podgląd listy procesówEdytuj

Listę aktualnie wykonujących się procesów, jak i informacji na ich temat, możemy podejrzeć:

  • w trybie tekstowym wpisując polecenie top (wyświetla kilka(naście) procesów najbardziej obciążających procesor)
  • w środowisku KDE wciskając kombinację [Ctrl] + [ESC] - otworzy się okno "ProcessTable", które oprócz wyświetlania informacji, pozwala na zakończenie (zabicie) wybranych procesów (o ile oczywiście mamy odpowiednie uprawnienia).

UprawnieniaEdytuj

Każdy proces, podobnie jak każdy plik w systemach uniksowych, jest uruchamiany w Linuksie z pewnymi uprawnieniami. Jeżeli uruchamiamy program, będąc zalogowanym jako "majkel", to procesy tego programu będą miały uprawnienia należące do użytkownika "majkel".

Proces główny i potomneEdytuj

Procesem głównym danego programu jest proces uruchomiony przy starcie programu - jest to inaczej wykonujący się główny kod programu. Może on ponadto uruchamiać wiele procesów potomnych, które są jemu przyporządkowane, tworząc strukturę drzewa. W domyślnym zachowaniu, jeżeli zabijemy (w terminologii linuksowej - zakończymy proces natychmiast; ang. kill) proces główny programu, to automatycznie "znikną" jego procesy potomne. Czasem się zdarza że taki proces potomny nie kończy swojego działania - i wtedy zamienia się w tzw. proces zombie. Proces potomny może zostać także uruchomiony z opcją, dzięki której staje się niezależny od procesu inicjującego go.

PrzykładyEdytuj

OdnośnikiEdytuj

  1. Learning about Linux Processes By Amit Saha
  2. getty w ang. wikipedii

Zobacz równieżEdytuj