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
- 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).
- 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