0% encontró este documento útil (0 votos)
69 vistas30 páginas

Capitulo 3

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 30

Tecnologico De Estudios Superiores De Ecatepec

Resumen del libro Sistemas Operativos Unidad 3


Escudero Rosas Pedro Arturo
hp

2013

ndice
3.1 CONCEPTO DE PROCESO ..........................................................................................................2 3.2. MULTITAREA ...........................................................................................................................3 3.2.1. Base de la multitarea ........................................................................................................4 3.2.2. Ventajas de la multitarea .................................................................................................5 3.2.3 Grado de multiprogramacin y necesidades de memoria principal ..................................5 3.3 INFORMACIN DEL PROCESO .......................................................................................7 3.3.1 Estado del procesador ..................................................................................................7 3.3.2 Imagen de memoria del proceso .................................................................................7 3.3.3 Informacin del BCP ...................................................................................................10 3.3.4 Tablas del sistema operativo .....................................................................................11 3.4. FORMACIN DE UN PROCESO....................................................................................12 3.5. ESTADOS DEL PROCESO .............................................................................................13 3.5.1. Cambio de contexto ...................................................................................................14 3.6. PROCESOS LIGEROS .....................................................................................................16 3.6.1. Estados del proceso ligero ........................................................................................17 3.6.2. Paralelismo ..................................................................................................................17 3.6.3. Diseo con procesos ligeros .....................................................................................18 3.7. PLANIFICACIN ...............................................................................................................19 3.7.1. Algoritmos de planificacin ............................................................................................21 3.7.2. Planificacin en POSIX ....................................................................................................23 3.7.3. Planificacin en Windows NT/2000 ................................................................................24 3.8. SEALES Y EXCEPCIONES .......................................................................................................25 3.8.1. Seales ...........................................................................................................................25 3.8.2. Excepciones ....................................................................................................................26 3.9. TEMPORIZADORES ................................................................................................................27 3.10. SERVIDORES Y DEMONIOS...................................................................................................27 3.11. SERVICIOS POSIX .................................................................................................................29 3.11.1. Servicios POSIX para la gestin de procesos .................................................................29

3.1 CONCEPTO DE PROCESO


Todos los programas, cuya ejecucin solicitan los usuarios, se ejecutan en forma de procesos, de ah la importancia para el informtico de conocerlos en detalle. El proceso se puede definir como un programa en ejecucin y, de una forma un poco ms precisa, como la unidad de procesamiento gestionada por el sistema operativo. El sistema operativo mantiene una tabla de procesos con todos los BCP de los procesos. Por razones de eficiencia, la tabla de procesos se construye normalmente como una estructura esttica, que tiene un determinado nmero de BCP, todos ellos del mismo tamao. El contenido del BCP se analizar con ms detalle en secciones posteriores; sin embargo, de manera introductoria se puede decir que la informacin que compone un proceso es la siguiente: Contenido de los segmentos de memoria en los que residen el cdigo y los datos del proceso. A esta informacin se le denomina imagen de memoria o core image. Contenido de los registros del modelo de programacin Contenido del BCP. Es de destacar que el proceso no incluye informacin de E/S, puesto que sta suele estar reservada al sistema operativo. Jerarqua de procesos La secuencia de creacin de procesos genera un rbol de procesos. Para referirse a las relaciones entre los procesos de la jerarqua se emplean los trminos de padre, hijo, hermano o abuelo. Cuando el proceso A solicita al sistema operativo que cree el proceso B. se dice que A es padre de B y que B es hijo de A. Bajo esta ptica, la jerarqua de procesos puede considerarse como un rbol genealgico. Algunos sistemas operativos, como UNIX, mantienen de forma explcita esta estructura jerrquica de procesos un proceso sabe quin es su padre, mientras que otros sistemas operativos como el Windows NT no la mantienen.

Entorno del proceso


2

El entorno del proceso consiste en un conjunto de variables que se le pasan al proceso en el momento de su creacin. El entorno est formado por una tabla NOMBRE-VALOR que se incluye en la pila del proceso. El NOMBRE especifica el nombre de la variable y el VALOR su valor. Grupos de procesos Los procesos forman grupos que tienen diversas propiedades. El conjunto de procesos creados a partir de un shell puede formar un grupo de procesos. Tambin pueden formar un grupo los procesos dependientes de un terminal. El inters del concepto de grupo de procesos es que hay determinadas operaciones que se pueden hacer sobre todos los procesos de un determinado grupo, como se ver al estudiar algunos de los servicios. Un ejemplo es la posibilidad de matar a todos los procesos pertenecientes a un mismo grupo.

3.2. MULTITAREA
Dependiendo del nmero de procesos y de usuarios que puedan ejecutar simultneamente, un sistema operativo puede ser: Un Monotarea o monoproceso. Multitarea o multiproceso. Monousuario. Multiusuario (tiempo compartido). sistema operativo monotarea, tambin llamado monoproceso,

solamente permite que exista un proceso en cada instante. Si se quieren ejecutar varios procesos, o tareas, hay que lanzar la ejecucin de la primera y esperar a que termine antes de poder lanzar la siguiente. Por el contrario, un sistema operativo multitarea o multiproceso permite que coexistan varios procesos activos a la vez. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre estos procesos, para que todos ellos vayan avanzando en su ejecucin. Un sistema monousuario est previsto para dar soporte a un solo usuario. Estos sistemas pueden ser monoproceso o multiproceso. En este ltimo caso el usuario puede solicitar varias tareas al mismo tiempo.

El sistema operativo Multiusuario da soporte a varios usuarios que trabajan simultneamente desde varios terminales. A su vez, cada usuario puede tener activos ms de un proceso, por lo que el sistema, obligatoriamente, ha de ser multitarea. Los sistemas multiusuario reciben tambin el nombre de tiempo compartido, puesto que el sistema operativo ha de repartir el tiempo de la computadora entre los usuarios, para que las tareas de todos ellos avancen de forma razonable.

3.2.1. Base de la multitarea

La multitarea se basa en las tres caractersticas siguientes:

Paralelismo real entre E/S y procesador. Alternancia en los procesos de fases de E/S y de procesamiento. Memoria principal capaz de almacenar varios procesos.

Existe concurrencia real entre el procesador y las funciones de F/S realizadas por los controladores de los perifricos. Esto significa que, mientras se estn realizando una operacin de FIS de un proceso, se puede estar ejecutando otro proceso. La ejecucin de un proceso alterna, tpicamente, fases de procesamiento con fases de FIS, puesto que, cada cierto tiempo, necesita leer o escribir datos en un perifrico. En un sistema monotarea el procesador no tiene nada que hacer durante las fases de entrada/salida, por lo que desperdicia su potencia de procesamiento.

Proceso nulo El procesador no para de ejecutar nunca. Para evitar esta contradiccin, los sistemas operativos incluyen el denominado proceso nulo. Este proceso consiste en un bucle infinito que no realiza ninguna operacin til. El objetivo de este proceso es entretener al procesador cuando no hay ninguna otra tarea.

Estados de los procesos Un proceso puede estar en varias situaciones, que denominaremos estados. A lo largo de su vida, el proceso va cambiando de estado segn evolucionan sus necesidades. Planificador y activador El planificador (scheduler) forma parte del ncleo del sistema operativo. Entra en ejecucin cada vez que se activa el sistema operativo y su misin es seleccionar el proceso que se ha de ejecutar a continuacin. El activador (dispatcher) tambin forma parte del sistema operativo y su funcin es poner en ejecucin el proceso seleccionado por el planificador.
3.2.2. Ventajas de la multitarea

La multiprogramacin presenta varias ventajas, entre las que se pueden resaltar las siguientes: Facilita la programacin. Permite dividir las aplicaciones en varios procesos, lo que beneficia a su modularidad. Permite prestar un buen servicio, puesto que se puede atender a varios usuarios dc forma eficiente, interactiva y simultnea. Aprovecha los tiempos muertos que los procesos pasan esperando a que se completen sus operaciones de E/S. Aumenta el uso de la UCP, al aprovechar los espacios de tiempo que los procesos estn bloqueados. Todas estas ventajas hacen que, salvo para situaciones muy especiales, no se conciba actualmente un sistema operativo que no soporte multitarea.

3.2.3 Grado de multiprogramacin y necesidades de memoria principal

Se denomina grado de multiprogramacin al nmero de procesos activos que mantiene un sistema. El grado de multiprogramacin es un factor que afecta de forma importante el rendimiento que se obtiene de una computadora. Mientras ms procesos activos haya en un sistema, mayor es la probabilidad de encontrar siempre un proceso en estado de listo para ejecutar, por lo que entrar a ejecutar
5

menos veces el proceso nulo. Sin embargo, se tiene el inconveniente de que, a mayor grado de multiprogramacin, se tienen mayores necesidades de memoria. En un sistema sin memoria virtual los procesos activos han de residir totalmente en memoria principal. Por tanto, el grado de multiprogramacin viene limitado por el tamao de los procesos y por la memoria disponible. Adems, en un sistema de estas caractersticas, el rendimiento de la utilizacin del procesador aumenta siempre con el grado de multiprogramacin. Esto es as ya que los procesos siempre residen en memoria principal. En los sistemas con memoria virtual la situacin es ms compleja, puesto que los procesos slo tienen en memoria principal su conjunto residente, lo que hace que quepan ms procesos. Sin embargo, al aumentar el nmero de procesos disminuye el conjunto residente de cada uno. Cuando el conjunto residente de un proceso se hace menor de un determinado valor ya no representa adecuadamente al futuro conjunto de trabajo del proceso, lo que tiene como consecuencia que se produzcan muchos fallos de pgina

Sin embargo, superado un determinado valor de grado de multiprogramacin los conjuntos residentes de los procesos empiezan a ser demasiado pequeos, por lo que el sistema baja su rendimiento al perder el tiempo paginando Se denomina hiperpaginacin (trashing) a la situacin de alta paginacin producida cuando los conjuntos residentes de los procesos son demasiado pequeos. Cuando la memoria principal disponible es pequea, se llega a la situacin de hiperpaginacin antes de alcanzar una cota alta de utilizacin del procesador. Para aumentar el rendimiento de un sistema que est en esta situacin es necesario aadir ms memoria principal. Cuando la memoria es grande se llega a saturar el procesador con menos procesos de los que caben en memoria. En este caso se puede aumentar el rendimiento del sistema manteniendo la memoria pero aumentando la potencia del procesador o aadiendo otro procesador.

3.3 INFORMACIN DEL PROCESO Como se indic anteriormente, el proceso es la unidad de procesamiento gestionada por el sistema operativo. Para poder realizar este cometido, el proceso tiene asociado una serie de elementos de informacin, que se analizan seguidamente. Estos elementos se organizan en tres grupos: 3.3.1 Estado del procesador El estado del procesador est formado por el contenido de todos sus registros, que se enumeran seguidamente:

Registros generales. De existir registros especficos de coma flotante tambin se incluyen aqu. Contador de programa Puntero de pila Registro o registros de estado. Registros especiales. Como puede ser el RIED (registro identificador de espacio de direccionamiento)

El estado del procesador de un proceso reside en los registros del procesador, cuando el proceso est en ejecucin, o en el bloque de control de proceso (BCP), cuando el proceso no est en ejecucin. Cuando el proceso est ejecutando, el estado del procesador vara de acuerdo al flujo de instrucciones maquina ejecutado. En este caso, la copia del estado del procesador que reside en el BCP no est actualizada. 3.3.2 Imagen de memoria del proceso

La imagen de memoria del proceso est formada por los espacios de memoria que est autorizado a utilizar. Las principales caractersticas de la imagen de memoria son las siguientes: El proceso solamente puede tener informacin en su imagen de memoria y no fuera de ella. Si genera una direccin que est fuera de ese espacio, el
7

hardware de proteccin deber detectarlo y levantar una excepcin. Esta excepcin activar la ejecucin del sistema operativo que se encargar de tomar las acciones oportunas, que por lo general consistirn en abortar la ejecucin del proceso. Dependiendo de la computadora, la imagen de memoria estar referida a memoria virtual o a memoria fsica. Los procesos suelen necesitar asignacin dinmica de memoria. Por tanto, la imagen de memoria de los mismos se deber adaptar a estas necesidades, creciendo o decreciendo adecuadamente No hay que confundir la asignacin de memoria con la asignacin de marcos de memoria. El primer trmino contempla la modificacin de la imagen de memoria y se refiere a espacio virtual en los sistemas con este tipo de espacio.

El sistema operativo asigna la memoria al proceso, para lo cual puede emplear distintos modelos de imagen de memoria, que se analizan seguidamente. Imagen de memoria con un nico segmento de tamao fijo Este es el modelo ms sencillo de imagen de memoria y su uso se suele restringir a los sistemas sin memoria virtual. El proceso recibe un nico espacio de memoria que, adems, no puede variar de tamao. Proceso con un nico segmento de tamao variable Se puede decir que esta solucin no se emplea. En sistemas sin memoria virtual los segmentos no pueden crecer a menos que se deje espacio de memoria principal de reserva; se chocara con otro proceso. Ahora bien, la memoria principal es muy cara como para dejarla de reserva. En sistemas Con memoria virtual s se podra emplear, pero es ms conveniente usar un modelo de varios segmentos, pues es mucho ms flexible y se adapta mejor a las necesidades reales de los procesos. Proceso con un nmero fijo de segmentos de tamao variable Un proceso contiene varios tipos de informacin, cuyas caractersticas se analizan seguidamente:
8

Texto o cdigo. Bajo este nombre se considera el programa mquina que ha dc ejecutar el proceso. Aunque el programa podra auto modificarse. no es esta una prctica recomendada, por lo cual se considerar que esta informacin es fija y que solamente se harn operaciones de lectura sobre ella. Datos. Este bloque de informacin depende mucho de cada proceso. Los lenguajes de programacin actuales permiten asignacin dinmica de memoria, lo que hace que vare el tamao del bloque de datos al avanzar la ejecucin del proceso. Cada programa estructura sus datos de acuerdo a sus necesidades, pudiendo existir los siguientes tipos: Datos con valor inicial. Estos datos son estticos y su valor se fija al cargar el proceso desde el archivo ejecutable. Estos valores se asignan en tiempo dc compilacin. Datos sin valor inicial. Estos datos son estticos, pero no tienen valor asignado por lo que no estn presentes en el archivo ejecutable. Ser el sistema operativo el que, al cargar el proceso, rellene o no rellene esta zona de datos con valores predefinidos. Datos dinmicos. Estos datos se crean y se destruyen de acuerdo a las directrices del programa. Los datos podrn ser de lectura-escritura o solamente de lectura.

Pila: A travs del puntero de pila, los programas utilizan una estructura dc pila residente en memoria. En ella se almacenan, por ejemplo, los bloques de activacin delos procedimientos llamados. La pila es una estructura dinmica, puesto que crece y decrece segn avanza la ejecucin del proceso

Para adaptarse a estas informaciones, se puede utilizar un modelo de imagen de memoria con un nmero fijo de segmentos de tamao variable. El modelo tradicional utilizado en UNIX contempla tres segmentos: texto, pila y datos. Observe que el segmento de texto es de tamao lijo (el programa habitualmente
9

no se modifica) y que los segmentos de pila y de datos crecen en direcciones contrarias. Este modelo se adapta bien a los sistemas con memoria virtual, puesto que el espacio virtual reservado para que puedan crecer los segmentos de datos y pila no existe. El sistema operativo ofrece un espacio de datos que puede crecer y decrecer, pero deja al programa la gestin de este espacio. Los primeros pasos se refieren a la fase de programacin de la aplicacin, que desembocan en un objeto ejecutable. Sin embargo, este objeto no suele ser un programa mquina totalmente completo puesto que no incluye las rutinas del sistema. Esta solucin tiene la ventaja de no repetir en cada archivo ejecutable estas rutinas, con el consiguiente ahorro de espacio de disco. El sistema operativo, en el proceso de carga, incluye las rutinas necesarias formando un ejecutable completo en memoria. EI objeto ejecutable es un archivo que incluye la siguiente informacin: Cabecera que contiene entre otras informaciones las siguientes: Estado inicial de los registros. Tamao del cdigo y de los datos. Palabra mgica que identifica al archivo como un ejecutable Cdigo. Datos con valor inicial.

Los datos sin valor inicial no necesitan residir en el archivo ejecutable puesto que el sistema operativo se encargar de asignarles valor cuando cree el proceso encargado de ejecutar dicho programa. 3.3.3 Informacin del BCP El BCP contiene la informacin bsica del proceso, entre la que cabe destacar la siguiente: Informacin de identificacin Esta informacin identifica al usuario y al proceso Como ejemplo, se incluyen los siguientes datos: Identificador del proceso. Identificador del proceso padre, en caso de existir relaciones padre-hijo como en UNIX.
10

Informacin sobre el usuario (identificador de usuario. identificador de grupo).

Estado del procesador Contiene los valores iniciales del estado del procesador o su valor en el instante en que fue interrumpido el proceso. Informacin de control del proceso En esta seccin se incluye diversa informacin que permite gestionar al proceso. Destacaremos los siguientes datos: o Informacin de planificacin y estado o Estado del proceso. o Evento por el que espera el proceso cuando est bloqueado. o Prioridad del proceso. o Informacin de planificacin. 3.3.4 Tablas del sistema operativo El sistema operativo mantiene una serie de tablas que describen a los procesos y a los recursos del sistema. Algunos de los aspectos de estas tablas ya se han ido comentando, pero aqu se profundizar y detallar el contenido delas mismas. La informacin asociada a cada proceso se encuentra parcialmente en el BCP y parcialmente fuera de l la decisin de incluir o no una informacin en el BCP se toma segn dos argumentos: eficiencia y necesidad de compartir informacin.

Eficiencia Por razones de eficiencia, es decir, para acelerar los accesos, la tabla de procesos se construye normalmente como una estructura esttica, formada por un nmero determinado de BCP del mismo tamao. En este sentido, aquellas informaciones que pueden tener un tamao variable no deben incluirse en el BCP. De incluirlas habra que reservar en cada BCP el espacio necesario para almacenar el mayor tamao que puedan tener estas informaciones. Este espacio estara presente en todos los BCP, pero estara muy desaprovechado en la mayora de ellos. Un ejemplo de este tipo de informacin es la tabla de pginas, puesto que su tamao

11

depende dc las necesidades de memoria de los procesos, valor que es muy variable de unos a otros. Compartir informacin Cuando la informacin ha de ser compartida por varios procesos, no ha de residir en el BCP, que es dc acceso restringido al proceso que lo ocupa. A lo sumo, el BCP contendr un apuntador que permita alcanzar esa informacin. Un ejemplo de esta situacin lo presentan los procesos en relacin con los punteros de posicin de los archivos que tienen abiertos. Dos procesos pueden

tener simultneamente abierto el mismo archivo por dos razones: el archivo se hered abierto de un proceso progenitor o el archivo se abri de forma independiente por los dos procesos. Tablas de E/S En las tablas de entrada/salida el sistema operativo mantiene la informacin asociada a los perifricos y a las operaciones de entrada/salida. En general, el sistema operativo mantendr una cola por cada dispositivo, en la que se almacenarn las operaciones pendientes de ejecucin, as como la operacin en curso de ejecucin. 3.4. FORMACIN DE UN PROCESO La formacin de un proceso consiste en completar todas las informaciones que lo constituyen. De forma ms especfica, las operaciones que debe hacer el sistema operativo son las siguientes: Asignar un espacio de memoria para albergar la imagen de memoria. En general, este espacio ser virtual y estar compuesto por varios segmentos. Seleccionar un BCP libre de la tabla de procesos. Rellenar el BCP con la informacin de identificacin del proceso, con la descripcin de la memoria asignada, con los valores iniciales de los registros indicados en el archivo objeto, etc. Cargar en el segmento de texto el cdigo ms las rutinas de sistema y en el segmento de datos los datos iniciales contenidos en el archivo objeto.

12

Crear en el segmento de pila la pila inicial del proceso. La pila incluye inicialmente el entorno del proceso y los parmetros que se pasan en la invocacin del programa correspondiente.

Una vez completada toda la informacin del proceso, se puede marcar como listo para ejecutar, dc forma que el planificador, cuando lo considere oportuno, lo seleccione para su ejecucin.

3.5. ESTADOS DEL PROCESO No todos los procesos activos de un sistema multitarea estn en la misma situacin. Se diferencian, por tanto, tres estados bsicos en los que puede estar un proceso, estados que detallamos seguidamente:

Ejecucin. En este estado est el proceso que est siendo ejecutado por el procesador, es decir, que est en fase de procesamiento. En esta fase el estado del proceso reside en los registros del procesador

Bloqueado. Un proceso bloqueado est esperando a que ocurra un evento y no puede seguir ejecutando hasta que suceda el evento. Una situacin tpica de proceso bloqueado se produce cuando el proceso solicita una operacin de E/S. Hasta que no termina esta operacin, el proceso queda bloqueado. En esta fase, el estado del proceso reside en el BCP.

Listo. Un proceso est listo para ejecutar cuando puede entrar en fase de procesamiento. Dado que puede haber varios procesos en este estado, una de las tareas del sistema operativo ser seleccionar aquel que debe pasar a ejecucin. El mdulo del sistema operativo que toma esta decisin se denomina planificador. En esta fase, el estado del proceso reside en el BCP.

Estados suspendidos Adems de los tres estados bsicos de ejecucin, listo y bloqueado, los procesos pueden estar en los estados de espera y de suspendido. Los procesos entran en el sistema porque lo solicita un proceso de usuario o porque est prevista su ejecucin hatch. Es frecuente tener una lista de procesos Batch en espera para
13

ser ejecutados cuando se pueda. El sistema operativo ha de ir analizando dicha lista para lanzar la ejecucin de los procesos a medida que disponga de los recursos necesarios. Los procesos salen del sistema cuando mueren, es decir, al ejecutar el servicio correspondiente o al producir algn error irrecuperable.

Para disminuir el grado de multiprogramacin efectivo, el sistema operativo puede Suspender algunos procesos, lo que implica que les retira todos sus marcos de pginas, dejndolos enteramente en la zona de intercambio. El objetivo de la suspensin estriba en dejar suficiente memoria a los procesos no suspendidos para que su conjunto residente tenga un tamao adecuado que evite la hiperpaginacin. No todos los sistemas operativos tienen la opcin de suspensin. 3.5.1. Cambio de contexto La activacin del sistema operativo se realiza mediante el mecanismo de las interrupciones. Cuando se produce una interrupcin se realizan las dos operaciones siguientes:

Se salva el estado del procesador en el correspondiente BCP. Se pasa a ejecutar la rutina de tratamiento de interrupcin del sistema operativo.

Llamaremos cambio de contexto al conjunto de estas operaciones. Como resultado del cambio de contexto se puede producir un cambio en el estado de algunos procesos, pero no necesariamente. Supngase que el proceso A est bloqueado esperando a que se complete una lectura de disco y que llega una interrupcin del disco. Se produce un cambio de contexto y entra a ejecutar el sistema operativo para tratar la interrupcin. Salvaguarda del estado Las transiciones en el estado del proceso exigen un trabajo cuidadoso por parte del sistema operativo, para que se hagan correctamente. El aspecto ms delicado se refiere al contenido de los registros de la computadora. Veamos detalladamente los pasos involucrados:
14

Un proceso est en ejecucin, por tanto, parte de su informacin reside en los registros de la mquina, que estn siendo constantemente modificados por la ejecucin de sus instrucciones de mquina.

Bien sea porque llega una interrupcin o porque el proceso solicita un servicio del sistema operativo, el proceso para su ejecucin. Inmediatamente entra a ejecutar el sistema operativo, ya sea para atender la interrupcin o para atender el servicio demandado. La ejecucin del sistema operativo, como la de todo programa, modifica los contenidos de los registros de la mquina, destruyendo sus valores anteriores.

Segn la secuencia anterior, si se desea ms adelante continuar con la ejecucin del proceso, se presenta un grave problema: los registros ya no contienen los valores que deberan.

Activacin de un proceso El mdulo del sistema operativo que pone a ejecutar un proceso se denomina Activador o dispatcher. La activacin de un proceso consiste en copiar en los registros del procesador el estado del procesador, que est almacenado en su BCP. De esta forma, el proceso continuar su ejecucin en las mismas condiciones en las que fue parado. El activador termina con una instruccin RETI de retorno de interrupcin. El efecto de esta instruccin es restituir el registro de estado y el contador de programa, lo cual tiene los importantes efectos siguientes: Al restituir el registro de estado, se restituye el bit que especifica el nivel de ejecucin. Dado que cuando fue salvado este registro el bit indicaba nivel de usuario, puesto que estaba ejecutando un proceso, su restitucin garantiza que el proceso seguir ejecutando en nivel de usuario Al restituir el contador de programa, se consigue que la siguiente instruccin mquina que ejecute el procesador sea justo la instruccin en la que fue interrumpido el proceso. En este momento es cuando se ha dejado de ejecutar el sistema operativo y se pasa a ejecutar el proceso.

15

3.6. PROCESOS LIGEROS Un proceso ligero, o thread, es un programa en ejecucin (flujo de ejecucin) que comparte la imagen de memoria y otras informaciones con otros procesos ligeros. Un proceso puede contener un solo flujo de ejecucin, como ocurre en los procesos clsicos, o ms de un flujo de ejecucin (procesos ligeros). Desde el punto de vista de la programacin, un proceso ligero se define corno una funcin cuya ejecucin se puede lanzar en paralelo con otras. El hilo de ejecucin primario, o proceso ligero primario, corresponde a la funcin main. Cada proceso ligero tiene informaciones que le son propias y que no comparte con otros procesos ligeros. Las informaciones propias se refieren fundamentalmente al contexto de ejecucin, pudindose destacar las siguientes: Contador de programa. Pila. Registros.

Estado del proceso ligero (ejecutando, listo o bloqueado).Todos los procesos ligeros de un mismo proceso comparten la informacin del mismo. En concreto, comparten: Espacio de memoria. Variables globales. Archivos abiertos. Procesos hijos. Temporizadores. Seales y semforos Contabilidad.

Es importante destacar que todos los procesos ligeros de un mismo proceso comparten el mismo espacio de direcciones de memoria, que incluye el cdigo, los datos y las pilas de los diferentes procesos ligeros. Esto hace que no exista proteccin de memoria entre los procesos ligeros de un mismo proceso, algo que s ocurre con los procesos convencionales. El proceso ligero constituye la unidad ejecutable en Windows NT.

16

3.6.1. Estados del proceso ligero El proceso ligero puede estar en uno de los tres estados siguientes: ejecutando, listo para ejecutar y bloqueado. El estado del proceso ser la combinacin de los estados de sus procesos ligeros. Por ejemplo, si tiene un proceso ligero en ejecucin, el proceso est en ejecucin. Si no tiene proceso ligeros en ejecucin, pero tiene alguno listo para ejecutar, el proceso est en estado de listo. Finalmente, si todos sus procesos ligeros estn bloqueados, el proceso est bloqueado. No tiene sentido el estado dc suspendido, puesto que si el proceso est suspendido, todos sus procesos ligeros lo estarn. 3.6.2. Paralelismo En efecto, cuando un programa puede dividirse en procedimientos que pueden ejecutar de forma independiente, el mecanismo de los procesos ligeros permite lanzar simultneamente la ejecucin de todos ellos. De esta forma se consigue que el proceso avance ms rpidamente.

El estado del proceso ser la combinacin de los estados de sus procesos ligeros. Por ejemplo, si tiene un proceso ligero en ejecucin, el proceso est en ejecucin. Si no tiene proceso ligeros en ejecucin, pero tiene alguno listo para ejecutar, el proceso est en estado de listo. Finalmente, si todos sus procesos ligeros estn bloqueados, el proceso est bloqueado. No tiene sentido el estado dc suspendido, puesto que si el proceso est suspendido, todos sus procesos ligeros lo estarn. La base de este paralelismo estriba en que, mientras un proceso ligero est bloqueado, otro puede ejecutar. Comparando el uso de los procesos ligeros con otras soluciones se puede decir que: Los procesos ligeros: Permiten paralelismo y variables compartidas. Utilizan llamadas al sistema bloqueantes por proceso ligero. Esta es la solucin ms sencilla de conseguir paralelismo desde el punto de vista de la programacin. Un proceso convencional con un solo proceso ligero: No hay paralelismo.
17

Utiliza llamadas al sistema bloqueantes. Un proceso con un solo proceso ligero, que usa llamadas no bloqueantes y estructurado en mquina de estados finitos: Permite paralelismo. Utiliza llamadas al sistema no bloqueantes, lo que lleva a un diseo muy complejo y difcil de mantener. Varios procesos convencionales cooperando: Permite paralelismo. No comparte variables, por lo que la comunicacin puede consumir mucho tiempo. 3.6.3. Diseo con procesos ligeros La utilizacin de procesos ligeros ofrece las ventajas de divisin de trabajo que dan los procesos, pero con una mayor sencillez, lo que se traduce en mejores prestaciones. En este sentido, es de destacar que los procesos ligeros comparten memoria directamente, por lo que no hay que aadir ningn mecanismo adicional para utilizarla, y que la creacin y destruccin de procesos ligeros requiere mucho menos trabajo que la de procesos. Las ventajas de diseo que se pueden atribuir a los procesos ligeros son las siguientes: Permite separacin de tareas. Cada tarea se puede encapsular en un proceso ligero independiente. Facilita la modularidad, al dividir trabajos complejos en tareas. Aumenta la velocidad de ejecucin del trabajo, puesto que aprovecha los tiempos de bloqueo de unos procesos ligeros para ejecutar otros. El paralelismo que permiten los procesos ligeros, unido a que comparten memoria permite la programacin concurrente. Este tipo de programacin tiene un alto nivel de dificultad, puesto que hay que garantizar que el acceso a los datos compartidos se haga de forma correcta. Los principios bsicos que hay que aplicar son los siguientes: Hay variables globales que se comparten entre varios procesos ligeros. Dado que cada proceso ligero ejecuta de forma independiente a los dems, es fcil que ocurran accesos incorrectos a estas variables.
18

Para ordenar la forma en que los procesos ligeros acceden a los datos se emplean mecanismos de sincronizacin, como el mutex. .El objetivo de estos mecanismos es impedir que un proceso ligero acceda a unos datos mientras los est utilizando otro. Para escribir cdigo correcto hay que imaginar que los cdigos de los otros procesos ligeros que pueden existir estn ejecutando cualquier sentencia al mismo tiempo que la sentencia que se est escribiendo.

Diseo de servidores mediante procesos ligeros Una de las aplicaciones tpicas de los procesos ligeros es el diseo de procesos servidores paralelos. En la primera se plantea un proceso ligero distribuidor cuya funcin es la recepcin de las rdenes y su traspaso a un proceso ligero trabajador. El esquema puede funcionar creando un nuevo proceso ligero trabajador por cada solicitud dc servicio, proceso ligero que muere al finalizar su trabajo, o teniendo un conjunto de ellos creados a los que se va asignando trabajo y que quedan libres al terminar la tarea encomendada. Esta segunda alternativa es ms eficiente, puesto que se evita el trabajo de crear y destruir a los procesos ligeros. La segunda solucin consiste en disponer de un conjunto de procesos ligeros iguales, todos los cuales pueden aceptar una orden. Cuando llega una solicitud, la recibe uno de los procesos ligeros que estn leyendo del puerto. Este proceso ligero tratar la peticin y, una vez finalizado el trabajo solicitado, volver a la fase de leer una nueva peticin del puerto. La tercera solucin aplica la tcnica denominada de segmentacin (pipe-line). Cada trabajo se divide en una serie de fases, encargndose de cada una de ellas un proceso ligero especializado. El esquema permite tratar al mismo tiempo tantas solicitudes como fases tenga la segmentacin, puesto que se puede tener una en cada proceso ligero. 3.7. PLANIFICACIN El objetivo de la planificacin de procesos y procesos ligeros es el reparto del tiempo de procesador entre los procesos que pueden ejecutar. El planificador es el mdulo del sistema operativo que realiza la funcin de seleccionar el proceso en
19

estado de listo que pasa a estado de ejecucin, mientras que el activador es el mdulo que pone en ejecucin el proceso planificado. Los sistemas pueden incluir varios niveles de planificacin de procesos. La planificacin a largo plazo tiene por objetivo aadir nuevos procesos al sistema, tomndolos de la lista de espera. Estos procesos son procesos de tipo batch, en los que no importa el instante preciso en el que se ejecuten. La planificacin a medio plazo trata la suspensin de procesos. Es la que decide qu procesos pasan a suspendido y cules dejan de estar suspendidos. Aade o elimina procesos de memoria principal modificando, por tanto, el grado de multiprogramacin. La planificacin a corto plazo se encarga de seleccionar el proceso en estado de listo que pasa a estado de ejecucin. Expulsin La planificacin puede ser con expulsin o sin ella. En un sistema sin expulsin un proceso conserva el procesador mientras lo desee, es decir, mientras no solicite del sistema operativo un servicio que lo bloquee. En los sistemas con expulsin, el sistema operativo puede quitar a un proceso del estado de ejecucin aunque ste no lo solicite. Esta solucin permite controlar el tiempo que est en ejecucin un proceso, pero requiere que el sistema operativo entre de forma sistemtica a ejecutar para as poder comprobar si el proceso ha superado su lmite de tiempo de ejecucin. Como sabemos, las interrupciones sistemticas del reloj garantizan que el sistema operativo entre a ejecutar cada pocos milisegundos, pudiendo determinar en estos Instantes si ha de producirse un cambio dc proceso o no. Colas de procesos Para realizar las funciones de planificacin, el sistema operativo organiza los procesos listos en una serie de estructuras de informacin que faciliten la bsqueda del proceso a planificar. Es muy frecuente organizar los procesos en colas de prioridad y de tipo. Objetivos de la planificacin El objetivo de la planificacin es optimizar el comportamiento del sistema. Ahora bien, el comportamiento de un sistema informtico es muy complejo, por tanto, el
20

objetivo de la planificacin se deber centrar en la faceta del comportamiento en el que se est interesado. Entre los objetivos que se suelen perseguir estn los siguientes: Reparto equitativo del procesador. Eficiencia (optimizar el uso del procesador). Menor tiempo de respuesta en uso interactivo. Menor tiempo de espera en lotes (batch). Mayor nmero de trabajos por unidad de tiempo (batch). Cumplir los plazos de ejecucin de un sistema de tiempo real. La mayora de estos objetivos son incompatibles entre s, por lo que hay que centrar la atencin en aquel que sea de mayor inters. Por ejemplo, una planificacin que realice un reparto equitativo del procesador no conseguir optimizar el uso del mismo. Hay que observar que algunos objetivos estn dirigidos a procesos interactivos, mientras que otros lo estn a procesos batch.

3.7.1. Algoritmos de planificacin

En esta seccin se presentan los algoritmos de planificacin ms usuales. Cclica o Round-robin El algoritmo cclico est diseado para hacer un reparto equitativo del tiempo del procesador, por lo que est especialmente destinado a los sistemas de tiempo compartido. El algoritmo se basa en el concepto de rodaja (slot) de tiempo. Los procesos estn organizados en forma de cola circular, eligindose para su ejecucin el proceso cabecera de la cola. Un proceso permanecer en ejecucin hasta que ocurra una de las dos condiciones siguientes: El proceso pasa a estado de bloqueado, porque solicita un servicio del sistema operativo. El proceso consume su rodaja de tiempo, es decir, lleva ejecutando el tiempo estipulado de rodaja. Un proceso que ha consumido su rodaja de tiempo es expulsado y pasa a ocupar el ltimo lugar en la cola. De esta forma, se consigue que todos los procesos
21

pasen a ejecutar, repartiendo el tiempo del procesador de forma homognea entre ellos. Segn se construya el planificador, los procesos que pasan de bloqueados a listos se pueden incluir como primero o como ltimo de la cola. FIFO En este caso, la cola de procesos en estado de listo est ordenada de acuerdo al instante en que los procesos pasan al estado de listo. El algoritmo es sencillo, puesto que consiste en tomar para ejecutar al proceso de la cabecera de la cola. No se plantea expulsin, por lo que el proceso ejecuta hasta que realiza una llamada bloqueante al sistema operativo. Es aplicable a los sistemas batch, pero no a los interactivos. Prioridades En el algoritmo de prioridades se selecciona para ejecutar el proceso en estado de listo que tenga la mxima prioridad. Cuando las prioridades son fijas puede surgir el problema de la inanicin, que implica que un proceso puede estar esperando indefinidamente sin llegar a ejecutar. Esto ocurrir si van apareciendo siempre procesos de mayor prioridad que estn en estado de listo.

Primero el trabajo ms cort Este algoritmo exige conocer a priori el tiempo de ejecucin de los procesos, por lo que es aplicable a trabajos batch repetitivos cuyo comportamiento se tenga analizado. El algoritmo consiste en seleccionar para ejecucin al proceso listo con menor tiempo de ejecucin. No se plantea expulsin, por lo que el proceso sigue ejecutndose mientras lo desee. La ventaja de este algoritmo es que produce el menor tiempo de respuesta, pero a costa de penalizar los trabajos de mayor tiempo de ejecucin. Tambin puede sufrir de inanicin, puesto que, en el caso de que estn continuamente apareciendo procesos con tiempo de ejecucin pequeo, un proceso largo puede no llegar a ejecutar
22

Aleatorio o lotera Este algoritmo consiste en elegir al azar el proceso a ejecutar. Se puede basar en un generador de nmeros pseudoaleatorios. Planificacin de sistemas de tiempo real Los sistemas de tiempo real se caracterizan porque los procesos tienen que ejecutar en instantes predeterminados. Se pueden diferenciar dos tipos de procesos de tiempo real: a plazo fijo y peridico. La diferencia estriba en que los de plazo fijo tienen que ejecutar una vez, en un instante determinado, mientras que los peridicos deben ejecutar de forma repetitiva cada cierto tiempo. La planificacin de tiempo real est basada en el reloj de tiempo de la computadora y su objetivo es conseguir que no se retrase la ejecucin de los procesos. Valoracin de los algoritmos de planificacin En la valoracin de los algoritmos de planificacin hay que tener en cuenta los beneficios que presenta cada una de las alternativas a analizar. En este sentido, un algoritmo menos bueno pero muy simple, como el aleatorio, que consume muy poco tiempo de procesador, puede ser globalmente mejor que otro ms sofisticado, puesto que la ganancia de rendimiento conseguida puede no compensar el mayor tiempo consumido
3.7.2. Planificacin en POSIX

POSIX especifica una serie de polticas de planificacin, aplicables a procesos y procesos ligeros, que debe implementar cualquier sistema operativo que ofrezca esta interfaz. En POSIX cada unidad ejecutable lleva asociada una poltica de planificacin y una prioridad. Cada poltica de planificacin lleva asociada un rango de prioridades. El planificador elegir siempre para ejecutar el proceso o proceso ligero con la prioridad ms alta. Las polticas de planificacin disponibles en POSIX son las siguientes: FIFO: Los procesos que se planifican segn esta poltica se introducen al final de la cola de su prioridad asociada. Un proceso con esta poltica de planificacin slo se expulsar de la UCP cuando ejecute una llamada al
23

sistema bloqueante o cuando aparezca en el sistema un proceso con mayor prioridad. Cclica: En este caso, los procesos de cada nivel de prioridad se planifican segn una poltica de planificacin cclica con una determinada rodaja de tiempo. Otra: Hace referencia a una poltica de planificacin cuyo comportamiento depende de cada implementacin. De acuerdo a esto, todo sistema operativo que siga la norma POSIX debe ofrecer al menos dos polticas de planificacin: FIFO y cclica, pudiendo, adems, ofrecer otra poltica de planificacin. Observe que la poltica de planificacin se realiza por proceso y, por tanto, las tres polticas conviven en el planificador.
3.7.3. Planificacin en Windows NT/2000

En Windows NT la unidad bsica de ejecucin es el proceso ligero y, por tanto, la planificacin se realiza sobre este tipo de procesos. Estos estados son: Listo. Los procesos ligeros en este estado estn listos para ejecutar. Reserva. Un proceso ligero en este estado ser el siguiente proceso ligero a ejecutar en un procesador determinado. Slo puede haber un proceso ligero en este estado por procesador. Ejecucin. El proceso ligero permanece ejecutando hasta que se cumpla alguna de estas condiciones: el sistema operativo lo expulsa para ejecutar un proceso ligero de mayor prioridad, la rodaja de tiempo del proceso termina o bien el proceso ligero finaliza su ejecucin. Bloqueado. Cuando el proceso ligero deja de estar bloqueado puede, dependiendo de su prioridad, comenzar su ejecucin inmediatamente o pasar al estado de listo para ejecutar. Transicin. Un proceso ligero entra en este estado cuando est listo para ejecutar, pero la pila que utiliza el sistema operativo para ese proceso no reside en memoria principal. Cuando la pgina vuelva a memoria, el proceso ligero pasar al estado de listo para ejecutar.
24

Finalizado. Cuando un proceso ligero finaliza su ejecucin, pasa a este estado. Una vez terminado, el proceso ligero puede o no ser eliminado del sistema. En caso de no ser eliminado, podra ser reutilizado de nuevo.

3.8. SEALES Y EXCEPCIONES


Cuando un sistema operativo desea notificar a un proceso la ocurrencia de un determinado evento, o error, recurre a dos tipos de mecanismos: seales y excepciones. Las primeras se utilizan en POS IX y las segundas en Windows NT.
3.8.1. Seales

Las seales tienen frente al proceso el mismo comportamiento que las interrupciones tienen frente al procesador, por lo que se puede decir que una seal es una interrupcin al proceso. Seal proceso proceso Un proceso puede enviar una seal a otro proceso que tenga el mismo identificador de usuario (uid), a no los que lo tengan distinto. Un proceso tambin puede mandar una seal a un grupo de procesos. Seal sistema operativo proceso El sistema operativo tambin toma la decisin de enviar seales a los procesos cuando ocurren determinadas condiciones. Por ejemplo, las excepciones de ejecucin programa (el desbordamiento en las Operaciones aritmticas, la divisin por cero, el intento de ejecutar una instruccin con cdigo de operacin incorrecto o de direccionar una posicin de memoria prohibida) las convierte el sistema operativo en seales al proceso que ha causado la excepcin. Tipos de seales Dado que las seales se utilizan para indicarle al proceso muchas cosas diferentes, existen una gran variedad de ellas. A ttulo de ejemplo, se incluyen aqu tres categoras de seales:
25

Excepciones hardware. Comunicacin. FIS asncrona.

Efecto de la seal y armado de la misma Como se ha indicado anteriormente, el efecto de la seal es ejecutar una rutina de tratamiento. Para que esto sea as, cl proceso debe tener armada ese tipo de seal, es decir, ha de estar preparado para recibir dicho tipo de seal. Armar una seal significa indicar al sistema operativo el nombre de la rutina del proceso que ha de tratar ese tipo de seal, lo que, como veremos, se consigue en POSIX con el servicio sigaction. Cuando un proceso recibe una seal sin haberla armado o enmascarado previamente, se ejecuta la accin por defecto, que en la mayora de los casos consiste en matar al proceso.
3.8.2. Excepciones

Una excepcin es un evento que ocurre durante la ejecucin de un programa y que requiere la ejecucin dc un fragmento de cdigo situado fuera del flujo normal de ejecucin. Las excepciones son generadas por el hardware o el software. El manejo de excepciones necesita el soporte del lenguaje de programacin para que el programador pueda especificar el manejador a ejecutar cuando se produzca una excepcin. Un esquema habitual es el que se presenta a continuacin: try{ Bloque donde puede producirse una excepcin } except{ Bloque que se ejecutar si se produce una excepcin en el bloque anterior } En el esquema anterior, el programador encierra dentro del bloque try el fragmento de cdigo que quiere proteger de la generacin de excepciones. En el bloque except sita el manejador de excepciones. En caso de generarse una excepcin en el bloque try, el sistema operativo transfiere el control al bloque except que se encargar de manejar la correspondiente excepcin. Windows NT utiliza el mecanismo de excepciones, similar al anterior, para notificar a los procesos los eventos o errores que surgen como consecuencia del programa
26

que estn ejecutando. Win32 hace uso del concepto de manejo de excepciones estructurado que permite a las aplicaciones tomar el control cuando ocurre una determinada excepcin.

3.9. TEMPORIZADORES
El sistema operativo mantiene en cada BCP un temporizador que suele estar expresado en segundos. Cada vez que la rutina del sistema operativo que trata las interrupciones de reloj comprueba que ha transcurrido un segundo, decremento todos los temporizadores que no estn a 0 y comprueba si han llegado a 0. Para aquellos procesos cuyo temporizador acaba de llegar a 0, el sistema operativo notifica al proceso que el temporizador ha vencido. En POSIX se genera una seal SIGALRN. En Win32 se ejecuta una funcin definida por el usuario y que se asocia al temporizador. El proceso activa el temporizador mediante un servicio en el que especifica el nmero de segundos o milisegundos que quiere temporizar. Cuando vence la temporizacin, recibir la correspondiente seal o se ejecutar la funcin asociada al mismo.

3.10. SERVIDORES Y DEMONIOS


Los servidores y los demonios son dos tipos de procesos muy frecuentes y que tienen unas caractersticas propias que se analizan seguidamente. Un servidor es un proceso que est pendiente de recibir rdenes de trabajo que provienen de otros procesos, que se denominan clientes. Una vez recibida la orden, la ejecuta y responde al peticionario con el resultado. El proceso servidor tiene la siguiente estructura de bucle infinito: Lectura de orden. El proceso est bloqueado esperando a que llegue una orden. Recibida la orden, el servidor la ejecuta. Finalizada la ejecucin, el servidor responde con el resultado al proceso cliente y vuelve al punto de lectura de orden. Una forma muy difundida de realizar la comunicacin entre el proceso cliente y el servidor es mediante puertos. El proceso servidor tiene abierto un puerto, del que lee las peticiones. Un servidor ser secuencial cuando siga estrictamente el
27

esquema anterior. Esto implica que hasta que no ha terminado el trabajo de una solicitud no admite otra. En muchos casos interesa que el servidor sea paralelo, es decir, que admita varias peticiones y las atienda simultneamente. Para conseguir este paralelismo se puede proceder de la siguiente manera: Lectura de la orden el proceso est bloqueado esperando a que llegue una orden. Asignacin de un nuevo puerto para el nuevo cliente. Generacin de un proceso hijo que realiza el trabajo solicitado por el cliente. Vuelta al punto de lectura de orden.

De esta forma, el proceso servidor dedica muy poco tiempo a cada cliente, puesto que el trabajo lo realiza un nuevo proceso, y puede atender rpidamente nuevas peticiones. Un proceso demonio es un proceso que suele tener las siguientes caractersticas: Se arranca al iniciar el sistema, puesto que debe estar siempre activo. No muere. En caso de que un demonio muera por algn imprevisto es muy recomendable que exista un mecanismo que detecte la muerte y lo de arranque. En muchos casos est a la espera de un evento. En el caso frecuente de que el demonio sea un servidor, el evento por el que espera es que llegue una peticin al correspondiente puerto. En otros casos, el demonio tiene encomendada una labor que hay que hacer de forma peridica. ya sea cada cierto tiempo o cada vez que una variable alcanza un determinado valor. Es muy frecuente que no haga directamente el trabajo: lanza otros procesos para que lo realicen. Los procesos servidores suelen tener el carcter de demonios. Los demonios ejecutan en haekground y no estn asociados a un terminal o procesos login. Como ejemplos de procesos servidores se pueden citar los siguientes: el servidor de FTP el servidor de TELNET, el servidor de WEB y el spooler de impresora.
28

3.11. SERVICIOS POSIX


Esta seccin describe los principales servicios que ofrece POSIX para la gestin de procesos, procesos ligeros y planificacin. Tambin se presentan los servicios que permiten trabajar con seales y temporizadores
3.11.1. Servicios POSIX para la gestin de procesos

En esta seccin se describen los principales servicios que ofrece POSIX para la gestin de procesos. Estos servicios se han agrupado segn las siguientes categoras: Identificacin de procesos. El entorno de un proceso. Creacin de procesos. Terminacin de procesos.

29

También podría gustarte