GESTIÓN DE PROCESOS
DEFINICIÓN:
La definición es la siguiente: “Un proceso es
básicamente un entorno formado por todos los recursos necesarios para ejecutar
programas. Desde el punto de vista del SO, un proceso es un objeto más que hay
que gestionar y al cual hay que dar servicio”.
Podemos decir que un programa es una entidad
pasiva, en tanto en cuanto es un conjunto de instrucciones de código máquina y
datos almacenados en un ejecutable. Mientras que un proceso sería la ejecución
de ese programa, es decir, el programa en acción. Esto indica que los procesos
son dinámicos, están en constante cambio debido a estos recursos necesarios, ya
que al intentar realizar algún tipo de acción puede ser que tenga que
permanecer a la espera de que dicho recurso esté disponible, por ejemplo una
petición de lectura del disco duro, y que el brazo lector del disco duro lo
esté utilizando otro proceso.
Como se puede
observar en el compilador de C++ se tiene los comandos escritos, pero el
desarrollo del proceso no está en ejecución. Por tanto es el desarrollo de un PROGRAMA y en un concepto general podemos decir que un PROGRAMA es un conjunto de comandos que
se encuentran de forma estática antes ser ejecutado.
En el gráfico ya se puede apreciar la acción de tarea que está en ejecución. Por tanto en otros términos es un Programa en Ejecución.
Ejemplo de un Concepto de proceso
¡Nuestro chef puede tener varios
pasteles a medio hacer!
Prueba el ejemplo: abre 2
terminales y ejecuta en uno ls -lR / y en otro ls -lR /usr. Tenemos dos
procesos ejecutando el mismo programa /bin/ls.
En este caso (lo habitual) cada
proceso es secuencial.
Concurrencia: su ejecución parece
simultánea pero, en realidad, la CPU salta de uno a otro (como nuestro sufrido
cocinero). Es lo que llamamos sistema operativo multitarea.
Mientras ejecuta un proceso, el
otro está en espera.
Cuando hay varias CPUs podemos
tener ejecución paralela. Pero cada CPU sólo puede ejecutar un proceso a la
vez. Normalmente número de procesos > número de CPUs.
Más adelante veremos procesos que
internamente también son concurrentes. Utilizan hebras (threads) de ejecución.
Estados de un proceso
En
un sistema multiprogramado o multitarea donde existen muchos procesos y un
procesador, puede ocurrir que en un momento dado sólo se ejecute un proceso o
varios y los demás estén esperando a ser procesado o esperen la finalización de
una operación de E/S. Los pasos por los que puede pasar un proceso se pueden
representar con un diagrama de estado como el de la figura siguiente . Así se
puede apreciar que a medida que un proceso se ejecuta va cambiando de estado
dependiendo de las preferencias que cada uno tengan asignadas, por lo que será
el procesador el que se encargue de ejecutar unos u otros.
Cómo
se aprecia en la imagen los estados por los que puede pasar un proceso y son
los siguientes:
Nuevo. En los sistemas operativos
hay varias razones por las que se crea un proceso. Entre éstas se pueden
destacar; la inicialización del sistema, cuando se arranca el sistema se
generan una serie de procesos ya bien sean para interactuar con el usuario o
procesos en segundo plano con una función específica, como por ejemplo el
aceptar la solicitud de una página web que está en dicha máquina; ejecución de
una llamada al sistema por parte de otro proceso, un proceso puede requerir la
descarga de ficheros, por lo que serán otros procesos los que se encarguen de
ubicar el archivo o archivos en la ubicación específica; por medio de la acción
de un usuario, por ejemplo al hacer doble clic en un icono; mediante el inicio
de un trabajo por lotes.
Una vez el proceso ha sido creado
queda a la espera de ser admitido, por lo que si es así pasaría a estado
preparado o en caso contrario terminaría dicho proceso.
- Preparado (ready o listo). Un
proceso en este estado está esperando a que se le asigne un procesador. Como se
puede apreciar en la figura 4, un proceso en este estado puede, o bien
finalizar, lo que ocurriría por la acción de otro proceso o por algún
acontecimiento externo, o bien el proceso pasa al estado ejecución, ya que el
gestor de procesos le asigna una CPU para ser ejecutado.
- Ejecución (run). El proceso en
este estado está en la CPU ejecutando instrucciones. Puede ocurrir tres
situaciones; que el proceso ejecute todas las instrucciones hasta su última
línea de código y finaliza; pasa a estado bloqueado (wait) por que espera una
acción externa como la entrada de información por teclado; o bien el proceso
pasa a estado preparado debido a que ha agotado su tiempo de ejecución, por lo
que cede su tiempo de ejecución.
- Bloqueado (wait, en espera). El proceso está
esperando a que se produzca un evento externo, como una señal de E/S, y pasaría
a estado ejecución. Al igual que el estado preparado, el proceso puede
finalizar debido a un acontecimiento externo.
El
sistema operativo utiliza varias colas para gestionar los estados, cada cola
puede tener una política diferente. Así, podemos encontrar una cola para los
estados preparados y una cola para los estados en espera. El planificador del
procesador al examinar estas colas asigna el procesador al proceso más
conveniente.
Ejemplo de Estados de un Proceso
Terminología:
- preparado o listo (ready)
- corriendo o en ejecución (running)
- bloqueado (blocked) o dormido (asleep) o en espera (waiting).
- suspender (swap out) = enviar el proceso a área de intercambio (swap)
- reanudar (swap in) = traer el proceso desde área de intercambio a memoria
TIPOS DE PROCESOS
Existen dos tipos de procesos, aquellos que se ejecutan en modo Kernel y aquellos que se ejecuta en modo usuario.
Modo Kernel o proceso de Núcleo.-
- Son mas lentos por las llamadas al sistema que realiza
- Es mas seguro por la integridad que representa
- Su modo de ejecución es privilegiado
- Es una parte fundamental de Sistema Operativo
Modo Usuario.-
- Ciertas instrucciones están prohibidas
- Solo tiene acceso a las zonas de memoria que se le han asignado
- No puede interactuar con el Hardware
- No posee ningún privilegio
Tipos de procesos
Podemos clasificarlos en función de distintos
criterios.
Según su diseño:
Reutilizables: se cargan en
memoria cada vez que se usan. Los programas de usuario suelen ser de este tipo.
Reentrantes: se carga una sola
copia del código en memoria. Cada vez que se usan se crea un nuevo proceso con
su zona de datos propia, pero compartiendo el código.
Según su acceso a CPU y recursos:
Apropiativos: acceden a los
recursos y sólo los abandonan de forma voluntaria (mediante instrucción CPU).
No apropiativos: permiten a otros
procesos apropiarse de los recursos que ahora poseen.
Según su permanencia en memoria:
Residentes: tienen que permanecer
en memoria durante toda su evolución (desde creación hasta terminación).
Intercambiables (swappable): es
lo más normal. El SO puede decidir llevarlos a disco a lo largo de su evolución
Privilegiados: se ejecutan en
modo supervisor.
No privilegiados: los que
normalmente ejecuta el usuario.
Según su propietario:
Procesos de usuario: son los
diseñados por los usuarios. Se ejecutan en modo no protegido.
Procesos del sistema: son los que
forman parte del SO (de E/S, de planificación de otros procesos, etc).
Comunicacion entre Procesos
Se conoce por Comunicación entre procesos ó InterProcess Communication
(IPC) al conjunto de mecanismos claves en la comparación de datos
(intercomunicación) y sincronizar entre distintos procesos.
Una función básica de los sistemas operativos es
que provee un mecanismo que permite a los procesos comunicarse y sincronizarse
entre sí.
Es un sistema, los procesos pueden ejecutarse
independientemente o cooperando entre sí. Los intérpretes de comandos son
ejemplos típicos de procesos que no precisan la cooperación de otros para
realizar sus funciones. En cambio, los procesos que sí cooperan necesitan
comunicarse entre sí para poder completar sus tareas.
- Compartir información: Ante una eventual necesidad que múltiples usuarios necesiten la misma información (Archivo compartido), se debe proveer un entorno que habilite el acceso concurrente a dicha información
- Acelerar los cálculos: Al desear que una tarea se ejecute más rápido, se divide en subtareas, implementando un paralelismo de ejecución entre sí. Esto se consigue con computadoras de múltiples elementos de procesamiento, ya sea a nivel de cpu’s o canales de E/S.
- Modularidad: Al querer construirse un sistema de forma modular, se necesita dividir la información del sistema en distintos procesos, o hebras.
- Conveniencia: Ya sea para un solo usuario, puede éste querer trabajar en varias tareas simultáneamente. Por ejemplo usando editor de texto, escuchando música e imprimiendo al mismo tiempo.
La comunicación entre procesos puede estar motivada
por la competencia o el uso de recursos compartidos o porque varios procesos
deban ejecutarse sincronizada mente para completar una tarea.
Para que puedan realizarse ambos tipos de
interacciones, es necesario que el sistema operativo provea de servicios para
posibilitar la comunicación entre procesos.
El sistema operativo provee mínima mente dos
primitivas, "enviar" y "recibir", normalmente
llamadas send y receive. Asimismo, debe
implementarse un enlace de comunicación entre los procesos de la comunicación (pipe).
Este enlace puede ser unidireccional o multidireccional según permita la
comunicación en uno o en varios sentidos.
Problemas Clasicos de Comunicacion Entre Procesos
Para dar inicio a esta parte del tema, proporcionaré una pequeña introducción de la Comunicación entre Procesos. Básicamente sabemos que cuando los procesos se ejecutan de forma concurrente en un sistema operativo esto se puede clasificar como INDEPENDIENTES Y COOPERANTES, un proceso independiente es aquel que se ejecuta sin requerir ayuda o la cooperación de otros procesos y los procesos cooperantes son los que están diseñados para trabajar conjuntamente en alguna actividad que para trabajar deben ser capaces de comunicarse e interactuar entre ellos. Independientemente si los procesos son cooperantes e independientes estos pueden necesitar alguna interacción entre ellos y esta puede ser la interacción motivada porque los procesos comparten o compiten por el acceso a recursos físicos o lógicos o pueden ser interacciones motivadas porque los procesos se comunican y se sincronizan entre si para alcanzar un objetivo en común.
Estas interacciones obligan al sistema operativo a incluir mecanismos de servicios que permitan la comunicación y sincronización entre estos procesos.
El problema de la sección crítica
La característica más importante de este sistema es la porción de códigos de un programa de un computador en la cual se accede a un recurso compartido como una estructura de datos o dispositivos que no debe ser accedido por más de un proceso en ejecución. Este es uno de los problemas que con mayor frecuencia aparece cuando se ejecutan procesos concurrentes tanto si son cooperantes como independientes. Considérese un sistema compuesto por n procesos {P1, P2, ..., PN} en el que cada uno tiene un fragmento de código, que se denomina sección crítica. Dentro de la sección crítica, los procesos pueden estar accediendo y modificando variables comunes, registros de una base de datos, un archivo, en general cualquier recurso compartido.
Para resolver el problema de la sección crítica es necesario utilizar algún mecanismo de sincronización que permita a los procesos cooperar entre ellos sin problemas. Este mecanismo debe proteger el código de la sección crítica y su funcionamiento básico es el siguiente:
Cada proceso debe solicitar permiso para entrar en la sección crítica mediante algún fragmento de código, que se denomina de forma genérica entrada en la sección crítica.
Cuando un proceso sale de la sección crítica debe indicarlo mediante otro fragmento de código, que se denomina salida de la sección crítica. Este fragmento permitirá que otros procesos entren a ejecutar el código de la sección crítica.
El problema del productor-consumidor
Este problema es uno de los problemas más habituales que surge cuando se programan aplicaciones utilizando procesos concurrentes. En este tipo de problemas, uno o más procesos, que se denominan productores, generan cierto tipo de datos que son utilizados o consumidos por otros procesos, que se denominan consumidores. Un claro ejemplo de este tipo de problemas es el del compilador que se describió anteriormente. En este ejemplo el compilador hace las funciones de productor al generar el código ensamblador que consumirá el proceso ensamblador para generar el código máquina.
En esta clase de problemas es necesario disponer de algún mecanismo de comunicación que permita a los procesos productor y consumidor intercambiar información. Ambos procesos, además, deben sincronizar su acceso al mecanismo de comunicación para que la interacción entre ellos no sea problemática: cuando el mecanismo de comunicación se llene, el proceso productor se deberá quedar bloqueado hasta que haya hueco para seguir insertando elementos.
A su vez, el proceso consumidor deberá quedarse bloqueado cuando el mecanismo de comunicación este vacío, ya que en este caso no podrá continuar su ejecución al no disponer de información a consumir. Por tanto, este tipo de problema requiere servicios para que los procesos puedan comunicarse y servicios para que se sincronicen a la hora de acceder al mecanismo de comunicación.
A su vez, el proceso consumidor deberá quedarse bloqueado cuando el mecanismo de comunicación este vacío, ya que en este caso no podrá continuar su ejecución al no disponer de información a consumir. Por tanto, este tipo de problema requiere servicios para que los procesos puedan comunicarse y servicios para que se sincronicen a la hora de acceder al mecanismo de comunicación.
El problema de los lectores-escritores
En este problema existe un determinado objeto, que puede ser un archivo, un registro dentro de un archivo, etc., que va a ser utilizado y compartido por una serie de procesos concurrentes. Algunos de estos procesos sólo van a acceder al objeto sin modificador, mientras que otros van a acceder al objeto para modificar su contenido. Esta actualización implica leerlo, modificar su contenido y escribirlo.
A los primeros procesos se les denomina lectores y a los segundos se les denomina escritores. En este tipo de problemas existe una serie de restricciones que han de seguirse: • Sólo se permite que un escritor tenga acceso al objeto al mismo tiempo.
Mientras el escritor esté accediendo al objeto, ningún otro proceso lector ni escritor podrá acceder a él.
Se permite, sin embargo, que múltiples lectores tengan acceso al objeto, ya que ellos nunca van a modificar el contenido del mismo. En este tipo de problemas es necesario disponer de servicios de sincronización que permitan a los procesos lectores y escritores sincronizarse adecuadamente en el acceso al objeto.
A los primeros procesos se les denomina lectores y a los segundos se les denomina escritores. En este tipo de problemas existe una serie de restricciones que han de seguirse: • Sólo se permite que un escritor tenga acceso al objeto al mismo tiempo.
Mientras el escritor esté accediendo al objeto, ningún otro proceso lector ni escritor podrá acceder a él.
Se permite, sin embargo, que múltiples lectores tengan acceso al objeto, ya que ellos nunca van a modificar el contenido del mismo. En este tipo de problemas es necesario disponer de servicios de sincronización que permitan a los procesos lectores y escritores sincronizarse adecuadamente en el acceso al objeto.
Comunicación cliente-servidor
En el modelo cliente-servidor, los procesos llamados servidores ofrecen una serie de servicios a otros procesos que se denominan clientes. El proceso servidor puede residir en la misma máquina que el cliente o en una distinta, en cuyo caso la comunicación deberá realizarse a través de una red de interconexión. Muchas aplicaciones y servicios de red, como el correo electrónico y la transferencia de archivos, se basan en este modelo.
En este tipo de aplicaciones es necesario que el sistema operativo ofrezca servicios que permitan comunicarse a los procesos cliente y servidor. Cuando los procesos ejecutan en la misma máquina, se pueden emplear técnicas basadas en memoria compartida o archivos. Sin embargo, este modelo de comunicación suele emplearse en aplicaciones que ejecutan en computadores que no comparten memoria y, por tanto, se usan técnicas basadas en paso de mensajes.
Bloque de Control del Sistema
Un primer grupo de datos es general para todos
los procesos.
Definición (Bloque de Control del Sistema)
(en inglés System Control
Block, SCB) es un conjunto de estructuras de datos que usa el SO para gestionar
la ejecución de los procesos.
El SCB normalmente incluye:
Lista de descriptores de
procesos.
Puntero al descriptor de proceso
que está usando la CPU.
Punteros a colas de procesos que
se encuentran en distintos estados. Ejemplo: procesos en espera.
Puntero a la cola de descriptores
de recursos.
Identificadores de las rutinas
para tratar interrupciones hardware o software y errores indeseados.
Un ejemplo de valores de interrupción:
Nivel
|
Evento
Software
|
0
|
Proceso de usuario
|
1
|
Planificación de procesos
|
2
|
Temporización
|
3 a 10
|
Drivers de E/S
|
11 a 15
|
Otros
|
Nivel
|
Evento
Hardware
|
16 a 23
|
Interrupciones de
dispositivos
|
24
|
Reloj interno
|
25 a 29
|
Errores de:
|
- Procesador
|
|
- Memoria
|
|
- Buses
|
|
30
|
Fallo de tensión
|
31
|
Pila (stack) del núcleo errónea
|
Además, el SO gestiona una tabla
de procesos donde guarda la información de cada uno. Cada entrada de esa tabla
se llama . . .
Definición (Bloque de Control de Proceso)
(en inglés Process Control
Block, PCB) son los datos particulares de cada proceso que usa el SO para
gestionarlo.
El PCB normalmente incluye información de:
Identificación:
I id. del
proceso
I id. del proceso padre (si hay jerarquía de
procesos; ej. UNIX)
I id. del usuario
y grupo del propietario.
Planificación:
I Estado del
proceso
I Si estado=bloqueado, el evento por el que espera
el proceso
I Prioridad del
proceso
I Otra
información usada por el algoritmo de planificación: contadores, colas, etc.
Punteros a segmentos de memoria asignados:
I Segmento
de datos
I Segmento
de código
I Segmento
de pila
Recursos asignados:
I Archivos
abiertos: tabla de descriptores o “manejadores” de archivos (file descriptors /
file handles).
I Puertos de
comunicación asignados
Punteros para organizar los
procesos en colas.
Información para comunicación
entre procesos: señales, mensajes.
Un proceso es como un cuchillo, por si solo no hace nada, depende de un usuario para que sea una herramienta (utilitario) o un arma (malware).
ResponderEliminarAldo tu comparación general es un buen ejemplo, ya que el proceso no depende de sis mismo.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarEl proceso es una labor muy importante para el sistema operativo, ya que esta gestión podemos realizar la por medio de la interfaces gráfica o la interfaces de comando.
ResponderEliminarsolo una duda
ResponderEliminarexisten procesos que se ejecsutan automaticamente estos procesos pueden ser desactivados o son necesarios para el funcionamiento del equipo
por ejemplo en un celular las actualizaciones algunas son automaticas pero las puedes hacer manuales
La mayor parte hace el usuario y solo la computadora recibe y guarda eso también es un proceso o me equivoco??
ResponderEliminarPara saber un poco más de procesos le dejo este link
ResponderEliminarhttps://sites.google.com/site/sisoper1/home/gestion-de-procesos
Cuando necesites tomar una decisión recuerda algo simple que los sistemas operativos nos enseñaron:
ResponderEliminarEspera(piensa), Ejecuta(actúa) y Bloquea(espera resultados)
Tan simple como esos tres pasos puedes emepzar a hacer las decisiones en tu vida, evoluciona...
Así como estas tres faces principales de un proceso el sistema operativo creo muchas faces que al implementarlas a las primeras lograron optimizar muchas de las operaciones complejisimas dentro del procesador.
La gestión de procesos de los sistemas operativos son el inicio de cualquier actividad en el interfaz usuario maquina ,mediante esta gestión de procesos podemos ver los pasos que se realizan para la realización de cualquier actividad, es muy importante conocer el tema
ResponderEliminarNo todos los procesos son visibles a los usuarios
Eliminarel hecho de que el sistema operativo divida a cada proceso en partes de un bloque enseña cuan importante es el ORDEN en las cosas cada acción de la ejecución de un procesos esta realizada al detalle dejando un margen de error muy muy mínimo y ahora considerar que también el son ordenadores multitareas refleja el detalle con el que cada procesos esta realizado para gusto del usuario
ResponderEliminarLa protección de acceso se trata de un mecanismo para el control de los intentos de entrada o acceso al sistema, de tal forma que permita la conexión cuando un usuario lo solicite y pase el control correspondiente
ResponderEliminarEl sistema de archivos JFS2 que se entrega con el AIX da soporte a dos tipos AIXC y NFS4
EliminarAclarando una descripccion importantes, hablaremos un poco sobre el area swap:
ResponderEliminarEn informática, el espacio de intercambio (También conocido como Archivo de paginación o Memoria Virtual -Entendiendo por memoria la RAM-) es una zona del disco (un fichero o partición) que se usa para guardar las imágenes de los procesos que no han de mantenerse en memoria física. A este espacio se le suele llamar swap, del inglés "intercambiar".
La mayoría de los sistemas operativos modernos poseen un mecanismo llamado memoria virtual, que permite hacer creer a los programas que tienen más memoria que la disponible realmente. Como en realidad no se tiene físicamente toda esa memoria, algunos procesos no podrán ser ubicados en la memoria RAM.
En este caso es cuando es útil el espacio de intercambio: el sistema operativo puede buscar un proceso poco activo, y moverlo al área de intercambio (el disco duro) y de esa forma liberar la memoria principal para cargar otros procesos. Mientras no haga falta, el proceso extraído de memoria puede quedarse en el disco, ya que ahí no utiliza memoria física. Cuando sea necesario, el sistema vuelve a hacer un intercambio, pasándolo del disco a memoria RAM. Es un proceso lento (comparado con usar sólo la memoria RAM), pero permite dar la impresión de que hay más memoria disponible.
Es importante señalar que un proceso es un programa en ejecucion, asi es mas facil de entender que es un proceso
ResponderEliminarEstos sistemas permiten identificar áreas de gestión que no se abordan y/o ineficientes. Los procesos y subprocesos relacionados están perfectamente documentados
ResponderEliminarEstos sistemas permiten identificar áreas de gestión que no se abordan y/o ineficientes. Los procesos y subprocesos relacionados están perfectamente documentados
ResponderEliminar