scheduling Flashcards

(128 cards)

1
Q

¿Qué constituye el contexto de un proceso en ejecución en xv6?

A

El espacio de direcciones de memoria, los registros del procesador y las estructuras del Kernel.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Qué sucede cuando el sistema operativo interrumpe un proceso en xv6?

A

Se produce un cambio de contexto, interrumpiendo momentáneamente un proceso y restaurando otro suspendido.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Qué es el trampoline en xv6?

A

Es un código assembler para transicionar de modo usuario a modo kernel, ubicado en una única página cargada tanto en el espacio de usuario como en el de kernel.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué diferencia al manejo de memoria en xv6 respecto a Linux anterior a la versión 4.15?

A

En xv6 el kernel no está completo en el address space del proceso, a diferencia de Linux viejo; Linux moderno usa KPTI, una técnica similar a xv6.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Qué es el trapframe en xv6?

A

Es un espacio donde el kernel guarda una copia del estado de todos los registros del procesador antes de cambiar a modo kernel.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Para qué sirve el trapframe?

A

Para guardar los registros antes de pasar a kernel mode y restaurarlos al volver a user mode.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

¿Cuándo inicia un cambio de contexto en xv6?

A

Cuando se produce una transición a Kernel-Space, por interrupciones, excepciones o system calls.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

¿Puede un proceso en user-space cambiar directamente de proceso en xv6?

A

No, el cambio de contexto solo ocurre en kernel-space.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

¿Qué sucede si se decide realizar un cambio de contexto en xv6?

A

Se invoca al scheduler, que elige el próximo proceso a ejecutar y llama a switch().

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

¿Qué hace la función switch() en xv6?

A

Guarda el estado actual (foto de kernel-space y user-space) y restaura el estado del proceso candidato.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿Qué pasa después de ejecutar switch()?

A

Se regresa al User-Space del nuevo proceso elegido.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

¿Cómo se genera la transición de User a Kernel en xv6?

A

Se genera una interrupción por software mediante ecall, provocando que el procesador salte al trampoline y cambie a Kernel Mode.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

¿Cuál es el primer paso que realiza el código del trampoline en xv6?

A

Guardar todos los registros del procesador en el trapframe.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Qué hace el trampoline luego de guardar los registros?

A

Cambia el registro satp, modificando la tabla de páginas y cambiando efectivamente el address space.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Qué registro se actualiza para apuntar al kstack del proceso actual?

A

El registro sp (stack pointer).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

¿Qué función llama el trampoline luego de configurar sp y satp?

A

Llama a usertrap().

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

¿Qué función se invoca para retornar de kernel a user en xv6?

A

Se invoca userret() en el trampoline.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

¿Qué hace userret()?

A

Cambia nuevamente satp, restaura todos los registros guardados en el trapframe, y usa sret para volver al punto original en user-space.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

¿Qué instrucción se ejecuta para retornar al modo usuario?

A

Se ejecuta la instrucción sret.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

¿Cuál es la diferencia entre la transición de User a Kernel y el cambio de contexto en xv6?

A

La transición de User a Kernel es cuando un proceso pasa de ejecutarse en modo usuario a modo kernel, sin cambiar de proceso. El cambio de contexto implica suspender un proceso y restaurar otro, cambiando todo el contexto del procesador.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

¿Puede haber una transición de User a Kernel sin que haya un cambio de contexto?

A

Sí, puede haber una transición de User a Kernel sin que haya un cambio de contexto, por ejemplo, cuando el kernel atiende una system call y luego el mismo proceso continúa ejecutándose.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

¿Puede haber un cambio de contexto sin transición de User a Kernel?

A

No, porque el cambio de contexto siempre lo orquesta el Kernel. Primero hay una transición de User a Kernel (por interrupción, excepción o system call) y luego, si es necesario, se hace el cambio de contexto.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

¿Qué es la multiprogramación?

A

Es la capacidad de ejecutar más de un proceso a la vez intercalando su ejecución para mejorar el uso de la CPU.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

¿Qué beneficios trajo la multiprogramación?

A

Mejoró la eficiencia del uso de la CPU, especialmente cuando las computadoras eran muy costosas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
¿Qué es el time sharing?
Es compartir de forma concurrente recursos computacionales entre múltiples usuarios mediante multiprogramación e interrupciones de reloj.
26
¿Qué permitió el time sharing en los sistemas?
Permitió acotar el tiempo de respuesta y limitar el uso de la CPU por proceso.
27
¿Quién coordina la ejecución de procesos en multiprogramación?
El planificador o scheduler del sistema operativo.
28
¿Qué es el time slice o time quantum?
Es el período de tiempo que el kernel asigna a un proceso para ejecutarse en la CPU.
29
¿Qué es el workload de un proceso?
Es la carga de trabajo que un proceso representa en el sistema.
30
¿Qué tipos de sistemas pueden clasificarse según el scheduler?
Sistemas interactivos y sistemas por lotes (batch).
31
¿Qué necesitan los sistemas interactivos?
Tiempos de respuesta bajos. Ejemplo: Round Robin o un procesador de texto
32
¿Qué optimizan los sistemas batch?
El tiempo total de ejecución, no la respuesta inmediata. Ejemplo: FIFO, SJF
33
¿Qué diferencia hay entre planificación preemptiva y no preemptiva?
- Preemptivo: el sistema puede interrumpir un proceso en ejecución para darle tiempo a otro. Esto permite más equidad y respuesta rápida (como en RR o STCF). - No Preemptivo: una vez que un proceso empieza, no se interrumpe hasta que termina (como FIFO y SJF).
34
¿Qué suposiciones simplificadas se hacen para estudiar scheduling?
Que todos los procesos duran lo mismo, llegan al mismo tiempo, no hacen I/O, y se conoce su duración.
35
¿Qué métrica se utiliza inicialmente para comparar políticas de scheduling?
El turnaround time.
36
¿Cómo se calcula el turnaround time?
Es el tiempo de finalización menos el tiempo de arribo al sistema.
37
¿Qué políticas de scheduling existen para sistemas batch?
FIFO, SJF, STCF.
38
¿Qué política de scheduling se usa en sistemas interactivos?
Round Robin.
39
¿Qué significa FIFO en scheduling?
First In, First Out: los procesos se ejecutan en orden de llegada.
40
¿Cuáles son las ventajas de FIFO?
Es simple y fácil de implementar.
41
¿Qué problema puede presentar FIFO?
El convoy effect, donde un proceso largo retrasa a los demás.
42
¿Cómo mejora SJF respecto a FIFO?
Ejecuta primero los procesos más cortos, mejorando el turnaround time.
43
¿Qué desventaja tiene SJF cuando los procesos no llegan al mismo tiempo?
Puede aumentar el turnaround time porque no puede anticipar nuevas llegadas.
44
¿Qué introduce STCF respecto a SJF?
Permite interrumpir procesos para ejecutar el que menos tiempo de ejecución restante tiene.
45
¿Qué tipo de política es STCF?
Es preemptiva.
46
¿Qué nueva métrica aparece con el time sharing?
El tiempo de respuesta o response time.
47
¿Qué mide el response time?
El tiempo desde que un proceso llega hasta que empieza a ejecutarse.
48
¿Qué algoritmo implementa time-slicing?
Round Robin.
49
¿Cuál es la idea del Round Robin?
La idea del algoritmo es ejecutar un proceso por un período determinado de tiempo (time slice) y transcurrido el período se pasa a otro proceso, y así sucesivamente cambiando de proceso en la cola de ejecución.
50
¿Qué es importante al elegir un time slice en RR?
Debe ser lo suficientemente grande para amortizar el cambio de contexto sin afectar la respuesta.
51
¿Qué pasa si el time slice es muy chico?
Se gasta mucho tiempo en cambios de contexto.
52
¿Qué pasa si el time slice es muy grande?
Se pierde capacidad de respuesta.
53
¿Qué dos cosas puede estar haciendo un proceso?
- Usando el CPU - Esperando por un dispositivo de I/O
54
¿Qué se busca como objetivo cuando se considera el I/O en scheduling?
Queremos que siempre haya alguien usando el CPU. Si no, estamos desperdiciando hardware!
55
¿Qué estrategia mejora el uso de CPU frente a I/O?
Superponer I/O y ejecución de otros procesos.
56
¿Qué caracteriza a un proceso CPU intensive?
Usa mucho el CPU y compite por el tiempo de CPU.
57
¿Qué caracteriza a un proceso I/O intensive?
Usan mucho la entrada y salida, y el CPU se dedica principalmente a gestionar estos procesos.
58
¿Qué sucede si muchos procesos son CPU intensive?
Agregar más procesos no mejora la utilización de CPU.
59
¿Qué sucede si hay muchos procesos I/O intensive?
Se puede mejorar la utilización de CPU ejecutándolos simultáneamente.
60
¿Qué es GPGPU?
El uso de GPUs para cálculos generales más allá de gráficos.
61
¿Qué ventaja tiene usar un GPU en procesos CPU intensive?
Libera al CPU, transformando el proceso en I/O intensive.
62
¿Cómo se puede maximizar la utilización de CPU con procesos I/O intensive?
Ejecutando varios procesos simultáneamente para cubrir los tiempos de espera de I/O.
63
¿Por qué el I/O bloquea más que las instrucciones?
Porque las operaciones de E/S son mucho más lentas que las instrucciones de CPU.
64
¿Qué debería proporcionar un marco de trabajo básico que permita pensar en políticas de planificaciones?
Debería proporcionar suposiciones claras sobre el sistema, métricas para evaluar el desempeño y un conjunto de objetivos de planificación.
65
¿Cuáles deberían ser las suposiciones a tener en cuenta?
Las suposiciones deberían incluir aspectos como la carga de trabajo típica, la necesidad de tiempos de respuesta rápidos, la duración de las tareas y la disponibilidad de recursos.
66
¿Cuáles son las métricas importantes?
Las métricas importantes son el turnaround time (tiempo de retorno) y el response time (tiempo de respuesta).
67
¿Qué intenta optimizar MLFQ?
- Intenta optimizar el turnaround time, lo cual se logra ejecutando primero los trabajos más cortos. - Intenta que el sistema sea responsive a los usuarios interactivos, minimizando el response time.
68
¿Qué problema tienen algoritmos como SJF y STCF?
Requieren conocer de antemano cuánto va a durar un trabajo, algo que generalmente no se sabe.
69
¿Qué problema tiene Round Robin respecto al turnaround time?
Round Robin mejora el response time pero empeora el turnaround time.
70
¿Cómo se hace para que un planificador logre ambos objetivos sin conocer la duración de los procesos?
Observando el comportamiento de los procesos y ajustando dinámicamente sus prioridades.
71
¿Qué técnica utiliza MLFQ para asignar prioridades?
MLFQ varía la prioridad de una tarea basándose en su comportamiento observado durante su ejecución.
72
¿Qué sucede si una tarea usa intensivamente la CPU durante mucho tiempo?
Su prioridad disminuye, moviéndose a colas de menor prioridad.
73
¿Qué sucede si una tarea es interactiva y no usa mucho la CPU?
Su prioridad se mantiene alta.
74
¿Qué pasa si hay varias tareas con la misma prioridad?
Se planifican entre ellas usando Round Robin.
75
¿Cuál es el problema del primer enfoque de MLFQ?
Puede ocurrir starvation, donde las tareas de larga duración no se ejecutan nunca.
76
¿Cómo podría un usuario inteligente hackear el planificador?
Realizando operaciones de entrada/salida antes de terminar su time slice para mantener alta prioridad.
77
¿Qué solución se propone para evitar starvation en MLFQ?
Aplicar boosts periódicos de prioridad a todas las tareas.
78
¿Qué efecto tiene el boost de prioridad periódico?
Evita starvation y permite que las tareas de larga duración eventualmente se ejecuten.
79
¿Qué problema plantea el valor de S?
Si S es muy grande, puede haber starvation; si es muy chico, afecta a tareas interactivas.
80
¿Cómo se previene que los usuarios ventajeen el sistema?
Llevando un seguimiento detallado del uso total de CPU por tarea en cada nivel de prioridad.
81
¿Cómo se reescriben las reglas 4a y 4b con el seguimiento de CPU?
Una vez que una tarea consume su total de time slice en un nivel, su prioridad baja, independientemente de cuántas veces haya cedido la CPU.
82
¿Por qué se llama Multi-Level Feedback Queue?
Porque tiene múltiples colas y utiliza retroalimentación basada en el comportamiento de las tareas para ajustar sus prioridades.
83
¿Cómo funciona la historia de un proceso en MLFQ?
El planificador observa cómo el proceso se comporta a lo largo del tiempo y ajusta su prioridad en base a ese historial.
84
¿Cuál es la Regla 1 de MLFQ?
Si la prioridad de A es mayor que la de B, A se ejecuta y B no.
85
¿Cuál es la Regla 2 de MLFQ?
Si la prioridad de A es igual a la de B, A y B se ejecutan en Round Robin.
86
¿Cuál es la Regla 3 de MLFQ?
Cuando una tarea llega al sistema se la coloca en la cola de más alta prioridad.
87
¿Cuál es la Regla 4 de MLFQ?
Una vez que una tarea consume su total de time slice en un nivel, baja de prioridad.
88
¿Cuál es la Regla 5 de MLFQ?
Después de un cierto periodo de tiempo S, todas las tareas se mueven a la cola de más alta prioridad.
89
¿Qué busca ofrecer el CFS a cada proceso?
Una porción justa del CPU, basada en el concepto de equidad.
90
¿Qué problema de optimización resuelve el CFS?
Reducir la varianza del vruntime de todos los procesos.
91
¿Cómo selecciona el scheduler el siguiente proceso a ejecutar?
Elige el proceso con el menor vruntime consumido.
92
¿Qué representa el vruntime de un proceso?
Representa la cantidad de tiempo que el proceso ha estado ejecutándose en el CPU.
93
¿Qué pasa con el vruntime cuando un proceso tiene mayor prioridad?
Su vruntime aumenta más lentamente.
94
¿Cómo es el cálculo del vruntime?
vruntime += la cantidad de tiempo que el proceso ha estado ejecutando desde la última actualización / el peso asociado a la prioridad del proceso.
95
¿Qué es el runqueue?
Una runqueue (cola de ejecución) es una estructura de datos utilizada por el planificador (scheduler) para gestionar y hacer un seguimiento de todos los procesos (tareas) que están listos para ejecutarse en un núcleo de CPU.
96
¿Qué contiene cada núcleo del CPU?
Cada núcleo de CPU tiene su propia runqueue, que contiene las tareas que están listas para ejecutar pero que no están ejecutándose en ese momento.
97
¿Cuál es la priority-queue?
Es darle prioridad al proceso con menor vruntime de una runqueue.
98
¿Qué estructura de datos usa CFS para la runqueue?
Un árbol rojo-negro (Red-Black Tree).
99
¿Qué permite hacer el árbol rojo-negro en la runqueue?
Seleccionar, insertar y eliminar procesos de manera eficiente en O(log n).
100
¿Qué pasa en la selección del proceso?
El scheduler siempre intenta ejecutar el proceso con el menor vruntime. Esto asegura que todos los procesos tengan la oportunidad de ejecutarse de manera justa, proporcionando un tiempo de ejecución proporcional a su peso.
101
¿Qué pasa cuando un proceso se bloquea (sleep)?
Cuando un proceso se bloquea se elimina del árbol rojo-negro.
102
¿Qué ocurre al despertar un proceso dormido?
Cuando se despierta, se vuelve a insertar en el árbol con su vruntime ajustado si es necesario, de manera que no sea penalizado por el tiempo que estuvo bloqueado.
103
¿Qué pasa con el vruntime de un proceso que se bloquea (sleep)?
Si un proceso duerme, su vruntime permanecerá sin cambios.
104
¿Cómo afecta el peso en la selección del próximo proceso?
Un proceso con menor vruntime (y por ende peso más alto) será seleccionado antes.
105
¿Qué ocurre con el vruntime de un proceso importante a lo largo del tiempo?
Aumenta más lentamente, manteniéndose más tiempo a la izquierda del árbol.
106
¿Cómo el CFS equilibra la carga de trabajo entre múltiples CPUs?
Esto se logra migrando procesos de una CPU a otra si se detecta que una CPU está sobrecargada mientras otra está inactiva o menos cargada.
107
¿Qué es el valor nice?
El valor nice es una característica del sistema operativo Linux que se usa para ajustar la prioridad de los procesos en cuanto a su planificación para el uso del CPU.
108
¿Qué permite nice hacer a los usuarios?
El valor nice permite a los usuarios manipular la prioridad de un proceso de manera que los procesos con una mayor prioridad obtengan más tiempo de CPU comparado con los que tienen una menor prioridad.
109
¿Cómo se ajusta la prioridad en CFS?
Mediante el peso asignado basado en el valor nice del proceso.
110
¿Qué valores puede tomar el valor nice en Linux?
Entre -20 (mayor prioridad) y 19 (menor prioridad).
111
¿Cómo afecta un valor nice bajo a un proceso?
Le da mayor prioridad y más tiempo de CPU.
112
¿Cómo se modifica el valor nice de un proceso en Linux?
Con las herramientas nice y renice desde la línea de comandos.
113
¿Qué representa el peso (weight) en CFS?
Determina qué tan rápido acumula vruntime un proceso.
114
¿Qué significa sched_latency?
Es el período de tiempo durante el cual el scheduler intenta que todos los procesos ejecuten al menos una vez.
115
¿Cómo se calcula el timeslice de un proceso en CFS?
Proporcional al peso del proceso dividido por el total de pesos, multiplicado por sched_latency.
116
¿Qué pasa si hay muchos procesos activos respecto al sched_latency?
El sched_latency puede incrementarse para reducir cambios de contexto excesivos.
117
¿Qué es min_granularity?
Es el mínimo tiempo que un proceso debe ejecutarse antes de ser desalojado del CPU.
118
¿Qué pasa si el timeslice calculado es muy pequeño?
Se usa min_granularity para evitar interrupciones demasiado rápidas.
119
¿Para qué se usa la normalización de tiempos?
Para garantizar que los cálculos se mantengan dentro de límites manejables y evitar el desbordamiento de enteros, los tiempos de ejecución pueden ser normalizados periódicamente. Esto implica ajustar los vruntime de todos los procesos, reduciendo todos los valores en función del proceso con el menor vruntime. Esto evita que haya overflows de las variables.
120
¿Qué pasa si dos procesos tienen igual prioridad?
Comparten el sched_latency equitativamente.
121
¿Cuál es el esquema del funcionamiento del CFS?
1. Inicialización 2. Cálculo de pesos 3. Gestión de vruntime 4. Uso del Árbol rojo y negro 5. Selección de Procesos 6. Preemptividad y Voluntariedad 7. Ajuste Dinámico 8. Balanceo de Carga entre CPUs
122
¿Qué es Group Scheduling?
Los procesos se colocan en diferentes grupos, y el planificador es primero justo entre estos grupos y luego justo entre todos los procesos dentro del grupo.
123
¿Qué pasos sigue el planificador en group scheduling?
Primero distribuye el tiempo de CPU justamente entre los grupos y luego entre los procesos dentro de cada grupo.
124
¿Qué permite lograr el group scheduling en relación a los usuarios?
Permite asignar partes iguales del tiempo de CPU disponible a cada usuario.
125
¿Qué pasa si un usuario ejecuta más procesos en group scheduling?
Cada proceso recibe un menor share de CPU, pero el tiempo total asignado al usuario no se ve afectado.
126
¿Qué son los cgroups?
Son grupos de control ofrecidos por el kernel para crear colecciones arbitrarias de tareas.
127
¿Qué permiten los cgroups además de agrupar tareas?
Permiten organizar los grupos en múltiples jerarquías.
128
¿Cómo se agrupan los threads en el contexto de group scheduling?
Se agrupan en un grupo de scheduling que representa al proceso.