En los apuntes de la asignatura y durante las clases de Sistemas Operativos del Grado en Ingeniería Informática, solemos hacer referencia a algunos programas de ejemplo que usamos para ilustrar lo explicado. Este proyecto es una recopilación de dichos programas.
Tabla de contenidos
Concretamente los ejemplos incluidos actualmente son:
src/cap04/led_test.cpp
— Acceso a la E/S serial en UNIX. Ejemplo del control de un LED tricolor conectado a un Arduino que a su vez está conectado al puerto serie del ordenador.src/cap06/syscall.s
— Llamadas al sistema en el simulador en Linux para x86-64.src/cap06/softstack.c
— Ejemplo básico en C para mostrar la pila de software constrace
oltrace
.src/cap06/softstack.cpp
— Ejemplo básico en C++ para mostrar la pila de software constrace
oltrace
.src/cap09/fork.cpp
— Creación de procesos mediantefork()
.src/cap09/fork-exec.cpp
— Ejecutar otros programas mediantefork()
yexec()
.src/cap10/mqueue-client.cpp
— Cliente de comunicación entre procesos mediante colas de mensajes POSIX.src/cap10/mqueue-server.cpp
— Servidor de comunicación entre procesos mediante colas de mensajes POSIX.src/cap10/signals.cpp
— Ejemplo básico de manejo de señales POSIX.src/cap10/sockets/socket.cpp
— Ejemplo de comunicación entre procesos mediante colas de mensajes POSIX.src/cap10/sockets/socket-control.cpp
— Programa de control del ejemplo de comunicación entre procesos mediante colas de mensajes POSIX.src/cap10/tuberías/fifo.cpp
— Ejemplo de comunicación entre procesos mediante tuberías con nombre.src/cap10/tuberías/fifo-control.cpp
— Programa de control del ejemplo de comunicación entre procesos mediante tuberías con nombre.src/cap10/tuberías/fork-pipe.cpp
— Comunicación entre procesos padre e hijo mediante tuberías anónimas.src/cap10/tuberías/fork-redir.cpp
— Redirección de E/S estándar usando tuberías anónimas.src/cap11/anom-shared-memory.cpp
— Comunicación entre procesos padre e hijo mediante memoria compartida anónima.src/cap11/shared-memory.cpp
— Ejemplo de comunicación entre procesos mediante memoria compartida.src/cap11/shared-memory-control.cpp
— Programa de control del ejemplo de comunicación entre procesos mediante memoria compartida.src/cap12/jthreads-factorial.cpp
— Uso de hilos constd::jthread
y cancelación coordinada en C++: Cálculo del factorial de un número.src/cap12/pthreads.cpp
— Creación de hilos mediante POSIX Threads.src/cap12/pthreads-factorial.cpp
— Uso de hilos mediante POSIX Threads: Cálculo del factorial de un número.src/cap12/threads.cpp
— Creación de hilos constd::thread
en C++.src/cap12/threads-factorial.cpp
— Uso de hilos constd::thread
en C++: Cálculo del factorial de un número.src/cap13/pthreads-sync-counter.cpp
— Sincronización de hilos mediante mutex de POSIX Threads: Incrementar un contador.src/cap13/pthreads-sync-factorial.cpp
— Sincronización de hilos mediante mutex de POSIX Threads: Cálculo del factorial de un número.src/cap13/threads-sync-counter.cpp
— Sincronización de hilos mediante mutex en C++: Incrementar un contador.src/cap13/threads-sync-factorial.cpp
— Sincronización de hilos mediante mutex en C++: Cálculo del factorial de un número.src/cap13/threads-sync-semaphore.cpp
— Sincronización de hilos mediante semáforos en C++.src/cap17/mapped-files.cpp
— Archivos mapeados en memoria conmmap()
.src/cap19/file-copy.cpp
— Copia de archivos conread()
ywrite()
.src/cap19/file-attribs.cpp
— Leer y mostrar los atributos de archivo.src/cap19/filelock-server.c
— Ejemplo del uso de bloqueo de archivos.src/cap19/filelock-stop.cpp
— Programa de control del ejemplo del uso de bloqueo de archivos.src/cap19/dir-list.cpp
— Listar el contenido de un directorio.src/otros/yash.cpp
— Ejemplo muy básico del funcionamiento interno de una shell.
Para la compilación de estos ejemplos en Linux es necesario tener instalado un compilador de C++ que soporte C++23 —como GCC 14— y los siguientes paquetes:
build-essential
cmake
Mientras que en Microsoft Windows se necesita almenos Visual Studio Build Tools 2022, que incluye una versión de CMake.
Los ejemplos se compilan de manera sencilla siguiendo estos pasos:
- Ir al directorio del proyecto.
- Ejecutar
cmake -B build
- Ejecutar
cmake --build build
En Microsoft Windows estos comandos deben ejecutarse desde la consola de Developer Command Prompt.
En cada sistema solo se compilarán los ejemplos compatibles.
Los ejecutables resultantes de la compilación son guardados en el directorio build/bin/
.
Si tienes cualquier cuestión no dudes en ponerte en contacto con Jesús Torres <jmtorres@ull.es>.