Episodio 3.2 – Cómo el sistema operativo administra los recursos del computador

Tema 3 — Sistemas Operativos

Parte del Curso Fundamentos de la Computación


En el episodio anterior vimos qué es un sistema operativo y por qué es una pieza fundamental dentro de cualquier sistema de computación.

También vimos que el sistema operativo actúa como intermediario entre el usuario, las aplicaciones y el hardware. Esa idea es importante, porque nos permite entender que el sistema operativo no es solamente la pantalla que vemos al encender una computadora, ni el conjunto de ventanas, menús, íconos o comandos que utilizamos para trabajar.

El sistema operativo es, sobre todo, un administrador.

Administra el procesador.
Administra la memoria.
Administra los dispositivos.
Administra los archivos.
Administra los programas en ejecución.
Administra la comunicación entre todos esos elementos.

Cuando usamos una computadora moderna, normalmente tenemos varios programas abiertos al mismo tiempo. Podemos tener un navegador, un editor de texto, una aplicación de mensajería, música reproduciéndose, archivos descargándose, procesos en segundo plano y servicios del sistema funcionando sin que el usuario los vea directamente.

Desde nuestra perspectiva, todo parece ocurrir de manera simultánea.

Pero internamente, el sistema operativo está tomando decisiones todo el tiempo.

Debe decidir qué proceso usa el procesador, qué datos permanecen en memoria, qué información se guarda en disco, qué dispositivo atiende primero, qué programa puede acceder a un archivo y cómo evitar que varios programas interfieran entre sí.

En este episodio vamos a estudiar cómo el sistema operativo administra los recursos del computador para que múltiples programas puedan funcionar correctamente.


Video del episodio

Próximamente…


Qué aprenderás en este episodio

Al finalizar este contenido podrás:

  • Comprender qué significa administrar recursos en un sistema operativo.
  • Identificar los principales recursos que controla el sistema operativo.
  • Entender cómo el sistema operativo administra el procesador.
  • Diferenciar entre programa, proceso y programa en ejecución.
  • Comprender por qué varios programas pueden parecer ejecutarse al mismo tiempo.
  • Entender el papel de la planificación de procesos.
  • Comprender cómo el sistema operativo administra la memoria principal.
  • Reconocer la importancia de proteger la memoria de cada proceso.
  • Comprender el concepto general de memoria virtual.
  • Entender por qué la memoria virtual permite ejecutar programas más grandes o múltiples programas simultáneamente.
  • Identificar cómo el sistema operativo administra dispositivos de entrada y salida.
  • Comprender el papel de los controladores o drivers.
  • Entender cómo el sistema operativo organiza archivos y almacenamiento.
  • Relacionar todos estos conceptos con la coordinación general del computador.

Administrar recursos: la función central del sistema operativo

Un computador tiene recursos físicos limitados.

Tiene uno o varios procesadores.
Tiene una cantidad determinada de memoria RAM.
Tiene dispositivos de almacenamiento con una capacidad específica.
Tiene dispositivos de entrada y salida.
Tiene buses, puertos, tarjetas, controladores y otros componentes que permiten mover información.

El problema es que los programas que se ejecutan en una computadora necesitan usar esos recursos.

Un navegador necesita memoria, procesador, red, almacenamiento y pantalla.
Un editor de texto necesita memoria, procesador, teclado, pantalla y archivos.
Un reproductor de audio necesita memoria, procesador, almacenamiento y salida de sonido.
Una base de datos necesita memoria, almacenamiento, procesador y control sobre múltiples operaciones de lectura y escritura.
Un sistema de comunicación necesita red, memoria, procesos activos y control de entrada y salida.

Si cada programa intentara controlar directamente el hardware, el sistema sería caótico.

Dos programas podrían intentar usar el mismo dispositivo al mismo tiempo.
Un programa podría sobrescribir la memoria de otro.
Una aplicación podría bloquear completamente el procesador.
Un archivo podría dañarse si varios procesos intentan modificarlo sin coordinación.
Un dispositivo lento podría detener el funcionamiento general del sistema.

El sistema operativo evita ese desorden.

Su trabajo consiste en administrar los recursos disponibles y ofrecer a los programas una forma ordenada, segura y controlada de utilizarlos.

Los recursos principales que administra el sistema operativo

Aunque los sistemas operativos modernos son muy complejos, podemos agrupar sus tareas principales alrededor de varios recursos fundamentales:

El procesador.
La memoria.
El almacenamiento.
Los dispositivos de entrada y salida.
Los archivos.
Los datos.
Los procesos.
Los usuarios y permisos.

Cada uno de estos recursos tiene características distintas.

El procesador ejecuta instrucciones.
La memoria conserva temporalmente programas y datos mientras se están usando.
El almacenamiento guarda información de forma persistente.
Los dispositivos permiten entrada y salida de información.
Los archivos organizan datos de una forma comprensible para el usuario.
Los procesos representan programas en ejecución.
Los usuarios y permisos permiten controlar quién puede hacer qué dentro del sistema.

La administración de estos recursos no ocurre de forma aislada. El sistema operativo debe coordinarlos entre sí.

Cuando abrimos un programa, por ejemplo, el sistema operativo debe localizarlo en el almacenamiento, cargarlo en memoria, crear un proceso, asignarle tiempo de procesador, permitirle usar dispositivos cuando sea necesario y controlar su acceso a archivos.

Esa coordinación es lo que convierte al computador en una plataforma funcional.

Programa, proceso y ejecución

Para entender la administración del procesador, primero debemos distinguir entre programa y proceso.

Un programa es un conjunto de instrucciones almacenadas. Puede estar guardado en un disco, en una unidad SSD, en una memoria USB o en cualquier medio de almacenamiento.

Mientras el programa está simplemente guardado, no está haciendo nada. Es información almacenada.

Un proceso, en cambio, es un programa en ejecución.

Cuando abrimos una aplicación, el sistema operativo carga el programa en memoria y crea una instancia activa de ejecución. Esa instancia activa es el proceso.

Por ejemplo, el navegador instalado en la computadora es un programa. Pero cuando lo abrimos, se convierte en uno o varios procesos en ejecución.

Esto es importante porque el sistema operativo no administra programas estáticos, sino procesos activos.

Un proceso necesita memoria.
Necesita tiempo de procesador.
Puede necesitar archivos.
Puede solicitar acceso a dispositivos.
Puede comunicarse con otros procesos.
Puede quedar esperando una operación de entrada o salida.
Puede terminar normalmente o fallar.

El sistema operativo debe controlar todo ese ciclo de vida.


Administración del procesador

El procesador, o CPU, es el componente encargado de ejecutar instrucciones.

En una computadora moderna pueden existir varios núcleos de procesamiento, pero aun así el tiempo de procesador sigue siendo un recurso que debe administrarse.

Cuando hay varios procesos activos, el sistema operativo debe decidir cuál de ellos se ejecuta en cada momento. A esta tarea se le llama planificación de procesos.

La planificación es necesaria porque normalmente hay más procesos listos para ejecutarse que procesadores disponibles.

Aunque al usuario le parezca que muchos programas funcionan al mismo tiempo, internamente el sistema operativo puede estar alternando rápidamente entre ellos. A cada proceso se le asignan pequeños intervalos de tiempo de ejecución. Cuando ese intervalo termina, el sistema operativo puede guardar el estado del proceso y darle turno a otro.

Este cambio rápido entre procesos produce la sensación de multitarea.

El usuario puede escribir en un documento mientras se descarga un archivo, se reproduce música y el sistema revisa actualizaciones. Pero detrás de esa experiencia, el sistema operativo está distribuyendo el uso del procesador entre múltiples procesos.


Planificación de procesos

La planificación de procesos busca decidir qué proceso se ejecuta, cuándo se ejecuta y durante cuánto tiempo.

Un buen sistema de planificación debe buscar varios objetivos:

Que los procesos sean atendidos de forma justa.
Que el procesador se mantenga ocupado el mayor tiempo posible.
Que el sistema responda rápido a las acciones del usuario.
Que los procesos no queden esperando indefinidamente.
Que las tareas importantes reciban atención adecuada.
Que el comportamiento del sistema sea razonablemente predecible.

No todos los procesos tienen las mismas necesidades.

Algunos requieren mucho cálculo.
Otros pasan mucho tiempo esperando entrada o salida.
Algunos son interactivos y necesitan responder rápido al usuario.
Otros se ejecutan en segundo plano y pueden esperar más.
Algunos son críticos para el sistema y tienen mayor prioridad.

Por eso el sistema operativo puede utilizar prioridades, turnos, colas de procesos y distintos criterios de planificación.

Cuando un proceso está listo para ejecutarse, entra en una cola de procesos listos. El sistema operativo selecciona uno, le asigna el procesador y controla su ejecución. Si el proceso necesita esperar una lectura del disco, una respuesta de red o una entrada del usuario, puede pasar a un estado de espera. Mientras tanto, otro proceso puede usar el procesador.

Esta alternancia permite aprovechar mejor el sistema.


Estados de un proceso

Un proceso no siempre está ejecutándose. Durante su vida puede pasar por varios estados.

Puede estar nuevo, cuando acaba de ser creado.
Puede estar listo, cuando espera turno para usar el procesador.
Puede estar en ejecución, cuando está usando la CPU.
Puede estar bloqueado o en espera, cuando necesita que ocurra un evento externo.
Puede estar terminado, cuando finalizó su ejecución.

El sistema operativo administra esas transiciones.

Por ejemplo, si un proceso solicita leer un archivo desde el disco, no tiene sentido que siga ocupando el procesador mientras espera la respuesta del dispositivo. El sistema operativo puede bloquearlo temporalmente y ejecutar otro proceso. Cuando la lectura termina, el proceso vuelve a estar listo para continuar.

Este mecanismo mejora la eficiencia general del computador.


Multitarea y multiprogramación

La multitarea es la capacidad del sistema operativo para permitir que varios programas parezcan ejecutarse al mismo tiempo.

La multiprogramación es una idea relacionada: consiste en mantener varios programas cargados en memoria para que el procesador pueda alternar entre ellos.

La razón es simple.

Si un programa está esperando una operación de entrada o salida, el procesador no debería quedar inactivo. Puede ejecutar otro programa mientras tanto.

Gracias a esto, el sistema aprovecha mejor el procesador y mejora la experiencia del usuario.

En sistemas antiguos, un programa podía ejecutarse completamente antes de que otro comenzara. En sistemas modernos, esto sería inaceptable. Esperamos poder abrir varias aplicaciones, cambiar entre ellas, recibir notificaciones, copiar archivos, navegar por internet y mantener servicios en segundo plano al mismo tiempo.

Eso requiere administración de procesos.


Administración de memoria

La memoria principal, o RAM, es uno de los recursos más importantes del computador.

Cuando un programa se ejecuta, sus instrucciones y datos deben cargarse en memoria. El procesador trabaja directamente con información que se encuentra en memoria o en registros internos, no con archivos almacenados pasivamente en el disco.

Pero la memoria es limitada.

El sistema operativo debe decidir qué programas se cargan en memoria, cuánto espacio recibe cada proceso, qué zonas están ocupadas, qué zonas están libres y cómo proteger la memoria de un proceso frente a los demás.

Si un proceso pudiera escribir libremente en cualquier dirección de memoria, podría modificar datos de otro proceso o incluso alterar partes críticas del sistema operativo. Eso causaría errores, bloqueos, pérdida de información o fallas de seguridad.

Por eso la administración de memoria tiene dos objetivos centrales:

Aprovechar eficientemente la memoria disponible.
Proteger el espacio de memoria de cada proceso.


Espacio de direcciones

Cada proceso trabaja como si tuviera su propio espacio de memoria.

Ese espacio contiene instrucciones, datos, variables, pila de ejecución y otra información necesaria para funcionar.

El sistema operativo y el hardware cooperan para traducir las direcciones que usa el programa en direcciones reales de la memoria física.

Esto permite que cada proceso tenga la ilusión de trabajar en un espacio propio, aunque físicamente la memoria esté compartida entre muchos procesos.

Esta separación es fundamental.

Permite estabilidad.
Permite seguridad.
Permite multiprogramación.
Permite que varios procesos coexistan sin interferir indebidamente.

Cuando un programa intenta acceder a una zona de memoria que no le corresponde, el sistema operativo puede detenerlo o generar un error. Esa protección evita que una falla de una aplicación dañe a todo el sistema.


Carga y asignación de memoria

Cuando un programa se ejecuta, el sistema operativo debe cargarlo en memoria.

En sistemas simples, se podía cargar un solo programa a la vez. Pero en sistemas multitarea, varios procesos deben coexistir en memoria.

Para lograrlo, el sistema operativo puede dividir la memoria en regiones o particiones. Algunas pueden ser fijas, otras variables. La idea general es asignar a cada proceso una zona suficiente para ejecutarse.

Esto introduce varios problemas.

Puede haber espacios libres pequeños que no sean suficientes para cargar nuevos procesos.
Puede existir memoria desperdiciada dentro de una partición asignada.
Puede ser necesario mover procesos o reorganizar memoria.
Puede ocurrir que la memoria física no alcance para todos los programas activos.

A estos problemas se les relaciona con conceptos como fragmentación interna y fragmentación externa.

La fragmentación interna ocurre cuando se asigna a un proceso un bloque de memoria más grande de lo que realmente necesita, y una parte del bloque queda desperdiciada.

La fragmentación externa ocurre cuando existen espacios libres separados entre sí, pero no contiguos. En conjunto podrían ser suficientes, pero al estar divididos no siempre pueden utilizarse para cargar un proceso que necesita un espacio continuo.

Estos problemas llevaron al desarrollo de técnicas más flexibles de administración de memoria.


Memoria virtual

La memoria virtual es una de las ideas más importantes en los sistemas operativos modernos.

Consiste en permitir que los programas trabajen con un espacio de memoria aparentemente mayor o más flexible que la memoria física disponible.

Para lograrlo, el sistema operativo utiliza una combinación de memoria RAM y almacenamiento secundario, como disco o SSD.

La idea general es que no todo el programa ni todos sus datos tienen que estar en memoria física al mismo tiempo. Algunas partes pueden mantenerse en almacenamiento secundario y cargarse en RAM solamente cuando sean necesarias.

Esto permite ejecutar programas grandes, mantener varios procesos activos y administrar mejor la memoria disponible.

Desde la perspectiva del programa, existe un espacio de direcciones virtuales. El sistema operativo se encarga de traducir esas direcciones virtuales a direcciones físicas reales.


Paginación

Una técnica común de memoria virtual es la paginación.

En la paginación, la memoria se divide en bloques de tamaño fijo llamados páginas. El programa se divide lógicamente en páginas, y la memoria física se divide en marcos o espacios donde esas páginas pueden cargarse.

Cuando un proceso necesita acceder a una página que ya está en memoria RAM, la operación puede continuar normalmente.

Pero si la página no está en memoria, ocurre un fallo de página.

Un fallo de página no significa necesariamente que el sistema haya fallado en el sentido común de la palabra. Significa que el proceso solicitó una página que no se encuentra actualmente en RAM. Entonces el sistema operativo debe traerla desde el almacenamiento secundario hacia la memoria principal.

Si la memoria está llena, puede ser necesario retirar otra página para hacer espacio.

Este intercambio entre memoria y disco permite que los programas funcionen aunque no todas sus partes estén cargadas en RAM simultáneamente.


Swapping o intercambio

El intercambio, o swapping, consiste en mover información entre la memoria principal y el almacenamiento secundario.

Cuando el sistema necesita liberar memoria, puede sacar temporalmente parte de un proceso o incluso un proceso completo de la RAM y guardarlo en disco. Luego, cuando sea necesario continuar su ejecución, puede traerlo nuevamente.

Este mecanismo aumenta la flexibilidad, pero tiene un costo.

La memoria RAM es mucho más rápida que el almacenamiento secundario. Si el sistema depende demasiado del intercambio, el rendimiento puede caer de forma notable. Esto ocurre cuando hay demasiados procesos activos o cuando la memoria física es insuficiente para la carga de trabajo.

En ese caso, el sistema puede pasar demasiado tiempo moviendo páginas entre memoria y disco, y poco tiempo ejecutando instrucciones útiles.

Por eso, aunque la memoria virtual es poderosa, no reemplaza completamente la necesidad de contar con suficiente memoria física.


Administración de dispositivos de entrada y salida

Los dispositivos de entrada y salida permiten la comunicación entre el computador y el exterior.

Entre los dispositivos de entrada tenemos, por ejemplo, teclado, mouse, micrófono, cámara, escáneres o sensores.

Entre los dispositivos de salida tenemos pantalla, impresora, bocinas, proyectores y otros equipos.

También existen dispositivos que pueden realizar entrada y salida, como discos, unidades SSD, tarjetas de red, memorias USB o pantallas táctiles.

El problema es que cada dispositivo tiene características distintas.

Tienen velocidades diferentes.
Usan formas distintas de comunicación.
Pueden trabajar por bloques o por caracteres.
Pueden requerir controladores específicos.
Pueden generar interrupciones.
Pueden necesitar buffers o memoria temporal.
Pueden fallar de distintas maneras.

El sistema operativo debe ofrecer una forma común de trabajar con ellos.


Controladores o drivers

Un controlador, o driver, es un software que permite al sistema operativo comunicarse con un dispositivo específico.

Las aplicaciones normalmente no necesitan saber cómo funciona internamente una impresora, una tarjeta de video o un disco. Solicitan un servicio al sistema operativo, y el sistema operativo utiliza el controlador correspondiente para comunicarse con el dispositivo.

Esto permite separar las aplicaciones de los detalles físicos del hardware.

Gracias a los drivers, un programa puede imprimir un documento sin conocer el modelo exacto de la impresora.
Puede reproducir sonido sin conocer los detalles eléctricos de la tarjeta de audio.
Puede guardar un archivo sin controlar directamente los mecanismos internos del disco.
Puede usar una cámara sin manejar manualmente cada señal del dispositivo.

Los controladores son una parte esencial de la administración de entrada y salida.


Interrupciones

Los dispositivos suelen comunicarse con el procesador mediante interrupciones.

Una interrupción es una señal que indica al procesador que debe atender un evento.

Por ejemplo, cuando termina una lectura del disco, cuando llega información desde la red o cuando el usuario presiona una tecla, el dispositivo puede generar una interrupción.

El sistema operativo responde mediante rutinas especiales llamadas manejadores de interrupciones. Estas rutinas atienden el evento y permiten que el sistema continúe funcionando.

Sin interrupciones, el procesador tendría que revisar constantemente cada dispositivo para saber si hay algo pendiente. Eso sería ineficiente.

Con interrupciones, el dispositivo avisa cuando necesita atención.


Buffers y diferencias de velocidad

Los dispositivos de entrada y salida suelen ser mucho más lentos que el procesador y la memoria.

Por eso se utilizan buffers.

Un buffer es una zona temporal de memoria donde se almacenan datos mientras se transfieren entre dos componentes que trabajan a velocidades diferentes.

Por ejemplo, si el procesador envía datos a una impresora, la impresora no puede procesarlos a la misma velocidad que la CPU los genera. El sistema puede colocar esos datos en un buffer y permitir que la impresora los tome a su propio ritmo.

Lo mismo puede ocurrir con discos, redes, audio, video y otros dispositivos.

Los buffers ayudan a suavizar diferencias de velocidad y permiten que el sistema no se detenga innecesariamente.


Acceso directo a memoria

En algunos casos, los dispositivos pueden transferir datos directamente hacia o desde la memoria sin que el procesador tenga que intervenir en cada byte transferido.

Este mecanismo se conoce como acceso directo a memoria, o DMA.

El DMA permite que un controlador de dispositivo mueva bloques de datos entre el dispositivo y la memoria principal mientras el procesador realiza otras tareas.

Cuando la transferencia termina, el dispositivo puede generar una interrupción para avisar al sistema operativo.

Esto mejora el rendimiento, especialmente en operaciones de entrada y salida intensivas.


Gestión de archivos y almacenamiento

El almacenamiento permite conservar información incluso cuando el computador se apaga.

Para el usuario, esa información aparece organizada en archivos y carpetas. Pero internamente el sistema operativo debe realizar muchas tareas para que esa organización funcione.

Debe crear archivos.
Debe eliminarlos.
Debe leerlos.
Debe escribirlos.
Debe modificar sus permisos.
Debe localizar dónde están almacenados físicamente.
Debe administrar espacio libre.
Debe mantener estructuras internas que permitan encontrar la información.
Debe proteger los datos frente a accesos indebidos o errores.

El sistema de archivos

Un sistema de archivos es la estructura que utiliza el sistema operativo para organizar información en un medio de almacenamiento.

Permite representar datos como archivos, agruparlos en directorios o carpetas, asignarles nombres, controlar permisos y mantener información sobre su ubicación física.

El usuario ve documentos, imágenes, videos, carpetas y nombres comprensibles.

El sistema operativo, en cambio, debe traducir esa visión lógica en ubicaciones concretas dentro del dispositivo de almacenamiento.

Un archivo puede estar dividido en bloques.
Esos bloques pueden estar ubicados en distintas partes del disco.
El sistema debe saber qué bloques pertenecen a cada archivo.
También debe saber qué espacios están libres.
Debe evitar que dos archivos usen el mismo espacio físico.
Debe mantener la integridad de la información.

Por eso el sistema de archivos es una de las partes más importantes del sistema operativo.

Archivos, directorios y permisos

Los archivos son unidades lógicas de información.

Un archivo puede contener texto, imágenes, audio, video, código, configuraciones, bases de datos o cualquier otro tipo de información.

Los directorios o carpetas permiten organizar archivos en estructuras jerárquicas.

Los permisos permiten controlar quién puede leer, modificar, ejecutar o eliminar determinados archivos.

En sistemas personales, esto puede parecer simple. Pero en sistemas multiusuario, servidores y redes, los permisos son fundamentales.

Un usuario no debería poder modificar archivos críticos del sistema.
Un programa no debería acceder a información privada sin autorización.
Un proceso no debería sobrescribir datos de otro usuario.
Un archivo compartido debe tener reglas claras de acceso.

El sistema operativo administra estos controles para mantener seguridad, orden e integridad.

Almacenamiento local y almacenamiento compartido

Tradicionalmente, los archivos podían estar almacenados en una sola computadora. En ese caso hablamos de almacenamiento local.

Pero también existen sistemas de archivos compartidos o de red, donde los archivos pueden estar en otro equipo, servidor o unidad remota, y aun así ser accesibles para el usuario como si estuvieran disponibles dentro de su entorno de trabajo.

Esto exige coordinación adicional.

El sistema operativo debe manejar rutas, permisos, conexiones de red, disponibilidad, autenticación y posibles conflictos de acceso.

En sistemas modernos, esta idea se amplía todavía más con almacenamiento en la nube, sincronización entre dispositivos y servicios distribuidos.


Coordinación de recursos

La administración de recursos no consiste solamente en controlar cada elemento por separado.

El verdadero reto está en coordinarlos.

Cuando un programa se ejecuta, usa procesador, memoria, archivos, dispositivos y permisos al mismo tiempo. Si varios programas hacen esto simultáneamente, el sistema operativo debe evitar conflictos.

Por ejemplo:

Dos procesos pueden intentar escribir en el mismo archivo.
Un proceso puede necesitar un dispositivo que ya está siendo usado.
Un programa puede quedarse esperando memoria disponible.
Un proceso puede necesitar datos que están en disco.
Una operación de entrada y salida puede tardar mucho más que una operación de CPU.
Un proceso puede fallar y dejar recursos ocupados.
Una aplicación puede consumir demasiada memoria o procesador.

El sistema operativo debe administrar estas situaciones.

Concurrencia

La concurrencia ocurre cuando varios procesos están activos durante el mismo período de tiempo y compiten por recursos del sistema.

No necesariamente significa que todos se ejecuten exactamente al mismo instante. Puede significar que avanzan de forma intercalada, compartiendo procesador, memoria, archivos y dispositivos.

La concurrencia es una de las razones por las que los sistemas operativos son complejos.

Si dos procesos intentan modificar el mismo dato al mismo tiempo, puede producirse un error. Si un proceso necesita un recurso que otro tiene bloqueado, puede quedar esperando. Si varios procesos se esperan entre sí, puede producirse una situación de bloqueo.

Por eso el sistema operativo necesita mecanismos de sincronización, control de acceso y administración de recursos compartidos.

Región crítica

Una región crítica es una parte de un programa en la que se utiliza un recurso compartido.

Por ejemplo, una sección de código que modifica un archivo, actualiza una variable compartida o accede a una estructura común.

El sistema operativo y los mecanismos de programación deben asegurar que dos procesos no entren simultáneamente en una región crítica si eso puede provocar inconsistencias.

La idea es proteger los recursos compartidos para evitar errores de concurrencia.

Bloqueos y espera

Uno de los problemas clásicos en la administración de recursos es el bloqueo.

Un bloqueo puede ocurrir cuando un proceso espera un recurso que no está disponible.

En algunos casos, esto es normal. Si una impresora está ocupada, otro trabajo puede esperar. Si un archivo está siendo escrito, otro proceso puede esperar para modificarlo.

Pero también pueden producirse situaciones más graves.

Por ejemplo, un proceso A tiene un recurso que necesita el proceso B, mientras el proceso B tiene otro recurso que necesita el proceso A. Si ninguno libera su recurso, ambos quedan detenidos.

A este tipo de problema se le conoce como interbloqueo o deadlock.

Los sistemas operativos utilizan distintas estrategias para prevenir, evitar, detectar o resolver estos problemas.


El núcleo del sistema operativo

El núcleo, o kernel, es la parte central del sistema operativo.

Es el componente que tiene mayor control sobre el hardware y los recursos principales del sistema.

Entre sus responsabilidades están:

Administrar procesos.
Administrar memoria.
Controlar interrupciones.
Coordinar dispositivos.
Manejar llamadas al sistema.
Controlar permisos de bajo nivel.
Administrar comunicación entre hardware y software.

Las aplicaciones no deberían acceder directamente al hardware de manera libre. En lugar de eso, hacen solicitudes al sistema operativo mediante llamadas al sistema.

Por ejemplo, una aplicación puede solicitar abrir un archivo, reservar memoria, crear un proceso o enviar información a un dispositivo. El sistema operativo recibe la solicitud, verifica si es válida y ejecuta la operación correspondiente.

Esto protege al sistema y mantiene el control centralizado.

Procesos e hilos

Además del concepto de proceso, existe el concepto de hilo o thread.

Un proceso puede entenderse como un programa en ejecución con su propio espacio de memoria y recursos asociados.

Un hilo es una unidad de ejecución dentro de un proceso.

Un proceso puede tener uno o varios hilos. Todos los hilos de un mismo proceso pueden compartir memoria y recursos, pero cada hilo tiene su propia secuencia de ejecución.

Esto permite que un programa haga varias tareas internas al mismo tiempo.

Por ejemplo, una aplicación puede tener un hilo para la interfaz de usuario, otro para cargar datos, otro para guardar información y otro para comunicarse con la red.

Los hilos hacen más eficiente la ejecución, pero también introducen problemas de sincronización, porque varias partes del mismo programa pueden acceder a datos compartidos.

El sistema operativo debe administrar también este nivel de ejecución.

Modo usuario y modo supervisor

Los sistemas operativos modernos suelen distinguir entre modo usuario y modo supervisor.

En modo usuario se ejecutan las aplicaciones normales. Tienen acceso limitado a los recursos del sistema.

En modo supervisor, también llamado modo kernel o modo privilegiado, se ejecutan las partes centrales del sistema operativo. En este modo se pueden realizar operaciones críticas, como controlar dispositivos, modificar tablas de memoria o atender interrupciones.

Esta separación protege al sistema.

Si una aplicación falla en modo usuario, el sistema operativo puede detenerla sin que todo el sistema colapse. Si cualquier aplicación pudiera ejecutar instrucciones privilegiadas, podría dañar el sistema, acceder a información indebida o interferir con otros procesos.

La división entre modo usuario y modo supervisor es una base importante de la seguridad y estabilidad de los sistemas operativos modernos.

Por qué todo esto importa al usuario

Aunque muchos de estos conceptos ocurren internamente, afectan directamente la experiencia del usuario.

Cuando una computadora se vuelve lenta, puede deberse a exceso de procesos, falta de memoria, uso intensivo de disco, demasiadas operaciones de entrada y salida o conflictos entre programas.

Cuando una aplicación se cierra inesperadamente, puede estar relacionado con errores de memoria, permisos, archivos dañados o fallas de ejecución.

Cuando un dispositivo no funciona, puede deberse a un controlador incorrecto, una falla de comunicación o un problema de configuración del sistema operativo.

Cuando un archivo no se puede abrir, modificar o eliminar, puede haber un problema de permisos, bloqueo o sistema de archivos.

Cuando varios programas funcionan correctamente al mismo tiempo, es porque el sistema operativo está coordinando recursos de forma adecuada.

Por eso, comprender cómo el sistema operativo administra los recursos del computador permite entender mejor el comportamiento real de una computadora.

No se trata únicamente de saber usar una interfaz.

Se trata de comprender qué ocurre debajo de esa interfaz.


Ideas clave del episodio

  • El sistema operativo administra los recursos del computador para que los programas puedan ejecutarse de forma ordenada.
  • Entre los recursos principales están el procesador, la memoria, el almacenamiento, los dispositivos de entrada y salida, los archivos y los datos.
  • Un programa es un conjunto de instrucciones almacenadas; un proceso es un programa en ejecución.
  • El sistema operativo administra procesos, estados de ejecución y turnos de uso del procesador.
  • La planificación de procesos decide qué proceso se ejecuta, cuándo y durante cuánto tiempo.
  • La multitarea permite que varios programas parezcan ejecutarse al mismo tiempo.
  • La memoria principal es limitada y debe ser administrada cuidadosamente.
  • Cada proceso necesita un espacio de memoria protegido.
  • La memoria virtual permite usar una combinación de RAM y almacenamiento secundario para ampliar la flexibilidad del sistema.
  • La paginación divide la memoria en bloques y permite cargar solo las partes necesarias de un programa.
  • Un fallo de página ocurre cuando un proceso necesita una página que no está cargada en memoria física.
  • El swapping mueve información entre memoria principal y almacenamiento secundario.
  • Los dispositivos de entrada y salida son administrados mediante controladores, interrupciones, buffers y otros mecanismos.
  • Los drivers permiten que el sistema operativo se comunique con dispositivos específicos.
  • El sistema de archivos organiza la información en archivos y carpetas.
  • Los permisos controlan quién puede acceder, modificar o ejecutar archivos.
  • La concurrencia aparece cuando varios procesos compiten por recursos compartidos.
  • El sistema operativo debe evitar conflictos, bloqueos y accesos indebidos.
  • El núcleo o kernel es la parte central del sistema operativo.
  • La separación entre modo usuario y modo supervisor protege la estabilidad del sistema.
  • La administración de recursos es lo que permite que múltiples programas funcionen correctamente al mismo tiempo.

Conceptos clave

  • Sistema operativo
  • Recurso del sistema
  • Procesador
  • CPU
  • Proceso
  • Programa
  • Programa en ejecución
  • Planificación de procesos
  • Cola de procesos
  • Multitarea
  • Multiprogramación
  • Memoria principal
  • RAM
  • Espacio de direcciones
  • Protección de memoria
  • Memoria virtual
  • Dirección virtual
  • Dirección física
  • Paginación
  • Página
  • Fallo de página
  • Swapping
  • Almacenamiento secundario
  • Entrada y salida
  • Dispositivo
  • Periférico
  • Controlador
  • Driver
  • Interrupción
  • Buffer
  • Acceso directo a memoria
  • DMA
  • Sistema de archivos
  • Archivo
  • Directorio
  • Carpeta
  • Permisos
  • Concurrencia
  • Región crítica
  • Bloqueo
  • Deadlock
  • Kernel
  • Núcleo
  • Hilo
  • Thread
  • Modo usuario
  • Modo supervisor

Cómo se conecta este episodio con el resto del curso

En este episodio vimos cómo el sistema operativo administra los recursos del computador.

En el episodio anterior habíamos definido al sistema operativo como una capa intermedia entre el hardware, las aplicaciones y el usuario. Ahora vimos con más detalle qué significa esa intermediación.

El sistema operativo no se limita a mostrar una interfaz. Su función más importante es coordinar el uso de recursos limitados para que los programas puedan ejecutarse correctamente.

Administra el procesador para que varios procesos puedan avanzar.
Administra la memoria para que los programas tengan espacio y protección.
Administra la memoria virtual para ampliar la flexibilidad del sistema.
Administra los dispositivos para que las aplicaciones puedan comunicarse con el exterior.
Administra los archivos para que la información pueda almacenarse, recuperarse y protegerse.
Administra la concurrencia para evitar conflictos entre procesos.

Con esta base, podemos entender mejor por qué los sistemas operativos son esenciales para temas posteriores del curso.

Cuando estudiemos redes, veremos que el sistema operativo también administra conexiones, puertos, direcciones y servicios de comunicación.

Cuando estudiemos bases de datos, veremos que los archivos, la memoria, los procesos y la concurrencia son fundamentales para almacenar y consultar información correctamente.

Cuando estudiemos programación, veremos que muchos programas dependen de procesos, hilos, archivos, entrada/salida y memoria.

Cuando estudiemos seguridad, veremos que permisos, usuarios, aislamiento de procesos y protección de memoria son conceptos centrales.

El sistema operativo es la capa que permite que el computador deje de ser un conjunto de componentes físicos y se convierta en una plataforma capaz de ejecutar trabajo real.

Sin administración de recursos, habría conflicto.

Con administración de recursos, hay coordinación.

Y esa coordinación es lo que permite que múltiples programas funcionen correctamente al mismo tiempo.