Skip to content

Commit

Permalink
Arregladas imagenes
Browse files Browse the repository at this point in the history
  • Loading branch information
yabirgb committed Nov 17, 2017
1 parent 3dfefbe commit 71acbab
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 18 deletions.
17 changes: 7 additions & 10 deletions Tema_2_Procesos_e_Hilos.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ Contiene información de bajo nivel sobre el proceso/hilo y permite acceder a la
## ESTADO DE LOS PROCESOS

El campo ``state`` del Descriptor de proceso almacena el estado de un proceso en Linux. un proceso puede encontrarse en los siguientes estados:

+ ``TASK_RUNNING``: el proceso es ejecutable o está en ejecución.
+ ``TASK_INTERRUPTIBLE``: el proceso está bloqueado (dormido) de forma que puede ser interrumpido por una señal. Ejemplo: Espera de entrada de teclado.
+ ``TASK_UNINTERRUPTIBLE``: proceso bloqueado no despertable por otra señal. Ejemplo: Espera de lectura de disco que no se produce.
Expand All @@ -134,9 +135,7 @@ El campo ``exit_state`` almacena los estados de los procesos que han finalizado:
+ ``EXIT_DEAD``: va a ser eliminado, su padre ha invocado wait().
+ ``EXIT_ZOMBIE``: el padre aún no ha realizado wait().

<p align="center">
<img src="imagenes/Captura estado procesos.png">
</p>
![](imagenes/Captura estado procesos.png)

Todos los procesos menos uno, han sido creados a partir de otro. Al arrancar la máquina una de las labores es crear el primer proceso a partir del cual se crearán el resto. El primer proceso al arrancar es el `init()`

Expand Down Expand Up @@ -201,7 +200,7 @@ clone(SIGCHLD,0)

+ El prototipo de la llamada al sistema clone() es **clone(flags, stack, ptid, ctid, regs).

**FLAGS:
#### FLAGS:

+ CLONE_FILES.- hilo padre e hijo comparten los mismos archivos abiertos.
+ CLONE_FS.- padre e hijo comparten la información del sistema de archivos.
Expand All @@ -211,7 +210,7 @@ clone(SIGCHLD,0)

Si preguntamos a la hebra por su identificador nos dará el identificador del grupo, si queremos el TID, necesitamos usar una macro SYSCALL, pues no tenemos una llamada en la librería para conseguir esa información.

**¿CÓMO FUNCIONA clone()?
#### ¿CÓMO FUNCIONA clone()?

1. dup_task_struct: copia el descriptor del proceso actual (task_struct, pila y thread_info).
2. alloc_pid: le asigna un nuevo PID
Expand All @@ -220,14 +219,14 @@ Si preguntamos a la hebra por su identificador nos dará el identificador del gr
5. Copiamos o compartimos componentes según los flags.
6. Asignamos ID, relaciones de parentesco, etc.

**Observaciones:
#### Observaciones:

+ No deben aparecer juntos: CLONE_NEWNS y CLONE_FS.
+ Deben aparecer siempre juntos: CLONE_SIGHAND con CLONE_THREAD o CLONE_VM.
+ Cuando usamos CLONE_LOQUESEA , la estructura loquesea_struct no se copia, se comparte.
+ Existe un contador de referencias que lleva el conteo de número de hilos que comparte un proceso. Si el contador llega a 0, no habrá más estructuras compartidas, por lo tanto, el proceso se libera.

**Actividad Propuesta:
#### Actividad Propuesta:
Sabiendo esto:
CLONE_VM|CLONE_FILES|CLONE_FS|CLONE_THREAD|CLONE_SIGHAND
¿Qué estructuras comparten el padre y el hijo?
Expand Down Expand Up @@ -278,9 +277,7 @@ struct sched_entity {

Tabla que muestra las relaciones entre las entidades (recordar estos conceptos de B. de Datos de FS):

<p align="center">
<img src="imagenes/relaciones_entre_estructuras.png" width="500" height="432">
</p>
![](imagenes/relaciones_entre_estructuras.png)

### Política de planificación

Expand Down
24 changes: 16 additions & 8 deletions resumen-dip72-81.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,17 +43,25 @@ Todos los procesadores actuales cumplen la especificación ***Advanced Configura
* El **subsitema CPUfreq** es el responsable de ajustar explícitamente la frecuencia del procesador.
* Es una estructura modularizada que separa políticas (gobernadores) de mecanismos (*drivers* específicos de CPUs).

<p align="center">
<img src="imagenes/diapo80.png">
</p>
![](imagenes/diapo80.png)

#### Gobernadores
Permiten gestionar la potenciar en base a unos criterios. Es decir, según el gobernador que estemos utilizando, la gestión se hará de una determinada manera. Son los siguientes:
* **Perfomance** - mantiene la CPU a la máxima frecuencia posible dentro de un rango especificado por el usuario
* **Powersave** - intentan ahorrar energía, manteniendo la CPU a la menor frecuencia posible dentro de un rango
* **Userspace** -exporta la información disponible de la frecuencia a nivel usuario (sysfs) permitiendo su control al mismo. Permite a cualquier espacio de programa de usuario ajustar la frecuencia del procesador. Es el que más libertad dar para ajustar la velocidad del procesador. Más información en https://www.ibm.com/support/knowledgecenter/en/linuxonibm/liaai.cpufreq/TheUserspaceGovernor.htm
* **On-demand** - ajusta la frecuencia dependiendo del uso actual de la CPU.
* **Conservative** - funciona al igual que el *on-demand*, pero los ajustes son menos agresivos.

* **Perfomance** - mantiene la CPU a la máxima frecuencia posible
dentro de un rango especificado por el usuario
* **Powersave** - intentan ahorrar energía, manteniendo la CPU a la
menor frecuencia posible dentro de un rango
* **Userspace** -exporta la información disponible de la frecuencia a
nivel usuario (sysfs) permitiendo su control al mismo. Permite a
cualquier espacio de programa de usuario ajustar la frecuencia del
procesador. Es el que más libertad dar para ajustar la velocidad del
procesador. Más información en
https://www.ibm.com/support/knowledgecenter/en/linuxonibm/liaai.cpufreq/TheUserspaceGovernor.htm
* **On-demand** - ajusta la frecuencia dependiendo del uso actual de
la CPU.
* **Conservative** - funciona al igual que el *on-demand*, pero los
ajustes son menos agresivos.

Existen una serie de herramientas para la gestión de energía y potencia del sistema, como cpufreqtils, cpupower, powerTop y TLP.

Expand Down

0 comments on commit 71acbab

Please sign in to comment.