1 / 24

Gestió De Processos En El Linux Kernel 2.4

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

Télécharger la présentation

Gestió De Processos En El Linux Kernel 2.4

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Albert Aixendri Morales Francesc Guim Bernat Albert Riera i Poblet Gestió De Processos En El Linux Kernel 2.4

  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

  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)

  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.

  5. Introducció (cont.)

  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;

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

  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

  9. El task_struct i les taules de processos (cont.) • 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 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) */

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

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

  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)

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

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

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

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

  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

  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.

  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

  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.

  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; };

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

  23. Implementacions Internes (cont.) • Kernel timers

  24. Bibliografia • http://www.moses.uklinux.net/patches/lki-2.html • http://iamexwiwww.unibe.ch/studenten/schlpbch/linuxScheduling/LinuxScheduling.html

More Related