Skip to content

Repository files navigation

Sistemas Operativos — material de teoría y prácticas

Material para la asignatura Sistemas Operativos (240304) del Grado en Ingeniería Informática de la Universidad Pública de Navarra. 2º curso, semestre de otoño. 6 ECTS: 3 de teoría y 3 de prácticas.

Cómo obtener el material

git clone https://github.com/asiermarzo/ssoo.git

O descargar como ZIP desde la página del repositorio en GitHub (botón Code → Download ZIP) y descomprimirlo con el gestor de archivos o con el comando unzip ssoo-main.zip.

Entornos de ejecución y compilación

Las prácticas se realizan sobre Linux. Los distintos entornos disponibles (ordenadores de la UPNA, VDI, máquinas virtuales, GitHub Codespaces, o el ordenador propio con Linux, WSL2 o Docker) y cómo compilar el material están en entornos_ejecucion.md.

Teoría

Tema Carpeta
Introducción a los sistemas operativos TEORIA/01
Espacio usuario y espacio kernel. Llamadas al sistema TEORIA/02
Procesos e hilos TEORIA/03
Planificación de procesos TEORIA/04
IPC: pipes y fifos TEORIA/07
IPC: señales TEORIA/08
IPC: colas de mensajes TEORIA/09

Prácticas

Práctica Carpeta
P0 — Shell y herramientas PRACTICA/00
P1 — Entrada y salida: consola, ficheros, file descriptors PRACTICA/01
P2 — Procesos e hilos: fork, execvp, wait, pstree PRACTICA/02
P3 — Pipes y fifos: pipe, mkfifo, dup2 PRACTICA/03
P4 — Señales: kill, signal, sigaction, sleep, pause PRACTICA/04
Se irán añadiendo temas conforme se avance en la asignatura

El README.md de cada práctica incluye la descripción del tema, los comandos, llamadas al sistema utilizadas, ejercicios propuestos y ejercicios extra con soluciones.

Guía de estilo

Presentaciones

Para teoría, se utilizan archivos Markdown con diagramas mermaid, SVG y JPG. También se pueden dar simulaciones interactivas embebidas, normalmente en HTML + JS. Se utilizará un markdown mínimo y el texto estará siempre en una línea.

Se prefieren explicaciones concisas y resumidas.

Para prácticas, se utilizan archivos Markdown, archivos .c, Makefiles, scripts bash y configuraciones tmux de terminales.

<- clickar en la flecha. Habrá texto expandible Que contienen información que puede ser útil, pero que no es obligatorio su conocimiento.

Código

En código utilizará alojamiento estático (en la pila - stack) para las variables siempre que sea posible y se evitará el uso de malloc.

Se evitarán programas con varios archivos C: cada proceso o grupo de procesos será un .c que acabará compilado en un binario. Esto hace el uso de Makefile opcional. Se pueden utilizar .h para compartir constantes y estructuras comunes.

Se pueden dejar #include que no sean necesarios si esto evita estar buscando qué includes necesita cada función. Es más como incluir un bloque común de #include <> y quitar los que den warning por no usarse.

Se puede quitar el tratamiento de errores para que el código quede más claro. La captura de errores se puede hacer con strace o gdb.

Estílos de código, aunque cada estudiante puede seguir el suyo:

  • La llave de apertura { se coloca en la misma línea.
  • Se usa snake_case en lugar de CamelCase.
  • Se intenta usar for siempre que sea posible (frente a while o do/while).
  • Las variables se declaran e inicializan en la misma línea, en el scope más interno posible.
  • Se evita el uso de variables globales.
  • Los struct se definen con typedef struct sin darle nombre al struct.

Material adicional

Vídeos, Películas y Series material_adicional.md.

About

Teoría y práctica de Sistemas Operativos - 2ºcurso upna

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages