Gestió De Processos En El Linux Kernel 2.4

24
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

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 Presentation

Transcript of Gestió De Processos En El Linux Kernel 2.4

Page 1: Gestió De Processos En El Linux Kernel 2.4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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