Buscar este blog

viernes, 20 de enero de 2017

Estado de los procesos

Un proceso puede informalmente entenderse como un programa en ejecución. Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados. Cada proceso tiene su contador de programa, registros y variables, aislados de otros procesos, incluso siendo el mismo programa en ejecución 2 veces. Cuando este último caso sucede, el sistema operativo usa la misma región de memoria de código, debido a que dicho código no cambiará, a menos que se ejecute una versión distinta del programa.


Bloque de control de los procesos

El bloque de control del proceso (BCP) o en inglés PCB (Process Control Block) es un registro especial donde el sistema operativo agrupa toda la información que necesita conocer respecto a un proceso particular. Cada vez que se crea un proceso el sistema operativo crea el BCP correspondiente para que sirva como descripción en tiempo de ejecución durante toda la vida del proceso.
Identificador del proceso (Process Identificator -PID-, de sus siglas en inglés).
Estado del proceso. Por ej.: listo, en espera, bloqueado.
Contador de programa: dirección de la próxima instrucción a ejecutar.
Valores de registro de CPU. Se utilizan también en el cambio de contexto.
Espacio de direcciones de memoria.
Prioridad en caso de utilizarse dicho algoritmo para planificación de CPU.
Lista de recursos asignados (incluyendo descriptores de archivos y sockets abiertos).
Estadísticas del proceso.
Datos del propietario (owner).
Permisos asignados.
Sígnales pendientes de ser servidos. (Almacenados en un mapa de bits).





Operaciones sobre los procesos

Entre las operaciones sobre procesos que con mayor frecuencia ofrecen los sistemas operativos se encuentran la creación, terminación o destrucción, suspensión y reanudación de procesos. Actualmente, en la mayoría de los S.O., los procesos pueden ejecutarse de forma concurrente, pudiéndose crear y eliminar de forma dinámica, por lo que es necesario que estos sistemas brinden un mecanismo para la creación y terminación de procesos.




Planificación de los procesos

La planificación, bajo el enfoque estratégico, es concebida como un proceso mediante la cual los decisores en una organización, analizan y procesan información de su entorno interno y externo, evaluando las diferentes situaciones vinculadas a la ejecutoria organizacional para prever y decidir sobre la direccionalidad futura.




Comunicación y sincronización de los procesos

Los procesos que ejecutan de forma concurrente en un sistema se pueden clasificar como procesos independientes o cooperantes. Un proceso independiente es aquel que ejecuta sin requerir la ayuda o cooperación de otros procesos. Un claro ejemplo de procesos independientes son los diferentes intérpretes de mandatos que se ejecutan de forma simultánea en un sistema. Los procesos son cooperantes cuando están diseñados para trabajar conjuntamente en alguna actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos. Y se pueden sincronizar de la siguiente forma:

1·         Manejo de la exclusión mutua.
2·        Caracterización y administración de la Sección crítica de un proceso.
3·         Definiciones de Dijkstra.
4·         Condiciones de Carrera.
5·         Herramientas de sincronización de procesos en sistemas centralizados: semáforos y monitores.
6·         Definición, ejemplos y aplicaciones.
7·         Herramientas de sincronización avanzadas: pasaje de mensajes.
8·         Operaciones send y receive, sincrónicas y asincrónicas.

9·         Uso de buzones..


Que son los procesos concurrentes

Como los procesos en un sistema concurrente pueden interactuar entre ellos mismos mientras se están ejecutando, el número de posibles rutas de ejecución en el sistema puede ser extremadamente grande, y el resultado final puede ser indeterminado. El concurrente uso de recursos compartidos puede ser una fuente de indeterminación dirigida a asuntos como Bloqueo mutuo, y starvation.


Definición y tipos de interruciones

Una interrupción es una suspensión temporal de la ejecución de un proceso, para pasar a ejecutar una subrutina de servicio de interrupción, la cual, por lo general, no forma parte del programa, sino que pertenece al sistema operativo o al BIOS. Una vez finalizada dicha subrutina, se reanuda la ejecución del programa.


Tipos de interrupciones:



1- Interrupciones hardware: Estas son asíncronas a la ejecución del procesador, es decir, se pueden producir en cualquier momento independientemente de lo que esté haciendo la CPU en ese momento. Las causas que lo producen son externas al procesador y a menudo suelen estar ligadas con distintos dispositivos de E/S.

2- Traps : Son aquellas que se producen de forma síncrona a la ejecución del procesador y por tanto podrían predecirse si se analiza con detenimiento la traza del programa que en ese momento estaba siendo ejecutado en la CPU. Normalmente las causas de estas interrupciones suelen ser realizaciones de operaciones no permitidas tales como la división por 0, el desbordamiento, el acceso a una posición de memoria no permitida, etc.

3-Interrupciones software o excepciones: A menudo se tiende a confundir las interrupciones software y las trampas, ya que su naturaleza es bastante similar. Sin embargo las excepciones se producen al realizar una operación no permitida por lo que de algún modo podemos decir que no es controlada directamente por el programador sino que, por un fallo al programar, se producen. No obstante las trampas sí que son provocadas por el programador. Para provocar una trampa existen distintas instrucciones en el código máquina que permiten al programador producir una interrupción al ejecutar dicha instrucción. Suelen tener nemotécnicos tales como INT. Suelen ser de vital importancia ya que a partir de las trampas se pueden pedir al SO que realice determinadas funciones, para ello, en DOS se realiza la instrucción INT 0x21 y en Unix se utiliza INT 0x80