Está en la página 1de 20

2 Gestin de procesos o

2.1. Procesos y tareas

Proceso una denicin tradicional de proceso es la de instancia de un programa en o ejecucin. La ejecucin de tal programa es indicada al SO mediante una accin u o o o orden especializada. El SO responde en ese punto creando un nuevo proceso. En general, esta actividad consiste en la creacin e iniciliazacin de estructuras de datos en el SO para monitorizar o o y controlar el progreso de proceso en cuestin. Una vez creado, el proceso pasar a estar o a activo y competir por la utilizacin de recursos del sistema como el procesador y los a o dispositivos I/O. Un proceso evoluciona c clicamente entre per odos de ejecucin activa y de espera por o la terminacin de actividades de I/O. Cuando un proceso queda inactivo por especicar o una operacin de I/O y quedar a la espera de que sta se complete, el SO puede planicar o e la ejecucin de otro proceso. o Desde este punto de vista, un proceso es una entidad individualmente planicable, que puede ser asignada al procesador y ejecutada por ste. El SO controla, pues, dine a micamente la evolucin de los procesos registrando la informacin correspondiente a sus o o cambios cuando stos se produzcan. Esta informacin es utilizada por el SO para sus e o labores de planicacin y gestin sobre el conjunto de procesos que en un determinado o o momento pueden coexistir en el sistema informtico. a De esta forma adems de la plantilla esttica constituida por el programa ejecutable a a en que se basa, un proceso posee ciertos atributos que ayudan al SO en su gestin. o Los atributos de un proceso incluyen su estado actual, unidad de planicacin, derechos o de acceso, nivel de prioridad entre otros datos. Desde el punto de vista del usuario, un proceso no es ms que la ejecucin de un conjunto de instrucciones que llevan a cabo una a o determinada tarea, mientras que para el SO es una entidad que atraviesa dinmicamente a un conjunto de estados y que solicita los recursos del sistema que le son necesarios. De esta forma, el acceso a tales recursos debe ser planicado de forma que se consiga un rendimiento en la utilizacin de los mismos lo ms ptimo posible. o a o

2.1.1.

Divisin impl o cita y expl cita de tareas

Dependiendo del SO y del entorno objetivo de ejecucin de programas, la divisin o o de un trabajo en tareas que sern ejecutadas como procesos independientes as como la a asignacin inicial de los atributos de esos procesos pueden ser efectuadas o bien por el o SO o bien por el desarrollador de la aplicacin. En otras palabras, lo que constituir un o a proceso independiente puede provenir de:

15

2 Gestin de procesos o 1. Divisin impl o cita de tareas denida por el sistema. 2. Divisin expl o cita de tareas denida por el desarrollador. En general, la divisin impl o cita de tareas se aplica en sistemas operativos multitarea para multiplexar la ejecucin de una serie de programas y explotar los benecios de o la concurrencia entre una serie de aplicaciones. La divisin expl o cita en tareas permite mejoras adicionales en el rendimiento al explotar la concurrencia inherente o propia de una determinada aplicacin o programa. La divisin impl o o cita en tareas signica que los procesos son denidos por el sistema, esta divisin aparece comnmente en sistemas de o u multiprogramacin de propsito general tales como los sistemas de tiempo compartido. o o En este enfoque cada programa remitido para su ejecucin es tratado por el SO como o un proceso independiente. El SO asignar valores iniciales a lo atributos del proceso tales como la prioridad de a planicacin y los derechos de acceso en el momento de la creacin del proceso basndose o o a en el perl del usuario y en valores predeterminados del sistema. La divisin expl o cita signica que los desarrolladores denen expl citamente cada proceso y alguno de sus atributos, t picamente una unica aplicacin queda dividida en o varios procesos relacionados con objeto de mejorar su rendimiento. La divisin expl o cita se utiliza en situaciones donde se desea elevar la eciencia o controlar expl citamente las actividades del sistema. Entre las razones ms comunes para aplicar la divisin expl a o cita de tareas se incluyen 1. Ganancia de velocidad: algunas de las tareas independientes en que quede dividida la aplicacin podrn ejecutarse de forma concurrente con la consiguiente mejora o a en el tiempo total de ejecucin de la aplicacin. o o 2. Mejora en el rendimiento de la utilizacin de dispositivos de I/O con latencia: o dedicando tareas expl citas a la realizacin de operaciones I/O, stas podrn ser o e a planicadas por el SO de forma concurrente con tareas de computacin intensiva o con la consiguiente ganancia en el rendimiento. 3. Multiprocesamiento: los procesos independientes que constituyen una aplicacin o pueden ser perfectamente portados para su ejecucin en un entorno multiprocesao dor con lo que se conseguir paralelismo real. a 4. Computacin distribuida: de igual forma, cada tarea independiente puede ser asigo nada a un procesador que forme parte de un sistema distribuido, siendo necesaria una sincronizacin con el resto de procesadores que se ocupan de sus respectivas o tareas.

2.1.2.

Tipos de procesos y relacin entre procesos concurrentes o

En principio, podemos realizar una clasicacin muy general de los procesos entre o procesos de usuario y procesos de sistema. Un proceso de usuario es aquel creado por

16

Sistemas Operativos - 0.5.0

2.1 Procesos y tareas el SO como respuesta a una de ejecucin del usuario o de una aplicacin que ejecuta a o o instancias de ste. e Un proceso de sistema es un proceso que forma parte del propio SO y que desempea n alguna de sus labores caracter sticas, como por ejemplo, la eleccin del siguiente proceso o a ejecutar o bien la prestacin de un servicio determinado como el acceso a un recurso de o I/O del sistema. Cualquiera que sea la naturaleza de los procesos, stos pueden mantener e fundamentalmente dos tipos de relaciones: Competicin y/o Colaboracin. o o En virtud de la comparticin de recursos de un solo sistema, todos los procesos concuo rrentes compiten unos con otros por la asignacin de los recursos del sistema necesarios o para sus operaciones respectivas. Adems, una coleccin de procesos relacionados que a o representen colectivamente una sola aplicacin lgica, suelen cooperar entre s La coopeo o . racin es habitual entre los procesos creados como resultado de una divisin expl o o cita de tareas. Los procesos cooperativos intercambian datos y seales de sincronizacin necesan o rios para estructurar su progreso colectivo. Tanto la competicin como la colaboracin o o de procesos requiere una cuidada asignacin y proteccin de los recursos en trminos o o e de aislamiento de los diferentes espacios de direcciones. La cooperacin depende de la o existencia de mecanismos para la utilizacin controlada de los datos compartidos y el o intercambio de seales de sincronizacin. n o Los procesos cooperativos comparten t picamente algunos recursos y atributos adems a de interactuar unos con otros. Por esta razn, con frecuencia se agrupan en lo que se o denomina una familia de procesos. Aunque dentro de una familia son posibles relaciones complejas entre sus procesos miembro, la relacin ms comnmente soportada por los o a u sistemas operativos es la relacin padre-hijo. Esta relacin se establece cuando el SO o o crea un nuevo proceso a instancias de otro ya existente. Los procesos hijos heredan generalmente los atributos de sus procesos padres en el momento de su creacin y tambin o e pueden compartir recursos con sus procesos hermanos.

2.1.3.

El sistema operativo y los procesos

Todos los SSOO de multiprogramacin estn construidos en torno al concepto de o a proceso. Los requisitos principales que debe cumplir un SO para con los procesos son los siguientes: 1. El SO debe intercalar la ejecucin de procesos para optimizar la utilizacin del o o procesador ofreciendo a la vez un tiempo de respuesta razonable. 2. El SO debe asignar los recursos del sistema a los procesos en conformidad con una pol tica espec ca que evite situaciones de interbloqueo. 3. El SO podr tener que dar soporte a la comunicacin entre procesos y ofrecer a o mecanismos para su creacin, labores que pueden ser de ayuda en la estructuracin o o de aplicaciones.

http://alqua.org/libredoc/SSOO

17

2 Gestin de procesos o

2.2.

Creacin y terminacin de procesos o o

Cuando se aade un proceso a los que ya est admisnitrando el SO, hay que construir n a las estructuras de datos que se utilizan para gestionar y controlar el proceso y asignar el espacio de direcciones que va a utilizar dicho proceso. Estas acciones constituyen la creacin de un nuevo proceso. o Son cuatro los sucesos comunes que llevan a la creacin de un proceso. o 1. Nueva tarea en un sistema de proceso por lotes. 2. Nueva conexin interactiva. o 3. Nuevo proceso creado por el SO para dar un servicio. 4. Un proceso generado por otro ya existente. Por otro lado, en cualquier sistema informtico debe existir alguna forma de que un a proceso indique su terminacin. Un trabajo por lotes debe incluir una instruccin de o o detencin halt o una llamada expl o cita a un servicio del sistema operativo para indicar su terminacin, mientras que en una aplicacin interactiva, ser la accin del usuario la o o a o que indique cundo termine el proceso. a Todas estas acciones provocan al nal una peticin de servicio al SO para terminar el o proceso demandante. Adems, una serie de errores pueden llevarnos a la terminacin de a o un proceso. A continuacin se enumeran algunas de las condiciones ms habituales de o a terminacin de procesos: o 1. Terminacin normal: Un proceso termina de ejecutar su conjunto de instrucciones o y naliza. 2. Tiempo l mite excedido: El proceso requiere ms tiempo para completar su ejecua cin del que el sistema establece como mximo. o a 3. No disponibilidad de memoria: Tiene lugar cuando un proceso necesita ms mea moria de la que el sistema puede proporcionar. 4. Violacin de l o mites: Ocurre cuando un proceso trata de acceder a una posicin de o memoria a la que no puede hacerlo. 5. Error de proteccin: Se produce si un proceso intenta utilizar un recurso o un o archivo para el que no tiene permiso o trata de utilizarlo de forma incorrecta. 6. Error aritmtico: Aparece si el proceso intenta hacer un clculo prohibido como e a la divisin por cero o trata de almacenar un nmero mayor del que el hardware o u acepta. 7. Superacin del tiempo mximo de espera por un recurso: En este caso, el proceso o a se encuentra a la espera de obtener un recurso o de que tenga lugar un determinado evento durante un tiempo que alcanza el l mite establecido.

18

Sistemas Operativos - 0.5.0

2.3 Estados de un proceso 8. Fallo de dispositivo I/O: Se produce por un error en la entrada o la salida tal como la incapacidad de encontrar un archivo o la ocurrencia de un fallo de lectura o escritura despus de un nmero mximo de intentos. e u a 9. Instruccin no vlida: Se produce si un proceso intenta ejecutar una instruccin o a o inexistente. 10. Inento de acceso a una instruccin privilegiada: Se presenta si un proceso intenta o utilizar una instruccin reservada para el SO. o 11. Mal uso de los datos: Un elemento de dato no est inicializado o es de un tipo a equivocado para la operacin que se pretende realizar. o 12. Intervencin del operador o del SO: Por alguna razn, el operador o el SO termio o na con el proceso. Por ejemplo, si se considera comprometido el rendimiento del sistema. 13. Finalizacin del proceso padre: Cuando un proceso padre naliza el SO puede o disearse para terminar automticamente con todos sus descendientes. n a 14. Solicitud del proceso padre: Un proceso padre tiene normalmente autoridad para terminar con cualquiera de sus hijos.

2.3.

Estados de un proceso

En cualquier sistema operativo, es bsico conocer el comportamiento que exhibirn a a los distintos procesos y el conjunto de estados que pueden atravesar.

2.3.1.

Modelo de dos estados

El modelo ms sencillo que puede construirse tiene en cuenta que un momento dado a un proceso puede estar ejecutndose en el procesador o no. As pues, un proceso puede a estar en uno de dos estados: Ejecucin o No ejecucin (Vase la gura 2.1). o o e

entrada

no ejecucin

ejecucin

terminar

Figura 2.1: Esquema de un diagrama de dos estados

Cuando el SO crea un nuevo proceso, ste entra en el sistema en el estado de No e ejecucin. De este modo, el proceso existe, es conocido por el SO y est esperando la o a oportunidad de ejecutarse. En un momento dado, el sistema operativo decide otorgar

http://alqua.org/libredoc/SSOO

19

2 Gestin de procesos o el procesador a un proceso determinado con lo que dicho proceso pasar de estado No a ejecucin a Ejecucin. o o Cada cierto tiempo, el proceso en ejecucin es interrumpido y el sistema operativo o seleccionar un nuevo proceso para que tome el control del procesador. El proceso ina terrumpido pasa del estado de Ejecucin al de No ejecucin mientras que el proceso o o elegido realiza la transicin inversa. o Incluso en este modelo tan simple, se aprecian ya algunos de los elementos importantes en el diseo de SSOO. Cada proceso debe representarse de forma que el sistema operativo n tenga conocimiento de su estado actual y de su posicin en memoria. o Aquellos procesos que no estn en estado de ejecucin debern almacenarse en alg n e o a u tipo de estructura de datos mientras esperan que el sistema operativo les otorgue el control sobre el procesador. La siguiente gura 2.2 propone una estructura basada en una cola de procesos.
COLA FIFO

entrada

Procesador

terminar

Figura 2.2: Esquema de un sistema de Cola FIFO

Dicha cola consiste en una lista enlazada de bloques en la que cada uno de estos bloques representa a un proceso. Cada bloque consistir en un puntero a la estrcutura de datos a donde el SO guarda toda la informacin relativa al proceso. El comportamiento del SO en o este caso es similar al de un gestor de colas. As cada vez que el SO cree un nuevo proceso , se introducir el correspondiente bloque al nal de la cola, accin que tambin se llevar a o e a a cabo cuando un proceso sea expropiado del procesador en favor de otro o cuando se bloquee en espera de que se complete una operacin de E/S. Cuando un proceso termine o su ejecucin, ser descartado del sistema. Si todos los procesos estuvieran siempre listos o a para ejecutar, la disciplina de comportamiento de cola presentada ser ecaz. El modelo a de cola sigue un comportamiento FIFO y el procesador opera siguiendo un turno rotatorio con los procesos disponibles. De esta forma, a cada proceso de la cola se le otorga una cierta cantidad de tiempo para ejecutar. Si no se presentan bloqueos y transcurrido ste e volver a la cola para optar de nuevo a tener control sobre el procesador. Sin embargo, a esta implementacin no es adecuada debido a que algunos procesos en estado de no o ejecucin estarn listos para ejecutar mientras que otros se encontrarn a la espera de o a a obtener algn recurso solicitado o a que se complete una operacin de E/S. As pues, el u o SO puede no entregar el procesador al proceso que se encuentre al frente de la cola. Si ste est bloqueado, tendr que recorrer la cola buscando el primer proceso que no lo e a a est y que lleve ms tiempo en espera. e a Una forma ms natural de afrontar esta situacin es dividir el estado de no ejecucucin a o o en dos; los estados listo y bloqueado. Adems se aadirn dos nuevos estados al sistema. a n a

20

Sistemas Operativos - 0.5.0

2.3 Estados de un proceso Estos estados son: nuevo y terminado, que resultan de utilidad para las labores de gestin o de procesos. As se dar lugar al modelo de 5 estados. a

2.3.2.

Modelo de 5 estados

En este modelo un proceso puede encontrarse en cualquiera de los siguiente 5 estados. 1. Estado Nuevo: esta estado corresponder a procesos que acaban de ser denidos a pero que an no han sido admitidos por el sistema operativo como procesos ejecutau bles. Para estos procesos se habrn realizado ciertas tareas de gestin interna como a o la asignacin de un identicador y la creacin de algunas estructturas de control. o o La principal motivacin para la existencia de este estado es la limitacin por parte o o del SO del nmero total de procesos activos por razones de rendimiento1 o por las u restricciones impuestas por la capacidad de la memoria. 2. Estado Listo o Preparado: En este estado se encontrarn aquellos procesos que a dispongan de todos los recursos necesarios para comenzar o proseguir su ejecucin o y se encuentran a la espera de que se les concedael control del procesador. 3. Estado de Ejecucin: En este estado se encuentra el proceso que tiene el control o del procesador. Dado que se considerarn arquitecturas que disponen de un unico a procesador, en un instante determinado slo un proceso puede encontrarse en este o estado. 4. Estado Bloqueado: En este estado se encuentran aquellos procesos que carecen de algn recurso necesario para su ejecucin siendo este recurso distinto del procesador u o o bien se encuentran a la espera de que tenga lugar un determinado evento. 5. Estado Terminado: A este estado pertenecen aquellos procesos excluidos por el SO del grupo de procesos ejecutables. Un proceso alcanza este estado cuando llega al punto normal de terminacin, cuando se abandona debido a un error irrecuperable o o cuando un proceso con la debida autoridad hace que termine su ejecucin. En este o punto, el proceso ya no es susceptible de ser elegido para ejecutarse. Sin embargo, el SO conserva cierta informacin asociada con l para su posible utilizacin, bien o e o por otras aplicaciones como programas de utilidad para el anlisis de la historia a y rendimiento del proceso o bien por parte del SO con nes estad sticos. Una vez extra esta informacin, el SO ya no necesita mantener ms datos relativos al da o a proceso y stos se borran del sistema. e En la gura 2.3 presentamos el diagrama de transiciones entre estados Transicin a Nuevo: Se crea un nuevo proceso para ejecutar un programa o

Se puede llegar a perder ms tiempo en la gestin del cambio de procesos que en el proceso mismo. a o

http://alqua.org/libredoc/SSOO

21

2 Gestin de procesos o

pasar a ejecucin Admitir PREPARADO EJECUCIN

Fin de plazo NUEVO ocurrencia de suceso BLOQUEO esperar un suceso TERMINADO

Figura 2.3: Diagrama de transiciones entre estados. La l nea punteada indica situacin expcecional. o

Transicin Nuevo-Preparado: Esta transicin tiene lugar cuando el SO est preparado o o a para aceptar o admitir un proceso ms. Se tendrn en cuenta las restricciones a a derivadas de la capacidad de la memoria y que no haya tantos procesos activos como para degradar el rendimiento. Transicin Preparado-Ejecucin: Esta transicin se produce cuando el SO selecciona o o o un nuevo proceso para ejecutar en funcin de su pol o tica de planicacin. o Transicin Ejecucin-Preparado: La razn ms comn para esta transicin es que el o o o a u o proceso que est en ejecucin ha alcanzado el tiempo mximo permitido de ejea o a cucin ininterrumpida. Hay otras causas alternativas que no estn implementadas o a en todos los SSOO como la expropiacin de un proceso en favor de otro ms prioo a ritario. Otra situacin, muy extraordinaria, que origina esta transicin es que un o o proceso ceda voluntariamente el control del procesador. Transicin Ejecucin-Bloqueo: Un proceso realiza esta transicin cuando queda a la o o o espera por la concesin de un determinado recurso o por la ocurrencia de un deo terminado suceso. Transicin Bloqueado-Preparado: Tiene lugar si a un proceso bloqueado se le concede o el recurso solicitado u ocurre el suceso por el que estaba esperando. Transicin Preparado-Terminado: Puede ocurrir si, por ejemplo, un proceso padre deo cide en un momento determinado nalizar la ejecucin de sus procesos hijos. Si o alguno de dichos procesos se encontraba en estado preparado realizar esta trana sicin. Otra razn puede ser debida a un requisito de memoria que es denegado. o o Transicin Bloqueado-Terminado: Un proceso hijo puede realizar esta transicin por la o o misma razn que la anterior. Otra causa puede ser que el proceso supere el tiempo o mximo de espera por un recurso y el sistema operativo decida entonces terminarlo a (es la razn ms habitual). o a

22

Sistemas Operativos - 0.5.0

2.3 Estados de un proceso Este modelo de 5 estados puede implementarse igualmente mediante estructuras de tipo cola siguiendo un esquema como el se muestra en la gura 2.4.
Cola FIFO Entrada Procesador Fin de Plazo Cola de bloqueados Ocurrencia de suceso Esperar suceso Terminar

Figura 2.4: Diagrama de transiciones entre estados implementada con una cola.

Ahora se dispone de dos colas, una para los procesos en situacin de preparado y o otra para los bloqueados. A medida que se admiten procesos nuevos en el sistema, stos e se sitan en la cola de preparados. Cuando el SO tiene que escoger un proceso para u ejecutar, lo hace sacanado uno de dicha cola. En ausencia de prioridades, la referida cola puede gestionarse mediante un algoritmo FIFO. Cuando un proceso es expropiado del procesador, puede ser porque ha terminado su ejecucin, porque ha excedido el tiempo o mximo de posesin del procesador y entonces es devuelto a la cola de preparados a o o porque ha quedado bloqueado a la espera de un determinado suceso con lo que se introducir en la cola de bloquedados. Cuando tiene lugar un determinado suceso, a todos los procesos que esperaban por l son pasados desde la cola de bloquedados a la e de preparados. Esta ultima medida signica que cuando se produce un suceso, el SO debe recorrer toda la cola de bloqueados buscando aquellos procesos que esperen por el suceso. En un SO grande puede haber una gran cantidad de procesos en la cola de bloqueados, por tanto, resultar ms eciente disponer de un conjunto de colas, una para cada suceso. En tal a a caso, cuando se produzca un evento, la lista entera de procesos en la cola correspondiente a ese suceso podr pasarse a estado preparado. Vase la gura 2.5. a e Si la planicacin de procesos se realiza mediante un esquema basado en prioridades, o entonces es conveniente tener un cierto nmero de colas de procesos listos, una para cada u prioridad.

2.3.3.

Procesos suspendidos

Debido a que el procesador es mucho ms rpido que los dispositivos de E/S puede a a ocurrir que en un momento dado todos los procesos del sistema se encuentren bloqueados a la espera de que se complete alguna operacin de E/S. Para solucionar este problema o existen dos opciones 1. Amplir la memoria del sistema de forma que sea posible albergar en ella ms a

http://alqua.org/libredoc/SSOO

23

2 Gestin de procesos o
Cola FIFO Entrada Procesador Fin de Plazo Cola de bloqueados por 1 Ocurrencia de suceso 1 Ocurrencia de suceso 2 Esperar suceso 1 Cola de bloqueados por 2 Esperar suceso 2 Cola de bloqueados por n Esperar suceso n Terminar

Ocurrencia de suceso n

Figura 2.5: Diagrama de transiciones entre estados con varias colas, una para cada proceso.

procesos e incrementar as la posibilidad de que alguno de ellos haga uso efectivo del procesador. 2. La otra solucin consiste en aplicar una tcnica conocida como intercambio o swao e ping. Esta tcnica consiste en que cuando todos los procesos que se encuentran e en memoria principal estn bloqueados, el SO puede sacar a uno de ellos de su a correspondiente cola y transferirlo a memoria secundaria. El proceso transferido se dice entonces que queda en estado suspendido. Una vez realizada esta operacin, o el SO est en condiciones de traer de nuevo a memoria a un proceso previamente a suspendido o bien dar entrada al sistema a un nuevo proceso. En general, se considera suspendido a un proceso que presenta las caracter sticas siguientes: 1. Un proceso suspendido no est disponible de inmediato para su ejecucin. a o 2. Un proceso puede estar esperando o no un suceso. Si lo est, la condicin de a o bloqueado es independiente de la condicin de suspendido y el acontecimiento del o suceso bloqueante no lo habilita para la ejecucin. o 3. El proceso fue situado en estado suspendido por un agente (el SO o el proceso padre) con el n de impedir su ejecucin. o 4. El proceso no puede apartarse de estado hasta que llegue la orden expresa para ello.

24

Sistemas Operativos - 0.5.0

2.3 Estados de un proceso Si aadimos este nuevo estado a nuestro diagrama de 5 estados, obtendremos la gura n 2.6.

pasar a ejecucin Admitir PREPARADO EJECUCIN

Fin de plazo NUEVO ocurrencia de suceso BLOQUEO SUSPENDIDO esperar un suceso TERMINADO

Figura 2.6: Diagrama de 5 estados + suspendido

Teniendo en cuenta que un proceso suspendido se encontraba bloqueado a la espera de que ocurriera un cierto suceso y que dicho suceso puede ocurrir mientras el proceso permanece en memoria secundaria, ser ms eciente desdoblar el estado suspendido en a a dos, uno para las procesos suspendidos que an esperan el suceso que les bloque (estado u o bloqueado y suspendido) y otro para los procesos suspendidos que por haber tenido lugar se encuentran en situacin de proseguir su ejecucin (estado listo y suspendido). Para o o verlo mejor, consletese la gura 2.7. u Las transiciones que involucran a los nuevos estados son las siguientes: Transicin Bloqueado y Suspendido-Preparado y Suspendido: Esta transicin tiene o o lugar si se ha producido un suceso por el que hab sido bloqueado el proceso a suspendido. Es importante tener en cuenta que esto requiere que est accesible e para el SO la informacin relativa a los procesos suspendidos. o Transicin Preparado y Suspendido-Preparado: Cuando no hay procesos preparao dos en memoria principal el sistema operativo tendr que traer de memoria secuna daria un proceso que pueda continuar su ejecucin. Adems, puede darse el caso de o a que el proceso en estado Preparado y Suspendido tenga una nueva prioridad mayor que la de los procesos en estado Preparado. En este caso se deber decidir entre a ejecutar el proceso de mayor prioridad con el coste consiguiente de la operacin o de intercambio si no hay espacio en memoria principal para todos los procesos, o bien esperar a que haya espacio suciente en memoria principal para albergar al proceso suspendido. Transicin Preparado-Preparado y Suspendido: Como ve o amos en la transicin o anterior, se puede producir un intercambio entre un proceso en estado Preparado

http://alqua.org/libredoc/SSOO

25

2 Gestin de procesos o

pasar a ejecucin Admitir PREPARADO EJECUCIN

Fin de plazo NUEVO ocurrencia de suceso BLOQUEO esperar un suceso TERMINADO

Preparado y Suspendido

Bloqueado y Suspendido

Figura 2.7: Diagrama de 5 estados + 2 suspendidos (preparado y suspendido, bloqueado y suspendido)

y Suspendido y otro en estado de Preparado si no hay memoria suciente para ambos. Generalmente, el SO preere suspender a un proceso bloqueado en vez de a uno en estado Preparado. Sin embargo, puede ser necesario suspender a un proceso Preparado si sta es la unica forma de liberar un bloque lo sucientemente e grande de memoria principal. Adems, el SO puede escoger suspender un proceso a Preparado de ms baja prioridad en lugar de uno bloqueado de prioridad ms alta a a si se estima que el proceso bloqueado pronto pasar a estado de Preparado. a Transicin Bloqueado y Suspendido-Bloqueado: Si un proceso termina y libera o memoria principal y existe adems algn proceso en la cola de procesos Bloqueados a u y Suspendidos con mayor prioridad de la de todos los proceso que se encuentran en la cola de Preparados y Suspendidos, el SO puede entonces traer el proceso a memoria si tiene razones para suponer que va a ocurrir pronto el suceso que bloque al proceso. o Transicin Ejecucin-Preparado y Suspendido: Generalmente, un proceso en ejecuo o cin pasa al estado Preparado cuando expira su fraccin de tiempo de procesador, o o sin embargo, si se est expulsando al proceso porque hay otro de prioridad mayor a en la lista de Bloqueados y Suspendidos que acaba de desbloquearse, entonces el SO podr pasar directamente el proceso en ejecucin a la cola de Preparados y a o Suspendidos, liberando as espacio en la memoria principal. ejemplo 1 proceso de prioridad 1 en estado Bloqueado, 3 procesos de prioridad 2 en Preparado, 1 proceso en Ejecucin de prioridad 1 y 1 Preparado de prioridad 3. 1 o

26

Sistemas Operativos - 0.5.0

2.4 Estructuras de control del sistema operativo bloqueado y suspendido de prioridad 1. los bloqueados lo dejarn de estar pronto. a qu transicin tendr lugar? e o a Entre las razones ms habituales para la suspensin de procesos podemos citar las sia o guientes: 1. Intercambio un proceso por otro(s): El SO necesita liberar memoria principal para cargar un proceso que est listo para ejecutarse. a 2. Suspensin de un proceso por el SO por sospechar que est causando algn tipo o a u de problema. 3. Solicitud expresa del usuario. 4. Un proceso puede ejecutarse peridicamente y puede ser suspendido mientras eso pera el intervalo de tiempo antes de una nueva ejecucin. o 5. Por una peticin del proceso padre. o

2.4.

Estructuras de control del sistema operativo

El SO es el controlador de los sucesos que se producen en un sistema informtico y es a el responsable de planicar y expedir a los procesos para su ejecucin en el procesador. o El SO es quien asigna los recursos a los procesos y el que responde a las solicitudes de servicios bsicos realizadas por los programas de usuario, esencialemte se puede considea rar al SO como una entidad que administra el uso que hacen los procesos de los recursos del sistema. A continuacin se tratarn los elementos que necesita el SO para llevar a cabo sus o a labores de control de procesos y de administracin de recursos. o

2.4.1.

Tablas de memoria, de E/S, de archivos y de procesos

Si el SO va a administrar procesos y recursos, entonces tiene que disponer de informacin sobre el estado actual de cada proceso y de cada recurso. El mtodo universal o e para obtener esta informacin es sencillo. El sistema operativo construye y mantiene tao blas de informacin sobre cada entidad que est administrando. Por ejemplo, las tablas o a de memoria se utilizan para mantener el control sobre la memoria principal o real y la secundaria o virtual. Las tablas de memoria debern incluir la siguiente informacin: a o 1. Asignacin de memoria principal a los procesos. o 2. Asignacin de memoria secundaria a los procesos. o 3. Atributos de proteccin de segmentos de memoria principal o secundaria. o 4. Informacin necesaria para la gestin de la memoria secundaria. o o

http://alqua.org/libredoc/SSOO

27

2 Gestin de procesos o Las tablas de E/S son utilizadas por el SO para administrar los dispositivos y los canales de E/S del sistema informtico. En un momento dado, un dispositivo de E/S puede a estar disponible o estar asignado a un proceso particular. Si hay una operacin de E/S o en marcha el SO necesita conocer el estado de dicha operacin y la posicin de memoria o o principal que se est utilizando como origen o destino de la transferencia de E/S. a El SO tambin mantiene un conjunto de tablas de archivos, las cuales ofrecen infore macin sobre las propiedades de stos. Sobre su posicin y distribucin en la memoria o e o o secundaria, su estado actual y otros atributos. Gran parte de esta informacin, sino toda, o puede ser mantenida y utilizada por un sistema de gestin de archivos. Este consisitir o a en un mdulo del SO bien diferenciado y su labor se ocupar de todas las operaciones o a necesarias para la gestin y tratamiento de los archivos. o Un ejemplo de estructura para la ubicacin de archivos es la conocida como FAT o a (File Allocation Table)2 . Un ejemplo de sistema de cheros ser el utilizado por el SO Windows NT y conocido NTFS (NT Filesystem). Las tablas de procesos almacenan informacin relativa al conjunto de procesos aco tivos presentes en un instante determinado en el sistema. La informacin t o picamente almacenada para cada proceso y conocida como imagen del proceso en memoria consiste en: 1. Datos de usuario: Almacena los datos con que trabaja el proceso as como la pila utilizada por ste. [espacio de direcciones del proceso] e 2. Programa de usuario: Contiene el cdigo objeto3 del programa que se va a ejecutar. o [espacio de direcciones del proceso] 3. Pila de sistema: Se utiliza para almacenar parmetros y direcciones de retorno. a [estructuras del sistema operativo] 4. Bloque de control de proceso: Contiene la informacin necesaria para que un proceo so pueda ser gestionado y controlado por el SO. [estructuras del sistema operativo]

2.4.2.

Bloque de control de procesos (BCP)

El SO agrupa toda la informacin que necesita conocer respecto a un proceso particular o en una estructura de datos denominada descriptor de proceso o bloque de control de proceso (BCP). Cada vez que se crea un proceso, el SO crea uno de estos bloques para que sirva como descripcin en tiempo de ejecucin durante toda la vida del proceso o o (Vase gura 2.8). Cuando el proceso termina, su BCP es liberado y devuelto al depsito e o de celdas libres del cual se extraen nuevos BCPs.
2

Consiste en una tabla enlazada que hace referencia a los sectores del disco duro asignados a un mismo chero. FAT da problemas al fragmentarse frecuentemente lo que provoca un retardo al acceder a esos datos. Para solucionar este problema existen herramientas de desfragmentacin. En sistemas UNIX o se trata desde el principio ms ecientemente esta asignacin y los datos almacenados apenas sufren a o fragmentacin. o 3 cdigo que puede ser ejecutado por una determinada arquitectura. o

28

Sistemas Operativos - 0.5.0

2.4 Estructuras de control del sistema operativo

SO

BCPs

Figura 2.8: Dentro de la memoria asignada al SO tenemos unos bloques reservados para los BCPs de los procesos.

Un proceso resultar conocido para el SO y, por tanto, susceptible de ser elegido para a competir por los recursos del sistema slo cuando existe un BCP activo asociado a l4 . o e El BCP es una estructura de datos5 con campos para registrar los diferentes aspectos de ejecucin del proceso as como de la utilizacin de los recursos. La informacin del BCP o o o se agrupa generalmente en las siguientes categor as: 1. Identicacin del proceso o La informacin correspondiente a la identicacin del proceso consiste en un cono o junto de identicadores que incluyen: a) El identicador del proceso (PID): Consiste en un nmero entero asignado u por el sistema. b) El identicador del proceso padre c) La identicacin del usuario: Es una cadena de caracteres. o 2. Informacin del estado del procesador: La informacin relativa al estado del miso o croprocesador consta de: a) Registros visibles para el usuario: Son los registros utilizados por el proceso para almacenar datos de entrada y resultados. b) Registros de control y estado, entre los cuales de incluyen el contador de programa (PC), los regitros de cdigos de condicin 6 , los registros con indicadores o o de habilitacin o inhabilitacin de interrupciones y el modo de ejecucin. o o o
4

en el modelo de 5 estados, hab un estado llamado Nuevo en donde el SO sab que exist un nuevo a a a proceso pero sin BCP ya que a n no era candidato para asignarle recursos. u 5 El SO tiene bloques de memoria libres preparados para almacenar BCPs. 6 bits que reejan el resultado de una operacin aritmtica (bit de overow, bit de acarreo, bit de cero, o e etc)

http://alqua.org/libredoc/SSOO

29

2 Gestin de procesos o c) Puntero a la pila del proceso: El proceso utiliza una estructura de pila para almacenar parmetros y direcciones de retorno de funciones y procedimientos a 3. Informacin de control y gestin del proceso: La informacin de control y gestin o o o o del proceso incluye: a) Informacin de planicacin y estado: esta informacin es necesaria para que o o o el SO lleve a cabo sus funciones de planicacin. Los elementos t o picos de esta informacin son los siguientes o 1) Estado del proceso (ejecucin, preparado, etc). o 2) Prioridad de planicacin (se utilizarn algoritmos de planicacin que o a o usarn esta informacin). a o 3) Informacin para la planicacin: sta depende del algoritmo de planio o e cacin utilizado. o 4) Suceso por el que se encuentre esperando el suceso para reanudar su ejecucin o b) Estructuacin de datos: Un proceso puede estar enlazado con otros procesos o formando una cola, un anillo o alguna otra estructura. Por ejemplo; todos los procesos que se encuentran en estado preparado con un determinado nivel de prioridad pueden estar enlazado en una cola. El BCP podr contener entonces a punteros a otros BCPs para dar soporte a esas estructuras. c) Comunicacin entre procesos: en el BCP pueden ubicarse indicadores, seales o n y mensajes asociados con la comunicacin entre los procesos independientes. o d ) Privilegios de los procesos: A los procesos se les otorgan privilegios en trminos e de la memoria a la que pueden acceder y los tipos de instrucciones que pueden ejecutar. Adems, tambin se pueden aplicar privilegios al uso de servicios y a e utilidades del sistema. e) Gestin de memoria: Esta seccin incluye punteros a las tablas de pgina y/o o o a segmentos que describen la memoria asignada al proceso. f ) Recursos en propiedad y utilizacin de los procesos: Se incluyen los recursos o controlados por el proceso tales como los cheros abiertos por ste. Tambin e e se suele incluir un histrico de la utilizacin del procesador o de otro recurso. o o Esta informacin puede ser necesaria para el planicador. o

2.4.3.

Estados del sistema y listas de procesos

Un estado de un proceso es slo un componente del estado global del sistema que o incluye a todos los procesos y recursos. Para controlar la evolucin de todos los procesos, o el SO mantiene listas de BCPs clasicadas por el estado actual de los procesos aceptados. En general, existir una lista con los BCPs de todos los procesos en situacin de preparado a o y una lista con todos los BCPs en situacin de suspendido. Mediante estas listas el SO o forma colecciones de procesos en estados anlogos y sern examinadas por las rutinas de a a asignacin de recursos del SO. o

30

Sistemas Operativos - 0.5.0

2.4 Estructuras de control del sistema operativo ejemplo El planicador buscar el siguiente proceso a ejecutar en la lista de los BCPs a de procesos preparados. El rendimiento del SO puede mejorar ordenando y actualizando estas listas de la manera ms conveniente para las rutinas del SO que operan con ellas. Las transiciones de estado a de un proceso quedarn reejadas en el cambio de su BCP de una lista a otra. a

2.4.4.

Conmutacin de procesos o

Una transicin entre dos procesos residentes en memoria en un sistema multitarea se o denomina conmutacin de procesos o conmutacin de tareas. Las principales operaciones o o implicadas en una conmutacin de procesos estn resumidas en la gura 2.9. o a
Espacio de memoria de usuario Px (Proceso) Suceso Cambio de modo
Conmutacin de procesos. SO en ejecucin Guardar el estado de Px en BCP(x) Actualizar el estado de Px y los datos de planificacin Atencin del suceso (Se consideran fuera del proceso de conmutacin) Planificacin del siguiente proceso a ejecutar (Py) Restaurar el estado HW de Py y sus atributos desde BCP(y)

Espacio de memoria del SO

Cambio de modo Py(Proceso)

Figura 2.9: Esquema de conmutacin de recursos o

La gura se interpreta de la siguiente manera Estamos en modo usuario con un proceso Px ejecutndose. Ocurre un suceso. a Pasamos a modo supervisor (ejecutamos SO). Guarda el estado del proceso interrumpido en su BCP correspondiente Actualiza el estado de Px (en funcin del suceso que haya tenido lugar, el o estado ser uno u otro) y los datos de planicacin (Algunos ssoo tienen a o ciertas consideraciones para recalcular estos datos de planicacin para un o proceso. Por ejemplo, restar prioridad a procesos largos. Atendemos al suceso dependiendo de cada caso (no incluimos esta operacin o en lo que consideramos proceso de conmutacin) o

http://alqua.org/libredoc/SSOO

31

2 Gestin de procesos o Planicamos cul va a ser el siguiente proceso a ejecutar (que podr ser el a a mismo de inicio). Una vez elegido el nuevo proceso a ejecutar, llammosle Py , hay que restaurar e su estado HW y recuperamos sus atributos gracias a su BCP. Una vez elegido el nuevo proceso, realizamos un cambio de modo. La conmutacin de procesos es una operacin considerablemente ms compleja y costosa o o a que la conmutacin del contexto de interrupcin y puede ser bastante complicada en ssoo o o grandes que disponen de un mantenimiento preciso de recursos y de sosticados esquemas de planicacin. Dada su complejidad y su relativamente alta frecuencia de ocurrencia, o la implementacin de la conmutacin de procesos puede afectar signicativamente al o o rendimiento de un SO de multiprogramacin. o Es especialmente importante en sistemas donde el tiempo es un factor cr tico tales comos los sistemas en tiempo real. La eciencia de la conmutacin de procesos puede ser o mejorada con ayuda del hardware y una estructura de software especial conocida como hebra o hilo. Un esquema hardware habitualmente empleado para la acelerar la conmutacin de o procesos es disponer de mltiples conjuntos estructuralmente idnticos de registros del u e procesador. Un conjunto para el SO y otro para los procesos de usuario. Un bit dedicado en la unica copia de la palabra del estado del procesador indica el estado actual de operacin supervisor o usuario y el conjunto de registros activos. Este mtodo reduce el o e gasto software por conmutacin de modo y la mayor parte del proceso de almacenamiento o del estado hardware a la ejecucin de unas pocas instrucciones de manipulacin de bits. o o Si se dispone de ms de dos conjuntos de registros, se pueden aplicar ahorros similares a a los procesos de usuario hasta alcanzar el n mero de conjuntos de registros disponibles. u Pregunta Por qu la conmutacin de procesos es ms costosa que la conmutacin del e o a o contexto de interrupcin? o

2.4.5.

Servicios del sistema operativo para la gestin de procesos o

Aunque los ssoo suelen diferir en su losof y objetivos de diseo sus capas del ncleo a n u ms internas muestran una gran similitud en cuanto al tipo y rango de primitivas de a gestin de procesos que ofrecen. Los detalles y parmetros var inevitablemente de un o a an sistema a otro, pero las funciones proporcionadas por la coleccin total de llamadas al o SO son muy parecidas. Esto es as porque el concepto de proceso es com n a todos los u ssoo pero cada uno los gestiona de forma distinta. El servicio de creacin de procesos crear(Id_proceso, atributos): En respuesta a o esta llamada el SO crea un proceso con el identicador y los atributos especicados o predeterminados por el sistema. El SO obtiene un nuevo BCP del conjunto de memoria libre, rellena sus campos con los parmetros proporcionados y/o predea terminados e inserta el BCP en la cola de procesos preparados 7 . De esta manera,
7

cuando un proceso tiene BCP ya puede ejecutarse por lo que ya estar en el nivel de Preparado. a

32

Sistemas Operativos - 0.5.0

2.4 Estructuras de control del sistema operativo el proceso especicado podr ser elegido por el SO para su ejecucin. Algunos de a o los parmetros o atributos que pueden denirse en el momento de creacin de un a o proceso son los siguientes: 1. Nivel de privilegios. 2. Nivel de prioridad. 3. Tamao y requisitos de memoria. n 4. Informacin sobre acceso a memoria y derechos de acceso a dispositivos de o E/S. 5. Tamao mximo del area de datos y/o de la pila. n a El servicio de terminacin de procesos terminar(Id_proceso): La invocacin de eso o ta llamada hace que el SO destruya el proceso designado y lo suprima del sistema. El SO reacciona reclamando todos los recursos asignados al proceso especicado, cerrando los archivos abiertos por o para el proceso y efectuando otras operaciones de que pueden considerarse necesarias y que dependern de la naturaleza del a proceso. A continuacin el BCP es eliminado de la lista en que resida y devuelto o al conjunto de posiciones libres. Un proceso puede eliminarse a s mismo pero no puede crearse a s mismo. Un proceso podr eliminar a otro siempre y cuando tenga a privilegios para ello. El servicio para abortar un proceso abortar(Id_proceso): Esta orden supone la terminacin forzosa de un proceso. El SO efecta generalmente muchas de las o u acciones que conlleva la orden terminar. Habitualmente se proporciona un volcado de registros y memoria junto con la informacin relativa a la identidad del proceso o que se aborta y la razn de la accin. El uso ms frecuente de esta orden es para o o a terminaciones involuntarias. ejemplo en MS Windows NT se produce una operacin invlida y el SO lo aborta. o a Aparece una ventana detalles en donde se ofrece un volcado del registro y memoria. El servicio dividir/unir fork()/join(): La operacin dividir fork() se utiliza para o dividir una sencuencia de instrucciones en dos secuencias que se ejecutan concurrentemente. Se crea as un nuevo proceso (proceso hijo) que ejecuta una rama del cdigo dividido mientras el proceso padre contina ejecutando la otra. Esta o u llamada proporciona al proceso padre el identicador del proceso hijo y lo utiliza para asignarle una rama de cdigo. La operacin unir join() se utiliza para reunir o o las dos secuencias de cdigos divididos y puede ser empleada por un proceso padre o para sincronizarse con un proceso hijo. ejemplo Esto se utiliz mucho en servidores de cheros. Existe un proceso llamado o listener que se mantiene a la escucha. Cuando recibe la peticin de un cliente o (identicado por una direccin IP, etc). Listener realiza un fork() y al nuevo o

http://alqua.org/libredoc/SSOO

33

2 Gestin de procesos o proceso le proporciona la direccin IP del cliente mientras el proceso Padre o sigue a la escucha. El servicio para bloquear un proceso bloquear(Id_proceso): Como respuesta a esta llamada, el proceso designado queda bloqueado idenidamente y pasa a este estado. Un proceso puede bloquearse a s mismo o puede bloquear a otro proceso cuando est autorizado para ello en virtud de su nivel de privilegio, prioridad o pertenencia a a una familia. Servicio para reanudar un proceso reanudar(Id_proceso): Esta llamada al sistema saca un proceso del estado de bloqueo impuesto por la llamada anterior, el BCP del proceso pasa a la lista de preparados. Un proceso no puede reanudarse a s mismo si est en estado de bloqueo indenido, por lo que si se encuentra en a esta situacin no podr continuar hasta que sea reanudado. o a Servicio para retardar un proceso retardar(Id_proceso, tiempo): Esta orden es conocida en bastantes ssoo como sleep y bloquea a un proceso durante un tiempo igual al especicado. Servicio para leer los atributos de un proceso leer_Atributos(Id_proceso,atributos): Esta llamada vuelca en la estructura suministrada el conjunto de atributos del proceso. Servicio para modicar la prioridad de un proceso modificar_Prioridad(Id_proceso, nuevo_valor_prioridad): Esta llamada al sistema establece como nueva prioridad del proceso la especicada por parmetros. a

34

Sistemas Operativos - 0.5.0