Descargar

Diseño de sistemas operativos. Gestión de procesos

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    Índice Concepto de proceso y multiprogramación Implementación de procesos Operaciones sobre procesos Threads Planificación de procesos

    edu.red

    Concepto de proceso y multiprogramación Concepto "clásico": Programa secuencial en ejecución Multiprogramación: Múltiples programas en ejecución S.O. reparte recursos entre procesos salvando/restaurando su contexto: Programa cree que tiene una máquina dedicada Proceso: Abstracción de un "procesador virtual" Beneficios de la multiprogramación: Uso eficiente del procesador Soporte de múltiples usuarios Expresión del paralelismo de las aplicaciones

    edu.red

    Programa versus Proceso Programa (pasivo) != Proceso (activo) Múltiples procesos ejecutando el mismo programa (p.e. shell) En UNIX se aprecia claramente la diferencia: FORK: Nuevo Proceso – Mismo Programa EXEC: Mismo Proceso – Nuevo Programa Un proceso puede ejecutar varios programas durante su vida En otros sistemas proceso asociado a programa "de por vida" En Win32: CreateProcess: Nuevo Proceso – Nuevo Programa En UNIX sería necesario: FORK + EXEC en hijo

    edu.red

    Implementación de procesos Explicación basada en modelo proceso/núcleo S.O. no es un proceso: crea la abstracción de proceso S.O. pasivo: Sólo activo en inicio hasta que crea 1º proc. y le cede control 1º proc. (init en UNIX) crea otros y éstos a su vez otros … Proceso única entidad activa Siempre hay un proceso ejecutando (aunque sea el nulo) Código del S.O. lo ejecutan los procesos Cuando se produce interrup., excepción o llamada al sistema

    edu.red

    Modos de ejecución de un proceso Proceso con dos modos de ejecución: usuario y núcleo Fase de usuario: Ejecutando el programa correspondiente Procesador en el nivel de usuario: privilegio restringido Fase de núcleo: Ejecutando el S.O. (rutina de interrup., de excepción o llamada) Procesador en el nivel de núcleo: privilegio total Proceso tiene asociadas dos pilas: Pila de usuario: usada en fase de usuario Pila del núcleo: usada en fase de núcleo excep., inter. y llamadas mientras proceso ejecuta usan esta pila

    edu.red

    Ejecución en modo núcleo 2 tipos de actividades: síncronas y asíncronas Actividades síncronas: Asociadas a llamada al sistema o excepción Ejecución en el contexto del proceso "solicitante" Actividades asíncronas: Asociadas a interrupciones Ejecución en contexto de proceso no relacionado con la interrup. Rutina de tratamiento no debe acceder a mapa de memoria de proceso actual ya que no está vinculado con interrup. S.O. puede considerarse dividido en 2 partes: Capa superior que trata eventos síncronos Capa inferior que trata eventos asíncronos

    edu.red

    Tipos de procesos Proceso de usuario Ejecuta un programa, en modo usuario excepto cuando: Se inicia el proceso (véase "creación de un proceso") Realiza una llamada al sistema Genera una excepción Se produce una interrupción mientras ejecuta Proceso de núcleo Ejecuta sólo código del S.O., siempre en modo núcleo Realiza labores del sistema que se hacen mejor en el contexto de un proceso independiente (operaciones de gestión de memoria) En Linux: bdflush, kupdate, etc. Normalmente, alta prioridad, pero no siempre (p.e. proceso nulo) No confundir con "procesos del sistema"

    edu.red

    Procesos del sistema Procesos de usuario creados por el superusuario Ejecutan en modo usuario "Pero sus llamadas al sistema son siempre atendidas" En sistemas monolíticos realizan labores del sistema como spooling o servicios de red (demonios de UNIX) En sistemas microkernel realizan funcionalidades "clásicas" del S.O. como p.e. la gestión de ficheros

    edu.red

    Vectores de interrupción Tabla de vectores de interrupción: Contiene direcciones de rutinas del S.O. Únicos puntos de entrada del S.O. S.O. inicia contenido de la tabla en su arranque Interrupciones externas (de dispositivos): Dispositivo proporciona vector (puede configurarse) P.e. En Linux usan vectores de 32-47 Excepciones (dividir por cero, instrucción privilegiada, …) Vector predefinido por cada excepción Ej. En Intel vector 0 corresponde con excep. por división por cero Llamadas al sistema: Instrucción especial (en Intel INT): vector como operando P.e. En LINUX sobre Intel se usa el vector 0x80

    edu.red

    Niveles de interrupción Mayoría de procesadores proporciona niveles de interrupción En cada momento UCP ejecuta en un nivel (Nivel UCP) Sólo admite int. de nivel > Nivel UCP Cuando acepta int. de nivel N, automáticamente Nivel UCP=N Existen instrucciones para cambiar nivel de UCP Prohíben ints. del mismo nivel o inferiores Algunos procesadores proporcionan instrucciones que causan interrupciones software Interrupciones de mínima prioridad

    edu.red

    Tratamiento HW de int., exc. y llamadas Operaciones realizadas por HW cuando se activa inter., exc. o llamada Si viene de modo usuario ? activa pila de núcleo del proceso Salva algunos registros (típicamente PC y R.estado) en pila Fija un nivel de ejecución de núcleo Si se trata de interrupción ? Nivel UCP = Nivel interrup. Salta a rutina almacenada en vector ? Entra el S.O. (SW) Fin del manejo de interr., exc. o llamada: S.O. ejecuta instrucción de retorno correspondiente (p.e. RETI) Restaura registros salvados en pila recuperando nivel de ejecución y estado de interrupciones previo

    edu.red

    Tratamiento de interrupciones Rutina en ensamblador: vector contiene dirección de comienzo Estructura típica: Salvar registros en pila de núcleo Invocar función donde se realiza tratamiento específico Normalmente está escrita en lenguaje de alto nivel Restaurar registros de la pila del núcleo del proceso RETI En sistemas con N niveles pueden anidarse N rutinas de interrup. En total hasta N+1 actividades del S.O. anidadas: 1 llamada al sistema + N rutinas de interrupción

    Partes: 1, 2
    Página siguiente