CONCEPTES AVANATS DE SISTEMES OPERATIUS Departament dArquitectura de
- Slides: 24
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ó 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 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 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
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 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 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ó 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 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 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: – – 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 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ó 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. ) 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 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 é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 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 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 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 operacions estan definides amb macros o Task Queues 22
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. Scheduling/Linux. Scheduling. html 24