0% encontró este documento útil (0 votos)
106 vistas9 páginas

Estados de Procesos en Sistemas Operativos

El documento describe los modelos de dos estados y cinco estados para representar los estados por los que pasan los procesos en un sistema operativo. En el modelo de dos estados, un proceso puede estar ejecutándose o no ejecutándose. En el modelo de cinco estados, los estados son nuevo, listo, ejecución, bloqueado y terminado, para representar con más detalle las transiciones que un proceso puede experimentar. Se explican las transiciones entre estados, como la admisión de un proceso nuevo al pasar de nuevo a listo, o

Cargado por

Cesar Pcs
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
106 vistas9 páginas

Estados de Procesos en Sistemas Operativos

El documento describe los modelos de dos estados y cinco estados para representar los estados por los que pasan los procesos en un sistema operativo. En el modelo de dos estados, un proceso puede estar ejecutándose o no ejecutándose. En el modelo de cinco estados, los estados son nuevo, listo, ejecución, bloqueado y terminado, para representar con más detalle las transiciones que un proceso puede experimentar. Se explican las transiciones entre estados, como la admisión de un proceso nuevo al pasar de nuevo a listo, o

Cargado por

Cesar Pcs
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD TÉCNICA DEL

NORTE
Nombre: Picuasi Cesar
Materia: Sistemas Operativos
Estados de los procesos
Modelo de procesos de dos estados
La responsabilidad principal del sistema operativo es controlar la ejecución de los
procesos. Esto incluye determinar el patrón de entrelazado para la ejecución y asignar
recursos a los procesos. El primer paso en el diseño de un sistema operativo para el
control de procesos es describir el comportamiento que se desea que tengan los
procesos.
Se puede construir el modelo más simple posible, observando que en un instante dado,
un proceso está siendo ejecutado por el procesador o no. En este modelo, un proceso
puede estar en dos estados: Ejecutando o No Ejecutando. Cuando el sistema operativo
crea un nuevo proceso, crea el bloque de control de proceso para el nuevo proceso e
inserta dicho proceso en el sistema en estado No Ejecutando. El proceso existe, y es
conocido por el sistema operativo, y está esperando su oportunidad de ejecutar. Cada
poco tiempo, el proceso que está actualmente en ejecución se interrumpirá y una parte
del sistema operativo, el activador, seleccionará otro proceso a ejecutar. El proceso
saliente pasará del estado Ejecutando a No Ejecutando y pasará a Ejecutando un nuevo
proceso.
En este modelo simple se puede apreciar algo del diseño de los elementos del sistema
operativo. Cada proceso debe representarse de tal manera que el sistema operativo
pueda seguirle la pista. Es decir, debe haber información correspondiente a cada
proceso, incluyendo el estado actual y su localización en memoria. Esto es el bloque de
control de programa. Los procesos que no están ejecutando deben estar en una cola,
esperando su turno de ejecución. Existe una sola cola cuyas entradas son puntes al BCP
de un proceso en particular. Alternativamente, la cola debe consistir en una lista
enlazada de bloques de datos, en la cual cada bloque representa un proceso.
Un proceso que se interrumpe se transfiere a la cola de procesos en espera. En el caso de
que el proceso finalice su ejecución o haya sido abortado, se descarta, sale del sistema y
el activador elige un proceso de la cola para ejecutar.
Modelo de proceso de cinco estados
Si todos los procesos estuviesen siempre preparados para ejecutar, las gestión de las
colas sería más fácil de manejar. La cola es una lista de tipo FIFO y el procesador opera
siguiendo una estrategia cíclica (round-robin) sobre todos los procesos disponibles. Sin
embargo, esta implementación es inadecuada: algunos procesos que están en el estado
de No Ejecutando están listos para ejecutar, mientras que otros están bloqueados,
esperando a que se complete una operación de E/S. Por tanto, utilizando una única cola,
el activador no puede seleccionar únicamente los procesos que lleven más tiempo en la
cola. En su lugar, debería recorrer la lista buscando los procesos que no estén
bloqueados y que lleven en la cola más tiempo.
Una forma más óptima para manejar esta situación es dividir el estado en No
Ejecutando en dos estados: Listo y Bloqueado. Para gestionarlo correctamente, se han
añadido dos estados adicionales que serán bastante útiles. Estos cinco estados son:
▪ Ejecutando: El proceso está actualmente en ejecución.
▪ Listo: Un proceso que se prepara para ejecutar cuando tenga oportunidad.
▪ Bloqueado: Un proceso que no puede ejecutar hasta que se cumpla un evento
determinado o se complete una operación E/S.
▪ Nuevo: Un proceso que se acaba de crear y que aún no ha sido admitido en el
grupo de procesos ejecutables por el sistema operativo. Suele ser un proceso que
aún no se ha cargado en memoria principal aunque su BCP sí ha sido creado.
▪ Terminado: Un proceso que ha sido liberado del grupo de procesos ejecutables
por el sistema operativo, debido a que ha sido detenido o que ha sido abortado
por alguna razón.

Estos son los tipos de eventos que llevan a cada transición de estado para cada proceso:
▪ Null -> Nuevo: Se crea un proceso nuevo para ejecutar un programa.
▪ Nuevo -> Listo: El sistema operativo mueve a un proceso del estado Nuevo al
estado Listo cuando éste se encuentre preparado para ejecutar un nuevo proceso.
La mayoría de sistemas fijan un límite basado en el número de procesos
existentes o en la cantidad de memoria virtual que se podrá utilizar por parte de
los procesos existentes. Este límite garantiza que no haya demasiados procesos
activos y que se degrade el rendimiento del sistema.
▪ Listo -> Ejecutando: Cuando llega el momento de seleccionar un nuevo
proceso para ejecutar, el sistema operativo selecciona uno de los procesos que se
encuentren en estado Listo. Esta tarea la realiza el planificador.
▪ Ejecutando -> Saliente: El proceso que actualmente está en ejecución se
finaliza por parte del sistema operativo, tanto si ha finalizado su ejecución o si
ha sido abortado por algún motivo.
▪ Ejecutando -> Listo: Esta transición se suele producir cuando el proceso que
está en ejecución ha alcanzado el máximo tiempo posible de ejecución de forma
ininterrumpida. Prácticamente todos los sistemas multiprogramados imponen
este tipo de restricción de tiempo.
▪ Ejecutando -> Bloqueado: Un proceso se pone en estado Bloqueado si solicita
algo por lo que debe esperar. Pueden ser muchos los motivos de esta transición:
solicitar una operación de E/S, solicitar una sección de memoria compartida que
no está inmediatamente disponible, comunicarse con otro proceso y bloquearse
hasta que el otro proceso le proporcione los datos solicitados, etc.
▪ Bloqueado -> Listo: Un proceso en estado Bloqueado se mueve a Listo cuando
sucede el evento por el cual esperaba.
▪ Listo -> Saliente: Para simplificar, esta transición no se muestra en la imagen
del modelo de cinco estados. Un padre puede terminar la ejecución de un
proceso hijo en cualquier momento. De igual manera, si el padre termina, todos
los procesos hijos asociados al padre pueden finalizarse.
▪ Bloqueado -> Saliente: Igual que el caso anterior.
Este esquema se suele aplicar mediante el uso de dos colas. Una para los procesos
Listos y otra para los procesos Bloqueados. Cada proceso admitido por el sistema se
coloca en la cola de Listos. Cuando llega el momento de seleccionar un proceso para
ejecutar, se selecciona uno de la cola de Listos. En ausencia de un esquema de
prioridad, esta cola se puede manejar mediante FIFO (first-in-first-out). Cuando el
proceso termina de usar el procesador, o bien finaliza, o bien se coloca en la cola de
Listos o Bloqueados, dependiendo de las circunstancias. Cuando sucede un evento
esperado por algún proceso de la cola de Bloqueados, este proceso se mueve a la cola de
Listos para ser ejecutado. Recorrer la cola de Bloqueados en busca del proceso que
espera el evento, puede ser una difícil tarea para el sistema operativo, por lo que sería
mucho más eficiente una cola de Bloqueados por cada evento que pueda darse. De la
misma manera, si el sistema funciona en base a prioridades, sería ideal tener una cola de
procesos Listos por cada nivel de prioridad que exista.

Las nuevas transiciones más importantes son las siguientes:


▪ Bloqueado -> Bloqueado/Suspendido: Si no hay procesos listos, entonces al
menos uno de los procesos bloqueados se transfiere al disco para hacer espacio
para otro proceso que no encuentra bloqueado. Esta transición puede realizarse
incluso si hay procesos listos disponibles, si el sistema operativo determina que el
proceso actualmente en ejecución o los procesos listos que desea ejecutar
requieren más memoria principal para mantener un rendimiento adecuado.
▪ Bloqueado/Suspendido -> Listo/Suspendido: Un proceso en el estado
Bloqueado/Suspendido se mueve al estado Listo/Suspendido cuando sucede un
evento al que estaba esperando. Esto requiere que la información de estado de un
proceso suspendido sea accesible para el sistema operativo.
▪ Listo/Suspendido -> Listo: Cuando no hay más procesos listos en memoria
principal, el sistema operativo necesitará traer uno para continuar la ejecución.
Puede darse el caso de que un proceso en estado Listo/Suspendido tenga mayor
prioridad que cualquiera de los procesos en estado Listo. En este caso, el sistema
operativo puede haberse diseñado para determinar que es más importante traer un
proceso de mayor prioridad que minimizar el efecto del swapping.
▪ Listo -> Listo/Suspendido: Normalmente, el sistema operativo preferirá
suspender procesos bloqueados antes que procesos listos, porque un proceso Listo
se puede ejecutar en ese momento, mientras que un proceso Bloqueado ocupa
espacio en memoria y no se puede ejecutar. Sin embargo, puede ser necesario
suspender un proceso Listo si con ello se consigue liberar un bloque
suficientemente grande de memoria. También el sistema operativo puede decidir
suspender un proceso Listo de baja prioridad antes que un proceso Bloqueado de
alta prioridad, si se cree que el proceso Bloqueado estará pronto Listo.

MODELOS DE ESTADO DE LINUX

PROCESOS CINCO ESTADOS


NUEVO: Procesos recién creados y que no han sido cargados en la memoria principal.

LISTO: procesos que van a ser ejecutados.


EJECUCION: El proceso ya está en ejecución dando las instrucciones con que fue
diseñado.
TERMINADO: El proceso ya cumplió su función, se ejecutó y termino.
Excluido por el S.O.
BLOQUEADO: El proceso no puede ejecutar hasta que no se produzca cierto suceso
TRANSICIONES MODELO DE CINCO ESTADOS
Nuevo – Listo (ADMITIR) Cuando S.O. Está preparado para aceptar un proceso más
Listo – Ejecución (EXPEDIR) Selección nuevo proceso para ejecutar S.O.
Ejecución – Listo (FIN DE TIEMPO) alcanzó tiempo máximo permitido para la
ejecución
Ejecución – Bloqueado (ESPERA SUCESO) Solicita algo por lo que debe esperar
Bloqueado – Listo (OCURRE SUCESO) Cuando se produce suceso que estaba
esperando.
Ejecución – Terminado (SALIR) el proceso ha terminado de ejecutarse y pasa a un
estado de terminado.
PROCESO ADICIONAL EN MODELO DE SEIS ESTADOS
SUSPENDIDO: Se da cuando los procesos se detienen a la espera de que se complete
alguna operación.
El proceso ha sido movido de la memoria principal a la memoria secundaria
PROCESOS ADICIONALES EN MODELO DE SIETE ESTADOS
Bloqueado/Suspendido: En memoria secundaria esperando suceso
Listo/Suspendido: En memoria secundaria disponible para ejecución al cargar a
memoria principal
TRANSICIONES DE MODELO DE SIETE ESTADOS
Bloqueado – Bloqueado/suspendido (SUSPENDER): Proceso bloqueado se expulsa dar
cabida otro proceso no bloqueado
Bloqueado/suspendido – Bloqueado (ACTIVAR): Proceso bloqueado y suspendido de
mayor prioridad que Listo
Bloqueado/suspendido – Listo/suspendido (OCURRE SUCESO): Cuando se produce
suceso esperado
Listo/suspendido – Listo (ACTIVAR): Cuando no hay procesos listos en memoria
principal
Listo – Listo/suspendido (SUSPENDER): Cuando proceso bloqueado es más alta
prioridad o para liberar bloque memoria
Nuevo – Listo/Suspendido y Listo (ADMITIR): Al crear proceso puede agregarse a una
u otra cola
Ejecución – Listo/suspendido (SUSPENDER): Al finalizar tiempo, para liberar espacio
de memoria para traer proceso bloqueado y suspendido de mayor prioridad que se acaba
de liberar.

Estados de un proceso
El tiempo de vida de un proceso en un sistema UNIX puede ser conceptualmente
dividido en un conjunto de estados que describen el comportamiento del proceso. Los
nueve estados en que se puede encontrar un proceso en un sistema UNIX (SVR2 o
SVR3) son:
▪ Ejecutándose en modo usuario.
▪ Ejecutándose en modo núcleo o supervisor.
▪ Preparado en memoria principal para ser ejecutado. El proceso no está
ejecutándose, pero está cargado en memoria principal listo para ser ejecutado tan
pronto lo planifique el núcleo.
▪ Dormido o bloqueado en memoria principal. El proceso se encuentra esperando
en memoria principal a que se produzca un determinado evento, como por
ejemplo, la finalización de una operación de E/S.
▪ Preparado en memoria secundaria para ser ejecutado. El proceso está listo para
ser ejecutado, pero se encuentra en memoria secundaria.
▪ Dormido o bloqueado en memoria secundaria. El proceso está esperando en
memoria secundaria a que se produzca un determinado evento.
▪ Expropiado. Cuando un proceso (A) ejecutándose en modo usuario ha finalizado
su cuanto, llega una interrupción del reloj del sistema para avisar de este hecho.
El tratamiento de esta interrupción en modo núcleo, provoca que el proceso A
sea expropiado de la CPU y que otro proceso B pase a ser planificado para ser
ejecutado. En esencia, el estado expropiado es el mismo que el
estado preparado en memoria principal para ser ejecutado, pero se describen
separadamente para enfatizar que un proceso expropiado tiene garantizado que
su próximo estado será ejecución en modo usuario cuando vuelva a ser
planificado para ser ejecutado.
▪ Creado. El proceso se ha creado recientemente y está en un estado de transición.
El proceso existe, pero no se encuentra preparado para ser ejecutado ni
tampoco está dormido. Este estado es el inicial para todos los procesos excepto
para el proceso con pid=0.
▪ Zombi. Este es el estado final de un proceso al que se llega mediante la ejecución
explícita o implícita de la llamada al sistema exit.
En la Figura 4.8 se representa el diagrama de transición de estados de los procesos en
un sistema UNIX (SVR2 o SVR3). En dicho diagrama los nodos representan a los
posibles estados de un proceso. Asimismo, las líneas de conexión representan las
posibles transiciones entre los estados. Estas líneas de conexión se encuentran rotuladas
con el evento que provoca que un proceso pase de un estado a otro. Una transición entre
dos estados es legal si existe una línea de conexión en el sentido adecuado que los una.
Se van a analizar a continuación las posibles transiciones de estado, partiendo del
nacimiento de un proceso. Cuando un nuevo proceso (A) se crea, mediante una llamada
al sistema fork realiza por otro proceso (B), el primer estado en el que entra A es el
estado creado. Desde aquí puede pasar, dependiendo de si existe suficiente espacio en
memoria principal, a dos estados distintos: preparado para ejecución en memoria
principal o preparado para ejecución en memoria secundaria.
Si el proceso se encuentra en el estado preparado para ejecución en memoria
principal entonces el planificador de procesos puede escogerlo para ser ejecutado, por
lo que pasará al estado ejecución en modo supervisor. Cuando el proceso finalice la
ejecución de su parte de la llamada al sistema fork entonces pasará al estado ejecución
en modo usuario, donde comenzará a ejecutarse las instrucciones de la región de código
del proceso.
Cuando el proceso agota su cuanto, el reloj del sistema mandará una interrupción al
procesador. El tratamiento de la interrupción se realiza en modo núcleo, en conclusión,
el proceso debe pasar de nuevo al estado ejecutándose en modo núcleo. Cuando el
manipulador de la interrupción de reloj finaliza, el planificador expropiará de la CPU al
proceso A y planificará otro proceso C para ser ejecutado. De estado forma el proceso A
pasa al estado expropiado. Cuando el planificador vuelva a seleccionar al proceso A
para ser ejecutado este volverá al estado ejecutándose en modo usuario.
Si el proceso A invoca durante su ejecución en modo usuario a una llamada al sistema,
entonces pasa al estado ejecución en modo núcleo. Supóngase que la llamada al sistema
necesita realizar una operación de E/S con el disco, entonces el núcleo debe esperar a
que se complete la operación, en consecuencia, el proceso (A) pasa al estado dormido
en memoria principal. Cuando se completa la operación de E/S, el hardware interrumpe
a la CPU y el manipulador de la interrupción despertará al proceso, lo que provocará
que pase al estado preparado para ejecución en memoria principal.
Supóngase que en el sistema se están ejecutando muchos procesos y que no existe
suficiente espacio en memoria. En esta situación el intercambiador elige para ser
intercambiados a memoria secundaria a algunos procesos (entre ellos el proceso A) que
se encuentran en el estado preparado para ejecución en memoria principal o en el
estado expropiado. Estos procesos pasarán al estado preparado para ejecución en
memoria secundaria.
En un momento dado, el intercambiador elige al proceso más apropiado para
intercambiarlo de vuelta a la memoria principal, supóngase que se trata del proceso A.
Éste pasa al estado listo para ejecución en memoria. A continuación, el planificador en
algún instante elegirá el proceso para ejecutarse y entonces pasará al estado ejecución
en modo supervisor donde continuará con la ejecución de la llamada al sistema. Cuando
finalice la llamada al sistema pasará de nuevo al estado ejecución en modo usuario.
Cuando el proceso se complete, invocará explícitamente o implícitamente a la llamada
al sistema exit, en consecuencia, pasará al estado ejecución en modo supervisor. Cuando
se complete esta llamada al sistema pasará finalmente al estado zombi.
Un proceso tiene control sobre algunas transiciones de estado. En primer lugar, un
proceso puede crear otro proceso. Sin embargo, es el núcleo quién decide en que
momento se realizan la transición desde el estado creado al estado preparado para
ejecución en memoria principal o al estado preparado para ejecución en memoria
secundaria.
En segundo lugar, un proceso puede invocar a una llamada al sistema lo que provocará
que pase del estado ejecución en modo usuario al estado ejecución en modo núcleo. Sin
embargo, el proceso no tiene control de cuando volverá de este estado, incluso algunos
eventos pueden producir que nunca retorne y pase al estado zombi.
En tercer lugar, un proceso puede finalizar realizando una invocación explícita de la
llamada al sistema exit, pero por otra parte eventos externos también pueden hacer que
se produzca la terminación del proceso.
El resto de las transiciones de estado siguen un modelo rígido codificado en el núcleo.
Por lo tanto, el cambio de estado de un proceso ante la aparición de ciertos eventos se
realiza de acuerdo a unas reglas predefinidas.
Estados adicionales
UNIX BSD4 define algunos estados adicionales que no son soportados en SVR2 ni
SVR3, pero si en SVR4. Como por ejemplo, el estado parado o suspendido (en
memoria principal o secundaria) y el estado dormido y parado (en memoria principal o
secundaria). En el estado parado, la ejecución del proceso es detenida, pero
posteriormente puede retomarse. En la sección [Link] se describirá como puede un
proceso entrar en estos estados.
El estado dormido
El estado dormido en memoria principal es uno de los posibles estados de un proceso
que por su importancia requiere de una atención especial. Un proceso siempre pasa al
estado dormido en memoria principal desde el estado ejecución en modo supervisor.
Principalmente, un proceso pasa al estado dormido cuando se produce alguna de las
siguientes circunstancias:
▪ Durante la ejecución de una llamada al sistema el núcleo requiere usar un
recurso que se encuentra ocupado, o debe esperar a que termine una
transferencia de E/S.
▪ Se produce un fallo de página como resultado de acceder a una dirección virtual
que no está cargada en memoria principal.
Un proceso permanecerá en el estado dormido hasta que tenga lugar el evento por el que
se encuentra esperando. Cuando dicho evento ocurra, el proceso será despertado y
pasará al estado preparado para ejecución en memoria (principal o secundaria).
Cada evento que debe ocurrir para que un proceso se despierte está asociado con
un canal o dirección de dormir. Este canal es una dirección virtual del núcleo asociada a
un determinado recurso. Distintos eventos pueden estar asociados a un mismo canal.
Por otra parte, cuando un proceso pasa al estado dormido en espera de un determinado
evento el núcleo lo añade a una lista de procesos dormidos. Además, almacena
la dirección de dormir en el campo correspondiente de la entrada asociada al proceso en
la tabla de procesos.

BIBLIOGRAFIA

Stallings, William (2005). Sistemas operativos: aspectos internos y principios de


diseño (5ª edición). Pearson Prentice Hall. p. 109. ISBN 978-84-205-4462-5.

↑ Jesús., Niño Camazón, (1 de enero de 2011). «Gestión de procesos». Sistemas


operativos monopuesto. Editex. p. p. 215. ISBN 8497719719. OCLC 852653978.

También podría gustarte