CONCEPTES AVANATS DE SISTEMES OPERATIUS Departament dArquitectura de

  • Slides: 24
Download presentation
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors Gestió De Processos En El

CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors Gestió De Processos En El Linux Kernel 2. 4 (Seminaris de CASO) Autors Albert Aixendri Morales o Francesc Guim Bernat o Albert Riera i Poblet o

Contingut Introducció o El task_struct i les taules de processos o Creació i destrucció

Contingut Introducció o El task_struct i les taules de processos o Creació i destrucció de processos o La política de planificació de processos o Cues de processos o Implementacions internes o 2

Introducció o El kernel de Linux està format per cinc subsistemes: – L’ scheduler

Introducció o 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) 3

Introducció (cont. ) – Virtual File System (VFS): agrupa les característiques de la varietat

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

Introducció (cont. ) 5

Introducció (cont. ) 5

El task_struct i les taules de processos o Linux guarda la informació d’un procés

El task_struct i les taules de processos o Linux guarda la informació d’un procés en l’estructura struct task_struct o Cada task_struct ocupa 1. 680 bytes o El nombre de processos està limitat per la memòria max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 2; 6

El task_struct i les taules de processos (cont. ) Mètodes d’accés al task_struct: o

El task_struct i les taules de processos (cont. ) Mètodes d’accés al task_struct: o una taula de hash per pid_hashfn(x) ((((x) >> 8) ^ (x)) & ((4096 >> 2) - 1)) static inline struct task_struct *find_task_by_pid(int pid) o 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 ; ) 7

El task_struct i les taules de processos (cont. ) o Estats d’un procés: volatile

El task_struct i les taules de processos (cont. ) o Estats d’un procés: volatile long state; stopped */ #define #define /* -1 unrunnable, 0 runnable, >0 TASK_RUNNING TASK_INTERRUPTIBLE TASK_UNINTERRUPTIBLE TASK_ZOMBIE TASK_STOPPED TASK_EXCLUSIVE 0 1 2 4 8 32 8

El task_struct i les taules de processos (cont. ) o Els flags contenen informació

El task_struct i les taules de processos (cont. ) o Els flags contenen informació d’un procés que no té perquè ser independent unsigned long flags; /* per process flags, defined below */ #define PF_ALIGNWARN 0 x 00000001 #define #define #define 0 x 00000002 0 x 00000004 0 x 00000040 0 x 00000100 0 x 00000200 0 x 00000400 0 x 00000800 0 x 00001000 0 x 00100000 PF_STARTING PF_EXITING PF_FORKNOEXEC PF_SUPERPRIV PF_DUMPCORE PF_SIGNALED PF_MEMALLOC PF_VFORK PF_USEDFPU /* /* /* Print alignment warning msgs */ Not implemented yet, only 486*/ being created */ getting shut down */ forked but didn't exec */ used super-user privileges */ dumped core */ killed by a signal */ Allocating memory */ Wake up parent in mm_release */ task used FPU quantum (SMP) */ 9

Creació i destrucció de processos o Tipus de processos: · threads idle · threads

Creació i destrucció de processos o Tipus de processos: · threads idle · threads de sistema · tasks d’usuari o Un procés d’usuari es pot crear amb les crides clone() i fork(). 10

Creació i destrucció de processos (cont. ) o Creació d’un procés: – Buscar memòria

Creació i destrucció de processos (cont. ) o 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ó. 11

Creació i destrucció de processos (cont. ) o Com es pot matar un procés:

Creació i destrucció de processos (cont. ) o 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) 12

Creació i destrucció de processos (cont. ) o Destrucció d’un procés: – Es bloqueja

Creació i destrucció de processos (cont. ) o 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. . . 13

La política de planificació de processos o L’scheduler està dividit en quatre mòduls: –

La política de planificació de processos o 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’arquitectura Codi assembler que manipula els registres i instruccions específics a la CPU. – Les funcions independents de l’arquitectura Realitza la gestió global de la planificació. – La interfície de crides a sistema L’interfície a través de la qual un procés pot accedir al kernel. En particular, el SO per executar l’scheduler. 14

La política de planificació de processos (cont. ) 15

La política de planificació de processos (cont. ) 15

La política de planificació de processos (cont. ) o Polítiques de planificació de procés:

La política de planificació de processos (cont. ) o Polítiques de planificació de procés: – SCHED_FIFO – SCHED_RR – SCHED_OTHER 16

La política de planificació de processos (cont. ) o La funció goodness() retorna el

La política de planificació de processos (cont. ) o La funció goodness() retorna el pes que té cada procés, en funció de la prioritat i de si és real time. o Els processos real time s’executen abans. – si és un procés real time: 1000 – sino: weigth = counter + weigth = weigth + prioritat 17

La política de planificació de processos (cont. ) o En plataformes SMP, un procés

La política de planificació de processos (cont. ) o 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. 18

Cues de processos: Task Queues Són mecanismes del kernel per a executar tasques més

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 o N’hi ha quatre de predefinides: o – – o tq_timer tq_scheduler tq_immediate tq_disk Se’n poden crear de pròpies 19

Cues de processos: Wait Queues o Aquestes cues serveixen per guardar els processos que

Cues de processos: Wait Queues o Aquestes cues serveixen per guardar els processos que no poden ser atesos pel Kernel. o Els processos es queden en estat “sleep” i es desperten quan poder ser atesos. o Podem definir cues pròpies. 20

Cues de processos: Kernel Timer o Es tracta d’un llista de funcions particulars a

Cues de processos: Kernel Timer o Es tracta d’un llista de funcions particulars a executar en un temps especificat en el futur. o 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; }; 21

Implementacions Internes o Linked List. – Es tracta d’una llista doblement encadenada. – Algunes

Implementacions Internes o Linked List. – Es tracta d’una llista doblement encadenada. – Algunes operacions estan definides amb macros o Task Queues 22

Implementacions Internes (cont. ) o Kernel timers 23

Implementacions Internes (cont. ) o Kernel timers 23

Bibliografia o http: //www. moses. uklinux. net/patches/lki-2. html o http: //iamexwiwww. unibe. ch/studenten/schlpbch/l inux.

Bibliografia o http: //www. moses. uklinux. net/patches/lki-2. html o http: //iamexwiwww. unibe. ch/studenten/schlpbch/l inux. Scheduling/Linux. Scheduling. html 24