Académique Documents
Professionnel Documents
Culture Documents
2 Gestin de procesos
Procesos y tareas
Proceso una definicin tradicional de proceso es la de instancia de un programa en ejecucin. La ejecucin de tal programa es indicada al SO mediante una accin u ordenespecializada. El SO responde en ese punto creando un nuevo proceso. En general, esta actividad consiste en la creacin e inicializacin de estructuras de datos en el SO paramonitorizar y controlar el progreso de proceso en cuestin. Una vez creado, el proceso pasar a estar activo y competir por la utilizacin de recursos del sistema como el procesador y los dispositivos I/O. Un proceso evoluciona cclicamente entre periodos de ejecucin activa y de espera por la terminacin de actividades de I/O. Cuando un proceso queda inactivo por especificar una operacin de I/O y quedar a la espera de que esta se complete, el SO puede planificar la ejecucin de otro proceso. Desde este punto de vista, un proceso es una entidad individualmente panificable, que puede ser asignada al procesador y ejecutada por este. El SO controla, pues, dinmicamente la evolucin de los procesos registrando la informacin correspondiente a sus cambios cuando estos se produzcan. Esta informacin es utilizada por el SO para sus labores de planificacin y gestin sobre el conjunto de procesos que en un determinado momento pueden coexistir en el sistema informtico. De esta forma adems de la plantilla esttica constituida por el programa ejecutable en que se basa, un proceso posee ciertos atributos que ayudan al SO en su gestin. Los atributos de un proceso incluyen su estado actual, unidad de planificacin, derechos 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 determinada tarea, mientras que para el SO es una entidad que atraviesa dinmicamente 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 planificado de forma que se consiga un rendimiento en la utilizacin de los mismos lo ms optimo posible.
Por otro lado, en cualquier sistema informtico debe existir alguna forma de que unproceso indique su terminacin. Un trabajo por lotes debe incluir una instruccin de detencinhalt o una llamada explcita a un servicio del sistema operativo para indicarsu terminacin, mientras que en una aplicacin interactiva, ser la accin del usuario laque indique cuando termine el proceso.Todas estas acciones provocan al final una peticin deservicio al SO para terminar elproceso demandante. Adems, una serie de errorespueden llevarnos a la terminacin deun proceso. A continuacin se enumeran algunas delas condiciones ms habituales de terminacin de procesos: 1. Terminacin normal: instruccionesyfinaliza. Un proceso termina de ejecutar su conjunto de
2. Tiempo lmite excedido: El proceso requiere ms tiempo para completar su ejecucin son del que el sistema establece como mximo. 3. No disponibilidad de memoria: Tiene lugar cuando un proceso necesita ms memoriade la que el sistema puede proporcionar. 4. Violacin de lmites: Ocurre cuando un proceso trata de acceder a una posicin dememoria a la que no puede hacerlo. 5. Error de proteccin: Se produce si un proceso intenta utilizar un recurso o unarchivo 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 comola divisin por cero o trata de almacenar un nmero mayor del que el hardwareacepta. 7. Superacin del tiempo mximo de espera por un recurso: En este caso, el procesose encuentra a la espera de obtener un recurso o de que tenga lugar un determinadoevento durante un tiempo que alcanza el lmite establecido. 8. Fallo de dispositivo I/O: Se produce por un error en la entrada o la salida tal comola incapacidad de encontrar un archivo o la ocurrencia de un fallo de lectura oescritura despus de un nmeromximo de intentos. 9. Instruccin no vlida: Se produce si un proceso intenta ejecutar una instruccin inexistente.
10. Intento de acceso a una instruccin privilegiada: Se presenta si un proceso intentautilizar una instruccin reservada para el SO. 11. Mal uso de los datos: Un elemento de dato no est inicializado o es de un tipoequivocado para la operacin que se pretende realizar. 12. Intervencin del operador o del SO: Por alguna razn, el operador o el SO terminacon el proceso. Por ejemplo, si se considera comprometido el rendimiento delsistema. 13. Finalizacin del proceso padre: Cuando un proceso padre finaliza el SO puede disearse para terminar automticamente con todos sus descendientes. 14. Solicitud del proceso padre: Un proceso padre tiene normalmente autoridad paraterminar con cualquiera de sus hijos.
Estados de un proceso
En cualquier sistema operativo, es bsico conocer el comportamiento que exhibirn los distintos procesos y el conjunto de estados que pueden atravesar.
Cuando el SO crea un nuevo proceso, este entra en el sistema en el estado de No ejecucin. De este modo, el proceso existe, es conocido por el SO y est esperando laoportunidad de ejecutarse. En un momento dado, el sistema operativo decide otorgarelprocesador a un proceso determinado con lo que dicho proceso pasar de estado No ejecucina Ejecucin.Cada cierto tiempo, el proceso en ejecucin es interrumpido y el sistema operativo seleccionara un nuevo proceso para que tome el control del procesador. El proceso interrumpidopasa del estado de Ejecucinal de No ejecucinmientras que el procesoelegido realiza la transicin inversa.Incluso en este modelo tan simple, se aprecian ya algunos de los elementos importantesen el diseo de SSOO. Cada proceso debe representarse de forma que el sistema operativotenga conocimiento de su estado actual y de su posicin en memoria.Aquellos procesos que no estn en estado de ejecucindebern almacenarse en algn tipo de estructura de datos mientrasesperan que el sistema operativo les otorgue elcontrol sobre el procesador.
Dicha cola consiste en una lista enlazada de bloques en la que cada uno de estos bloquesrepresenta a un proceso. Cada bloque consistir en un puntero a la estructura de datosdonde el SO guarda toda la informacin relativa al proceso. El comportamiento del SO eneste caso es similar al de un gestor de colas. As, cada vez que el SO cree un nuevoprocesose introducir el correspondiente bloque al final de la cola, accin que tambin se llevar a cabo cuando un proceso sea expropiado del procesador en favor de otro o cuando sebloquee en espera de que se complete una operacin de E/S. Cuando unproceso terminesu ejecucin, ser descartado del sistema. Si todos los procesosestuvieran siempre listospara ejecutar, la disciplina de comportamiento de colapresentada sera eficaz. El modelode cola sigue un comportamiento FIFO y elprocesador opera siguiendo un turno rotatoriocon los procesos disponibles. De estaforma, a cada proceso de la cola se le otorga unacierta cantidad de tiempo para ejecutar. Si no se presentan bloqueos y transcurrido este volver a la cola para optar de nuevo a tener control sobre el procesador. Sin embargo,esta implementacin no es adecuada debido a que algunos procesos en estado de no ejecucinestarn listos para ejecutar mientras que otros se encontrarn a la espera deobtener algn recurso solicitado o a que se complete una operacin de E/S. As pues, elSO puede no entregar el procesador al proceso que se encuentre al frente de la cola. Si este est bloqueado, tendr que recorrer la cola buscando el primer proceso que no lo est y que lleve ms tiempo en espera.
Procesos suspendidos
Debido a que el procesador es mucho msrpido que los dispositivos de E/S puedeocurrir que en un momento dado todos los procesos del sistema se encuentrenbloqueadosa la espera de que se complete alguna operacin de E/S. Para solucionar este problemaexisten dos opciones 1. Ampliar la memoria del sistema de forma que sea posible albergar en ella ms procesos incrementar as la posibilidad de que alguno de ellos haga uso efectivodel procesador. 2. La otra solucin consiste en aplicar una tcnica conocida como intercambio oswaping.Esta tcnica consiste en que cuando todos los procesos que se encuentranen memoria principal estn bloqueados, el SO puede sacar a uno de ellos de sucorrespondiente cola y transferirlo a memoria secundaria. El proceso transferido sedice entonces que queda en estado suspendido. Una vez realizada esta operacin,el SO est en condiciones de traer de nuevo a memoria a un proceso previamentesuspendido o bien dar entrada al sistema a un nuevo proceso.
En general, se considera suspendido a un proceso que presenta las caractersticas siguientes: 1. Un proceso suspendido no est disponible de inmediato para su ejecucin. 2. Un proceso puede estar esperando o no un suceso. Si lo est, la condicin debloqueado es independiente de la condicin de suspendido y el acontecimiento delsuceso bloqueante no lo habilita para la ejecucin. 3. El proceso fue situado en estado suspendido por un agente (el SO o el procesopadre) con el fin de impedir su ejecucin. 4. El proceso no puede apartarse de estado hasta que llegue la orden expresa paraello.
3 Planificacin de procesos
Concepto y criterios de planificacin
La planificacin hace referencia a un conjunto de polticas y mecanismos incorporadosalSO que gobiernan el orden en que se ejecutan los trabajos que deben ser completadospor el sistema informtico. Un planificador es un mdulo del SO que selecciona elsiguientetrabajo a admitir en el sistema y el siguiente proceso que tomar el controlsobreel procesador. El objetivo primario de la planificacin es optimizar el rendimiento delsistema de acuerdo con los criterios considerados ms importantes por los diseadores del mismo.Entre las medidas de rendimiento y los criterios de optimizacinms habituales quelos planificadores utilizan para llevar a cabo su labor se encuentran lossiguientes:
Productividad
La productividad se refiere a la cantidad de trabajo completada por unidad de tiempo.Un modo de expresarla es definindola como el nmero de trabajos de usuario ejecutadospor una unidad de tiempo. Cuanto mayor sea este nmero, ms trabajo aparentemente est siendo ejecutado por el sistema.
Tiempo de retorno
El tiempo de retorno TR se define como el tiempo que transcurre desde el momento enque un trabajo o programa es remitido al sistema hasta que es totalmente completadopor el mismo. Es decir, el tiempo de retorno TR es el tiempo consumido por el procesodentro del sistema y puede ser expresado como la suma del tiempo de servicio o tiempode ejecucin+ el tiempo de espera. TR = TS + TE.
Tiempo de espera
El tiempo de espera TE es el tiempo que un proceso o trabajo consume a la espera de laasignacin de algn recurso o de que tenga lugar algn evento. En este tiempo tambinse incluyen el periodo de espera por la obtencin del propio procesadordebido a lacompetencia con otros procesos en un sistema con multiprogramacin. Este tiempo esla penalizacin impuesta por compartir recursos con otros procesos y puede expresarsecomo el tiempo de retorno - el tiempo de ejecucin efectivo. El tiempo de espera TEelimina la variabilidad debida a las diferencias en tiempos de ejecucin del trabajo.
Tiempo de respuesta
El tiempo de respuesta en sistemas interactivos se define como el tiempo que transcurredesde el momento en que se introduce el ultimo carcter de una orden que desencadenala ejecucin de un programa o transaccin hasta que aparece el primer resultado en elterminal. Generalmente tambin se le denomina tiempo de respuesta de terminal.En sistemas en tiempo real, el tiempo de respuesta es esencialmente una latencia yse define como el tiempo que transcurre desde el momento en que un suceso interno oexterno es sealado hasta que se ejecuta la primera instruccin de su
Tipos de planificadores
En un SO complejo pueden coexistir tres tipos de planificadores: A corto, a medio ya largo plazo.
Algoritmos de planificacin
Antes de comenzar a estudiar los distintos tipos de algoritmos de planificacin esimportante tener en cuenta que hay dos categoras generales de estos.La planificacin no apropiativaSe basa en que una vez que el proceso pasa a estadode ejecucin no abandona el procesador hasta que termina o hasta que se bloqueaen espera de una operacin de E/S o al solicitar algn servicio del sistema.La planificacin apropiativa Un proceso que est ejecutando puede ser interrumpido porel sistema operativo para otorgar el procesador a un proceso distinto en funcin delos criterios de planificacin utilizados; prioridad, nmero de usos del procesador,etc.
Objetivos de la Planificacin
Los objetivos de la planificacin del procesador son los siguientes e involucran a los conceptos detallados seguidamente segn Deitel: Ser justa: - Todos los procesos son tratados de igual manera. - Ningn proceso es postergado indefinidamente. - Maximizar la capacidad de ejecucin: -Maximizar el nmero de procesos servidos por unidad de tiempo. -Maximizar el nmero de usuarios interactivos que reciban unos tiempos de respuesta aceptables: - En un mximo de unos segundos. Ser predecible: Un trabajo dado debe ejecutarse aproximadamente en la misma cantidad de tiempo independientemente de la carga del sistema. Minimizar la sobrecarga: No suele considerarse un objetivo muy importante. Equilibrar el uso de recursos: Favorecer a los procesos que utilizarn recursos infrautilizados. Equilibrar respuesta y utilizacin: La mejor manera de garantizar buenos tiempos de respuesta es disponer de los recursos suficientescuando se necesitan, pero la utilizacin total de recursos podr ser pobre. Evitar la postergacin indefinida: Se utiliza la estrategia del envejecimiento. Mientras un proceso espera por un recurso su prioridad debe aumentar, as la prioridad llegar a ser tan alta que el proceso recibir el recurso esperado. Asegurar la prioridad: Los mecanismos de planificacin deben favorecer a los procesos con prioridades ms altas. Dar preferencia a los procesos que mantienen recursos claves: Un proceso de baja prioridad podra mantener un recurso clave, que puede ser requerido por unproceso de ms alta prioridad. Si el recurso es no apropiativo, el mecanismo de planificacin debe otorgar al proceso un tratamiento mejor del que le correspondera normalmente, puesto que es necesario liberar
rpidamente el recurso clave. Dar mejor tratamiento a los procesos que muestren un comportamiento deseable: Un ejemplo de comportamiento deseable es una tasa baja de paginacin. Degradarse suavemente con cargas pesadas: Un mecanismo de planificacin no debe colapsar con el peso de unaexigente carga del sistema. Se debe evitar una carga excesiva mediante las siguientes acciones: - No permitiendo que se creen nuevos procesos cuando la carga ya es pesada. - Dando servicio a la carga ms pesada al proporcionar un nivel moderadamente reducido de servicio a todos los procesos, Muchas de estas metas se encuentranen conflicto entre s, por lo que la planificacin se convierte en un problema complejo.
4 Multiprocesamiento
Es una tendencia significativa en el campo de la computacin. Consiste en configurar un sistema de computacin con varios procesadores. No es un enfoque nuevo pero s posee grandes perspectivas en funcin del desarrollo de los microprocesadores. Se podran concebir sistemas construidos por cientos o miles de microprocesadores.
Confiabilidad
Si un procesador falla, los restantes continan operando, lo cual no es automtico y requiere de un diseo cuidadoso. Un procesador que falla habr de informarlo a los dems de alguna manera, para que se hagan cargo de su trabajo. Los procesadores en funcionamiento deben poder detectar el fallo de un procesador determinado. El Sistema Operativo debe percibir que ha fallado un procesador determinado y ya no podr asignarlo y tambin debe ajustar sus estrategias de asignacin de recursos para evitar la sobrecarga del sistema que est degradado.
Los multiprocesadores no se utilizan a menudo para explotar el paralelismo ya que es muy escaso el software que explote el paralelismo. Lo deseable es que los Sistemas Operativos y compiladores puedan detectar e implementar el paralelismo automticamente.
Paralelismo Masivo
Se debe disponer de suficientes procesadores como para que todas las operaciones que puedan ser ejecutadas en paralelo puedan ser asignadas a procesadores separados. Esto ofrece una forma de ejecutar un programa en el menor tiempo posible. La cuestin central es, disponiendo del paralelismo masivo, cul es el tiempo mnimo requerido para ejecutar un algoritmo determinado?
1;
Se pueden utilizar procesadores separados para ejecutar cada una de las proposiciones. Es susceptible de errores de programacin difciles de detectar y depurar. El programador puede omitir tratar situaciones donde sera aplicable el paralelismo.
Las principales caractersticas del paralelismo implcito son las que se detallan a continuacin: La verdadera esperanza est en la deteccin automtica del paralelismo implcito. Es el paralelismo intrnseco del algoritmo pero no establecido explcitamente por el programador. Los compiladores explotan el paralelismo implcito mediante las tcnicas de distribucin de ciclos y de reduccin de la altura del rbol.
ALGORITMOS
ALGORITMOBANQUERO Para este algoritmo es importante considerar los siguientes puntos: Estado. Es la asignacin actual de los recursos a los procesos. Matriz demanda (o mximo necesario). Son las exigencias mximas de recursos para cada proceso. Matriz asignacin. Son las asignaciones actuales de recursos para cada proceso. Vector disponible. Cantidad total de recursos sin asignar a los procesos. Estado seguro. Es un estado en el que existe al menos un orden en el que todos los procesos pueden ejecutar hasta el final sin generar interbloqueo. Cuando un proceso realiza una solicitud de recursos, se supone que se concede, se actualiza el estado y se toma una decisin. Si se llega a un estado seguro, se concede la peticin. Si se llega a uno inseguro, se rechaza y el proceso es bloqueado. A continuacin se presenta un ejemplo: Utilizando el algoritmo del banquero resuelva el siguiente problema, indicando el orden en que los procesos pasan a ser estados seguros evitando el problema del interbloqueo.
Lista de procesos: P1-P3-P4-P0 P2 A la derecha se tienen 5 procesos, cada uno tiene recursos de tipo A, B y C. En la primer columna de asignados est la cantidad de recursos que el proceso ha obtenido a lo largo de un tiempo; en la segunda columna de Mximo Necesario, estn los recursos que tiene que obtener de cada tipo para comenzar a ser ejecutado. Por ejemplo, el P0 no ha obtenido ningn recurso del tipo A, slo 1 del tipo B y ninguno del tipo C, y necesita para ejecutarse haber conseguido 7 del A, 5 del B y 3 del C. En la ltima columna se tienen los recursos disponibles que da el sistema, los que se pueden utilizar con todos los procesos. Hay 3 del A, 3 del B y 2 del C.
El algoritmo del banquero trata de asegurar qu proceso tiene un estado seguro es decir, se requiere alcanzar el mximo requerido entre los que estn en Asignados y los que se encuentren en Disponibles.
Ejemplo: El proceso 0 no est en estado seguro. Si se suman Asignados + Disponibles para cada uno de los recursos A, B y C, realmente no se alcanzan los Mximos Requeridos. Entonces se va al proceso 1 y se trata de hacer lo mismo, sumar Asignados + Disponibles. All s se tiene un ESTADO SEGURO, A con 5, B con 3 y C con 2, y como se alcanza a llenar los Mximos, ese proceso se ejecuta.
Una vez que el proceso se ejecut, entonces se procede a SUMAR los recursos asignados del proceso anterior a los disponibles. Hay que recordar que el proceso al terminar de ejecutarse libera todos sus recursos, por lo tanto pasan tanto los de tipo A, B y C a sumarse con los disponibles 3-3-2 y se tendrn nuevos DISPONIBLES que repartir, siendo ahora stos 5-3-2.
Ventajas del algoritmo del banquero: No es necesario expulsar y hacer retroceder procesos como en la deteccin del interbloqueo. Es menos restrictivo que la prevencin.
Desventajas: Se debe conocer la mxima demanda de recursos por anticipado. La ejecucin de los recursos no debe estar forzada por la sincronizacin. Se tiene un nmero fijo de procesos y recursos. Los procesos no finalizan mientras retengan recursos. Requiere que los procesos salden sus prstamos en un tiempo finito.
El kernel: El proceso de arranque del kernel ===================================================== ========================= Objetivos =========== - Secuencia de arranque del sistema - Etapa 1. La BIOS - Etapa 2. El boot-loader - GRUB: Arranque directo vs arranque encadenado - Fichero /boot/grub/menu.lst - Etapa 3. El kernel - Montaje de la particionraiz - La imagen initramfs - Etapa 4. El user-space - Fichero /etc/inittab - Lab0 - Lab1 Secuencia de arranque del sistema =================================== - Desde el power-on hasta el "Login:" se pasa por 4 etapas: 1.- Programa en ROM carga el boot-loader 2.- El boot-loader carga el kernel 3.- El kernel inicializa el sistema y pasa el control al user-space 4.- El user-space finaliza la inicializacion. Finalmente /bin/sh Etapa 1. La BIOS ================== - Power-on - Un pequeo programa cargado en ROM toma el control --> La BIOS en x86 - Localiza el "bootdevice" con el que arrancar el sistema --> Elige el primer bootable-device disponible en secuencia "bootorder" --> Por ejemplo: CD/DVD, USB, HD (orden configurado por el usuario) - Lee el MBR (sector 0) del bootable-device - El MBR almacena tres cosas: - La rutina bootstraploader (codigo .asm) - Tabla de particiones (recordar capitulo filesystems) - Firma de bootable-device (dos ultimos bytes = 0x55AAh) - Ejecuta la rutina bootstraploader, hecha unica y exclusivamente para pasar el control al boot-loader
- Responsable de cargar un kernel en RAM y transferirle el control - Ejemplos mas comunes en Linux: --> GRUB y LiLo (x86, AMD) --> U-boot (multiplataforma) - Muestran un menu al usuario con las distintas opciones de arranque: --> Diferentes sistemas operativos --> Diferentes kernel del mismo sistema operativo --> Programas que no necesitan sistema operativo (memtest86+) - Normalmente tienen una opcion seleccionada por defecto + timeout - Usuario elige una opcion (o el timeout elige la opcion por defecto) - El boot-loader carga en RAM: - El binario del kernel - (Opcional) La imagen initramfs - Como accede a los datos de la particion del disco sin soporte del kernel? - LiLo necesita conocer la localizacion exacta del sector del disco en el que esta la imagen del kernel - GRUB entiende muchos sistemas de fichero: -->ffs, fat16, fat32, minic, ext2, reiserfs, jfs, xfs y vst --> Puede leer ficheros de dichas particiones sin ayuda de nadie - Pasa el control al kernel con su lista de argumentos argv GRUB: Arranque directo vs arranque encadenado =============================================== - GRUB permite dos tipos de arranque: --> Directo: Arranca un sistema operativo (Linux) --> Encadenado (chain-loading): Arranca otro boot-loader (Windows) - Para arrancar un sistema operativo siempre necesita: --> Dispositivo de almacenamiento -->Particion del dispositivo de almacenamiento - En modo directo: --> Necesita el path al binario del kernel al que transfiere el control - En modo encadenado: --> Transfiere el control al PBR de la particion indicada --> PBR = PartitionBoot Record (similar al MBR pero en particion) - Con esto puede arrancar cualquier sistema operativo (libre o propietario)