Unidad II S.O.

download Unidad II S.O.

of 13

Transcript of Unidad II S.O.

Sistemas OperativosUnidad II. Administracin de Procesos y del Procesador2.1 Concepto de Proceso.

Un proceso es un programa en ejecucin, e incluye: El cdigo del programa Contador del programa Pila de proceso Seccin de datos Cmulo de memoria

Un programa es una entidad pasiva mientras que un proceso es una entidad activa.Un programa se convierte en un proceso cuando se carga en memoria un archivo ejecutable

Tarea: Resolver preguntas de Captulos 3,4,5,6,7 del libro de Silberchatz

2.2 Estados y Transiciones de los Procesos. A medida que se ejecuta un proceso, este va cambiando de estado, estos estados pueden ser:

Nuevo. El proceso esta siendo creado. Preparado. El proceso esta a la espera de que le asignen un procesador. En ejecucin. Se estn ejecutando las instrucciones. En espera. El proceso esta esperando a que se produzca un suceso. Terminado. Ha terminado la ejecucin de un proceso

Los nombres de los estados son arbitrarios y varian de un SO a otro.Cada proceso se representa en el sistema operativo mediante un bloque de control de proceso (PCB), este puede contener informacin que incluye:

P0 Sistema Operativo P1

Colas de Planificacin.Cuando los procesos entran en el sistema se colocan en una cola de trabajos, que contienen todos los procesos del sistema, los procesos que residen en la memoria y estan listos para ejecutarse se encuentran en una lista de procesos preparados, Existen adems otras colas de dispositivos, que es la lista de rodos los procesos que esperan utilizar algun dispositivo en especial. Cada dispositivo tiene su propia cola. Vease figura 3.6.

La figura 3.7 explica los sucesos que pueden ocurrir a un proceso en su ejecucin.

Planificadores.El Planificador a Largo Plazo o Planificador de Trabajos selecciona procesos de una lista de procesos generalmente por lotes, es decir para tiempos de proceso largos, por el contrario el Planificador a Corto Plazo o Planificador de la CPU selecciona procesos de la lista de procesos que ya estan preparados para ser ejecutados y asigna la CPU a uno de ellos. Un proceso limitado por E/S, es aquel que invierte la mayor parte de su tiempo en operaciones de E/S en lugar de realizar clculos, por el contrario un proceso limitado por la CPU genera solicitudes de E/S con poca frecuencia, usando la mayor parte de su tiempo en realizar clculos.

Cambio de Contexto.Cuando se produce una interrupcin, el sistema tiene que guardar el contexto actual del proceso, este contexto se almacena en el PCB y puede incluir el valor de los registros de la CPU, estado del proceso, informacin de gestin de memoria, etc., y a su vez se realiza una restauracin del contexto del proceso que se est cargando para su ejecucin, esta tarea se reconoce como cambio de contexto. Sus velocidades tpicas son del orden de milisegundos.Terminacin de procesos.

Un proceso termina cuando ejecuta su ltima instruccin y pide al SO que lo elimine usando una llamada al sistema EXIT(). En este momento el proceso en caso de ser hijo comunica al proceso padre su terminacin y este lo libera, en caso de ser proceso padre el SO libera la asignacin de todos los recursos del proceso, incluyendo las memorias fsica y virtual, los archivos abiertos y los buffers de E/S.Comunicacin Interprocesos. Los procesos pueden ser independientes o cooperativos, es independiente si no afecta o se ve afectado por los restantes procesos del sistema, y es cooperativo si afecta o se ve afectado por los dems procesos del sistema.

Las razones para cooperar entre procesos son: Compartir informacin. Acelerar los clculos. Modularidad. Conveniencia.

La comunicacin entre procesos requiere mecanismos de comunicacin interproceso (IPC), existen dos: Memoria Compartida. Aqu se establece una regin de memoria para que sea compartida por los procesos cooperativos. De este modo la informacin se comparte leyendo y escribiendo en esa regin. Paso de mensajes. Aqu la comunicacin tiene lugar mediante el intercambio de mensajes entre los procesos

Sincronizacin.

La comunicacin entre procesos tiene lugar a travs de llamadas a las primitivas send() y receive(). El paso de mensajes puede ser con bloqueo o sin bloqueo, tambin conocidos como sncrono y asncrono. Envo con bloqueo. El proceso que envia se bloquea hasta que el proceso receptor o el buzn de correo reciben el mensaje. Envo sin bloqueo. El proceso transmisor envia el mensaje y contina operando. Recepcin con bloqueo. El receptor se bloquea hasta que hay un mensaje disponible. Recepcin sin bloqueo. El receptor extrae un mensaje vlido o mensaje nulo.

Almacenamiento en Buffer.

Los mensajes intercambiados residen en una cola temporal. Existen tres maneras de implementar esto: Capacidad cero. Un solo mensaje en el buzon. Capacidad limitada. n mensajes como maximo en el buzon Capacidad ilimitada. Mensajes ilimitados en el buzon.

Hebras.Una hebra es una Unidad Basica de utilizacin de la CPU, comprende un ID de hebra, un contador de programa, un conjunto de registros y una pila. Comparte con otras hebras que pertenecen al mismo proceso la seccin de cdigo, la seccin de datos y otros recursos del sistema operativo, como archivos abiertos, apuntadores a registros, etc.Un proceso tradicional (o proceso pesado) tiene una sola hebra de control, llamado proceso monohebra, los SO actuales tienen muchas hebras de control llamados procesos multihebras.

Los servidores web son un buen ejemplo de procesos multihebra ya que mientras ya que mientras un cliente solicita atencion puede crearese una hebra para ese cliente y si otro solicitara atencion se crearia otra hebra para atenderlo y asi sucesivamente, esto debido a que la creacion de procesos lleva tiempo y hace un uso excesivo de los recursos del sistema.

Ventajas de la creacin de hebras:1. Capacidad de respuesta. Permite que un programa continue ejecutandose aunque parte de el este bloqueado.2. Comparticin de recursos. Las hebras comparten la memoria y los recursos del proceso al que pertenecen.3. Economa. En general se consume mucho mas tiempo en crear y terminar procesos que Hebras.Poe ejemplo en Solaris es 30 veces mas lento,crear una hebra que un proceso y un cambio de contexto es 5 veces mas lento.

Utilizacin sobre arquitecturas multiprocesador. Un proceso monohebra solo utiliza un procesador mientras que el multihebra puede usar varios procesadores.

Modelos de relacin multihebra. Existen hebras del usuario y hebras del kernel. Existe una relacin entre estas hebras y son:

Biblioteca de hebras.Una biblioteca de hebras proporciona al programador una API para crear y gestionar hebras.

Existen dos formas principales de implementar una biblioteca de hebras:El primero mtodo consiste en implementar una biblioteca en el espacio del usuario y el segundo mtodo consiste en implementar una biblioteca en el espacio del kernel.

Las tres principales bbliotecas de hebras en la actualidad son: POSIX Pthreads Win32 y Java.

Planificacin de la CPU.En multiprogramacin se intenta usar el tiempo de E/S en forma productiva y asignar ese tiempo a algn otro proceso de CPU.A esto se denomina Planificacin, todos los recursos de la computadora se planifican antes de usarlos.Ciclo de rfagas de CPU y de E/S.Normalmente la ejecucin de un proceso consta de un ciclo de ejecucin de la CPU seguido de una espera de E/S; los procesos alternan entre estos dos estados. Se dice que la ejecucin del proceso comienza con una rfaga de CPU, seguida de una rfaga de E/S y posteriormente otra rfaga de CPU, luego otra de E/S, y as sucesivamente hasta que concluye con una rfaga de CPU solicitando la terminacin.Cuando la CPU queda inactiva el SO debe seleccionar uno de los procesos que se encuentran en la lista de espera de los procesos preparados para ejecucin. El planificador a corto plazo lleva a cabo esa seleccin del proceso. La cola de procesos no necesariamente tiene que ser una cola FIFO. Puede ser necesario tomar decisiones sobre planificacin de la CPU en las siguientes cuatro circunstancias:1. Cuando un proceso cambia del estado de ejecucin al estado de espera.2. Cuando un proceso cambia del estado de ejecucin al estado preparado.3. Cuando un proceso cambia del estado de espera al estado preparado.4. Cuando un proceso termina.

Cuando las decisiones de planificacin son 1 y 4 decimos que el esquema de planificacin es sin desalojo o cooperativo, en caso contrario (2 y 3) se trata de un esquema apropiativo (o Planificacin Apropiativa).

Otro componente implicado en la funcin de la planificacin de la CPU en el despachador, este es el modulo que proporciona el control de la CPU a los procesos seleccionados por el planificador a corto plazo. Esta funcin implica: Cambio de contexto Cambio al modo usuario Salto a la posicin correcta del programa del usuario para reiniciarlo

El despachador debe ser lo mas rpido posible ya que se invoca en cada conmutacion de procesos. El tiempo que tarda el despachador en detener un proceso e iniciar la ejecucin de otro se conoce como latencia de despacho.Criterios de Planificacin.Los criterios para seleccionar un algoritmo de planificacin, son los siguientes: Utilizacin de la CPU. Debemos mantener la CPU tan ocupada como sea posible. Tasa de Procesamiento. Este es el nmero de procesos completos por unidad de tiempo. Tasa de Ejecucin. Es el intervalo que va desde el instante en que se ordena la ejecucin de un proceso hasta el instante en que se completa. Tiempo de Espera. Este es la suma de los periodos invertidos en esperar en la cola de procesos preparados. Tiempo de Respuesta. Es el tiempo transcurrido desde que se envia una solicitud hasta que se prduce la primera respuesta.

El objetivo de la Planificacin consiste en maximizar la utilizacin de la CPU y la tasa de procesamiento y minimizar el tiempo de ejecucin, el tiempo de espera y el tiempo de respuesta.

Algoritmos de Planificacin.1. Planificacin FCFS. Es el mas simple, primero en llegar primero en ser servido.2. Planificacin SJF. Seleccin del trabajo mas corto, aqu se asigna la CPU al proceso que tiene la siguiente rfaga de CPU mas corta. Si los siguientes procesos son iguales en duracin de rfaga se utiliza la planificacin FIFO para romper el empate.3. Planificacin por Prioridades. Aqu a cada proceso se le asocia una prioridad y la CPU se asigna al que tenga la prioridad mas alta. Los procesos con la misma prioridad se planifican en orden FCFS.4. Planificacin por Turnos. (RR, Round Robin). Se usa para tiempos compartidos donde las rfagas de CPU son similares. Aqu se define una unidad de tiempo denominada cuanto de tiempo o franja temporal y se le asigna un cuanto a cada proceso.5. Planificacin mediante colas multinivel. Aqu los procesos se clasifican en grupos diferentes, por ejemplo en procesos de primer plano o interactivos y de segundo plano o por lotes, estos tienen requisitos diferentes de tiempos de de respuesta. Por lo que la cola de procesos preparados se divide en colas distintas y cada cola tiene su propio algoritmo de planificacin.6. Planificacin mediante colas multinivel realimentadas. Generalmente en la planificacin anterior se asignan de forma permanente los procesos a las colas, aqu los procesos asignados a una cola pueden cambiar de una a otra.

Planificacin de Sistemas Multiprocesador.Los anteriores algoritmos son sobre sistemas de un solo procesador, en el caso contrario, se puede compartir la carga con varios procesadores, pero la planeacin de ellos se vuelve mas compleja. El mtodo de Multiprocesamiento Asimtrico se refiere a cuando existe un procesador maestro que toma todas las decisiones sobre la planificacin, el procesamiento de E/S y otras actividades del sistema y los dems procesadores solo ejecutan cdigo de usuario.El mtodo de Multiprocesamiento Simtrico es en el que cada uno de los procesadores se autoplanifica, todos los procesos estn en una sola cola de procesos o cada procesador puede tener su propia cola de procesos.Afinidad al Procesador (en SMP).Debido al alto coste de invalidar y rellenar memorias cache del procesador en el caso de migracin de procesos entre procesadores, la mayora de los sistemas intentan mantener el proceso en el procesador original, esto se conoce como afinidad del procesador.La afinidad suave del SO se refiere a cuando se acepta la posibilidad de migracin de procesos entre procesadores y la afinidad dura se refiere a permitir a un proceso especificar que no se debe migrar a otro procesador. Equilibrado de carga. En SMP los mecanismos de equilibrado de carga intentan distribuir equitativamente la carga de trabajo entre todos los procesadores del sistema. Esto es generalmente en procesos con solas privadas y no para procesos con una sola cola. Existen dos metodos para equilibrar la carga: migracin comandada y migracin solicitada en la primera es cuando una tarea del SO se encarga de verificar periodicamente el equilibrio de cargas en los procesadores y la segunda es cuando un procesador extrae un proceso de otro.

Tarea:1) Memoria Cache. Definicin y tipos.2) Buffer3) Ncleos del Procesador. Definicin y tipos.4) Hyperthreading. Definicin.

Sincronizacin de Procesos.Los procesos cooperativos pueden compartir directamente un espacio de direcciones lgico o compartir datos a travs de mensajes, el acceso concurrente a datos compartidos puede dar lugar a incoherencias, la sincronizacin de procesos trata de utilizar mecanismos para asegurar la ejecucin ordenada de procesos que comparten espacio de direcciones y mensajes.El problema de la seccin crtica.Todos los procesos cooperativos contienen una seccin crtica en donde se modifican variables comunes, actualizan tablas, escriben en archivos, etc. La caracterstica de esto es que cuando un proceso utiliza su seccin crtica ningn otro proceso debe ejecutar su seccin crtica, es decir dos procesos no pueden ejecutar su seccin crtica al mismo tiempo. Cada proceso debe solicitar permiso para ejecutar su seccin crtica , la seccin de cdigo que implementa esta solicitud es la seccin de entrada, La seccin critica puede ir seguida de una seccin de salida, El cdigo restante se encuentra en la seccin restante.

Cualquier solucin al problema de la seccin crtica deber satisfacer los tres requisitos siguientes:1. Exclusin mutua, Si el proceso P1 esta ejecutndose en su seccin crtica, los dems procesos no pueden estar ejecutando sus secciones crticas.2. Progreso. Si ningn progreso esta ejecutando su seccin crtica y algunos procesos desean entrar en sus correspondientes secciones crticas, solo aquellos procesos que no estn ejecutando sus secciones restantes pueden participar en la decisin de cual ser el siguiente que entre en su seccin crtica y esta seleccin no se puede posponer indefinidamente.3. Espera limitada. Existe un limite en el numero de veces que se permite que otros procesos entren en sus secciones criticas despues de que un proceso haya hecho una solicitud para entrar en su seccin crtica y antes de que la misma haya sido concedida.

Se usan dos mtodos para gestionar las secciones crticas:Kernel apropiativo. Permite que un proceso sea desalojado mientras se esta ejecutando en modo kernel.Kernel no apropiativo. No permite que un proceso que se esta ejecutando en modo kernel sea desaojado.En general podemos afirmar que cualquier solucin al problema de la seccin crtica requiere una herramienta muy simple: un cerrojo, es decir, un proceso debe adquirir un cerrojo antes de entrar a la seccin crtica y liberarlo cuando salga.

Existen instrucciones hardware especiales que nos permiten consultar y modificar el contenido de una palabra o intercambiar los contenidos de dos palabras atmicamente, es decir, como una unidad de trabajo ininterrumpible, como por ejemplo la instruccin TestAndSet de java.Semforos.Para resolver los complicado de los cerrojos se desarrollo un herramienta de sincronizacin llamada semforo. Este semforo S es una variable entera a la que dejando aparte su inicializacin, solo se accede mediante dos operaciones atmicas estndar: wait() y signal().La definicin de wail() es la que sigue:

La definicin de signal() es:

Problemas clsicos de Sincronizacin : Interbloqueos e Inanicin Buffer Limitado Lectores-Escritores Cena de los filsofos

Interbloqueos.Esto sucede cuando un proceso solicita recursos que pueden ser finitos y que en un momento dado no pueden estar disponibles, pasando a un estado de espera, y es posible que este proceso nunca cambie de este estado, porque los recursos solicitados estn ocupados por otros procesos, que a su vez estn esperando otros recursos.Un proceso debe solicitar cada recurso antes de utilizarlo y liberarlo despus de usarlo.En un modo de operacin normal, un proceso puede emplear un recurso solo siguiendo esta secuencia:1. Solicitud. Si esta no puede ser concedida, entonces esperara hasta adquirirla.2. Uso. El proceso puede operar sobre el proceso.3. Liberacin. El proceso libera el proceso.

La solicitud y liberacin del recurso son llamadas al sistema, como ejemplos tendramos: solicitud y liberacin de dispositivos (request() y release()), apertura y cierre de archivos (open() y close()), asignacin y liberacin de memoria (allocate() y free()). Todas las dems solicitudes de recursos se hacen mediante wait() y signal() de los semforos o cerrojos. Una tabla del sistema registra si cada recurso esta libre o ha sido asignado y a quien ha sido asignado, asi como los procesos que solicitan ese recurso.En un Interbloqueo los procesos nunca terminan de ejecutarse y los recursos del sistema estan ocupados, lo que impide que se inicien otros trabajos.Condiciones necesarias.Una situacin de interbloqueo puede surgir si se dan simultneamente las cuatro condiciones siguientes en un sistema:1. Exclusin mutua. Solo un proceso puede usar un recurso a la vez.2. Retencin y espera. Un proceso retiene un recurso y espera por otro.3. Sin desalojo. Un recurso solo lo puede desalojado por el proceso que lo retiene4. Espera circular. Los procesos esperan la liberacin del recurso que posee el siguiente.

Grafo de asignacin de recurso.Los interbloqueos pueden definirse de forma mas precisa mediante este grafo.Una arista dirijida Pi Rj se denomina arista de solicitud, mientras que una arista dirijida Rj Pi se denomina arista de asignacin.Cada recurso puede tener mas de una instancia.Dada la definicin del grafo podemos demostrar que si el grafo no contiene ningun ciclo, entonces ningn proceso del sistema esta bloqueado. Si el grafo contiene un ciclo, entonces puede existir un interbloqueo.

Mtodos para tratar los Interbloqueos.Existen tres formas de abordar los interbloqueos:1. Empleando un protocolo para impedir o evitar los interbloqueos.2. Podemos permitir que el sistema entre en interbloqueo, detectarlo y realizar su recuperacin y3. Podemos ignorar el problema y actuar como si nunca se produjeran interbloqueos en el sistema.La tercera solucin es la que usan la mayora de los sistemas operativos incluyendo UNIX y Windows.La prevencin de interbloqueos proporciona un conjunto de mtodos para asegurar que al menos una de las condiciones necesarias no pueda cumplirse.La evasin de interbloqueos requiere que se proporcione de antemano al sistema operativo informacin adicional sobre que recurso solicitara y utilizara un proceso durante su tiempo de vida.

Deteccin de Interbloqueos.Si un sistema no emplea ni algoritmos de prevencin ni de evasin de interbloqueos, entonces puede producirse una situacin de interbloqueo en el sistema. En este caso el sistema debe proporcionar: Un algoritmo que examine el estado del sistema para determinar si se ha producido un interbloqueo. Un algoritmo para recuperarse del interbloqueo

Recuperacin de un Interbloqueo.Cuando el algoritmo de deteccin determina que existe un interbloqueo tenemos varias alternativas. Una posibilidad es informar al operador que se ha producido un interbloqueo y dejar que lo trate de forma manual. Otra posibilidad es dejar que sea el sistema el que haga la recuperacin de forma automtica. Existen dos opciones para romper un interbloqueo. Una de ellas consiste simplemente en interrumpir uno o mas procesos para romper la cadena de espera circular. La otra consiste en desalojar algunos recursos de uno o mas de los procesos bloqueados.

Terminacin de procesos.Para eliminar los interbloqueos interrumpiendo un proceso se utilizan uno de dos metodos: Interrumpir todos los procesos bloqueados Interrumpir un proceso cada vez hasta que el ciclo de interbloqueos termine.