Fundamentos de Sistemas Operativos: PCB, Deadlock y Gestión de Recursos
Clasificado en Informática
Escrito el en
español con un tamaño de 5,73 KB
Bloque de Control de Proceso (PCB)
El Bloque de Control de Proceso (PCB) es un registro fundamental donde el Sistema Operativo (SO) guarda toda la información que necesita de un proceso. Este bloque se crea en el momento de la creación del proceso y permanece activo durante toda su vida útil.
Información contenida en el PCB
El PCB almacena diversos datos críticos, entre los que destacan:
- Estado del proceso: ejecución, listo o bloqueado.
- PID: Identificador único del proceso.
- Program Counter (PC): Dirección de la siguiente instrucción a ejecutar.
- Registros: Incluye el puntero al stack y otros registros de la CPU.
- Límites de memoria: Información sobre el espacio de direccionamiento.
- Lista de archivos abiertos.
- Prioridad del proceso.
- Relaciones: Información sobre el proceso padre e hijos.
- Información estadística: Tiempos de ejecución y uso de recursos.
Interbloqueo (Deadlock)
Se define como un conjunto de procesos donde cada uno se encuentra bloqueado esperando un evento (como la liberación de un recurso) que solo puede ser provocado por otro proceso dentro del mismo conjunto. Debido a esta dependencia mutua, los procesos no pueden salir de este estado por sí mismos.
Condiciones necesarias para el Deadlock
Para que ocurra un interbloqueo, deben cumplirse simultáneamente estas cuatro condiciones:
- Exclusión mutua: Los procesos tienen el control exclusivo de los recursos.
- Retención y espera: Los procesos mantienen recursos ya asignados mientras esperan la concesión de otros nuevos.
- No apropiación: Los recursos no pueden ser arrebatados; deben ser liberados voluntariamente por el proceso que los posee.
- Espera circular: Existe una cadena circular de procesos en la que cada uno espera un recurso sostenido por el siguiente eslabón de la cadena.
Definiciones del Sistema Operativo (SO)
El Sistema Operativo puede entenderse desde dos perspectivas principales:
- Desde el punto de vista del Usuario: "Es un conjunto de programas y funciones que ocultan los detalles del hardware, ofreciendo una vía sencilla y flexible de acceso al mismo".
- Desde el punto de vista del Administrador: "Es el administrador de los recursos ofrecidos por el hardware para alcanzar un eficaz rendimiento de los mismos".
El concepto de Abstracción
El SO crea abstracciones eficientes (como procesos, archivos, etc.) para luego implementarlas y administrarlas, escondiendo la complejidad y las irregularidades del hardware subyacente.
Planificador (Scheduler)
El Scheduler es el componente del Sistema Operativo encargado de repartir el tiempo de uso de la CPU entre los procesos que se encuentran en estado de listo.
Objetivos del Scheduler
- Garantizar la justicia en el reparto de CPU.
- Maximizar el throughput (rendimiento).
- Asegurar la predecibilidad del sistema.
- Minimizar la sobrecarga (overhead) producida por los cambios de contexto.
- Mantener el equilibrio en el uso de los recursos.
- Respetar las prioridades establecidas.
Sistema de Archivos (File System - FS)
Es el componente del SO que administra el almacenamiento secundario (disco), gestionando cuentas, dueños, permisos y una estructura jerárquica de datos.
Funciones principales del FS
- Crear, modificar y eliminar archivos.
- Compartir recursos con acceso controlado.
- Mantener una jerarquía de directorios.
- Realizar copias de respaldo (backup).
- Gestionar nombres simbólicos.
- Proveer mecanismos de cifrado.
Modelos de Servicio en la Nube
- IaaS (Infraestructura como Servicio): Provisión de recursos fundamentales como CPU, almacenamiento y red bajo demanda.
- PaaS (Plataforma como Servicio): Ofrece hardware y una plataforma de software; el desarrollador solo se encarga de desarrollar y ejecutar su aplicación.
- SaaS (Software como Servicio): Aplicación desplegada en un hosting y accesible mediante un navegador; generalmente se accede mediante el pago de una suscripción.
Ejemplos de Implementación y Concurrencia
El Problema de los Filósofos (Uso de Semáforos)
Para evitar el deadlock en el clásico problema de los filósofos, se puede utilizar un semáforo contador para el comedor:
Palitos: array[0..4] of semáforo // cada uno inicializado en 1
Comedor: semáforo // inicializado en 4 ← evita el deadlock
Proc Filosofo(i):
izq = i;
der = (i + 1) mod 5;
While true do
Pensar // actividad asincrónica
P(comedor);
P(palitos[izq]);
P(palitos[der]);
Comer // actividad sincrónica
V(palitos[der]);
V(palitos[izq]);
V(comedor);Implementación de Tareas (Ada)
A continuación, se presenta una estructura de tarea para la gestión de procesos vecinos:
task type Vecino is
entry Start (N : Integer);
end Vecino;
task body Vecino is
id : Integer;
begin
accept Start (N : Integer) do
id := N;
end Start;
patio.P;
Put_Line ("Empieza " & Integer'Image (id));
delay 2.0;
Put_Line ("Finaliza " & Integer'Image (id));
patio.V;
end Vecino;