gestió de processos en el linux kernel 2.4
DESCRIPTION
Albert Aixendri Morales Francesc Guim Bernat Albert Riera i Poblet. Gestió De Processos En El Linux Kernel 2.4. Contingut. Introducció El task_struct i les taules de processos Creació i destrucció de processos La política de planificació de processos Cues de processos - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/1.jpg)
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors
(Seminaris de CASO)
Autors
Gestió De Processos En El Linux Kernel 2.4
Albert Aixendri Morales
Francesc Guim Bernat
Albert Riera i Poblet
![Page 2: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/2.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
2
Contingut
Introducció El task_struct i les taules de processos Creació i destrucció de processos La política de planificació de processos Cues de processos Implementacions internes
![Page 3: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/3.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
3
Introducció El kernel de Linux està format per cinc subsistemes:
– L’ scheduler de processos (SCHED): responsable de controlar l’accés dels processos a la CPU.
– Memory Manager (MM): • Permet que els processos accedeixin i comparteixin de forma segura la
memòria principal.
• Permet que els processos ocupin més espai lògic que el físic disponible (Memòria Virtual)
![Page 4: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/4.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
4
Introducció (cont.)
– Virtual File System (VFS): agrupa les característiques de la varietat de dispositius físics permetent treballar amb dispositius lògics.
– Network interface (NI): facilita mitjans per accedir als diferents protocols i recursos de la xarxa.
– Comunicació entre processos (IPC): ofereix mecanismes de comunicació procés-a-procés dins d’un mateix sistema.
![Page 5: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/5.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
5
Introducció (cont.)
![Page 6: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/6.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
6
El task_struct i les taules de processos
Linux guarda la informació d’un procés en l’estructura struct task_struct
Cada task_struct ocupa 1.680 bytes
El nombre de processos està limitat per la memòria max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 2;
![Page 7: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/7.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
7
El task_struct i les taules de processos (cont.)
Mètodes d’accés al task_struct: una taula de hash per pid.
pid_hashfn(x) ((((x) >> 8) ^ (x)) & ((4096 >> 2) - 1))
static inline struct task_struct *find_task_by_pid(int pid)
una llista circular doblement encadenada per poder fer un recorregut de tots els processos:#define for_each_task(p) \
for (p = &init_task ; (p = p->next_task) != &init_task ; )
![Page 8: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/8.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
8
El task_struct i les taules de processos (cont.)
Estats d’un procés:volatile long state; /* -1 unrunnable, 0 runnable, >0
stopped */
#define TASK_RUNNING 0#define TASK_INTERRUPTIBLE 1#define TASK_UNINTERRUPTIBLE 2#define TASK_ZOMBIE 4#define TASK_STOPPED 8#define TASK_EXCLUSIVE 32
![Page 9: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/9.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
9
El task_struct i les taules de processos (cont.)
Els flags contenen informació d’un procés que no té perquè ser independentunsigned long flags; /* per process flags, defined below */
#define PF_ALIGNWARN 0x00000001 /* Print alignment warning msgs */ /* Not implemented yet, only 486*/#define PF_STARTING 0x00000002 /* being created */#define PF_EXITING 0x00000004 /* getting shut down */#define PF_FORKNOEXEC 0x00000040 /* forked but didn't exec */#define PF_SUPERPRIV 0x00000100 /* used super-user privileges */#define PF_DUMPCORE 0x00000200 /* dumped core */#define PF_SIGNALED 0x00000400 /* killed by a signal */#define PF_MEMALLOC 0x00000800 /* Allocating memory */#define PF_VFORK 0x00001000 /* Wake up parent in mm_release */#define PF_USEDFPU 0x00100000 /* task used FPU quantum (SMP) */
![Page 10: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/10.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
10
Creació i destrucció de processos
Tipus de processos: threads idle threads de sistema tasks d’usuari
Un procés d’usuari es pot crear amb les crides clone() i fork().
![Page 11: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/11.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
11
Creació i destrucció de processos (cont.) Creació d’un procés:
– Buscar memòria per alocatar el procés– Es copia el task_struct del pare al fill– Comprovacions més importants:
• màxim processos d’usuari
– Es modifiquen els paràmetres no hereditaris del nou procés.– Assignació del nou pid.– S’introdueix el procés a pidhash[ ]i a la llista.– Estat a TASK_RUNNING.– Introducció a la cua d’execució.
![Page 12: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/12.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
12
Creació i destrucció de processos (cont.)
Com es pot matar un procés:– Amb la crida exit(). – Enviant un signal que mati el procés.– Que el procés produeixi una excepció.– Amb la crida bdflush(). (antigues versions del kernel)
![Page 13: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/13.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
13
Creació i destrucció de processos (cont.)
Destrucció d’un procés:– Es bloqueja el procés– Estat a TASK_ZOMBIE.– S’envia el signal rebut a tots els fills (sempre que no sigui 0)– S’avisa al pare amb un signal SIGCHLD.– S’alliberen els recursos, es tanquen els fitxers...
![Page 14: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/14.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
14
La política de planificació de processos L’scheduler està dividit en quatre mòduls:
– La política de planificacióEscull el següent procés a executar en funció de la política.
– Les funcions específiques de l’arquitecturaCodi assembler que manipula els registres i instruccions específics a la CPU.
– Les funcions independents de l’arquitecturaRealitza la gestió global de la planificació.
– La interfície de crides a sistemaL’interfície a través de la qual un procés pot accedir al kernel. En particular, el
SO per executar l’scheduler.
![Page 15: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/15.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
15
La política de planificació de processos (cont.)
![Page 16: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/16.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
16
La política de planificació de processos (cont.)
Polítiques de planificació de procés:– SCHED_FIFO– SCHED_RR– SCHED_OTHER
![Page 17: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/17.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
17
La política de planificació de processos (cont.)
La funció goodness() retorna el pes que té cada procés, en funció de la prioritat i de si és real time.
Els processos real time s’executen abans.
– si és un procés real time: weigth = counter + 1000– sino: weigth = weigth + prioritat
![Page 18: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/18.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
18
La política de planificació de processos (cont.)
En plataformes SMP, un procés és penalitzat si s’ha de passar a executar a una altra CPU que l’anterior on s’estava executant.
![Page 19: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/19.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
19
Cues de processos: Task Queues Són mecanismes del kernel per a executar tasques més
tard. En el kernel 1.x s’anomenaven Bottom Halves i eren més limitades
N’hi ha quatre de predefinides:– tq_timer– tq_scheduler– tq_immediate– tq_disk
Se’n poden crear de pròpies
![Page 20: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/20.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
20
Cues de processos: Wait Queues
Aquestes cues serveixen per guardar els processos que no poden ser atesos pel Kernel.
Els processos es queden en estat “sleep” i es desperten quan poder ser atesos.
Podem definir cues pròpies.
![Page 21: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/21.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
21
Cues de processos: Kernel Timer
Es tracta d’un llista de funcions particulars a executar en un temps especificat en el futur.
L’estructura de cada node de la llista es:struct timer_list {
struct list_head list;
unsigned long expires;
unsigned long data;
void (*function)(unsigned long);
volatile int running;
};
![Page 22: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/22.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
22
Implementacions Internes
Linked List.– Es tracta d’una llista doblement encadenada.– Algunes operacions estan definides amb macros
Task Queues
![Page 23: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/23.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
23
Implementacions Internes (cont.) Kernel timers
![Page 24: Gestió De Processos En El Linux Kernel 2.4](https://reader035.vdocuments.co/reader035/viewer/2022062408/568135ef550346895d9d6116/html5/thumbnails/24.jpg)
Seminaris de CONCEPTES AVANÇATS DE SISTEMES OPERATIUS
Departament. d’Arquitectura de Computadors - UPC
24
Bibliografia
http://www.moses.uklinux.net/patches/lki-2.html
http://iamexwiwww.unibe.ch/studenten/schlpbch/linuxScheduling/LinuxScheduling.html