Proceso S

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

Melanie Espinoza Salazar

Martes 23 de enero, 2024

PROCESOS
Definición de procesos en el ámbito de sistemas operativos
Es un programa que se está ejecutando. Un proceso es la unidad de trabajo de un sistema.
Mientras que un programa es una entidad estática, un proceso es una entidad dinámica. Un
proceso está formado por: un programa ejecutable, unos datos, un contexto de ejecución,
registro de la CPU, otra información.
El sistema operativo ve al proceso como una unidad que se va ejecutando y evolucionando
entre distintos estados. El estado global del sistema está constituido por el estado en el que
se encuentran todos los procesos y recursos del sistema.
En resumen, un proceso en el ámbito de sistemas operativos es la instancia activa de un
programa en ejecución, con su propio espacio de memoria y recursos asignados. La gestión
de procesos es una función esencial del sistema operativo para garantizar un funcionamiento
eficiente y ordenado del sistema.

Estados de un proceso: describir cada uno de ellos


Nuevo (new): Cuando el proceso es creado.
Ejecutando (running): El proceso tiene asignado un procesador y está ejecutando sus
instrucciones.
Bloqueado (waiting): El proceso está esperando por un evento (que se complete un
pedido de E/S o una señal).
Listo (ready): El proceso está listo para ejecutar, solo necesita del recurso procesador.
Finalizado (terminated): El proceso finalizó su ejecución.

Información que se asocia a un proceso


la información asociada a un proceso es fundamental para la gestión y ejecución de programas.
A continuación, se presentan algunas de las principales piezas de información que se asocian
comúnmente a un proceso:
1. Identificación del Proceso:
 ID de Proceso (PID): Un número único que identifica de manera exclusiva un
proceso en el sistema.
2. Estado del Proceso:
 En ejecución (Running): Indica que el proceso está siendo ejecutado por la
CPU.
 Listo (Ready): El proceso está en espera de ser asignado a la CPU.
 Bloqueado (Blocked): El proceso está temporalmente detenido debido a alguna
condición (por ejemplo, espera de entrada/salida).
3. Recursos Asignados:
 Registros de la CPU: Contienen el estado actual de la CPU para el proceso.
 Memoria: Dirección de inicio, límites y otros atributos asociados con el
espacio de memoria del proceso.
 Archivos Abiertos: Lista de archivos que el proceso tiene abiertos.
4. Programa y Datos:
 Código del Programa: La secuencia de instrucciones que constituyen el
programa.
 Datos: Áreas de memoria que contienen variables y estructuras de datos.
5. Prioridad y Planificación:
 Prioridad del Proceso: Número que indica la prioridad relativa del proceso en
relación con otros procesos en el sistema.
 Planificación: Información sobre cómo el sistema operativo decide asignar
tiempo de CPU a cada proceso.
6. Control de Procesos:
 Padre e Hijo: Identificación del proceso padre (proceso que lo creó) y los
procesos hijos (si los hay).
 Señales: Mecanismo de comunicación entre procesos.
7. Manejo de Archivos:
 Directorio de Trabajo: Directorio en el sistema de archivos asociado con el
proceso.
 Descriptores de Archivos: Identificadores que representan archivos abiertos
por el proceso.
8. Estadísticas de Desempeño:
 Tiempo de CPU utilizado: Cuánto tiempo de CPU ha consumido el proceso.
 Tiempo de ejecución: Cuánto tiempo ha estado en ejecución el proceso.
9. Información de Red:
 Puertos y Conexiones: Si el proceso está involucrado en operaciones de red,
puede tener asociados puertos, conexiones, etc.
10. Entorno de Ejecución:
 Variables de Entorno: Conjunto de variables que afectan el comportamiento
del proceso.

Definición de hilos
Un hilo es una unidad básica de utilización de CPU, la cual contiene un id de hilo, su propio
contador de programa, un conjunto de registros, y una pila; que se representa a nivel del sistema
operativo con una estructura llamada TCB (thread control block). Los hilos comparten con otros
hilos que pertenecen al mismo proceso la sección de código, la sección de datos, entre otras
cosas. Si un proceso tiene múltiples hilos, puede realizar más de una tarea a la vez (esto es real
cuando se posee más de un CPU).

Patrones de trabajo con hilos: describir cada patrón


Hilos a nivel de usuario y de kernel: Hasta ahora hemos hablado de los hilos en sentido
genérico, pero a nivel práctico los hilos pueden ser implementados a nivel de usuario o a nivel
de kernel.
Hilos a nivel de usuario: son implementados en alguna librería. Estos hilos se gestionan sin
soporte del SO, el cual solo reconoce un hilo de ejecución.
Hilos a nivel de kernel: el SO es quien crea, planifica y gestiona los hilos. Se reconocen tantos
hilos como se hayan creado.
Los hilos a nivel de usuario tienen como beneficio que su cambio de contexto es más sencillo
que el cambio de contexto entre hilos de kernel. A demás, se pueden implementar aún si el SO
no utiliza hilos a nivel de kernel. Otro de los beneficios consiste en poder planificar diferente a
la estrategia del SO.
Existen 3 formas para establecer la relación
• Modelo Mx1 (Many to one)
El modelo asigna múltiples hilos de usuario a un hilo del kernel. Este caso se corresponde a los
hilos implementados a nivel de usuario, ya que el sistema solo reconoce un hilo de control para
el proceso. Tiene como inconveniente que, si un hilo se bloquea, todo el proceso se bloquea.
También, dado que solo un hilo puede acceder al kernel cada vez, no podrán ejecutarse varios
hilos en paralelo en múltiples CPUs.
• Modelo 1x1 (one to one)
El modelo asigna cada hilo de usuario a un hilo del kernel. Proporciona una mayor concurrencia
que el modelo anterior, permitiendo que se ejecute otro hilo si uno se bloqueó. Tiene como
inconveniente que cada vez que se crea un hilo a nivel de usuario, se crea un hilo a nivel del
kernel, y la cantidad de hilos a nivel del kernel están restringidos en la mayoría de los sistemas.

• Modelo MxN (many to many)


El modelo multiplexa muchos hilos de usuario sobre un número menor o igual de hilos del
kernel. Cada proceso tiene asignado un conjunto de hilos de kernel, independientemente de la
cantidad de hilos de usuario que haya creado. No posee ninguno de los inconvenientes de los
dos modelos anteriores, ya que saca lo mejor de cada uno. El usuario puede crear tantos hilos
como necesite y los hilos de kernel pueden ejecutar en paralelo. Asimismo, cuando un hilo se
bloquea, el kernel puede planificar otro hilo para su ejecución. Entonces, el planificador a nivel
de usuario asigna los hilos de usuario a los hilos de kernel, y el planificador a nivel de kernel
asigna los hilos de kernel a los procesadores.
Patrones de trabajo con hilos.
Hay tres patrones en los que caen generalmente los modelos de hilos; se puede emplear más de
uno de estos patrones en diferentes áreas de cada aplicación, e incluso se pueden anidar (esto es,
se podría tener una línea de ensamblado dentro de la cual uno de los pasos sea un equipo de
trabajo):
a) Jefe/Trabajador: Un hilo tiene una tarea distinta de todos los demás: el hilo jefe genera o
recopila tareas para realizar, las separa y se las entrega a los hilos trabajadores. Este modelo es
el más común para procesos que implementan servidores (es el modelo clásico del servidor Web
Apache) y para aplicaciones gráficas (GUI), en que hay una porción del programa (el hilo jefe)
esperando a que ocurran eventos externos. El jefe realiza poco trabajo, se limita a invocar a los
trabajadores para que hagan el trabajo de verdad; como mucho, puede llevar la contabilidad de
los trabajos realizados. Típicamente, los hilos trabajadores realizan su operación, posiblemente
notifican al jefe de su trabajo, y finalizan su ejecución.
b) Equipo de trabajo: Al iniciar la porción multihilos del proceso, se crean muchos hilos
idénticos, que realizarán las mismas tareas sobre diferentes datos. Este modelo es
frecuentemente utilizado para cálculos matemáticos (p. ej.: criptografía, render, álgebra lineal).
Puede combinarse con un estilo jefe/trabajador para irle dando al usuario una previsualización
del resultado de su cálculo, dado que éste se irá ensamblando progresivamente, pedazo por
pedazo.
c) Línea de Ensamblado: Si una tarea larga puede dividirse en pasos sobre bloques de la
información total a procesar, cada hilo puede enfocarse a hacer sólo un paso y pasarle los datos
a otro hilo conforme vaya terminando. Una de las principales ventajas de este modelo es que
ayuda a mantener rutinas simples de comprender, y permite que el procesamiento de datos
continúe, incluso si parte del programa está bloqueado esperando E/S. Un punto importante a
tener en cuenta en una línea de ensamblado es que, si bien los hilos trabajan de forma
secuencial, pueden estar ejecutándose paralelamente sobre bloques consecutivos de información
y eventos.

También podría gustarte