Do tematu: Zarządzanie procesami
Do tematu: Struktury danych

Przewodnik po plikach modułu "Zarządzanie procesami"


Spis treści

Alfabetyczny spis (i opis) plików modułu
Spis plików z uwzględnieniem podziału na podtematy
 


Alfabetyczny spis (i opis) plików modułu

attr.c (wątki)
Implementacja funkcji do obsługi atrybutów wątków.
fs/binfmt_aout.c
Zawiera funkcje potrzebne do obsługi plików binarnych w formacie a.out
fs/binfmt_elf.c
Zawiera funkcje potrzebne do obsługi plików binarnych w formacie elf
fs/binfmt_java.c
Zawiera funkcje potrzebne do obsługi plików binarnych w formacie java
fs/binfmt_script.c
Zawiera funkcje potrzebne do obsługi wykonywalnych plików skryptowych
include/linux/binfmts.h
Zawiera stałe i struktury związane z obsługą różnych formatów plików wykonywalnych, między innymi stałą MAX_ARG_PAGES, określającą pośrednio liczbę argumentów, jakie mogą być przekazane do procesu oraz podstawowe struktury danych, takie jak linux_binprm i linux_binfmt.
cancel.c (wątki)
Implementacja funkcji umożliwiających bezpieczne "zabijanie" wątków (bez niszczenia całego procesu); plik zawiera także różne funkcje do zwalniania zasobów związanych z wątkami.
clone.S (wątki)
Kod asemblerowy funkcji clone()
condvar.c (wątki)
Implementacja funkcji do obsługi zmiennych warunkowych (condition variables).
arch/i386/kernel/entry.S
Zawiera niskopoziomowe procedury obsługi wywołań funkcji systemowych, powrotów z tych wywołań oraz niskopoziomową obsługę błędów.
errno.c (wątki)
Implementacja funkcji zwracających wartości "zmiennych" errno i h_errno dla poszczególnych wątków.
fs/exec.c
Zawiera funkcje, struktury danych i zmienne potrzebne do uruchamiania procesów (wykonywania plików). Najważniejsze z nich to: spis (lista) wszystkich akceptowanych formatów plików wykonywalnych, funkcja rejestrująca nowe formaty, funkcja zajmująca się przekazywaniem parametrów i zmiennych środowiskowych do uruchamianego procesu oraz najważniejsza - do_execve, która faktycznie wykonuje dany program.
kernel/exec_domain.c
Funkcje związane z domenami wykonywania - między innymi funkcja rejestrująca nowe domeny, funkcja odrejestrowująca je oraz funkcja znajdująca właściwą domenę uruchomieniową na podstawie wartości personality struktury task_struct danego procesu.
kernel/exit.c
Obsługa zakończenia procesu - są tu funkcje bezpośrednio obsługujące zakończenie oraz różne funkcje pomocnicze, takie jak notify_parent (powiadomienie własnego ojca o swojej śmierci), release (zwolnienie pamięci nie zwolnionej przez exit) i inne dokonujące między innymi zwalniania zasobów. Najważniejszą funkcją jest do_exit, która wykonuje właściwy algorytm exit.
fork.c (wątki)
"Wątkowa" implementacja funkcji fork.
kernel/fork.c
Funkcje do tworzenia nowych procesów plus różnego rodzaju funkcje pomocnicze (głównie kopiujące odpowiednie fragmenty struktury task_struct procesu macierzystego. Podstawowa funkcja to do_fork.
internals.h (wątki)
Plik zawiera większość podstawowych struktur danych wykorzystywanych przez wątki.
include/linux/interrupt.h
Obsługa sygnałów (między innymi definicja struktury irqaction).
kernel/itimer.c
Plik zawiera kod funkcji związanych z obsługą zegarów odliczających (interval timers)
join.c (wątki)
Implementacja funkcji pthread_exit(...), pthread_join(...) i pthread_detach(...).
lockfile.c (wątki)
Implementacja funkcji umożliwiających blokowanie standardowego strumienia wejścia-wyjścia.
init/main.c
Podstawowe funkcje wykonywane podczas inicjacji systemu (między innymi funkcje start_kernel i init).
manager.c (wątki)
Implementacja "wątku zarządzającego wątkami" - zarządza on tworzeniem i kończeniem wątków.
mutex.c (wątki)
Implementacja funkcji do tworzenia, niszczenia i obsługi semaforów typu mutex.
include/linux/personality.h
Definicje typów osobowości procesów oraz definicja struktury exec_domain (domeny uruchomieniowej).
arch/i386/kernel/process.c
Funkcje związane z zarządzaniem procesami dla architektury Intela. Znajdują się tu między innymi funkcje realizujące "idle-loop" procesu INIT_TASK (sys_idle() i hard_idle()).
pthread.c (wątki)
Implementacja funkcji z pthread.h oraz definicjia kilku domyślnych wartości struktur danych związanych z wątkami.
pthread.h (wątki)
Zawiera definicje i deklaracje struktur danych, stałych i funkcji używanych do obsługi wątków.
pt-machine.h (wątki)
Funkcje charakterystyczne dla architektury Intela (między innymi funkcja testandset(...)).
queue.h (wątki)
Definicja kolejek oczekiwania dla wątków oraz implementacja funkcji priorytetowego wstawiania do kolejki -> enqueue(...) i usuwania pierwszego wątku z kolejki -> dequeue(...).
restart.h (wątki)
Implementacja funkcji umożliwiających przerywanie i wznawianie wykonania wątku.
kernel/sched.c
Funkcje do obsługi szeregowania procesów (w tym właściwa funkcja wykonująca szeregowanie, czyli schedule)
include/linux/sched.h
Najważniejszy plik z deklaracjami (i definicjami) dla procesów - zawiera między innymi definicję struktury task_struct, czyli reprezentacji procesu w systemie. Poza tym umieszczono tam również definicje różnych stałych związanych z procesami (tryby szeregowania, stany procesów itp.)
semaphore.c (wątki)
Implementacja semaforów zgodnych ze standardem POSIX 1003.1b .
arch/i386/kernel/signal.c
Obsługa sygnałów - funkcje zależne od architektury. Znajdują się tu implementacje funkcji sigreturn, sigsuspend oraz do_signal (podstawowa funkcja do obługi sygnałów).
kernel/signal.c
Funkcje do obsługi sygnałów, w tym sys_sigaction ("prawdziwa funkcja systemowa do zmiany obsługi sygnału").
include/linux/signal.h
Definicje różnych stałych związanych z sygnałami (między innymi rodzaje sygnałów i flagi decydujące o sposobie ich obsługi).
signals.c (wątki)
Funkcje implementujące obsługę sygnałów dla wątków.
sleep.c (wątki)
Implementacja funkcji sleep() bezpieczna dla wątków.
kernel/softirq.c
Implementacja funkcji do_bottom_half().
specific.c (wątki)
Dane specyficzne dla wątków - obsługa kluczy wątków.
spinlock.h (wątki)
Implementacja funkcji P() i V() na semaforach binarnych z biblioteki wątków.
kernel/sys.c
Implementacja wielu standardowych funkcji systemowych, między innymi: sys_setpriority, sys_getpriority, ctrl_alt_del, sys_setuid, sys_setgid, sys_[set|get]hostname.
include/asm-i386/system.h
Różne funkcje niskopoziomowe, między innymi makrodefinicja switch_to(...) przełączająca kontekst procesów.
include/linux/tasks.h
Definicje limitów na liczbę procesów w systemie.
kernel/time.c
Implementacja różnych funkcji związanych z czasem - sys_time, sys_stime, sys_gettimeofday, sys_settimeofday, sys_adjtimex, itp.
include/linux/tqueue.h
Implementacja obsługi "dolnych połówek" (bottom halfs).

Spis plików z uwzględnieniem podziału na podtematy

Szeregowanie procesów
arch/i386/kernel/entry.S
include/linux/interrupt.h
kernel/itimer.c
init/main.c
arch/i386/kernel/process.c
kernel/sched.c
include/linux/sched.h
kernel/softirq.c
kernel/time.c
include/asm-i386/system.h
include/linux/tqueue.h
kernel/sys.c


Tworzenie i niszczenie procesów
fs/binfmt_aout.c
fs/binfmt_elf.c
fs/binfmt_java.c
fs/binfmt_script.c
include/linux/binfmts.h
fs/exec.c
kernel/exec_domain.c
kernel/exit.c
kernel/fork.c
include/linux/personality.h


Sygnały
kernel/exit.c
include/linux/sched.h
kernel/signal.c
include/linux/signal.h
arch/i386/kernel/signal.c


Wątki
attr.c
cancel.c
clone.S
condvar.c
errno.c
fork.c
internals.h
join.c
lockfile.c
manager.c
mutex.c
pthread.c
pthread.h
pt-machine.h
queue.h
restart.h
semaphore.c
signals.c
sleep.c
specific.c
spinlock.h

Autor: Michał Pakuła