La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Sistemas Operativos I Unidad 2: Procesos.

Presentaciones similares


Presentación del tema: "Sistemas Operativos I Unidad 2: Procesos."— Transcripción de la presentación:

1 Sistemas Operativos I Unidad 2: Procesos

2 Contenidos Conceptos de proceso. Estados de un proceso. Modelo de cinco estados de procesos. Control de procesos. Modos de ejecución. Creación de procesos. Administración de procesos en Unix/Linux. Procesos e hilos. Creación y ejecución de procesos. Propuesta de proyecto anual. Control 1. Comunicación entre procesos: Concurrencia. Exclusión mutua. Semáforos. Mensajes. Taller 2: Comunicación entre procesos. Control 2. Clase de recapitulación. Prueba de Cátedra 1.

3 Objetivos y Metodología
Estudiar y comprender los procesos, sus estados, la comunicación y administración de éstos. Metodología: Clases expositivas mezclando teoría y ejercicios. Se realizarán talleres en los que el estudiante deberá programar algoritmos básicos en los que se utilicen procesos, estados y su comunicación.

4 Introducción a los Procesos
Concepto con mayor relevancia en los Sistemas Operativos. Representan una abstracción de un programa en ejecución. Todos los demás conceptos giran en torno al concepto de proceso. Modelo del proceso: Todo el software ejecutable en la computadora, lo que incluye al Sistema Operativo, se organiza en varios procesos. Un proceso es un programa ejecutándose, con su Contador de Programa (program counter - PC), registros y variables. De manera conceptual, cada proceso tiene su CPU virtual.

5 Multiprogramación Para comprender el sistema, pensemos en un conjunto de procesos que se ejecutan concurrentemente, en seudo paralelismo: Multiprogramación de cuatro programas. Modelo conceptual de cuatro procesos secuenciales independientes. Sólo hay un programa activo en cualquier instante de tiempo.

6 Algoritmo de planificación
La diferencia entre un proceso y un programa es sutil, pero crucial: un proceso es una actividad de algún tipo, tiene un programa de entrada, salida y un estado. Mediante el uso de un algoritmo de planificación (scheduler), un único procesador puede ser compartido entre varios procesos. El algoritmo de planificación se utiliza para determinar cuando debe detenerse el trabajo con un proceso para dar servicio a otro proceso.

7 Creación de procesos Los SO deben poseer una manera de conocer que todos los procesos necesarios existen. En sistemas muy simples, ó diseñados para ejecutar una única aplicación como puede ser controlar un dispositivo en tiempo real, pudiera ser factible tener presentes en el sistema a todos los procesos que se necesitan desde la carga inicial (boot load) del sistema. Sin embargo, en sistemas de propósito general, deberá existir alguna manera de crear y terminar procesos en la medida en que dichos procesos sean necesarios durante las operaciones. Hay cuatro principales eventos que causan que sean creados nuevos procesos: Inicialización del Sistema. Un proceso en ejecución realiza una llamada al sistema para crear un nuevo proceso. Un usuario solicita crear un nuevo proceso. Comienzo de una tarea por lotes (batch job).

8 Acciones del SO para crear un proceso
Asignar un único identificador al nuevo proceso. En ese momento se añade una nueva entrada a la tabla principal de procesos, que contiene una entrada por proceso. Asignar espacio para el proceso. Esto incluye todos los elementos de la imagen del proceso. El SO debe saber cuánto espacio se necesitará para el espacio privado de direcciones del usuario (programas y datos) y para la pila del usuario. Estos valores se pueden asignar por omisión en función del tipo de proceso o bien se puede asignar a partir de la solicitud del usuario cuando se crea el trabajo. Si un proceso es generado por otro, el proceso padre puede pasarle al sistema operativo los valores necesarios como parte de la solicitud de creación del proceso. Si algún espacio de direcciones existente se va a compartir con este nuevo proceso, entonces se deben establecer los enlaces adecuados. Por último, se debe asignar espacio para el bloque de control del proceso.

9 Acciones del SO … (2) Inicializar el bloque de control del proceso.
La parte de identificación del proceso contiene el ID de este proceso junto a otros ID apropiados, tales como el del proceso padre. La parte de información del estado del procesador normalmente se inicializa con la mayor parte de las entradas a cero, excepto para el contador de programa (que se prepara con el punto de entrada del programa) y los punteros a las pilas del sistema (que establecen los limites de la pila del proceso). La parte de información de control del procesador se inicializa a partir de los valores estándares por omisión y los atributos que se han solicitado para el proceso. Por ejemplo, el estado del proceso suele inicializarse a listo ó a listo y suspendido. La prioridad puede asignarse por omisión al valor más bajo, a menos que se haya hecho una solicitud explicita de un valor mayor. Inicialmente, puede que el proceso no posea ningún recurso (dispositivos de E/S, archivos), a menos que se haya hecho una solicitud explicita de los mismos o a menos que se hayan heredado del proceso padre.

10 Acciones del SO … (3) Establecer los enlaces apropiados.
Por ejemplo, si el SO mantiene cada cola de planificación como una lista enlazada, entonces el proceso nuevo se debe poner en la cola de listos o de listos y suspendidos. Crear o ampliar otras estructuras de datos. El SO puede mantener un archivo de contabilidad para cada proceso que sea utilizado más tarde con propósitos de facturación y/o evaluación del rendimiento.

11 Conclusión de un proceso
Después que un proceso creado realiza su función, puede ocurrir alguna de las siguientes condiciones: Concluye normalmente (Normal exit - voluntariamente). Termina con error (Error exit - voluntariamente). Provoca un error fatal (Fatal error - involuntariamente). Es destruido (Killed) por otro proceso (involuntario). La mayoría de los procesos termina porque realizó su trabajo. Los programas orientados a pantalla comúnmente incluyen herramientas para su conclusión voluntaria.

12 Jerarquías de procesos
Los SO que soportan el concepto de proceso deben poseer alguna herramienta que permita crear todos los procesos que se necesitan. Cuando un proceso crea a otro, padre e hijo se mantienen asociados de cierta manera. El proceso hijo puede a su vez crear nuevos procesos, constituyendo una jerarquía. Cada proceso tiene solamente un padre, pero puede tener cero, uno ó mas hijos.

13 Ejemplo de jerarquía pstree
init-+-6*[agetty] // Proceso especial que se inicia al cargarse el SO |-events/0 |-fcron |-httpd---10*[httpd] |-java |-khelper |-klogd |-ksoftirqd/0 |-kswapd0 |-kthread-+-aio/0 | |-kacpid | |-kblockd/0 | |-khubd | |-2*[kjournald] | |-kpsmoused | |-kseriod | |-2*[pdflush] | `-shpchpd |-master-+-pickup | `-qmgr |-mysqld_safe---mysqld |-slapd |-sshd---sshd---bash---pstree |-syslogd `-watchdog/0

14 Estados de los procesos
Aunque cada proceso es una entidad independiente, con su contador de programas y estado interno, es muy frecuente que necesite interactuar con otros procesos. Según la velocidad de ejecución relativa de ambos procesos, dada por la relativa complejidad de ambos programas y por la cantidad de tiempo de CPU que cada uno de ellos alcance a emplear, puede ocurrir que alguno de ellos esté listo para ejecutarse pero que no alcance a disponer de los elementos necesarios para poderlo hacer, por lo que deberá bloquearse en espera de que pueda disponer de los recursos que necesita. También es posible que el SO detenga a un proceso listo para ejecutarse, ya que el algoritmo de planificación de procesos ha decidido que debe sustituirle: asignar el procesador a otro proceso.

15 Estados … (2) Transiciones posibles:
En resumen, los estados posibles para un proceso son: En ejecución (Running): Realmente utiliza la CPU en el instante actual. Bloqueado (Blocked): No puede ejecutarse hasta que reciba la señal de que ocurrió el evento externo a él pero que necesita para disponer de los recursos con que continuar su ejecución. Listo (Ready): Ejecutable. Posee todos los recursos que necesita para trabajar excepto el procesador. Se detiene temporalmente para permitir que se ejecute algún otro proceso. Transiciones posibles: El proceso se bloquea en espera de recurso. El planificador elige otro proceso. El planificador elige a este proceso. El recurso esperado está disponible.

16 Estados … (3) La capa inferior de un SO estructurado por procesos maneja las interrupciones y realiza la planificación (Scheduling). El resto del sistema consta de procesos secuenciales.

17 Otros estados posibles
Los tres estados principales descritos: Listo, Ejecución y Bloqueado, ofrecen una forma sistemática de modelar el comportamiento de los procesos y de guiar la implementación del sistema operativo. Se han construido muchos sistemas operativos empleando solamente estos tres estados. Sin embargo, hay una buena justificación para añadir más estados al modelo.

18 Modelo con cinco estados
Este modelo agrega al esquema clásico dos estados posibles: Nuevo: Proceso que se acaba de crear, pero que aún no ha sido admitido por el SO en el grupo de procesos ejecutables. Terminado: Proceso que ha sido excluido por el SO del grupo de procesos ejecutables, bien porque se detuvo o porque fue abandonado por alguna razón. Estos dos nuevos estados son útiles para toda la gestión de los procesos.

19 Transiciones en el Modelo de cinco estados

20 Estado “suspendido” Este modelo complementa al modelo de cinco estados incorporando el concepto de proceso suspendido, así como el correspondiente estado suspendido:

21 Proceso “suspendido” e intercambio
Cuando todos los procesos de la memoria principal están en el estado bloqueado, el sistema operativo puede suspender un proceso poniéndolo en estado suspendido y transferirlo a disco. El espacio que se libera de la memoria principal puede utilizarse entonces para traer otro proceso. Cuando el sistema operativo haya realizado una operación de intercambio de un proceso a disco, tendrá dos opciones para seleccionar el proceso que se trae a memoria: admitir un proceso recién creado o traer un proceso suspendido previamente.

22 Saliendo del estado suspendido
Puede parecer que la preferencia debe ser traer un proceso suspendido previamente para darle servicio, en lugar de hacer crecer la carga total de procesos en el sistema. Pero esta línea de razonamiento presenta una dificultad: Todos los procesos que fueron suspendidos estaban en el estado bloqueado en el momento de la suspensión. Realmente no haría ningún bien traer de nuevo a memoria principal un proceso bloqueado porque no está todavía listo para ejecutarse. Sin embargo, cada proceso en estado suspendido fue bloqueado originalmente por un suceso concreto. Cuando se produzca tal suceso, el proceso se desbloqueará y estará disponible para su ejecución. Por tanto, no se necesita volver a pensar sobre este aspecto del diseño.

23 Estados necesarios Aquí se tienen dos conceptos independientes:
si un proceso está esperando un suceso (bloqueado o no), y si un proceso ha sido expulsado de la memoria principal (suspendido o no). Para ordenar estas combinaciones, hacen falta los cuatro estados siguientes: Listo: El proceso está en memoria principal y listo para la ejecución. Bloqueado: El proceso está en memoria principal esperando un suceso. Bloqueado y suspendido: El proceso está en memoria secundaria esperando un suceso. Listo y suspendido: El proceso está en memoria secundaria pero está disponible para su ejecución tan pronto como se cargue en la memoria principal.

24 Estados y Memoria Virtual
Antes de observar el diagrama de transición de estados que engloba dos nuevos estados de suspensión, debe mencionarse otro punto: El empleo de Memoria Virtual (virtual memory - VM). Se ha supuesto hasta ahora que no se utiliza VM y que un proceso estará bien en memoria principal o bien fuera de ella por completo. Con un esquema de VM, es posible ejecutar un proceso que esté solo parcialmente en memoria principal. Si se hace una referencia a una dirección del proceso que no está en memoria principal, entonces la parte apropiada del proceso debe traerse a memoria.

25 Procesos de usuario en memoria virtual

26 Estados y Memoria Virtual (2)
El uso de la VM parece eliminar la necesidad del intercambio explicito, ya que cualquier dirección deseada de cualquier proceso puede ser trasladada dentro o fuera de la memoria principal por el hardware de gestión de memoria del procesador. Sin embargo, como se estudiará en la unidad 3, el rendimiento del sistema de VM puede desplomarse si hay un número suficientemente grande de procesos activos, todos los cuales están en parte en la memoria principal. Por tanto, incluso en un sistema de VM, el SO siempre tendrá que expulsar de cuando en cuando algunos procesos, de forma completa y explicita, para mejorar el rendimiento.

27 Diagrama de transición de estados con dos estados suspendidos

28 Nuevas transiciones Bloqueado → Bloqueado y suspendido:
Si no hay procesos Listos, entonces al menos un proceso Bloqueado se expulsa para dar cabida a otro proceso que no esté bloqueado. Esta transición puede hacerse aun cuando hay procesos listos disponibles, cuando el sistema operativo determina que el proceso que está actualmente en Ejecución o un proceso Listo que sería conveniente expedir requiere más memoria principal para mantener un rendimiento adecuado. Bloqueado y suspendido → Listo y suspendido: Un proceso en estado Bloqueado y suspendido se pasa al estado Listo y suspendido cuando ocurre el suceso que estaba esperando. Nótese que esto requiere que esté accesible para el sistema operativo la información relativa a los procesos suspendidos.

29 Nuevas transiciones (2)
Listo y suspendido → Listo: Cuando no hay procesos Listos en la memoria principal, el SO tendrá que traer uno para continuar la ejecución. Además, puede darse el caso de que un proceso en estado Listo y suspendido tenga una prioridad mayor que la de un proceso en estado Listo. En tal caso, el diseñador del SO puede decidir que es más importante tomar el proceso de mayor prioridad que minimizar el intercambio. Listo → Listo y suspendido: Generalmente, el SO prefiere suspender a un proceso Bloqueado en vez de a uno Listo, ya que el proceso Listo podría ejecutarse de inmediato, mientras que el proceso Bloqueado estará ocupando espacio en la memoria principal sin poder ejecutarse. Sin embargo, puede ser necesario suspender un proceso Listo si ésta es la única forma de liberar un bloque lo suficientemente grande de memoria principal. Por último el SO puede escoger suspender un proceso Listo de más baja prioridad en lugar de uno Bloqueado que sea de prioridad más alta si estima que dicho proceso Bloqueado pronto estará listo.

30 Otras transiciones importantes
Nuevo → Listo, Suspendido y Nuevo → Listo: Cuando se crea un nuevo proceso, se le puede añadir a la cola de listos o a la de listos y suspendidos. En ambos casos, el SO necesita construir unas tablas para poder administrar el proceso y asignarle un espacio de direcciones. Podría ser preferible que el SO llevara a cabo estas labores en un primer momento, de modo que se mantuviera una reserva grande de procesos que no están bloqueados. Con esta estrategia sería frecuente el caso de que hubiese poco espacio en memoria principal para un nuevo proceso; de ahí el uso de la nueva transición Nuevo → Listo y suspendido. Por otro lado, puede argumentarse que una filosofía de creación de los procesos “justo a tiempo”, retrasando la creación todo lo que se pueda, reducirla la sobrecarga del SO y le permitirla llevar a cabo las tareas de creación de procesos en el momento en el que el sistema esté atascado de todas maneras con procesos Bloqueados.

31 Otras transiciones … (2)
Bloqueado y suspendido → Bloqueado: La inclusión de esta transición puede parecer resultado de un mal diseño. Después de todo: si un proceso no está listo para ejecutarse y aún no está en memoria principal, ¿cuál es el interés por traerlo a memoria? Pero es posible la siguiente situación: Un proceso termina, liberando memoria principal. Hay un proceso en la cola de Bloqueados y suspendidos que tiene una prioridad mayor que la de cualquier proceso de la cola de Listos y suspendidos, así que el sistema operativo tiene razones para suponer que pronto ocurrirá el suceso por el que el proceso está bloqueado. En estas circunstancias, podría parecer razonable traer un proceso Bloqueado a memoria antes que un proceso Listo.

32 Otras transiciones … (3)
Ejecución → Listo y suspendido: Generalmente, un proceso en Ejecución pasa al estado Listo cuando expira su fracción de tiempo asignado. Sin embargo, si se está expulsando al proceso porque hay un proceso de prioridad mayor en la lista de Bloqueados y suspendidos que se acaba de desbloquear, entonces el SO podría pasar el proceso en Ejecución directamente a la cola de Listos y suspendidos, liberando espacio en la memoria principal. Varios → Terminado: Normalmente, los procesos terminan mientras están ejecutándose, bien porque se completaron o bien por causa de alguna condición drástica de error. Sin embargo, en algunos sistemas operativos, un proceso puede ser finalizado por el proceso que lo creó o bien finalizar cuando termina el proceso padre. Si se permite esto, un proceso situado en cualquier estado podrá pasar al estado Terminado.

33 Otros usos de la suspensión
Hasta ahora, se ha identificado el concepto de proceso suspendido con el hecho de que el proceso no está en memoria principal. Un proceso que no esté en memoria no estará disponible de inmediato para su ejecución, esté o no esperando un suceso. Se puede generalizar este concepto de proceso suspendido definiéndole como aquel proceso que tiene las características siguientes: 1. Un proceso que está suspendido no está disponible de inmediato para ejecución. 2. El proceso puede estar esperando o no un suceso. Si lo está, la condición de bloqueado es independiente de la condición de suspendido y el hecho de que ocurra el evento por el cuál se bloqueó no lo habilita para la ejecución. 3. El proceso fue situado en el estado suspendido por un agente (por si mismo, por el proceso padre o por el sistema operativo) con el fin de impedir su ejecución. 4. El proceso no puede apartarse de este estado hasta que el agente lo ordene explícitamente.

34 Razones para la Suspensión de procesos
Intercambio (SWAP): El sistema operativo necesita liberar suficiente memoria principal para cargar un proceso que está listo para ejecutarse. Otra razón del SO: El sistema operativo puede suspender un proceso de fondo, de utilidad o cualquier proceso que se sospecha sea el causante de un problema. Solicitud de un usuario: Un usuario puede querer suspender a ejecución de un programa con fines de depuración o en conexión con el uso de un recurso. Por tiempo: Un proceso puede ejecutarse periódicamente (por ejemplo, un proceso de contabilidad o de supervisión del sistema) y puede ser suspendido mientras espera el siguiente intervalo de tiempo. Solicitud del proceso padre: Un proceso padre puede querer suspender a ejecución de un proceso descendiente para examinar o modificar el proceso suspendido o para coordinar la actividad de varios descendientes.

35 Tablas de control del SO

36 Control de procesos El bloque de control de proceso es la estructura de datos central y más importante de un sistema operativo. Cada bloque de control de proceso contiene toda la información de un proceso necesaria para el sistema operativo. Los bloques son leídos y/o modificados por casi todos los módulos de un sistema operativo, incluyendo aquellos que tienen que ver con la planificación, la asignación de recursos, el tratamiento de interrupciones y el análisis y supervisión del rendimiento. Puede decirse que el conjunto de los bloques de control de procesos definen el estado del sistema operativo. Esto saca a relucir una cuestión importante de diseño: Una serie de rutinas del sistema operativo necesitarán acceder a la información de los bloques de control de procesos. La provisión de acceso directo a estas tablas no es difícil: Cada proceso está dotado de un único ID que puede utilizarse como índice en una tabla de punteros a los bloques de control de procesos.

37 Estructuras de colas de procesos

38 Control de procesos (2) La dificultad no está en el acceso, sino más bien en la protección. Existen dos problemas: Un error en una sola rutina, como la de tratamiento de interrupciones, puede dañar los bloques de control de procesos, lo que destruiría la capacidad del sistema para administrar los procesos afectados. Un cambio de diseño en la estructura o en la semántica del bloque de control de procesos podría afectar a varios módulos del sistema operativo. Estos problemas se pueden abordar exigiendo a todas las rutinas del sistema operativo que pasen a través de una rutina de manejo, cuya única tarea sería la de proteger los bloques de control de proceso y que se constituiría en el único árbitro para leer y escribir en estos bloques. La concesión en el empleo de una rutina tal está en el rendimiento y en el grado con el que pueda confiarse en que el resto del software del sistema sea correcto.

39 Modos de ejecución La mayoría de los procesadores dan soporte para dos modos de ejecución por lo menos. Ciertas instrucciones pueden ejecutarse solo en modo privilegiado: la lectura o modificación de registros de control tales como la palabra de estado del programa, instrucciones primitivas de E/S e instrucciones relativas a la gestión de memoria. Además, sólo se puede acceder a ciertas regiones de memoria como la zona de los vectores de interrupción ó a las zonas que contienen el mapeo de memoria de entrada / salida en el modo más privilegiado. El modo menos privilegiado a menudo se conoce como modo de usuario, ya que los programas de usuario ejecutan normalmente en ese modo. Al modo más privilegiado normalmente se le conoce como modo del sistema, modo de control o, modo del núcleo. Este último término se refiere al núcleo del sistema operativo, que es la parte del sistema operativo que lleva a cabo las funciones importantes del sistema.

40 Modos de ejecución (2) La razón por la que se usan dos modos debe quedar clara: Es necesario proteger al sistema operativo y a las tablas importantes del mismo, tales como los bloques de control de procesos, de los posibles accesos de los programas de usuario. En el modo del núcleo, el software tiene control completo del procesador y de todas sus instrucciones, registros y memoria. Este nivel de control no es necesario y, por seguridad, tampoco conveniente para los programas de usuario. Surgen dos preguntas: ¿Cómo conoce el procesador en qué modo va a ejecutar? Normalmente hay un BIT en la palabra de estado del procesador (program status word - PSW) que indica el modo de ejecución. Este BIT es cambiado como respuesta a ciertos sucesos. Por ejemplo, cuando un usuario hace una llamada a un servicio del sistema operativo, el modo se cambia al de núcleo. Esto se suele llevar a cabo ejecutando una instrucción que cambia el modo. ¿Cómo se cambia de modo? El SO ejecuta una instrucción privilegiada que lo permite.

41 Implementación de procesos
Para implementar el modelo del proceso, el SO necesita conservar una tabla (arreglo de estructuras) llamada tabla de procesos, con un elemento (ítem, registro) por proceso. Este registro contiene información respecto al estado del proceso: Contador de programa (program counter - PC), Apuntador de la pila (stack pointer – SP), Distribución de la memoria, Condición ó estado de archivos abiertos, Información de rendición de cuentas y planificación, así como cualquier otra información relevante al proceso que deba guardarse para permitir su cambio del estado listo al estado ejecución de manera que pueda continuar como si nunca hubiese sido detenido.

42 Ejemplo de tabla de procesos
Manejo de procesos Asignación de la memoria Manejo de los archivos Registros Contador de programa Palabra de condición del programa Puntero de la pila Estado del proceso Hora de inicio Tiempo usado de CPU Tamaño del quantum de CPU disponible Prioridad planificada Puntero de la lista de espera por mensajes Señales pendientes Otros indicadores de señalización Nombre e Identificación del proceso Puntero del segmento de código Puntero del segmento de datos Condición de la salida Condición de la señal Identificación del proceso Proceso padre Grupo de procesos Identificación real del usuario (UID real) Identificación efectiva (UID efectiva) Grupo real (GID real) Grupo efectivo (GID efectivo) Mapa de bits de señalización Máscara de acceso UMASK Directorio raíz Directorio de trabajo Descripción de los archivos Parámetros de llamada al sistema

43 Cambio de proceso A primera vista, la función de cambio de proceso parece sencilla: En cierto momento, un proceso que está ejecutándose se interrumpe, el sistema operativo pone a otro proceso en el estado de Ejecución y pasa el control a dicho proceso. Sin embargo, surgen diversas cuestiones de diseño. En primer lugar: ¿Qué sucesos provocan un cambio de proceso? Otra cuestión es que se debe hacer una distinción entre cambio de contexto y cambio de proceso. Por último: ¿Qué debe hacer el sistema operativo con las diferentes estructuras de datos bajo su control para llevar a cabo un cambio de proceso?

44 Cuándo cambiar de proceso
Un cambio de proceso puede producirse en cualquier momento en que el sistema operativo haya tornado el control a partir del proceso que está actualmente ejecutándose. Los sucesos posibles que pueden dar el control al sistema operativo son: Mecanismo Causa Uso Interrupción Externa a la ejecución de la instrucción en curso. Reacción a un suceso asincrónico externo. Trampa (Trap) Asociada a la ejecución de la instrucción en curso. Tratamiento de un error ó de una condición excepcional. Llamada al supervisor Solicitud explícita. Llamada a una función del SO.

45 Cuándo cambiar … (2) En primer lugar, se van a tener en cuenta las interrupciones del sistema. Se pueden distinguir, como hacen muchos sistemas, dos clases de interrupciones del sistema, una conocida simplemente como interrupción y otra conocida como trampa. La primera es originada por algún tipo de suceso que es externo e independiente del proceso que está ejecutándose, como la culminación de una operación de E/S. La segunda tiene que ver con una condición de error o de excepción generada dentro del proceso que está ejecutándose, como un intento ilegal de acceso a un archivo. En una interrupción ordinaria, el control se transfiere primero a un gestor de interrupciones, quien lleva a cabo algunas tareas básicas y, después, se salta a una rutina del sistema operativo que se ocupa del tipo de interrupción que se ha producido.

46 La Interrupción Elemento clave para desarrollar un SO con multiprogramación.

47 Manejo de Interrupciones
Asociada con cada clase de dispositivos de Entrada / Salida: relojes, terminales, discos, mouse, etc.; existe una localidad en la proximidad de la parte inferior de la memoria (localización absoluta 0000 y siguientes) llamada vector de interrupción. Estos vectores de interrupción contienen la dirección de los diferentes procedimientos para el servicio de la interrupción asociada con dicho nivel de interrupción. Si un proceso está trabajando cuando ocurre la interrupción, el hardware de interrupciones se encarga de guardar el contador de programa, la palabra de condición y algunos registros de la CPU. A continuación, el control de la CPU salta a la dirección asociada con el nivel de la interrupción recibida.

48 Cambios en memoria y registros

49 Interrupciones … (2) A partir de este momento, comienza la responsabilidad del software. El procedimiento de manejo de interrupciones debe comenzar su ejecución guardando todos los registros en la tabla del proceso corriente. El número de dicho proceso, así como un puntero a su registro en la tabla de procesos se guardan en variables globales, de manera que puedan recuperarse rápidamente. Comúnmente, la comunicación entre procesos se realiza mediante mensajes, por lo que se generará un mensaje al proceso que espera bloqueado por la ocurrencia del evento para que cambie su estado a listo. Para concluir, el programa de manejo de la interrupción deberá entregar el control a programa planificador para que asigne el procesador al proceso que corresponda. En sistemas operativos de tiempo real, suele ser al proceso listo que tenga la mayor prioridad.

50 Esqueleto de las acciones
El hardware coloca en la pila al program counter, etc. El hardware carga nuevo program counter tomado del vector de interrupción. Un procedimiento en lenguaje ensamblador (Assembly language procedure) salvaguarda los registros. Otro procedimiento en lenguaje ensamblador establece el nuevo stack. Un programa escrito en C (u otro lenguaje de mayor nivel que el ensamblador) actúa como servicio de interrupción, construyendo y enviando mensajes. El código de paso de mensajes señaliza al programa que espera por este evento que ya ocurrió, colocando como listo al receptor de dicho mensaje. El Scheduler decide cual proceso deberá ejecutarse a continuación. El procedimiento escrito en C devuelve el control al procedimiento escrito en ensamblador. El procedimiento en ensamblador da inicio al proceso que corresponda actualmente.

51 Clasificación de interrupciones
De programa: Generadas por alguna condición que se produce como resultado de la ejecución de una instrucción, tales como el desbordamiento aritmético, la división por cero, el intento de ejecutar una instrucción ilegal de la máquina o una referencia a una zona de memoria fuera del espacio permitido al usuario. De reloj: Generadas por un reloj interno del procesador. Esto permite al sistema operativo llevar a cabo ciertas funciones con determinada regularidad. De Entrada / Salida: Generadas por un controlador de E/S, para indicar que una operación ha terminado normalmente o para indicar diversas condiciones de error. Por fallo del hardware: Generadas por problemas tales como un corte de energía o un error de paridad de la memoria.

52 Ejemplos Interrupción de reloj: Interrupción de E/S: Fallo de memoria:
El SO determina si el proceso que está en ejecución ha estado ejecutando durante la fracción máxima (quantum) de tiempo permitida. Si esto ocurre, el proceso debe pasar al estado listo y se debe despachar ó expedir otro proceso. Interrupción de E/S: El SO determina exactamente que se ha producido una acción de E/S. Si la acción constituye un suceso que están esperando uno o más procesos, entonces el SO traslada todos los procesos bloqueados correspondientes al estado listo (y los procesos bloqueados y suspendidos pasan al estado de listos y suspendidos). El SO debe entonces decidir si se reanuda la ejecución del proceso que está actualmente en estado de ejecución o se expulsa a dicho proceso en favor de un proceso listo de mayor prioridad. Fallo de memoria: El procesador encuentra una referencia a una dirección de memoria virtual de una palabra que no está en memoria principal. El SO debe traer el bloque (página o segmento) que contiene la referencia, de la memoria secundaria a la memoria principal. Después de hacer la solicitud de E/S para traer el bloque de memoria, el SO puede llevar a cabo un cambio de contexto para reanudar la ejecución de otro proceso; el proceso que cometió el fallo de memoria se pasa a estado bloqueado. Después de que el bloque en cuestión se cargue en memoria, dicho proceso se pondrá en estado listo.

53 Trampas y llamadas En las trampas, el SO determina si el error es fatal. Si lo es, el proceso que se estaba ejecutando pasa al estado terminado y se produce un cambio de proceso. Si no es fatal, la acción del sistema operativo dependerá de la naturaleza del error y del diseño del sistema operativo. Se puede intentar algún procedimiento de recuperación o, simplemente, notificarlo al usuario. Se puede hacer un cambio de proceso o, simplemente, reanudar el mismo proceso que se estaba ejecutando. Finalmente, el sistema operativo puede activarse mediante una llamada de supervisor desde e programa que se está ejecutando. Por ejemplo, está ejecutándose un proceso de usuario y se alega a una instrucción que solicita una operación de E/S, tal como abrir un archivo. Esta llamada provoca la transferencia a una rutina que forma parte del código del sistema operativo. Por lo general, el uso de una llamada al sistema hace que el proceso de usuario pase al estado Bloqueado.

54 Cambio de contexto El cambio de contexto es un concepto distinto del cambio de proceso. Puede producirse un cambio de contexto sin cambiar el estado del proceso que está actualmente en estado de ejecución. En tal caso, salvar el contexto y restaurarlo posteriormente involucra un pequeño coste extra. Sin embargo, si el proceso que estaba ejecutándose tiene que pasar a otro estado (listo, bloqueado, etc.), el sistema operativo tiene que llevar a cabo cambios substanciales en su entorno.

55 Pasos involucrados en un cambio completo de proceso
Salvar el contexto del procesador, incluyendo el contador de programa y otros registros. Actualizar el bloque de control del proceso que estaba en estado de ejecución. Esto implica cambiar el estado del proceso a alguno de los otros estados: listo, bloqueado, etc. También se tienen que actualizar otros campos significativos, incluyendo la razón por la que se abandona el estado de ejecución y la información de contabilidad. Mover el bloque de control del proceso a la cola apropiada: listos, bloqueados en espera por el suceso i, etc. Seleccionar otro proceso para ejecución. Actualizar el bloque de control del proceso seleccionado. Esto incluye cambiar el estado de dicho proceso a ejecución. Actualizar las estructuras de datos de gestión de memoria. Esto puede hacer falta dependiendo de cómo se gestione la traducción de direcciones; este tema se analiza en la unidad 3. Restaurar el contexto del procesador a aquel que existía en el momento en el que el proceso seleccionado dejó por última vez el estado de ejecución, cargando los valores previos del contador de programa y de otros registros.

56 Fuentes de información
Tanenbaum A., “Sistemas Operativos Modernos”, Prentice Hall, 1994 Tanenbaum A., “Sistemas Operativos: diseño e implementación” Prentice-Hall, 1998 Tanenbaum A., “Sistemas Operativos Distribuidos”, Prentice Hall, 2003 Carretero, J. García, F. Pérez, F. “Sistemas Operativos: Una visión aplicada” Mc Graw Hill Stallings W., “Sistemas Operativos”, 5ta. Edición. Prentice-Hall. 2004

57 Textos en biblioteca de la sede
Documento No. Año Título Autor 11486 2001 Sistemas operativos. Stallings, William. 9137 2003 Sistemas operativos modernos. Tanenbaum, Andrew S. 8443 1998 Sistemas operativos: Diseño e implementación. 6980 4684 1996 Sistemas operativos distribuidos. 3137 1993

58 Referencias en Internet
David Luis la Red Martínez “SISTEMAS OPERATIVOS” Domingo Mery “Sistemas Operativos” Jorge Alfonso Briones García “Sistemas Operativos Distribuidos (material adicional)” Sistemas operativos (SIMULACIONES Y ANIMACIONES)

59 Textos en Internet (inglés)
Andrew S. Tanenbaum “Modern Operating Systems” Andrew S. Tanenbaum “Distributed Systems: Principles and Paradigms” George Coulouris, Jean Dollimore and Tim Kindberg “Distributed Systems: Concepts and Design”, 3ra edición (4ta edición 2005) Avi Silberschatz, Peter Baer Galvin & Greg Gagne “Operating System Concepts” Minix 3 Operating System

60 Registros y banderas de x86


Descargar ppt "Sistemas Operativos I Unidad 2: Procesos."

Presentaciones similares


Anuncios Google