Base de la biblioteca de threads a nivel usuario del proyecto SODIUM.

Slides:



Advertisements
Presentaciones similares
GESTION DE PROCESOS Procesos y tareas
Advertisements

Administración de procesos Lic. Orlando Zamora Rdz.
Sistemas Operativos Administración del procesador.
Planificación de Monoprocesadores
III - Gestión de memoria
Programación Interactiva Hilos
Sistemas Operativos Unidad II Procesos.
Modelo de procesos de dos estados
Informática II Prof. Dr. Gustavo Patiño MJ
Teoría de lenguajes y compiladores
SISTEMAS OPERATIVOS UNIDAD 1..
Tema 12: Programación multihilo
Multiprogramación Procesos Cecilia Hernández
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Administración del Procesador
Tema 6: Clases Antonio J. Sierra.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
MECANISMOS PARA LA AGILIZACIÓN DE LA LIQUIDACIÓN DE OPERACIONES EN EL SISTEMA CUD.
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
Signal, kill, sigaction y máscara de señales
Un hilo es un único flujo de ejecución dentro de un proceso. Un proceso es un programa ejecutándose dentro de su propio espacio de direcciones. Los.
Semana 5 Subprogramas..
Sistemas Operativos Procesos.
PROCESO DE DESARROLLO. Introducción Mediante esta presentación se pretende describir el proceso de desarrollo del TALLER I.
Ing Florencia Ferrigno Tecnicas Digitales 3
Hilos - Lightweight process - Procesos ligeros
Profesor: Rodrigo Sanhueza Figueroa
Programación I Técnico Universitario en Web Dpto. de Informática FCFMyN - UNSL -11-
Overview Sistemas Computacionales
ICC243 Sistemas Operativos P03: Introducción: Conceptos Prof. Jonathan Makuc.
Administración de Memoria
Planificación del Procesador
Hilos En La Computación. (THREADS).
Planificación de Procesos
Teoría de Sistemas Operativos Departamento de Electrónica 2º Semestre, 2002 Gabriel Astudillo Muñoz
Gestión de procesos Sistemas Operativos Edwin Morales
Gestión de Procesos.
Introducción a Procesos.  Contexto de ejecución: Conjunto de variables y parámetros, que tiene independencia de otro procesos.  Contexto de E/S ◦ Descriptores.
1 Descripción y control de procesos Capítulo 3. 2 Requerimientos de un SO relacionados con procesos Ejecutar concurrentemente múltiples procesos para.
Teoría de Sistemas Operativos Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
Planificación. Visión General El planificador del SO se construye a partir de un mecanismo para la conmutación de contexto y una política que determina.
Materia: Técnicas Digitales 3
Administrador de procesos
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
1 EL PROCESADOR,LOS PROCESOS Y ESTADOS Esperanza Lozada de Coronel
Sistemas Operativos Unidad III Procesos.
Estructura de los Sistemas Operativos
comenzar Listo Ejecutando Terminado Bloqueado Un proceso ejecuta y solo abandona el control de la CPU cuando lanza E/S o termina. La cola de listos se.
Unidad 2 – Gestión de Procesos
Por Luis Esteban Monsalve Martínez
LSI. Freddy Veloz Sistemas Operativos
INTERRUPCIONES – ABRAZO MORTAL
ROUND ROBIN.
TEMA: PROCESOS y PLANIFICACIÓN
Elementos y tipos de sistemas operativos
Mata Moran Mireya Gabriela Alejandra
Sesión 8 Procesos.
También es conocido como proceso ligero. Es una entidad básica de utilización de CPU y esta formado por un contador de programa, algunos registros y una.
PROCESADOR.- El procesador es el cerebro del sistema, encargado de procesar toda la información. Básicamente, es el "cerebro" de la computadora. Prácticamente,
Unidad 3 Administración de memoria..
Desarrollador Profesional de Juegos Programación III Unidad I Capturar Excepciones.
Desarrollador Profesional de Juegos Programación III Unidad I Excepciones Tipos.
Desarrollador Profesional de Juegos Programación III Unidad II Hilos de ejecución Threads.
Planificación de uso del procesador Rina Arauz. Planificación de CPU 2 UNAN-Leon La ejecución de un trabajo se compone de secuencias de procesador y de.
Tema 1. Estructuras de datos Objetivo: Objetivo: El alumno resolverá problemas de almacenamiento, recuperación y ordenamiento de datos y las técnicas de.
Gestión de Memoria – Parte 2
SISTEMAS OPERATIVOS Contenido: Descripción del proceso proceso nulo estado del procesador imagen del proceso información del BCP Miguel Ángel Martínez.
Planificación de CPU Conceptos Básicos Criterios de Planificación Algoritmos de Planificación Planificación con Múltiples Procesadores Planificación Real-Time.
Tema 1: Concurrencia con Java
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Transcripción de la presentación:

Base de la biblioteca de threads a nivel usuario del proyecto SODIUM

Descripción: La biblioteca permitirá crear hilos de manera de árbol jerárquico donde el proceso principal ejecutara normalmente, inicializara los hilos necesarios y luego cederá la ejecución a los mismos solo regresando al momento de finalizar. Cada thread podrá crear a su vez nuevos threads los cuales lo verán como padre. Un padre tendrá la capacidad de eliminar o suspender/resumir a cualquiera de su descendencia. Para ello la biblioteca creara y administrara estructuras de control (TCB) ubicadas en áreas de memoria del proceso.

Consideraciones: La biblioteca funcionara para arquitecturas INTEL de 32 bits de palabra. El máximo número de threads por proceso es de Al superar el límite se aborta el proceso. Para su desarrollo básico se utilizara un modelo FIFO non-preemptive. Para futuras ampliaciones se prevé prioridades y round robin. Primeramente solo se contemplaran funciones de creación y manejo básico de threads. Señales y sincronismo avanzado queda a futuras implementaciones.

La biblioteca deberá enmascarar las funciones de la familia exec y el clone ya que causarían comportamientos indeterminados. Si un proceso que haya inicializado la biblioteca invoca alguna de las mencionadas, debe ser abortado de inmediato. El nombre de la biblioteca será Numero de proceso + THLIB, donde el numero de proceso es el PID del mismo. Deberá existir un thread propio de la librería para motivos de administración de la misma. La biblioteca no podrá comenzar a menos que exista al menos un thread creado explícitamente por el proceso pesado. Si todos los threads se encuentran suspendidos o en espera, ejecutara el thread administrativo

TCB: -TID -> identificador único del thread en el proceso. -PARENT_TID -> identificador del thread progenitor, estará en blanco cuando el thread sea creado directamente por el proceso pesado. -PARENT_PROCESS -> PID del proceso al que pertenece el thread. -NEXT_TCB -> puntero a una estructura TCB que permitirá la formación de listas.

-STATUS -> estado actual del thread (ejecución, esperando, suspendido, listo) -MACHINE_CONTEXT -> registros de la CPU, puntero al stack y program counter del thread -TIMESTAMP -> día y hora de creación del thread. -PRIORITY -> prioridad del thread. Inmutable desde el mismo thread.

Modelo de estados de los threads: EjecutandoEsperandoSuspendidoListo

Listado de funciones basicas: Funciones para los procesos Funciones internas a la biblioteca (invisibles a los programas)

Funciones para los procesos

Bool thlibInit() Función que inicializa la biblioteca permitiendo la creación de nuevos threads por parte del proceso pesado. En caso de falla devolverá false.

Bool thlibStart() Función que, al ser invocada por el proceso, conduce a la planificación y ejecución del los threads creados previamente. Esta función solo podrá invocarse exitosamente una vez por un proceso llevando a un error abortivo cualquier invocación extra. Retorna false en caso de falla (Ej.: no existen threads en para el proceso).

TID createThread( (void *) startPoint, (void* ) args) Esta función crea un nuevo thread para el proceso. En principio, la prioridad, el tamaño y posición del stack serán valores por defecto, completándose luego al convertirse en parámetros para esta función. Como es habitual, la función en si devuelve el identificador del thread (puede que sea una estructura con el timestamp, etc.) y toma como parámetros la función que será el cuerpo del thread y la lista de argumentos para dicha función. Un thread se crea por defecto en el estado de listo/activo.

Bool cancelThread( TID ) Esta función permite la eliminación completa de un thread. Solo podrá eliminar un thread el padre del mismo proporcionando tu identificador. Si el thread no existe al momento de intentar eliminarlo se devolverá false, de lo contrario trae. Los threads podrán ser eliminados sin importar su estado actual, siendo quitados de la cola en que se encuentren y programados para limpieza.

Void yield() Esta función cambia el estado del thread de ejecutando a listo, permitiendo a otro (o el mismo) thread para ser planificado a la cpu.

Void exitThread() La función termina el thread que la invoca, quitándolo de ejecución y colocándolo en una lista de pendientes para limpieza.

void suspendThread () Suspende el thread que la invoque colocándolo en el estado de suspendido del que no saldrá hasta que otro thread lo resuma.

Bool resumeThread (TID) Resume el thread cuyo identificador se pasa como parámetro y lo coloca en estado de listo. Si el thread no se encontraba suspendido la función retorna false.

Unsigned long threadSleep (unsigned long time) Coloca el thread en estado de espera por, al menos, el tiempo pasado como parámetro. La unidad para el tiempo debe ajustarse a lo estándar del proyecto SODIUM. Como la biblioteca no será preemptive en un comienzo, el tiempo que el thread espera podría ser mayor al indicado. Retorna el valor real esperado por el thread.

TID getTid() Retorna el identificador del thread que la invoca. TID getParentTid() Retorna el identificador del thread padre del que la invoca. Si el thread fue creado directamente por el proceso pesado retorna NULL o equivalente.

bool joinThread( TID ) Como el estandar, esta funcion cambia el estado del thread a esperando hasta que el thread cuyo identificador es pasado como parámetro finalice. Este mecanismo debe implementarse con variables globales u algún otro mecanismo que no involucre al SO. Un thread no debe poder hacer join a si mismo.

Funciones internas a la biblioteca (invisibles a los programas)

Void cleanThreads() Elimina las estructuras y libera el stack de los threads en la cola de pendientes de limpieza.

Void wakeThread ( TID ) Despierta un thread en estado de espera cuando su tiempo ya se ah cumplido.

Void dispatch ( TID ) Mueve un thread del estado listo a ejecutando cargando su contexto.

Void sortQueue ( TID ) Reordena la cola de listos según el algoritmo de planificación actual.