Descargar

Gestión de procesos. Sistemas operativos

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    1 Introducción Procesos Visión abstracta Esbozo de implementación Threads (Procesos ligeros) Comunicación entre procesos Condición de carrera Exclusión mutua y región crítica Implementación de la exclusión mutua Paso de mensajes Planificación de procesos Criterios Políticas Sistemas multiprocesador

    edu.red

    2 INTRODUCCIÓN Interesa tener máquinas que ejecuten varios procesos al mismo tiempo (Gp:) 18 (Gp:) T1 (Gp:) T2 (Gp:) T3 (Gp:) t

    Aprovechar tiempos muertos E/S Soluciones elegantes concurrentes Más rapidez con más de una CPU (Gp:) T1 (Gp:) T2 (Gp:) T3 (Gp:) t (Gp:) 13

    (Gp:) CPU1 (Gp:) CPU2

    Con multiprocesadores también interesa multiplexar las CPU's pseudoparalelismo

    edu.red

    3 PROCESOS (Visión abstracta: Recordar sus llamadas) Dos relaciones típicas entre proceso Padre y proceso Hijo: (Gp:) Procesos independientes: La "shell" crea un proceso para ejecutar un programa de usuario "ls" (Gp:) ls.exe (Gp:) shell (Gp:) P

    (Gp:) Debe cargarse el ejecutable en memoria (Gp:) ls

    (Gp:) Dotarle de registros, pila, etc. (Gp:) H

    El código ya está en memoria (Gp:) Procesos cooperantes: Un servidor Web crea un proceso para atender una petición de un cliente (Gp:) web (Gp:) P

    (Gp:) Dotarle de registros, pila, etc. (Gp:) H

    Parecido a Threads ¿fork + exec? ¿fork?

    edu.red

    4 PROCESOS (Visión abstracta: Recordar sus llamadas) Proceso de arranque y grupos de procesos (Gp:) P1 (Gp:) P2 (Gp:) P3 (Gp:) P4 (Gp:) P5 (Gp:) P6 (Gp:) P7

    init (Gp:) id:rlevel:action:process (Gp:) /etc/inittab

    (Gp:) xinetd

    (Gp:) /etc/rc5.d (Gp:) /etc/rc.d/rc 5

    (Gp:) login (Gp:) login (Gp:) login as: Password:

    (Gp:) bash

    (Gp:) pcarazo:……..:/bin/bash (Gp:) /etc/passwd

    PC1> (Gp:) grupo de procesos

    (Gp:) Red

    (Gp:) putty (Gp:) ?

    (Gp:) gdm

    (Gp:) 0 Halt 1 Monousuario 2 MultiSinRed 3 MultiConRed 5 X11 6 Reboot (Gp:) rlevel

    edu.red

    5 PROCESOS (Visión abstracta: Recordar sus llamadas)

    edu.red

    6 Esbozo de implementación (Gp:) ¿Cómo es el ciclo de vida de un proceso? (Gp:) CPU

    (Gp:) Creación (Gp:) P1

    (Gp:) P2

    P3 (Gp:) P1

    (Gp:) P2 (Gp:) P3

    (Gp:) P2

    (Gp:) P3

    P4 (Gp:) Expulsión (Gp:) P3

    (Gp:) P4 (Gp:) P3

    (Gp:) P1

    (Gp:) P4

    (Gp:) P3 (Gp:) P1

    (Gp:) Terminación

    (Gp:) P1

    (Gp:) P2

    (Gp:) P4

    ¿Estados de un proceso? (Gp:) EnEjecución Preparado EnEspera o Bloqueado (Gp:) Activo

    (Gp:) Ejecu. (Gp:) Prep. (Gp:) Espera

    edu.red

    7 Diagrama de transición de estados de un Proceso (Gp:) Preparado

    (Gp:) EnEjecución

    (Gp:) EnEspera

    (Gp:) forkh

    (Gp:) forkp

    (Gp:) exit

    (Gp:) exit

    (Gp:) exit

    (Gp:) wait

    wait wait sleep sleep F.R. F.R. F.R. F.R. (Gp:) ¿forkp? (Gp:) ¿forkh?

    edu.red

    8 (Gp:) El contexto de un proceso está distribuido en varias zonas (Gp:) CPU (Gp:) MP (Gp:) MSec (Gp:) S.O.

    Esbozo de implementación en términos más informáticos (Gp:) Contexto de memoria (Código y Datos) MP/MSec

    (Gp:) Bloque de control (descriptor) del Proceso MP (S.O.)

    (Gp:) Contexto del procesador Reg/MP/MSec

    (Gp:) Ejecutándose

    (Gp:) Bloqueado (Gp:) pila

    edu.red

    9 Esbozo de implementación ( ¿Cuántos procesos? ) ¿#Procesos ilimitado o un máximo predeterminado? maxProcesos: constant:=100; type idProceso is NATURAL range 0..maxProcesos; Reservado (Gp:) procesos : array[1..maxProcesos] of descriptorProceso; (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4 (Gp:) 97 (Gp:) 98 (Gp:) 99 (Gp:) 100 (Gp:) 50

    (Gp:) type descriptorProceso is record pid: ———-; ————— end record; (Gp:) 584

    ejecutandose : idProceso; ¿Correcto?

    edu.red

    10 Esbozo de implementación ( ¿Cómo dar los PID's? ) type descriptorProceso is record pid: idProceso; ————— end record; (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4 (Gp:) 97 (Gp:) 98 (Gp:) 99 (Gp:) 100 (Gp:) 50 (Gp:) 1..100

    ¿Problemas? 99 procesos en el sistema Hago ps y veo un proceso mío (57) Me dispongo a kill -9 57 Mi proceso termina antes del kill y se crea otro proceso con el código 57 ¡ Mato a otro proceso ! (Gp:) Mejor espaciar más los códigos (Gp:) pid: NATURAL; (Gp:) 1..65535…

    (Gp:) Algo más complejo dar PID's

    (Gp:) 0 ? Descriptor libre

    ¿ejecutandose?

    edu.red

    11 Esbozo de implementación ( ¿Estados y su gestión? ) type unEstado is (ejecutandose, preparado, espLapso, espFinHijo, zombie);

    edu.red

    12 Esbozo de implementación ( ¿Estados y su gestión? ) type unEstado is (ejecutandose, preparado, espLapso, espFinHijo, zombie); (Gp:) type descriptorProceso is record pid: NATURAL; estado: unEstado;

    end record; (Gp:) 1 (Gp:) 2 (Gp:) 3 (Gp:) 4 (Gp:) 97 (Gp:) 98 (Gp:) 99 (Gp:) 100 (Gp:) 50

    CPU queda libre. ¿A qué Pi se la doy? Recorro procesos buscando uno que esté preparado Lento e injusto Si decido elegir al Pi que lleva más tiempo preparado, lo mejor cola FIFO (Gp:) type unaCola is record primero: idProceso := 0; ultimo: idProceso:= 0; end record;

    (Gp:) preparados: unaCola;

    (Gp:) sig: IdProceso;

    (Gp:) ejecutandose: idProceso;

    Partes: 1, 2
    Página siguiente