sistemas operativos : procesos + unix + hilos

17
 15 PROCESOS Procesos + UNIX + Hilos Víctor Martín Hernández

Upload: victor-martin

Post on 07-Oct-2015

32 views

Category:

Documents


0 download

DESCRIPTION

Introducción a procesos, definición, imagen, posibles estados de los procesos. Así como estructuras de control del SO, modos de ejecución. Finalmente, se habla sobre los procesos en UNIX y se realiza una pequeña introducción sobre los hilos.Ideal para el estudio de la asignatura de Sistemas Operativos perteneciente a la carrera de Ingeniería Informática.

TRANSCRIPT

  • 15

    PROCESOS Procesos + UNIX + Hilos

    Vctor Martn Hernndez

  • 1

    INTRODUCCIN

    Requisitos que un sistema operativo debe cumplir:

    - Debe intercalar la ejecucin de mltiples procesos.

    - Debe reservar recursos para los procesos conforme a una poltica especfica mientras que al

    mismo tiempo evita interbloqueos.

    - Puede requerir dar soporte a la comunicacin entre procesos y la creacin de procesos.

    QU ES UN PROCESO?

    Tambin llamado tarea, es la ejecucin de un programa individual, siendo la entidad que se puede

    asignar y ejecutar en un procesador. Adems, es una unidad de actividad que se caracteriza por la

    ejecucin de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema

    asociados. Por tanto, para que un programa se ejecute, se debe crear un proceso para dicho

    programa.

    La imagen del proceso se mantiene como un bloque de memoria contiguo o continuo y

    habitualmente se encuentra en memoria secundaria. Para que el SO pueda gestionar el proceso, al

    menos una pequea porcin de su imagen se debe mantener en memoria principal.

    Se puede caracterizar el comportamiento de un determinado proceso, listando la secuencia de

    instrucciones que se ejecuta para dicho proceso. A esta lista de la denomina traza del proceso.

    Los procesos estn compuestos por:

    Cabe destacar que el cdigo de programa puede compartirse con otros procesos.

    El bloque de control de procesos (BCP) es una estructura de datos que almacena informacin como:

    identificador, estado, prioridad, control de programa (direccin a la siguiente instruccin de

    programa), punteros a memoria (incluye punteros a cdigo de programa y datos asociados a dicho

    proceso), datos de contexto (datos de registros), informacin de estado de E/S (peticiones E/S

    pendientes), informacin de auditora (cantidad de tiempo utilizado). El BCP es creado y controlado

    por el SO, y lo que le permite la multiprogramacin.

  • 2

    Como podemos observar en la imagen, cuando un proceso se interrumpe, los datos de contexto se

    guardan en el BCP y el estado del proceso cambia. Esto se ver con ms detalle en los cambios de

    ejecucin.

    ESTADOS DE LOS PROCESOS

    Dispatcher: pequeo programa que intercambia el procesador de un proceso a otro (realiza el

    cambio de contexto).

    2 ESTADOS

    Cuando el SO crea un nuevo proceso, crea el BCP y reserva espacio de direcciones en memoria

    principal para el nuevo proceso e inserta dicho proceso en el sistema en estado No Ejecutando. El

    proceso existe y est esperando su oportunidad de ejecutar.

    Problemas: slo hay una cola de No Ejecucin (podra no tenerse en cuenta el envejecimiento).

  • 3

    5 ESTADOS

    Listo: un proceso que se prepara para ejecutar cuando tenga oportunidad.

    Bloqueado: un proceso que no puede ejecutar hasta que se cumpla un evento determinado o se

    complete una operacin E/S.

    Nuevo: un proceso que se acaba de crear y que an no ha sido admitido en el grupo de procesos

    ejecutables por el SO.

    Saliente: un proceso que ha sido liberado del grupo de procesos ejecutables por el SO, debido a que

    ha sido detenido, que ha sido abortado por alguna razn o que alcanza su punto de finalizacin.

    Las posibles transiciones son las siguientes:

    Nuevo Listo. El SO mueve a un proceso del estado listo cuando ste se encuentre

    preparado para ejecutar un nuevo proceso. La mayora de sistemas fijan un lmite basado en

    el n de procesos existentes o la cantidad de memoria virtual que se podr utilizar.

    Listo Ejecutando. Cuando llega el momento de seleccionar un nuevo proceso para

    ejecutar, el SO selecciona uno de los procesos que se encuentre en el estado Listo. Esta

    tarea la lleva acabo el planificador (sheduler).

    Ejecutando Listo. La razn ms habitual para esta transicin es que el proceso en

    ejecucin haya alcanzado el mximo tiempo posible de ejecucin de forma ininterrumpida.

    Ejecutando Bloqueado. Un proceso se pone en el estado Bloqueado si solicita algo por lo

    cual debe esperar (una solicitud al SO y que no puede realizar en ese mismo momento).

    Listo Saliente. Un padre puede terminar la ejecucin de un proceso hijo.

    Cada proceso admitido por el sistema, se coloca en la cola (puede ser de tipo FIFO) de Listos.

    Tambin habr mltiples colas de bloqueados (organizadas dependiendo del tipo de suceso).

  • 4

    Problema: el procesador es ms rpido que la E/S, por lo que suele ser habitual que todos los

    procesos de memoria estn esperando por E/S y por lo tanto se tiene toda la memoria ocupada con

    procesos pero ninguno se est ejecutando.

    6 ESTADOS

    El swapping (memoria de intercambio) es una solucin al modelo de 5 estados. Este mtodo implica

    mover parte o todo el proceso de memoria principal a disco (cuando el proceso est en estado

    suspendido). El swapping es una operacin de E/S pero debido a que es sobre disco, es

    habitualmente ms rpida que la E/S sobre otros sistemas.

    El SO tiene como prioridad traer un proceso que anteriormente estuviese suspendido a crear uno

    nuevo.

    Problema: slo pueden ser suspendidos aquellos procesos que estn en estado de bloqueado.

  • 5

    7 ESTADOS

    Bloqueado. El proceso est en memoria principal y esperando un evento.

    Bloqueado/Suspendido. El proceso est en almacenamiento secundario y esperando un

    evento.

    Listo/Suspendido. El proceso est en almacenamiento secundario pero est disponible para

    su ejecucin tan pronto como sea argado en memoria ppal.

    Las posibles transiciones son:

    Bloqueado Bloqueado/Suspendido. Si no hay procesos listos, entonces al menos uno de

    los procesos bloqueados se transfiere al disco para hacer espacio para oto proceso que no se

    encuentra bloqueado.

    Bloqueado/Suspendido Listo/Suspendido. Cuando sucede un evento al que estaba

    esperando. Esto requiere que la informacin de estado concierne a un proceso suspendido

    sea accesible para el SO.

    Listo/Suspendido Listo. Cuando no hay ms procesos listos en memoria principal, el SO

    necesitar traer uno para continuar la ejecucin. Adicionalmente, puede darse el caso de

    que un proceso en estado Listo/Suspendido tenga mayor prioridad que cualquiera de los

    procesos en estado Listo.

    Listo Listo/Suspendido. El SO preferir suspender procesos bloqueados que un proceso

    listo, pero puede ser necesario suspender un proceso Listo si con ello se consigue liberar un

    bloque suficientemente grande de memoria.

    Nuevo Listo/Suspendido y Nuevo a Listo. Con el fin de conseguir espacio en memoria

    principal.

    Bloqueado/Suspendido Bloqueado. Cuando hay un proceso con mayor prioridad en la

    cola de Bloqueados/Suspendidos que en la cola de Listos/Suspendidos.

    Ejecutando Listo/Suspendido. El tiempo del uso del procesador finaliza.

  • 6

    Es posible ejecutar un proceso que est slo parcialmente en memoria principal. Si se hace

    referencia a una direccin de proceso que no se encuentra en memoria secundaria, la porcin

    correspondiente del proceso se trae a ella.

    ESTRUCTURAS DE CONTROL DEL SO

    El SO construye tablas de informacin sobre cada entidad que est administrando. El SO

    puede acceder a cualquier tipo de tabla.

    Tablas de memoria

    Se usan para mantener un registro tanto de la memoria principal como de la secundaria. Las

    tablas de memoria deben incluir la siguiente informacin:

    Reservas de memoria principal por parte de los procesos.

    Reservas de memoria secundaria por parte de los procesos.

    Todos los atributos de proteccin que restringe el uso de la memoria principal y

    secundaria, de forma que los procesos puedan acceder a ciertas reas de memoria

    compartida.

    La informacin necesaria para manejar la memoria virtual.

    Tablas de archivos (ficheros)

    Estas tablas proporcionan informacin sobre la existencia de ficheros, su posicin en

    almacenamiento secundario, su estado actual, y otros atributos. Esta informacin es

    mantenida por un sistema de ficheros independientes y, el SO tiene poco o ningn

    conocimiento sobre los ficheros.

    Estas tablas residirn en memoria virtual o principal y sern accesibles mediante dispositivos

    de E/S.

    Tablas de procesos

    Para gestionar los procesos. La parte restante de esta seccin se encuentra dedicada a

    examinar los requisitos que tienen las tablas de procesos.

  • 7

    En ellas residen las ubicaciones de los proyectos (BCP+instrucciones a ejecutar+datos

    variables locales y globales+constantes definidas+).

    Tablas de E/S

    Mantiene el estado de dispositivo de E/S que puede estar disponible o estar

    asignado a un proceso en particular.

    Estado de la operacin de E/S.

    Posicin de memoria principal que se est utilizando como origen o destino de la

    transferencia de E/S.

    BCP

    Identificacin del proceso

    Identificador del proceso.

    Identificador del proceso padre.

    Identificador del usuario.

    Informacin del estado del procesador

    Registros visibles para el usuario.

    Punteros de pila. Cada proceso tiene una o ms colas de tipo LIFO del sistema

    asociadas.

    Registros de control y estado. CP, flags, informacin de estado (indicadores

    habilitacin e inhabilitacin).

    Informacin del control del proceso

    Informacin de planificacin y estado. Informacin que necesita el SO para llevar a

    cabo sus funciones de planificacin.

    o Estado del proceso.

    o Prioridad.

    o Informacin de planificacin.

    o Suceso.

    Estructuracin de datos. El BCP puede contener punteros a otros procesos (padre-

    hijo).

    Comunicacin entre procesos.

    Privilegios de los procesos.

    Gestin de memoria. Puede incluir punteros a las tablas de pginas que describen la

    memoria virtual asignada a un proceso (los SO modernos suponen la existencia de

    un hardware de paginacin que permite el uso de la memoria fsica no contigua, de

  • 8

    esta forma, las tablas mantenidas por SO deben mostrar la localizacin de cada

    pgina de la imagen del proceso).

    Prioridad de los recursos y utilizacin.

    MODOS DE EJECUCIN

    El motivo por el cual se usan los otros modos es porque se necesita proteger al SO y a las

    tablas clave del sistema. El PSW es el bit que indica el modo de ejecucin.

    Modo usuario

    Es el modo menos privilegiado porque los programas de usuario tpicamente se ejecutan en

    este modo.

    Modo del sistema (modo ncleo)

    Es el modo ms privilegiado. Se refiere al ncleo del SO, que es la parte del SO que engloba las

    funciones ms importantes del sistema.

    Manipulacin de procesos

    Creacin de procesos:

    o Asignar un nico identificador al nuevo identificador.

    o Asignar espacio para el proceso.

    o Iniciar el bloque del control de procesos.

    o Establecer los enlaces apropiados.

    o Crear o ampliar otras estructuras de datos.

    Cambio de contexto (Guardar):

    o Guardar CP en pila.

    o Guardar el contenido de los registros del procesador en el BCP del proceso.

    o Guardar el puntero de pila en el BCP.

    Cambio de contexto (Recuperar):

    o Recupera puntero de pila del BCP.

    o Recupera los dems registros del BCP y de la pila.

    o Cambia algunos bits de la palabra de estado (habilitar interrupciones, cambia

    modo de ejecucin a usuario).

    o Recupera el CP.

    Cuando llega una interrupcin:

    o Se salva el contexto del programa que se ejecuta.

    o Asigna al CP el valor de la direccin de comienzo del programa de atencin a

    la interrupcin.

  • 9

    o Cambia de modo usuario a modo ncleo, para que en el procesamiento de

    interrupcin pueda haber instrucciones privilegiadas.

    o Ejecuta la rutina de atencin a la interrupcin.

    Cambio de proceso:

    o Salva el contexto del P1 (BCP).

    o Asigna a CP la direccin de comienzo de programa atencin a la interrupcin

    de cambio de proceso.

    o Cambia a modo ncleo.

    o Ejecuta la rutina de atencin a la interrupcin.

    Actualiza el BCP.

    Mueve el BCP a la cola apropiada (listos/bloqueados/).

    Selecciona otro proceso.

    Actualiza el BCP seleccionado (nuevo estado: ejecucin).

    Actualiza las estructuras de datos.

    Restaura el contexto del proceso seleccionado, incluyendo modo

    usuario.

    Cambio de modo:

    No implica cambio de proceso. Se puede cambiar de modo, ejecutar instrucciones

    privilegiadas en modo ncleo y volver a ejecutar otras instrucciones del mismo

    proceso (no necesario cambio completo de proceso, basta con guardar el contexto

    del procesador).

    o Salvar el contexto del procesador.

    o Actualizar el BCP del proceso que est en ejecucin.

    o Mover el BCP a la cola apropiada.

    o Seleccionar otro proceso para su ejecucin.

    o Actualizar el BCP del proceso seleccionado.

    o Actualizar las estructuras de datos.

    o Restaurar el contexto del proceso seleccionado.

    Ejecucin del SO

    El SO es un conjunto de programas ejecutados por un procesador. El SO con frecuencia cede

    el control y depende del procesador para recuperar dicho control.

    Ncleo sin procesos:

    o El concepto de proceso se aplica nicamente a los programas de usuario.

    o El cdigo del SO se ejecuta como una entidad independiente que requiere un

    modo privilegiado de ejecucin.

  • 10

    Ejecucin dentro de los procesos de usuario:

    o Alternativa comn en los SO de mquinas pequeas, que es ejecutar

    virtualmente todo el software de SO en el contexto de un proceso de usuario.

    o El cdigo de SO y sus datos estn en el espacio de direcciones compartidas y

    se comparten entre todos los procesos.

    o Se realiza un cambio de modo dentro del mismo proceso puesto que la

    ejecucin contina dentro del proceso del usuario. Debido a esto, el usuario

    no puede inferir con las rutinas del SO, incluso cuando se estn ejecutando

    dentro del entorno del proceso del usuario.

    SOs basados en procesos:

    o Las funciones ms importantes del ncleo se organizan en procesos

    separados.

    o til en un entorno de multiprocesador o de varios computadores.

    PROCESOS EN UNIX

    - Listo para ejecutar y en memoria: listo para ejecutar tan pronto como el ncleo lo

    planifique.

    - Dormido y en memoria: incapaz de ejecutar hasta que se produzca un suceso; el

    proceso est en memoria principal.

    - Dormido y descargado: el proceso est esperando un suceso y ha sido expulsado al

    almacenamiento secundario.

    - Expulsado: el proceso retorna del modo del ncleo al modo de usuario, pero el

    ncleo lo expulsa y realiza un cambio de contexto para planificar otro proceso.

    - Creado: proceso recin creado y an no est listo para ejecutar.

    En el caso de ejecucin en modo ncleo, volvera sobre s mismo porque cuando llega una

    interrupcin y stas estn habilitadas habra que atenderlas.

  • 11

    Caractersticas

    Un proceso UNIX tiene dos reas de memoria: ejecucin y control.

    El rea de ejecucin es el programa (texto) ms las zonas de memoria reservadas

    para la pila y los datos. Est en la zona de memoria virtual asignada al proceso.

    El rea de control contiene los bloques de control que conserva la informacin

    acerca del proceso. Esta zona pertenece al ncleo del SO. El rea de control tiene

    informacin que debe residir en memoria continuamente e informacin que puede

    ser enviada a disco con el rea de ejecucin cuando el planificador de procesos

    decida.

    Pila, datos e instrucciones

    - En memoria virtual:

    o Entre Pila y BSS se encuentran los datos no inicializados.

    o Datos: datos inicializados.

    o Instrucciones: cdigo compilado.

    - En memoria fsica:

    o Instrucciones: instrucciones compartidas que tienen el mismo cdigo.

    Control de procesos

    La creacin de procesos en UNIX se realiza por medio de la llamada al sistema fork():

    Solicita la entrada en la tabla de procesos para el nuevo proceso.

  • 12

    Asigna un ID de proceso nico al proceso hijo.

    Hace una copia de la imagen del proceso padre, con excepcin de las regiones de

    memoria compartidas.

    Incrementa el contador de cualquier fichero en posesin del padre para reflejar el

    proceso adicional que ahora posee tambin dichos ficheros.

    Asigna al proceso hijo el estado Listo para Ejecutar.

    Devuelve el ID del proceso hijo al proceso padre, y un valor 0 al proceso hijo.

    Todo este trabajo se realiza en modo ncleo, dentro del proceso padre.

    Zombie: un hijo termina y el padre no recoge el cdigo de finalizacin del hijo. Como

    proceso no tiene nada pero sigue ocupando una entrada en la tabla. Permanecer en el

    sistema hasta que alguien los espere.

    Hurfano: el padre muere antes que el hijo haya terminado. Ser adoptado por el proceso

    init (PID = 1, ancestro de todos los procesos que se crearn posteriormente) del sistema. El

    proceso con PID = 0 es el creado por el ncleo cuando arranca el SO (nico que no se crea

    con una llamada a fork, se convierte posteriormente en el proceso intercambiador (gestin

    memoria virtual)).

    Comunicacin entre procesos

    Los procesos se pueden comunicar mediante tuberas (pipes) que deben ser creadas antes

    de la ejecucin del fork.

    A los pipes se accede a travs de dos descriptores de ficheros (lectura/escritura) con tamao

    variable. Es necesaria la relacin padre-hijo. Estas pipes son unidireccionales.

    HILOS

    Caractersticas

    Unidad de propiedad de los recursos: conocida como proceso o tarea.

    Unidad de expedicin: conocida como hilo.

    Estas dos caractersticas son tratadas de manera independiente por el SO.

    Sistema Multihilo

    SO que mantiene varios hilos de ejecucin dentro de un mismo proceso. En un entorno

    multihilo, un proceso se define como la unidad de asignacin de recursos y una unidad de

    proteccin. Se asocian con procesos los siguientes:

    Un espacio de direcciones virtuales que soporta la imagen del proceso.

  • 13

    Acceso protegido a procesadores, otros procesos, archivos y recursos de E/S.

    Dentro de un proceso puede haber uno o ms hilos, cada uno con:

    Un estado de ejecucin por hilo (adems, el proceso tiene el suyo propio).

    Un contexto de hilo que se almacena cuando no est en ejecucin (registros).

    Una pila de ejecucin.

    Por cada hilo, espacio de almacenamiento para variables locales.

    Acceso a la memoria y recursos de su proceso, compartido con todos los hilos de su

    mismo proceso.

    Algunos de los beneficios de los hilos son:

    Se tarda menos tiempo en crear un nuevo hilo.

    Se tarda menos tiempo en cambiar entre hilos.

    Estados

    Creacin: Se crea un nuevo hilo.

    o Crear un proceso = crear 1 primer hilo.

    o Un hilo puede crear otros hilos.

    o El nuevo hilo tiene su propio contexto y espacio de pila.

    Bloqueo:

    o El hilo necesita esperar suceso.

    o Al bloquearse se guarda el contexto del hilo.

    Desbloqueo: el suceso ocurre, el hilo pasa a la cola de listos.

    Terminacin.

    Tipos de hilos

    A nivel de usuario: el SO no conoce los hilos, por tanto, no puede planificarlos (slo

    puede planificar el proceso) para ello se utiliza la biblioteca de hilos, que es un

    programa independiente. En este caso, si se bloquea un hilo se bloquear el proceso

    entero.

    A nivel de ncleo: el SO es el que planifica tanto el proceso como los hilos. La

    planificacin se realiza en funcin de los hilos.

    Combinado.

  • 14

    Cambios de estado

  • 15

    Caractersticas

    Proceso

    o BCP

    o Cdigo + datos + pila

    Biblioteca hilos (ULT).

    Hilos a nivel de ncleo (KLT).

    Procesos ligeros (LWP):

    o Asociacin entre ULT y KLT.

    o Cada LWP: Se planifica de forma independiente por el ncleo.

    Soporta uno o ms ULT.

    Est asociado con un KLT.

  • 16

    BIBLIOGRAFA

    Sistemas Operativos William Stallings (5 Edicin). Editorial Pearson.