Conceptos de Sistemas Operativos
Conceptos fundamentales de sistemas operativos: procesos, memoria virtual, sistema de archivos, pipes, shell y llamadas al sistema.
Tesis
Un sistema operativo se estudia a través de sus abstracciones: procesos, memoria virtual, sistema de archivos, IPC y la interfaz de comandos. Cada abstracción resuelve un problema de hardware hostil con una interfaz limpia y consistente.
Desglose de conceptos
Procesos
Un proceso es un programa en ejecución con su propio espacio de direcciones (programa ejecutable, datos y pila). El SO mantiene información de cada proceso en una tabla de procesos (registros, archivos abiertos, alarmas, procesos relacionados). Cuando un proceso se suspende, su imagen central (core image) se guarda para reanudarlo después.
Los procesos crean procesos hijo formando un árbol de procesos; la comunicación entre ellos es IPC (interprocess communication). Las señales notifican eventos y son análogas a las interrupciones por hardware. Cada usuario tiene un UID y pertenece a grupos con GID; el superusuario (root) omite reglas de protección.
Memoria
Los sistemas modernos usan memoria virtual: el espacio de direcciones de un proceso puede exceder la memoria física, manteniendo parte en disco y parte en RAM, con protección entre procesos.
Sistema de archivos
Abstrae los dispositivos de almacenamiento mediante archivos y directorios organizados en una jerarquía. Una ruta absoluta comienza con / en UNIX; los procesos tienen un directorio de trabajo actual y deben abrir archivos con permisos adecuados antes de acceder, obteniendo un descriptor de archivo. UNIX permite montar sistemas de archivos externos en directorios vacíos. Los archivos especiales en /dev representan dispositivos: de bloques (discos) y de caracteres (teclados, impresoras). Los pipes son pseudofiles para comunicación entre procesos.
Shell y GUI
El shell es un intérprete de comandos — no parte del SO — que permite ejecutar programas, redirigir I/O (>, <), encadenar con pipes (|) y ejecutar en segundo plano (&). La GUI es otro programa sobre el SO, igual que el shell.
Q&A de referencia
Procesos y memoria
- ¿Qué es un proceso? Un programa en ejecución.
- ¿Qué contiene su espacio de direcciones? Programa ejecutable, datos y pila.
- ¿Qué guarda la tabla de procesos? Registros, archivos abiertos, alarmas, procesos relacionados.
- ¿Qué pasa al suspender un proceso? Toda su información se guarda para reanudarlo en el mismo estado.
- ¿Cómo se llama la imagen de memoria del proceso suspendido? Imagen central o core image.
- ¿Qué hace una llamada de creación de procesos? Crea un proceso hijo para ejecutar un programa.
- ¿Cómo se denomina a los procesos creados por otros? Procesos hijo.
- ¿Qué estructura forman? Un árbol de procesos.
- ¿Cómo se llama la comunicación entre procesos relacionados? IPC (interprocess communication).
- ¿Qué ocurre al notificar a un proceso tras cierto tiempo? Se le envía una señal o alarma.
- ¿Qué hace un proceso al recibir una señal? Suspende lo que hacía, ejecuta un manejador y retoma.
- ¿A qué son análogas las señales? A las interrupciones por hardware.
- ¿Qué identificador tiene cada usuario autorizado? UID (User IDentification).
- ¿Qué identificador tiene cada grupo? GID (Group IDentification).
- ¿Qué usuario tiene privilegios especiales en UNIX? El superusuario o root.
- ¿Qué permite el superusuario? Omitir muchas reglas de protección.
- ¿Qué maneja la memoria principal en SO simples? Un solo programa en memoria a la vez.
- ¿Qué técnica permite usar más memoria que la física? Memoria virtual.
- ¿Qué hace la memoria virtual? Mantiene parte del espacio de direcciones en disco y parte en RAM.
- ¿Qué es el espacio de direcciones de un proceso? El conjunto de direcciones que un proceso puede usar.
- ¿Qué mecanismo evita interferencia entre procesos en memoria? Un mecanismo de protección controlado por el SO.
Archivos y directorios
- ¿Qué abstrae el sistema de archivos? Los dispositivos de almacenamiento como archivos.
- ¿Qué llamadas existen para archivos? Crear, eliminar, leer, escribir, abrir y cerrar.
- ¿Qué estructura agrupa archivos? Un directorio (o carpeta).
- ¿Cómo se llama la estructura jerárquica resultante? Jerarquía de archivos.
- ¿Qué es una ruta absoluta? La ubicación completa de un archivo desde el directorio raíz.
- ¿Qué indica
/al inicio de una ruta en UNIX? Que es absoluta desde el directorio raíz. - ¿Qué separador usan los directorios en Windows? La barra invertida (
\). - ¿Qué es el directorio de trabajo actual? Donde se buscan rutas relativas.
- ¿Qué permite cambiar de directorio? Una llamada al sistema con el nuevo directorio.
- ¿Qué se necesita antes de leer/escribir un archivo? Abrirlo con permisos adecuados.
- ¿Qué devuelve el acceso permitido? Un descriptor de archivo (file descriptor).
- ¿Qué devuelve el acceso denegado? Un código de error.
- ¿Qué es un sistema de archivos montado? Un dispositivo externo integrado al árbol principal.
- ¿Dónde se montan normalmente? En directorios vacíos.
- ¿Qué archivos permiten que los dispositivos se comporten como archivos? Los archivos especiales.
- ¿Qué tipos existen? De bloques y de caracteres.
- ¿Qué modelan los de bloques? SSDs, discos y dispositivos con bloques direccionables.
- ¿Qué modelan los de caracteres? Impresoras, teclados, ratones y similares.
- ¿Dónde se almacenan? En
/dev. - ¿Qué es un pipe? Un pseudofile para comunicar procesos.
- ¿Cómo se usa? Uno escribe como archivo, otro lee como archivo.
Shell y sistema
- ¿Quién ejecuta las llamadas al sistema? El SO.
- ¿Son parte del SO los editores, compiladores y utilidades? No, aunque útiles.
- ¿Qué es el shell? El intérprete de comandos, interfaz entre usuario y SO.
- ¿El shell es parte del SO? No, pero usa intensivamente sus funciones.
- ¿Qué pasa al iniciar sesión? Se inicia una shell con el terminal como entrada/salida estándar.
- ¿Qué símbolo espera comandos?
$. - ¿Qué hace el shell con un comando como
date? Crea un proceso hijo para ejecutarlo y espera a que termine; al finalizar, vuelve a mostrar el prompt. - ¿Cómo se redirige la salida a un archivo? Con
>. - ¿Cómo se redirige la entrada desde un archivo? Con
<. - ¿Qué permite
|? Conectar la salida de un programa con la entrada de otro (pipe). - ¿Qué hace
cat file1 file2 file3 | sort >/dev/lp? Concatena los tres archivos, los ordena y envía la salida a/dev/lp(impresora). - ¿Qué significa
&al final? Ejecutar en segundo plano (background), dejando el terminal libre. - ¿Dónde se usa GUI en lugar de shell como interfaz principal? En la mayoría de computadoras personales actuales.
- ¿El GUI es parte del SO? No, es un programa sobre el SO, como el shell.
- ¿Qué GUIs permite elegir Linux? Gnome, KDE, o solo terminal en X11.
- ¿Es común reemplazar el GUI estándar en Windows? No, generalmente no.