Llevo meses queriendo hacer este hilo, pero me daba mucha pereza porque quedé muy quemado del cuatrimestre, pero creo que ahora es buen momento. El pasado cuatrimestre matriculé Sistemas Operativos 2, asignatura del Grado de Ingeniería Informática de la Facultad de Informática de Barcelona, que sirve como continuación a Sistemas Operativos, donde te explican las bases que forman SO, así como diversas funcionalidades de la línea de comandos. La diferencia es que mientras que en SO todo se trata a nivel teórico, en SO2 la mayoría trata de implementar las cosas que te van explicando en un sistema operativo muy muy sencillo que te dan como base para trabajar.
El SO que nos daban como base podía: ejecutar el boot, inicializar las regiones de memoria de usuario y sistema, crear un único proceso de usuario, e imprimir unos mensajes en pantalla, antes de quedar en un bucle infinito. Hacia el final debía ser capaz de soportar multiples procesos concurrentes, interrupciones de teclado, diversas funciones típicas de librería estándar de C (que yo no teníamos ninguna), poder tratar con multiples "terminales", creación y borrado de procesos, así como scheduling y optimizaciones de memoria. Por si no se nota es mucho curro.
No voy a ir paso a paso por las cosas que teníamos que implementar porque son muchas y muy técnicas, pero voy a mostrar y comentar algunas de las más interesantes:
Nos quedó una función bastante grandota, a pesar e ser casi todo llamadas a otras funciones. Nos tiramos un buen rato, pero como el profesor nos ayudó con los errores lo pudimos sacar bastante rápido.
Debe ser la locura más grande que he programado, y me sentí muy orgulloso al ver que funcionaba. Por cierto, no teníamos documentación al respecto, así que tuve que tirar del manual del Kernel de Linux, toda una aventura...
Y estas son las cosas que se me ocurren ahora mismo, hay otros memazos como el printf() que tuve que programar de cero porque trabajar con el write() base era un horror, peroquedarán para otra ocasión.
Tremendo 9.83 que nos quedó en el proyecto, lo que nos restó del 10 fue la parte escrita del trabajo, para variar...
Por si alguien tiene curiosidad el SO base parece ser el TFG de un alumno de hace años, que ole sus huevos, porque toda la parte del boot escrita en ensamblador es digna de un psicópata.
Conclusión final:
La asignatura me encantó, aprendí mucho y fue divertido, fuera de los ratos de sufrimiento y desesperación al ver que tras 3 horas de trabajo no consigues ningún resultado útil. Te hace ver de primera mano el nivel de complejidad que tiene un SO, y la verdad les tengo mucho respeto a los ingenieros de sistemas operativos, porque joder, hay que tener mucha cabeza para tratar con esto.
El SO que nos daban como base podía: ejecutar el boot, inicializar las regiones de memoria de usuario y sistema, crear un único proceso de usuario, e imprimir unos mensajes en pantalla, antes de quedar en un bucle infinito. Hacia el final debía ser capaz de soportar multiples procesos concurrentes, interrupciones de teclado, diversas funciones típicas de librería estándar de C (que yo no teníamos ninguna), poder tratar con multiples "terminales", creación y borrado de procesos, así como scheduling y optimizaciones de memoria. Por si no se nota es mucho curro.
No voy a ir paso a paso por las cosas que teníamos que implementar porque son muchas y muy técnicas, pero voy a mostrar y comentar algunas de las más interesantes:
- Debugar las llamadas a sistema usando la pila y registros.
- fork()
Nos quedó una función bastante grandota, a pesar e ser casi todo llamadas a otras funciones. Nos tiramos un buen rato, pero como el profesor nos ayudó con los errores lo pudimos sacar bastante rápido.
- Gestión de pantallas
- Copy on Write
Debe ser la locura más grande que he programado, y me sentí muy orgulloso al ver que funcionaba. Por cierto, no teníamos documentación al respecto, así que tuve que tirar del manual del Kernel de Linux, toda una aventura...
Y estas son las cosas que se me ocurren ahora mismo, hay otros memazos como el printf() que tuve que programar de cero porque trabajar con el write() base era un horror, peroquedarán para otra ocasión.
Tremendo 9.83 que nos quedó en el proyecto, lo que nos restó del 10 fue la parte escrita del trabajo, para variar...
Por si alguien tiene curiosidad el SO base parece ser el TFG de un alumno de hace años, que ole sus huevos, porque toda la parte del boot escrita en ensamblador es digna de un psicópata.
Conclusión final:
La asignatura me encantó, aprendí mucho y fue divertido, fuera de los ratos de sufrimiento y desesperación al ver que tras 3 horas de trabajo no consigues ningún resultado útil. Te hace ver de primera mano el nivel de complejidad que tiene un SO, y la verdad les tengo mucho respeto a los ingenieros de sistemas operativos, porque joder, hay que tener mucha cabeza para tratar con esto.
Salu2
Última edición por Nani Kore el 31 Ago 2021 03:23, editado 1 vez en total.