www.monografias.

com

Los procesos en los sistemas operativos
1. 2. 3. 4. #. Modelo de procesos. Estados de los procesos Programación Concurrente. Grafos de precedencia Condiciones de concurrencia y especificación erar!u"a entre procesos $i%liograf"a

Modelo de procesos. Estados de los procesos
Como ya se indicó, el concepto de proceso juega un rol fundamental en la teoría y práctica de los sistemas operativos. Se señaló que un proceso era simplemente un programa en ejecución, lo que implicaba la tenencia de áreas de memoria, valores de registros, contador de programa, puntero de la pila, etc. a información acerca de los procesos presentes en un instante de tiempo se conserva en la tabla de procesos, la que permite restaurar un proceso que perdió antes el control de ejecución. Cada entrada de esta tabla se corresponde con un proceso en el sistema y recibe el nombre de bloque de control del proceso !"C#$. %ste contiene diferentes grupos de información para un proceso en específico, tales como !&ig '.( del "eterson$)

      

%stado del proceso. Contador de programa. *egistros del C"+ !acumuladores, índice, propósito general, estado$. +so de memoria !,irección, -nicio y longitud de los segmentos, tablas de páginas, etc$. -nformación de contabilidad !Cantidad de tiempo real y del C"+ utili.ado, límites de tiempo, n/mero del proceso, etc$. -nformación del estado de %0S !dispositivos asignados, lista de fic1eros abiertos, solicitud de %0S, etc$. -nformación de planificación del C"+ !prioridad, punteros a las colas de planificación, etc$.

%n el modelo de procesos todo el Software ejecutable, a menudo incluyendo el propio sistema de operación, se organi.a como procesos secuenciales. 2parentemente cada proceso tiene su propio procesador central, pero en realidad este cambia de uno a otro de acuerdo con el concepto de multiprogramación !seudoparalelismo$. os procesos son totalmente aleatorios en el tiempo y el comportamiento de un conjunto de ellos dependerá de las condiciones en un instante dado. %sto implica que los programas no pueden ser elaborados asumiendo lo que pasará en el futuro cuando se están procesando. +n proceso puede tener diferentes estados durante sus e3istencia. %l n/mero de estados dependerá del diseño del sistema operativo, pero al menos 1ay tres que siempre estarán presentes)

 %n ejecución) %l proceso está en posesión del C"+ en ese instante.  #loqueado) %l proceso está esperando 1asta que ocurra un evento e3terno !por ejemplo, una %0S$.  isto) %l proceso está en condiciones de ejecutar, pero está detenido temporalmente para permitir a
otro proceso la ejecución. Si a estos tres estados le agregamos las transiciones entre ellos se obtendría el siguiente grafo. En ejecución 1 3 Bloqueado 4 Listo 2

"ara ver trabajos similares o recibir información semanal sobre nuevas publicaciones, visite www.monografias.com

en caso contrario tendrá que esperar en el estado de listo. 2lgunos de los procesos constituyen programas mandados a ejecutar por los usuarios en sus comandos. <5 . administrador de memoria y manejadores de dispositivos$.monografias. pag. *esulta conveniente revisar primero lo referente a las instrucciones.  a transición 5 ocurre cuando el planificador del procesador !Sc1eduler. Suponga que se dispone de un procesador con varias unidades funcionales para reali.ada por el planificador del procesador y consiste en entregar el control de este a un proceso que está listo !debido a que el actual terminó. =:. "ara tener una idea más precisa a/n de las informaciones contenidas en esta estructura !&ig5<'.ó una solicitud que no puede ser satisfec1a en ese instante$.com .ar las instrucciones o simplemente se tienen m/ltiples C"+ y se desean ejecutar en grupo de instrucciones pertenecientes a un programa. a/n cuando el actual estaría en condiciones de continuar. %sta decisión puede estar motivada por el 1ec1o de que el proceso ya consumió el quantum de tiempo asignado o está listo otro que tiene mayor prioridad que el actual. Grafos de precedencia. pero otros son parte del sistema !sistema de fic1eros. 8aciendo uso del modelo de procesos resulta más fácil comprender como puede ser un sistema operativo por dentro.  a transición 6 tambi7n es reali. S4) a > 3 ? y@ "ara ver trabajos similares o recibir información semanal sobre nuevas publicaciones. Programación Concurrente. Si en ese instante no 1ay otro proceso ejecutando o su prioridad es superior al que está.com as cuatro transiciones que aparecen en el grafo dirigido se e3plican en la forma siguiente)  a transición 4 implica que el proceso estaba en ejecución y se bloquea debido a que necesita esperar la ocurrencia de un evento e3terno. se bloqueó o se le quitó$. son ilegibles para ejecutarse !por supuesto el evento que espera un manejador de dispositivo es la interrupción correspondiente$.monografias. 9anembaun$.www. una parte del sistema operativo$ decide que se debe entregar el control del C"+ a un proceso. %sta transición se logra con la propia ejecución de una llamada al sistema con este fin o for. <4 Planificador %n el planificador no solo se considera el planificador de procesos sino tambi7n los manejadores de interrupción y la comunicación entre los procesos. visite www. a instrumentación efectiva del modelo de procesos se logra mediante el uso de la tabla de procesos antes e3plicada. a vista antes dada permite llegar a un modelo del sistema operativo donde el nivel más bajo es el planificador y el siguiente lo forman una variedad de procesos !creados por los usuarios o partes del sistema operativo$. %l t7rmino programación concurrente o simplemente concurrencia se refiere a la ejecución paralela de instrucciones o procesos !aunque sea seudoparalela se deberán tener en cuanta las mismas consideraciones$.  a transición ' ocurre cuando el evento e3terno que el proceso estaba esperando tiene lugar. 9odos estos procesos se bloquean cuando necesitan esperar por algo y al ocurrir el evento pasan a listo. : 4 & .ado por el sistema operativo !se reali. de inmediato ocurrirá tambi7n la transición 6.

+n arco desde un nodo Si a un nodo Sj significa que la instrucción Sj solo puede ser ejecutada despu7s que se realice la Si.com . %n cambio las instrucciones a > 3 ? y. y b > . "or ejemplo. "ara esquemati. ? 4@ S6) c > a < b@ S') w > c ? 4@ ógicamente la instrucción c > a < b no puede ser ejecutada 1asta que no 1ayan sido reali. +n grafo de precedencia es un grafo dirigido y sin ciclos donde los nodos corresponden a instrucciones.www.adas la S4 y la S5 de forma tal que los valores de a y b 1ayan sido calculados.ar estas situaciones se 1ace uso de los llamados grafos de precedencia. ? 4 se pueden ejecutar concurrentemente debido a que una no depende de la otra.com S5) b > . en las instrucciones antes indicadas se tendría) S4 S5 S6 S' Atro ejemplo de grafo de precedencia podría ser) S4 S5 S6 S' S= SB "ara ver trabajos similares o recibir información semanal sobre nuevas publicaciones. o importante de notar en este ejemplo es que dentro de un proceso e3isten restricciones de precedencia entre las distintas instrucciones.monografias.monografias. o mismo ocurre con S' con respecto a S6. visite www.

< *!Sa$ G F!Sb$ > CE 5. Considerando la ecuación a > 3 ? y se tendrá) *!Si$ > C3. es decir todas las variables que cambian de valor !se escriben$ como resultado de la ejecución de la instrucción Si.com Condiciones de concurrencia y especificación.monografias. bE FCS6$ > CcE "ara que dos instrucciones sucesivas Sa y Sb puedan ser ejecutadas concurrentemente y producir el mismo resultado se tienen que cumplir las siguientes condiciones) 4.monografias. "ara ver trabajos similares o recibir información semanal sobre nuevas publicaciones. .a en la etiqueta y el otro en la instrucción siguiente al forH a instrucción join permite unir o recombinar varios 1ilos de ejecución en uno solo. bmE como el conjunto de escritura para Si. visite www. todos terminarán menos el /ltimo. a instrucción forH produce en un programa dos 1ilos de ejecución concurrentes. b5. . yE F!Si$ > CaE Si se toma la ecuación c > a < b *!S6$ > Ca. +no comien.ado que cada 1ilo de ejecución debe ejecutar el join y lo reali.efinamos el conjunto F!Si$ > Cb4.efinamos el conjunto *!Si$ > Ca4.www. pero no permiten presentar cálculos concurrentes en un lenguaje de programación.com . a5. D. . y a S6) c > a < b veremos que efectivamente ellas no pueden ejecutarse concurrentemente ya que) *!S6$ G F!S4$ > CaE %l grafo de precedencia es un medio /til para ver las restricciones de precedencia que puedan e3istir en un conjunto de instrucciones pertenecientes a un proceso. anE como el conjunto de lectura para Si. D.a en momentos diferentes.ebido a que el join necesita saber cuantos 1ilos se deberán unir para poder terminar a todos menos el /ltimo. 2 estas se le llaman condiciones de concurrencia. "ara que dos instrucciones puedan ejecutarse concurrentemente deberán cumplir ciertas condiciones.aron para especificar en un programa la ejecución concurrente de instrucciones. este está formado por todas las variables cuyos valores son referenciados en las instrucción Si durante su ejecución.< *!Sb$ G F!Sa$ > CE 6. . Cada una de las computaciones deben solicitar ser unidas con las otras.< F!Sa$ G F!Sb$ > CE Si aplicamos estas condiciones a S4) a > 3 ? y. as instrucciones forH and join fueron unas de las primeras notaciones que se utili. la instrucción tiene un parámetro con esta información.

Su forma es) parbegin S4@ S5 @ D @ Sn parend@ 9odas la instrucciones encerradas entre parbegin y parend se ejecutarán concurrentemente. +na construcción estructurada para especificar concurrencia es la parbegin 0 parend. count > 5@ forH 4@ a > 3 ? y@ go to 5@ 4) b > . 2mbas instrucciones se ejecutan en forma indivisible. ? 4@ 5) join count@ c > a < b@ w > c ? 4@ count4 > 5@ count5 > 5@ S4@ forH 4@ forH l5@ S5@ go to 6@ 5)S6@ 6)join count5@ S=@ go to '@ 4)S'@ ')join count4@ SB@ a construcción forH<join tiene la desventaja de no ser estructurada y por ello le son in1erentes todas las críticas que 1a recibido el go to. 2 manera de ejemplos veamos los dos que se 1an utili.ados con el forH y el join ) parbegin a > 3 ? y@ b > .com %l efecto de la instrucción join es como sigue) count > count < 4@ if !count I > :$ quit@ donde quit es una instrucción que resulta en la terminación de la ejecución. 2 manera de ejemplo veamos los dos anteriormente utili.monografias.www.monografias.com . visite www.ado anteriormente . ? 4@ parend@ c > a < b@ w > c ? 4@ S4@ parbegin S'@ C parbegin S5@ S6@ parend@ S=@ E "ara ver trabajos similares o recibir información semanal sobre nuevas publicaciones.

sin embargo e3isten circunstancias en que se requiere terminarlo en forma for. pero tantos 1ijos como sean necesarios. +n arco del nodo "i al nodo "j. P1 P2 P3 P4 P5 %3isten diversas formas en que un proceso puede crear uno al 1acer uso de una operación con este objetivo !como la forH$.monografias. . +n proceso termina a otro mediante una instrucción del tipo Jill -d. %n este caso. se crea un proceso nuevo "j. de instrucciones dentro de un proceso a la relación entre procesos.  %l padre espera 1asta que el 1ijo termina !construcción parbegin0parend$. "ara ver trabajos similares o recibir información semanal sobre nuevas publicaciones.o obstante. erar!u"a entre procesos. +n proceso termina cuando ejecuta su /ltima instrucción. %n tal ambiente los procesos aparecen y desaparecen dinámicamente durante el tiempo de duración de una ejecución. "ara ello se debe tener en cuenta como contin/a la ejecución y como se compartirán los recursos. cada nodo de un grafo de precedencia será visto como un proceso secuencial.ada. %n este caso se dice que "i es el padre de "j o que "j es 1ijo de "i. el proceso continua su ejecución y en caso contrario terminará .com . en cuanto al uso de grafos de precedencia y las especificaciones de programación. Como ya se indicó con anterioridad un proceso puede crear otros procesos. unida con otros mecanismos. . si da una respuesta totalmente satisfactoria.  %l 1ijo solo tiene acceso a un subconjunto de las variables del padre !esquema del +ni3$. esta 1erramienta. Cuando un proceso "i ejecuta una instrucción forH . 21ora es necesario e3tender los aspectos antes tratados.monografias. . visite www.com parend@ SB@ %sta construcción estructurada tiene la desventaja de que no puede especificar todos los grafos de precedencia. 2l arribarse a la instrucción join count. . . Cada proceso tiene un solo padre. "ara representar gráficamente este proceso de creación sucesiva de procesos se utili. el contador es decrementado por uno y si el resultado es cero.esde el punto de vista de cómo se compartirán los recursos se pueden instrumentar tambi7n dos casos)  %l padre y el 1ijo comparten todas las variables !construcción forJ0join$.www.e igual forma los nuevos pueden crear otros y así sucesivamente.a el llamado grafo de procesos que no es más que un árbol dirigido con raí.esde el punto de vista de como contin/a la ejecución se pueden instrumentar dos casos)  %l padre contin/a la ejecución concurrentemente con el 1ijo !construcción forH0join$.

mientas que el consumidor tomará de otro buffer !si lo 1icieran en el mismo tendrían que correr secuencialmente$. "ara terminar veamos un ejemplo simple consistente de dos procesos secuenciales que se ejecutan concurrentemente y que comparten algunos datos en com/n. +n proceso productor genera información que es tomada por el proceso consumidor. respectivamente$. a solución que se planteará estará referida al primer caso y por ello el productor deberá esperar cuando todos los buffers est7n llenos.ones por las cuales un padre puede detener la ejecución de un 1ijo. en segundo no se establece esta restricción y por ello el productor siempre podrá generar nuevos elementos !siempre 1abrá buffers vacíos$. %l ejemplo consiste en el clásico problema del productor0consumidor.com a operación Hill es usualmente invocada solamente por un proceso padre para culminar la ejecución de un 1ijo. que se llene un buffer de la piscina y decrementando cada ve.com . un manejador de una impresora produce caracteres que son consumidos por la impresoras. mientras out apunta al primer buffer lleno. %l productor generará en un buffer. Si un sistema operativo consiste de solo un n/mero limitado de procesos estáticos entonces su correspondiente grafo de procesos será tambi7n estático !es decir nunca cambia$. %ste es un ejemplo representativo de los sistemas de operación.ar estas dos posibilidades !in > out y in ? 4 K n > out. a estructura estática solo está presente en sistemas operativos muy simples. que se consume uno lleno de información. "ara controlar las condiciones e3tremas de todos los buffers vacíos o llenos se podrían utili.monografias. "or ejemplo. +n proceso que finali. %sta variable se incrementará cada ve. a jerarquía de procesos antes discutida está presente en la mayoría de los sistemas operativos que soportan el modelo de procesos. "ara remediar esta dificultad se incorpora en la solución un contador que originalmente recibe valor :. +n proceso que no termina su ejecución durante todo el tiempo en que el sistema operativo está funcionando se dice que es estático. %l problema que estamos tratando tiene dos formas de presentarse) el primer caso consiste en fijar un límite !diga menos n$ en la cantidad de buffers disponibles en la piscina. 0L %jemplo de productor consumidor L0 Mdefine n 4:: Mdefine 9*+% 4 typedef &item@ "ara ver trabajos similares o recibir información semanal sobre nuevas publicaciones. a piscina de buffers compartida por ambos procesos se instrumentará como un arreglo circular con dos punteros lógicos) in y out.a se dice que es dinámico. %n este caso. %n muc1os sistemas operativos se establece la condición de que los procesos 1ijos no pueden continuar la ejecución si el padre 1a sido finali.monografias. visite www. %3isten numerosas ra. %l productor y el consumidor deberán ser coordinados de forma tal que el consumidor no trate de consumir elementos que a/n no 1an sido producidos. la instrucción forH da como retorno esta información !-d > forH $. el consumidor deberá esperar 1asta que el elemento es producido.www. Como la instrucción requiere la identificación del proceso a ser terminado. pero en este caso solo se permite que se puedan llenar 1asta n < 4 buffers !se obliga a que e3ista uno vacío$. "ara permitir a los procesos productor y consumidor ejecutarse concurrentemente se creará una piscina de buffers.ado. a variable in apunta al pró3imo buffer libre. %n caso diferente será dinámico.

. . a incorporación de las instrucciones parbegin y parend se 1acen con el objetivo de brindar la opción de concurrencia.com .monografias. E void concumirPelemento!ne3tc$ item ne3tc@ C . "ara ver trabajos similares o recibir información semanal sobre nuevas publicaciones. out > :@ void producirPelemento!puntPne3tp$ item LpuntPne3tp@ C . visite www. . .www. in > :. E void productor!$ C item ne3tp@ w1ile !9*+%$C producirPelemento!Qne3tp$@ w1ile !counter> >n$ sHip@ buffer NinO > ne3tp@ in > !in?4$ K n@ counter??@ E E void consumidor!$ C item ne3tc@ w1ile !9*+%$ C w1ile !counter > > :$ sHip@ ne3tc > bufferNoutO@ out > !out?4$ K n@ counter<<@ consumirPelemento!ne3tc$@ E E main!$ C parbegin productor!$@ condumidor!$@ parend@ E a instrucción sHip no 1ace nada y por ello el w1ile se repite.ótese que esta espera implica que se contin/e ejecutando a/n cuando no se está 1aciendo nada /til !espera ocupada$.monografias. .com item bufferNnO@ s1ort int counter > :.

monografias. pag '=<=4.esign and implementation. Menende) maiHelPj4SR(Tya1oo.com $i%liograf"a'  Aperating System Concepts.com .com "ara ver trabajos similares o recibir información semanal sobre nuevas publicaciones.monografias. pag 6:R<65=. visite www. 9anembaum. "eterson y Silbersc1at. pag 4:6 < 44:.  Aprating Systems) . 2utor) Mai(el ..www.