forked from dmoisset/os-implementation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathproject0_extras.txt
32 lines (22 loc) · 1.56 KB
/
project0_extras.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Notas
Proyecto 0
* Lectura.
Leer la hacking guide hasta la página 19 (Project 0).
Leer operadores bitwise para implementar las máscaras que te permiten manejar los eventos KEY_RELEASE_FLAG, etc.
Leer como las funciones pueden ser pasadas como parámetros, o sea que son punteros puros y duros, y ya que estamos, algo que leí pasaron hace poco y está relacionado, https://profiles.google.com/jlenton/posts/VfwexyLrN4g
* Que tocamos del Makefile y porque.
Ver las diferencias de Makefile entre: geekos-0.3.0 original del sitio, geekos-0.3.0 de github y geekos de googlecode.
En particular investigar que son las opciones -fno-builtin, -m32, -nostdlib
* Ejercicio para determinar si el planificador es apropiativo (preemptive).
(2 threads que hacen while(1){x++; x--;} y 1 que hace assert(0 <= x <= 2) )
Mirar el assembler generado antes de deducir cualquier cosa.
* Ejercicio para probar el tamaño del stack haciendo llamadas recursivas.
* Ejercio para reventar el stack (como el kernel está abajo, moverse hacia
la dirección 0).
[ comparar código con y sin optimización ]
* Buscar el thread idle en GeekOS y comparar con la implementación de Linux
(arch/x86/kernel/process-32.c cpu_idle()).
Linux i386 Boot Code HOWTO
* Ver cuanto mezcla el scheduler, generar 2 hilos uno que imprime "a" infinitamente y el otro "b".
Comprobar que en la salida haya interleaving. Notar que esto no invalida el experimento anterior.
Agregar luego de cada impresión una llamada al scheduler para que cambie a otro hilo, típicamente se llama "yield" o algo parecido.