POSIX-RT. Librería. Sistemas Informáticos de Tiempo Real Francisco Pastor Gomis
|
|
- Julián Márquez Martínez
- hace 6 años
- Vistas:
Transcripción
1 Librería Sistemas Informáticos de Tiempo Real Francisco Pastor Gomis
2 1. Estándares POSIX POSIX es el acrónimo de Interfaz de Sistemas Operativos Portables (Portable Operating Systems Interfaces). Es un estándar basado en el popular Sistema Operativo UNIX. Aunque el UNIX era un estándar industrial de facto, había suficientes diferencias entre las diferentes implementaciones de UNIX como para impulsar a los implementadores y usuarios a patrocinar la creación de un estándar internacional formal con el propósito de conseguir la portabilidad de las aplicaciones a nivel de código fuente. El POSIX está siendo desarrollado en el marco de la Computer Society de IEEE, con la referencia IEEE 1003, y también está siendo desarrollado a nivel de estándar internacional con la referencia ISO/IEC El POSIX es una familia de estándares en evolución, cada uno de los cuales cubre diferentes aspectos de los sistemas operativos. Alguno de los estándares POSIX ya han sido aprobados, mientras que otros están siendo desarrollados todavía. Los podemos agrupar en tres categorías: 1. Estándares base: Definen la sintaxis y semántica de interfaces de servicios relacionados con diversos aspectos del sistema operativo. El estándar no especifica como se implementan estos servicios, sino únicamente su semántica. La mayoría de los estándares base están especificados para el lenguaje de programación C. La siguiente tabla lista algunos de los estándares básicos POSIX que son los más importantes para las aplicaciones de tiempo real Servicios básicos del Sistema Operativo a Extensiones a los servicios básicos b Extensiones de tiempo real c Extensiones de threads d Extensiones adicionales de tiempo real e Seguridad f Sistema de ficheros en red (NFS) g Comunicaciones por red h Tolerancia a fallos j Extensiones de tiempo real avanzadas m Puntos de chequeo y reintento Shell y utilidades b Utilidades adicionales d Ejecución por lotes (batch) Métodos para probar la conformidad con POSIX Comunicaciones para sistemas distribuidos de tiempo real 2. Interfaces en diferentes lenguajes de programación ( bindings ): estos estándares proporcionan interfaces a los mismos servicios definidos en los estándares base, pero usando otros lenguajes de programación. Los lenguajes que se han usado hasta el momento son el Ada y el Fortran. En la siguiente tabla se muestran algunos de ellos: Binding de Ada para b Binding de Ada para b y c c Binding de Ada para g f Binding de Ada para Binding de Fortran 77 para Entornos de sistemas Abiertos: Estos estándares incluyen una guía al entorno POSIX y perfiles de aplicación. Los perfiles son un subconjunto de los servicios POSIX que se requieren 2
3 para un determinado ámbito de aplicación. Representan un importante mecanismo para definir de forma estándar un conjunto bien definido de implementaciones de sistemas operativos, adecuadas para áreas de aplicación específica. 3
4 2. Estándares POSIX para tiempo real Los estándares POSIX ya aprobados que son de interés para tiempo real son el , b y c. 2.1 El estándar básico Define los servicios más básicos de un sistema operativo UNIX convencional, que se centran en dos objetos fundamentales: los procesos, que proporcionan la ejecución concurrente de programas en espacios de direcciones independientes; y los ficheros, que son objetos que representan distintas facilidades del sistema operativo (por ejemplo, datos, dispositivos de E/S, etc.) sobre las que se pueden realizar operaciones de lectura o escritura. Los servicios definidos en el POSIX incluyen: la gestión de procesos identificación y entorno de procesos notificación de eventos a través de señales algunos servicios de temporización muy primitivos servicios de ficheros y directorios entrada/salida control de terminales bases de datos para usuarios y grupos. 2.2 Las extensiones para tiempo real b El estándar define las extensiones para tiempo real que se consideran esenciales para dar soporte a aplicaciones con requisitos de tiempo real. Los servicios definidos en este estándar se pueden agrupar en dos categorías: Servicios que facilitan la programación concurrente Son necesarios porque la mayoría de las aplicaciones de tiempo real son concurrentes, y sus procesos cooperan estrechamente. Algunos de los servicios definidos son: sincronización de procesos mediante semáforos contadores objetos de memoria compartida: permite a los procesos con espacios de direcciones independientes compartir información colas de mensajes: permiten el intercambio de eventos o datos entre procesos 4
5 entrada/salida asíncrona: permite a la aplicación ejecutarse en paralelo con las operaciones de entrada/salida entrada/salida sincronizada: permite un mayor grado de predicibilidad en las operaciones de entrada/salida sobre ficheros Servicios que se necesitan para conseguir un comportamiento temporal predecible Los servicios que se incorporan son: planificación expulsora de procesos mediante políticas basadas en prioridades fijas la inhibición de memoria virtual para el espacio de direcciones de un proceso, para poder conseguir un tiempo de acceso a memoria predecible señales de tiempo real, que proporcionan un comportamiento más predecible que las señales relojes y temporizadores que permiten la gestión del tiempo desde la aplicación. 2.3 La extensión de threads c Las unidades de concurrencia del POSIX son los procesos con espacios de direcciones independientes. En la práctica los procesos son relativamente voluminosos y poco eficaces debido al requisito de espacios de direcciones independientes y el estado asociado al procesos, que es voluminoso, haciendo muy costosa la realización de un cambio de contexto. Por el contrario, las tareas de un núcleo de tiempo real de alta eficacia comparten el mismo espacio de direcciones y tienen un estado asociado pequeño. Con el propósito de incrementar la eficiencia, se introdujeron en el POSIX los threads, o procesos ligeros, como un mecanismo de concurrencia de alta eficacia. Bajo la Extensión de Threads, cada proceso POSIX puede tener múltiples flujos de control concurrentes, todos ellos compartiendo el mismo espacio de direcciones. Los servicios que se proporcionan para los threads incluyen: creación cancelación planificación sincronización 2.4 Otras extensiónes para tiempo real Además de los estándares anteriores, existen otras extensiones de tiempo real que están siendo desarrolladas bajo los estándares P1003.1d y P1003.1j. 5
6 Los servicios definidos en estos estándares no se incluyeron en las primeras extensiones de tiempo real porque, aunque son importantes para muchas aplicaciones de tiempo real, no se consideraron esenciales. Los servicios definidos en P1003.1d incluyen: el arranque rápido de procesos tiempos límite en servicios bloqueantes medida y limitación de tiempos de CPU planificación del servidor esporádico información para la implementación de ficheros de tiempo real. Los servicios definidos en P1003.1j incluyen: primitivas para sincronización en multiprocesadores gestión de memoria de diversos tipos nuevos relojes monotónico y sincronizado 6
7 3. Subconjuntos POSIX de tiempo real Los servicios del POSIX básico junto a las Extensiones de Tiempo Real y la Extensión de Threads contribuyen a formar un sistema operativo muy grande, que casi con toda probabilidad no puede ser implementado en computadores empotrados pequeños. Para que el POSIX sea aplicable a este y otros entornos restringidos, se han definido cuatro subconjuntos o perfiles estándar del POSIX de tiempo real, que se orientan a cuatro plataformas comunes que han tenido éxito comercial. La principal diferencia de estos perfiles radica en la presencia o no de múltiplos procesos y la presencia o no de un sistema de ficheros jerárquicos. La siguiente tabla muestra las características de los cuatro perfiles de tiempo real, de acuerdo con estas propiedades. Perfil Nombre de perfil Sistema de ficheros PSE51 PSE52 PSE53 PSE54 Sistema de tiempo real mínimo Controlador de tiempo real Sistema de tiempo real dedicado Sistema de tiempo real multipropósito Múltiples procesos Múltiples threads Plataforma típica No No Si Sistemas empotrado pequeño, sin MMU, sin disco, sin terminal. Si No Si Controlador industrial de propósito especial, sin MMU, pero con un disco o disquete y un terminal No Si Si Sistema empotrado grande, con MMU, pero sin disco Si Si Si Computador grande con requisitos de tiempo real Los servicios específicos definidos en el perfil mínimo de tiempo real, y por tanto pensados para sistemas empotrados pequeños, se muestran en la siguiente tabla: Unidades de funcionalidad del POSIX Proceso único Señales I/O de dispositivos Soporte de lenguaje C Opciones del POSIX b Opciones del POSIX c Inhibición de memoria virtual Idem para rangos de direcciones Semáforos Objetos de memoria compartida Señales de tiempo real Temporizadores Colas de mensjaes I/O sincronizada Threads Atributo de tamaño de stack de thread Atributo de dirección del stack Planificación de threads por prioridad Protocolo de herencia de prioridad Protocolo de protección de prioridad 7
8 4. Servicios para un sistema mínimo Vamos a ver cuales son los servicios más importantes que se incorporan en el perfil del sistema mínimo. Estos servicios se centran en la concurrencia y en los servicios necesarios para su utilización (sincronización, comunicación, etc.). Se hace especial hincapié en la predicibilidad de los servicios y en los tiempos de ejecución de las tareas. 4.1 Concurrencia La concurrencia se consigue mediante el uso de los threads. Un thread representa un flujo de control simple que se ejecuta concurrentemente a otros threads en el sistema. Cada thread tiene su propio identificador y una serie de recursos, mucho más reducidos de los que posee un proceso, y que son: Una pila (stack) Una política y parámetros de planificación Datos específicos del thread: contexto, mascara de señales, lista de mutex, etc. Ya que todos los threads de un proceso comparten el mismo espacio de direcciones, pueden ser construidos con un grado de eficiencia superior al de los procesos. Los procesos requieren la separación de espacios de direcciones y, por tanto, para realizar un cambio de procesos se debe hacer uso de la MMU. En el perfil mínimo sólo hay un proceso, con múltiples threads. El sistema comienza por crear el thread principal, que ejecuta la función C main(). Este thread creará posteriormente al resto de los threads de la aplicación de forma dinámica. Los principales servicios que proporciona el POSIX para la gestión de los threads son: Manipulación de atributos de thread Creación de threads Terminación y cancelación de threads Manipulación de atributos de thread Cada thread tiene un conjunto de atributos a los que normalmente se le asigna un valor cuando se crea un thread (aunque hay algunos atributos que pueden cambiar dinámicamente). 8
9 Los atributos que se utilizan para crear el thread se hallan almacenados en un objeto opaco del tipo pthread_attr_t. Hay servicios para inicializar o destruir uno de estos objetos, y una pareja de funciones asociada a cada atributo, una para poner el valor del atributo y otra para leerlo. Las funciones para inicializar y destruir atributos son: int pthread_attr_init(pthread_attr_t* attr); int pthread_attr_destroy(pthread_attr_t* attr); Los principales atributos definidos son el tamaño mínimo de la pila y el estado de devolución de recursos. Este último atributo define si el thread se crea en el estado independiente o detached (PTHREAD_CREATE_DETACHED), o en el estado sincronizado o joinable (PTHREAD_CREATE_JOINABLE); un thread independiente devuelve al sistema los recursos que usa cuando se termina; un thread sincronizado mantiene sus recursos cuando termina, y sólo los devuelve cuando otro thread ejecuta la función pthread_join(). Las funciones relacionadas con estos atributos son: int pthread_attr_setstacksize (pthread_attr_t* attr, size_t stacksize); int pthread_attr_getstacksize (pthread_attr_t* attr, size_t* stacksize); int pthread_attr_setdetachstate (pthread_attr_t* attr, int detachstate); int pthread_attr_getdetachstate (pthread_attr_t* attr); Si los valores de los atributos no se inicializan el sistema considera unos valores por defecto Creación de threads Una vez que el objeto de atributos del thread ha sido creado y que cada uno de los atributos individuales ha sido inicializado al valor deseado, podemos crear el thread mediante la función pthread_create(). En esta llamada se debe indicar, además de los objetos thread y atributos, una función C que será ejecutada por el nuevo thread, y el parámetro con el que esta función será llamada, del tipo void*. Este parámetro se puede usar para pasar información al nuevo thread. int pthread_create (pthread_t* thread, pthread_attr_t* attr, void* (* func)(void*), void* arg); Si el tipo de la función o del parámetro no coinciden con los especificados en la llamada anterior, se puede realizar la correspondiente conversión de tipos para evitar los errores del compilador. Otras funciones relacionadas con un thread ya creado son: pthread_t pthread_self( void ); Devuelve el objeto asociado al thread que llama a la función int pthread_detach( pthread_t handle ); 9
10 Convierte al thread que se hace referencia en dettached Terminación y cancelación de threads Un thread puede terminarse a sí mismo llamando a la función pthread_exit(), o si alcanza el final lógico que el thread comenzó a ejecutar cuando se creó. También es posible terminar un thread llamando a pthread_cancel(), y especificando el objeto asociado al thread que se quiere terminar. En ambos casos, el thread ejecuta las operaciones de terminación que hayan sido registradas mediante llamadas a pthread_cleanup_push(). Las funciones relacionadas con la creación y cancelación de threads son: int pthread_join(pthread_t handle, void **return_value); int pthread_cancel(pthread_t thread); int pthread_exit(void * exit_value); int pthread_cleanup_push(void (* routine)(void *), void * arg); int pthread_cleanup_pop( int execute ); 4.2 Planificación La teoría de planificación proporciona diversas soluciones para conseguir un comportamiento temporal predecible junto a un alto nivel de utilización de la CPU. Una de las soluciones más simples y mejor conocidas es la planificación expulsora con prioridades fija. En esta política cada thread tiene una prioridad asignada, y el planificador elige para ejecución aquel thread que tiene mayor prioridad, de entre los que están listos para ejecutar. El POSIX especifica la planificación expulsora con prioridades fijas para los threads y también para los procesos, con dos variaciones que pueden ser seleccionadas a nivel de cada thread, como dos políticas de planificación diferentes.: SCHED_FIFO: Este es el nombre de la política de planificación expulsora con prioridades que usa orden FIFO para determinar el orden en el que se ejecutan los threads de la misma prioridad. SCHED_RR: Este es el nombre de la política de planificación expulsora con prioridades que usa un esquema cíclico para planificar threads de la misma prioridad. Hay que tener en cuenta que las políticas de planificación definidas sólo tienen un comportamiento temporal predecible en monoprocesadores, o en sistemas multiprocesadores en los que la asignación de threads a procesadores sea estática. Existe una tercera política de planificación (SCHED_OTHER) con un comportamiento definido por la implementación, que se definió para permitir la compatibilidad con implementaciones preexistentes. Puede parecer extraño que la política de planificación sea un atributo de cada thread, y no un atributo global del sistema. Ello se debe a que las dos políticas de planificación son compatibles entre sí y, 10
11 de hecho, son idénticas excepto para el tratamiento de los threads de la misma prioridad. En cualquier caso, la política recomendada para sistemas de tiempo real estricto es SHCED_FIFO. El estándar requiere como mínimo 32 niveles distintos de prioridad, que es un número suficiente para conseguir altos niveles de utilización incluso para números muy elevados de threads. Los atributos de política de planificación y prioridad forman parte del objeto de atributos del thread que se usará posteriormente para crear un thread. Asimismo, es posible modificar o consultar estos atributos dinámicamente, después de que el thread haya sido creado, usando las funciones: int pthread_setschedparam (pthread_t handle, int policy, const struct sched_param *param); int pthread_getschedparam (pthread_t handle, int *policy, struct sched_param *param); Los atributos de planificación definidos en el estándar y que son útiles para aplicaciones de un solo proceso son los siguientes: Política de planificación (schedpolicy): para tiempo real debemos elegir SCHED_FIFO o SCHED_RR. Parámetros de planificación (schedparam): esta es una estructura extensible del tipo, struct sched_param que de momento sólo tiene un campo definido, sched_priority, que representa la prioridad del thread. Herencia de atributos de planificación (inheritsched): este atributo define si los atributos de planificación usados para crear el thread se heredan del thread padre (PTHREAD_INHERIT_SCHED) o son definidos en el objeto de atributos de thread (PTHREAD_EXPLICIT_SCHED). Es extremadamente importante colocar este atributo al valor PTHREAD_EXPLICIT_SCHED si deseamos que el nuevo thread tenga una política de planificación o una prioridad distinta de la del thread padre. Las funciones relacionadas con estos atributos de thread son: int pthread_attr_setschedpolicy(pthread_attr_t * handle, int sched_policy); int pthread_attr_getschedpolicy(pthread_attr_t * handle, int * sched_policy); int pthread_attr_setinheritsched(pthread_attr_t * handle, int inherit_sched); int pthread_attr_getinheritsched(pthread_attr_t * handle, int * inherit_sched); int pthread_attr_setschedparam(pthread_attr_t *handle, const struct sched_param *sched_param ); int pthread_attr_getschedparam(pthread_attr_t *handle, struct sched_param *sched_param ); 4.3 Sincronización El estándar c proporciona dos primitivas de sincronización par threads: el mutex para el acceso mutuamente exclusivo a recursos compartidos, y las variables condicionales para la sincronización de espera. 11
12 Ambas primitivas se utilizan a través de objetos pthread_mutex_t y pthread_cond_t respectivamente. Cada uno de estos objetos tiene un objeto de atributos asociado que se usa al crear el objeto, en una forma similar a la de los atributos de creación de threads. El mutex es el objeto de sincronización usado para la exclusión mutua. Tiene dos operaciones definidas: Bloquear: si el mutex está libre, se bloque y el thread que invoca la operación se convierte en el propietario del mutex; en caso contrario, el thread se suspende y se añade a la cola de prioridad de los threads que están esperando en ese mutex Liberar: si hay threads esperando en la cola, se activa al que esté en la primera posición, y se convierte en el nuevo propietario del mutex; en caso contrario, el mutex queda libre; sólo el propietario del mutex está autorizado a invocar esta operación El perfil de sistema de tiempo real mínimo requiere que se de soporte tanto al protocolo de herencia de prioridad como al de protección de prioridad, para los mutex. Ambos protocolos evitan el efecto conocido como inversión de prioridad no acotada, que es la causa de retrasos de muy larga duración en el tiempo de respuesta de threads de alta prioridad. El uso de uno de estos protocolos es, por tanto, un requisito imprescindible en sistemas de tiempo estricto. El protocolo que muestra mejor tiempo de respuesta en el peor caso es el de protección de prioridad (también llamado de techo de prioridad), mientras que el mejor tiempo de respuesta promedio corresponde al protocolo de herencia de prioridad. Los atributos de creación de mutex que son útiles en aplicaciones de un solo proceso son: protocolo (protocol): los valores permitidos son PTHREAD_NONE para sistemas sin requisitos de tiempo real, y PTHREAD_PRIO_INHERITANCE y PTHREAD_PRIO_PROTECT, para los protocolos de herencia de prioridad y protección de prioridad, respectivamente. techo de prioridad (priority ceiling): es el valor de prioridad heredado por el propietario del mutex si se elige el protocolo de protección de prioridad. Las variables condicionales son objetos de sincronización que se usan para que un thread pueda suspenderse en espera de que otro thread lo reactive. Las operaciones asociadas a las variables condicionales son: esperar: el thread se suspende hasta que otro thread señaliza la variable condicional. señalizar: se reactiva sólo uno de los threads que están suspendidos a la espera de la variable condicional; no tiene efecto si no hay ningún thread esperando en la variable condicional. broadcast: todos los threads suspendidos en la variable condicional se reactivan. La variable condicional se usa siempre conjuntamente a un mutex que se suele usar para proteger la evaluación de un predicado lógico que determina si el thread debe esperar o no. 12
13 La operación de espera se invoca con el mutex tomado por el thread que invoca la operación, y mientras este thread permanece suspendido el mutex se libera automáticamente, para dar la oportunidad al thread que señaliza de modificar las variables protegidas, y por tanto afectar al resultado del predicado lógico. Una vez que la variable condición se señaliza, el thread que espera toma el mutex de nuevo, de forma automática y antes de que la operación de espera termine. Esto permite al thread que estaba esperando reevaluar el predicado lógico mientras mantiene tomado el mutex que protege su estado. Las funciones relacionadas con las operaciones sobre mutex y variables condición son: int pthread_mutexattr_init(pthread_mutexattr_t *mu_attr_h); int pthread_mutexattr_destroy(pthread_mutexattr_t *mu_attr_h); int pthread_mutexattr_setprotocol (pthread_mutexattr_t *handle, pthread_protocol_t protocol); int pthread_mutexattr_getprotocol ( pthread_mutexattr_t *handle, pthread_protocol_t *protocol); int pthread_mutexattr_setprio_ceiling ( pthread_mutexattr_t *handle, int prio_ceiling); int pthread_mutexattr_getprio_ceiling (pthread_mutexattr_t *handle, int *prio_ceiling); int pthread_mutex_init(pthread_mutex_t *handle, pthread_mutexattr_t *mu_attr_h); int pthread_mutex_destroy(pthread_mutex_t *handle ); int pthread_mutex_lock(pthread_mutex_t *handle ); int pthread_mutex_unlock(pthread_mutex_t *handle ); int pthread_mutex_trylock(pthread_mutex_t *mu_h ); int pthread_condattr_init( pthread_condattr_t *handle); int pthread_condattr_destroy( pthread_condattr_t *handle); int pthread_cond_init(pthread_cond_t *handle, pthread_condattr_t *cv_attr_h); int pthread_cond_destroy(pthread_cond_t *handle ); int pthread_cond_wait(pthread_cond_t *cv_h, pthread_mutex_t *mu_h ); int pthread_cond_signal(pthread_cond_t *handle ); int pthread_cond_broadcast(pthread_cond_t *handle ); int pthread_cond_timedwait (pthread_cond_t *cv_h, pthread_mutex_t *mu_h, const struct timespec *abstime ); 4.4 Temporización Un requisito general en sistemas de tiempo real es el poder medir el tiempo y ejecutar acciones específicas periódicamente, o en un instante de tiempo concreto, o cuando ha transcurrido un cierto intervalo de tiempo. Estos requisitos se pueden cubrir usando los servicios de relojes y temporizadores del POSIX b, que se describen a continuación. Relojes: El POSIX define un reloj de ámbito de sistema, identificado por el símbolo CLOCK_REALTIME. Aunque la resolución de este reloj puede ser tan fina como un nanosegundo, el estándar sólo impone a la implementación una resolución de al menos 20 mseg. Se definen funciones para consultar o modificar la hora tanto del reloj CLOCK_REALTIME 13
14 como de cualquier otro reloj definido por la implementación que esté disponible ( clock_gettime(), clock_settime() ). Retraso de alta resolución: La función nanosleep() proporciona a un thread la capacidad de suspenderse a sí mismo hasta que transcurre un determinado intervalo temporal, medido según el reloj CLOCK_REALTIME. Aunque la función nanosleep() es útil para crear acciones temporizadas de forma relativa, no es útil para crear acciones periódicas. Temporizadores: Son objetos capaces de notificar a la aplicación del paso de un intervalo de tiempo o del momento en el que un reloj alcanza una determinada hora. La notificación que ocurre cada vez que el temporizador expira consiste en enviar al proceso una señal especificada por el usuario, o crear y ejecutar un thread. El instante de la primera expiración se puede especificar como un intervalo relativo o una hora absoluta; además, el temporizador se puede programar para expirar periódicamente después de la primera expiración. En un sistema mínimo sólo existe un único reloj, el CLOCK_REALTIME. Algunas funciones relacionadas con los temporizadores son: struct timespec { long tv_sec; long tv_nsec; }; int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); int clock_settime(int clock_id, const struct timespec *tp); int clock_gettime(int clock_id, struct timespec *tp); struct sigevent { int sigev_notify; int sigev_signo; }; struct itimerspec { struct timespec it_interval; struct timespec it_value; }; int timer_create(int clock_id, struct sigevent* event, timert_t* timer_id); int timer_settime(timer_t timer_id, int flags, const struct itimerspec* spec, struct itimerspec *oldspec); int timer_gettime(timer_t timer_id, struct itimerspec *spec); En la implementación de threads en Linux, en lugar de la función nanosleep se ha implementado la función no portable: int pthread_delay_np( const struct timespec *interval ); 14
15 4.5 Señales Las señales son el mecanismo utilizado en el POSIX para notificar a un proceso o a un thread de que ha ocurrido un evento, como por ejemplo una expiración de un temporizador, un fallo hardware, o un evento generado por la aplicación. Cada thread tiene su propia máscara de señales que permite al thread controlar la forma y momento en el que el sistema operativo le puede entregar una señal. En el sistema operativo mínimo, las señales se pueden generar en tres lugares: Interrupciones del temporizador Interrupciones de entrada/salida Interrupciones del ejecutivo Una señal se puede generar para un thread específico, o para un proceso, en cuyo caso cualquier thread que exprese interés en la señal (bien desenmascarando la señal o invocando a una operación para sigwait() esperarla) la puede recibir. Como el sistema mínimo tiene un solo proceso, todos los threads del sistema son candidatos a recibir señales enviadas a ese único proceso. Algunas funciones relacionadas con las señales son: int sigwait( const sigset_t *sigset, int *signal ); int pthread_sigmask( int how, const sigset_t *newmask, sigset_t *prev ); int pthread_kill( pthread_t handle, int sig ); 4.6 Funciones no reentrantes En la utilización de threads de POSIX hay que prestar atención a la utilización de funciones de la librería estándar de C y de variables globales que no sean reentrantes o que no estén protegidas (por ejemplo las funciones de memoria dinámica y la variable errno). En algunas implementaciones se incluyen las versiones reentrantes de las funciones más utilizadas, como pueden ser las funciones de memoria dinámica. Con macros de C (#define) se puede sustituir la llamada a las funciones normales por las reentrantes. En este caso, hay que prestar especial atención en no utilizar ninguna función de la librería (ya compilada) que haga uso de alguna función no reentrante. 15
16 5. Índice 1. ESTÁNDARES POSIX ESTÁNDARES POSIX PARA TIEMPO REAL EL ESTÁNDAR BÁSICO LAS EXTENSIONES PARA TIEMPO REAL B LA EXTENSIÓN DE THREADS C OTRAS EXTENSIÓNES PARA TIEMPO REAL SUBCONJUNTOS POSIX DE TIEMPO REAL SERVICIOS PARA UN SISTEMA MÍNIMO CONCURRENCIA Manipulación de atributos de thread Creación de threads Terminación y cancelación de threads PLANIFICACIÓN SINCRONIZACIÓN TEMPORIZACIÓN SEÑALES FUNCIONES NO REENTRANTES ÍNDICE
Estándares POSIX. Estándares base
Estándares POSIX Estándares base. ntaxis y semántica con diversos aspectos del sistema operativo No especifica la implementación La mayoría basados en el lenguaje C Interfaces en diferentes lenguajes Los
Programación Concurrente
Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 1. Introducción al estándar POSIX Tema 2. Sistema Operativo MaRTE OS Tema 4. Gestión del Tiempo Tema 5.
Bloque I: Principios de sistemas operativos
Bloque I: Principios de sistemas operativos Tema 1. Principios básicos de los sistemas operativos Tema 2. Concurrencia Tema 3. Ficheros Tema 4. Sincronización y programación dirigida por eventos Tema 5.
Informática Electrónica Concurrencia
Informática Electrónica Concurrencia DSI- EIE FCEIA 2015 Que es concurrencia? Ejecución simultánea de dos o mas aplicaciones en una única plataforma de cómputo DSI EIE - FCEIA Informática Electrónica 2
Bloque I: Principios de sistemas operativos
Bloque I: Principios de sistemas operativos Tema 1. Principios básicos de los sistemas operativos Tema 2. Concurrencia Tema 3. Ficheros Tema 4. Sincronización y programación dirigida por eventos Tema 5.
Programación Concurrente
Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 1. Introducción al estándar POSIX Tema 2. Sistema Operativo MaRTE OS Tema 3. Gestión de Threads Tema 4.
Tareas Periódicas en POSIX
Temporizadores POSIX Uso de Señales, Temporizadores y Threads para ejecutar tareas periódicas en POSIX 1 Tareas Periódicas en POSIX POSIX no implementa un mecanismo directo para especificar tareas periódicas
Programación de Multitareas utilizando Hilos
Programación de Multitareas utilizando Hilos Enero/2012 Programación de Multitareas utilizando Hilos Origen de los hilos como elementos necesarios en la programación de multitareas Multihilos en un solo
Gestión del tiempo en POSIX
dit UPM Gestión del tiempo en POSIX Juan Antonio de la Puente DIT/UPM Relojes en C / POSIX Hay dos tipos de relojes Reloj calendario (ANSI C) Proporciona valores de tiempo con resolución de 1s Relojes
Programación Concurrente
Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 1. Introducción al estándar POSIX Tema 2. Sistema Operativo MaRTE OS Tema 3. Gestión de Threads Tema 5.
Tecnología de software para sistemas de tiempo real
1 dit UPM Tecnología de software para sistemas de tiempo real Juan Antonio de la Puente DIT/UPM Motivación Las herramientas y la tecnología de software que se usan para construir otros tipos de sistemas
Procesos e hilos: cálculo de
Departamento de Automática 1 / 10 Índice Creación y sincronización de hilos Acceso a variables globales en exclusión mutua 2 / 10 Objetivo principal: obtener una aproximación al valor de empleando el método
Plataformas de Tiempo Real
Master en Computación Plataformas de Tiempo Real POSIX Avanzado y Extensiones Tema 1. Ficheros y entrada/salida Tema 2. Gestión de Interrupciones en MaRTE OS Tema 3. Monitorización y control avanzado del
Tostadores y POSIX. 1. Introducción
Tostadores y POSIX Michael González Harbour 1 (mgh@ctr.unican.es) Departamento de Electrónica y Computadores, Universidad de Cantabria 39005 Santander, SPAIN C. Douglass Locke (doug.locke@lmco.com) Lockheed
Función monitoreo descriptor archivo #include <sys/types.h> #include<unistd.h> #include<errno.h> extern void procesamiento_datos(char *, int); void pr
Introducción al concepto de threads Dr.. Roberto Gómez Cárdenas DCC del ITESM-CEM rogomez@itesm.mx http://homepage.cem.itesm.mx/rogomez Función monitoreo descriptor archivo #include #include
Hilos (threads) Realizado por M. Curiel
Hilos (threads) Realizado por M. Curiel Definiciones Un proceso es una entidad que posee 2 características importantes: - Recursos: un espacio de direcciones (programas, datos, pila y un PCB), archivos,
Hilos de ejecución POSIX
Hilos de ejecución POSIX Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Hilos de ejecución Concepto Un proceso convencional se caracteriza por: Ser
Hilos Secciones Stallings:
Capítulo 4 Hilos Secciones Stallings: 4.1 4.3 Contenido Procesos e hilos. Hilos a nivel de núcleo y a nivel de usuario. Multiprocesador simétrico (SMP). Micronúcleos. 1 Proceso Unidad de propiedad de los
Relojes de Tiempo Real Relojes de Tiempo Real. Métricas Métricas. de Tiempo de Tiempo. Sistemas Sistemas de Relojes de Relojes
Relojes de Real Relojes de Real Conceptos Conceptos Teóricos Teóricos del del Real Denso Real Denso de Reloj de Reloj Discreto Discreto en Pulsos en Pulsos de Reloj de Reloj Relojes Relojes Ideales Ideales
Test SITR Temas: Planificación, Sincronización, Comunicación entre Procesos, Relojes, Señales, Temporizadores (TestSITR_T4 T9)
Test SITR Temas: Planificación, Sincronización, Comunicación entre Procesos, Relojes, Señales, Temporizadores (TestSITR_T4 T9) Temas: Planificación Sincronización y Comunicación entre Procesos Funciones
Sincronización de Hilos POSIX
Sincronización de Hilos POSIX Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Problemática Ejemplo: el problema del productor/consumidor (o del buffer acotado ) Existen
Programación Concurrente Recopilación de teoría referente a la materia
UNIVERSIDAD AMERICANA Programación Concurrente Recopilación de teoría referente a la materia Ing. Luis Müller Esta es una recopilación de la teoría referente a la asignatura Programación Concurrente, a
PROGRAMACIÓN MULTITHREADING
ECAR 2012 PROGRAMACIÓN MULTITHREADING 1 PROGRAMACIÓN BÁSICA PROGRAMACIÓN MULTITHREADING Sergio Nesmachnow (sergion@fing.edu.uy) Gerardo Ares (gares@fing.edu.uy) Escuela de Computación de Alto Rendimiento
Procesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo)
Procesos y Threads Procesos y Threads Procesos Procesos Threads Threads Concurrencia Concurrencia Ventajas Ventajas Modelos Modelos Información Información adicional () adicional () Preparado Preparado
PARTE II PROGRAMACION CON THREADS EN C
PARTE II PROGRAMACION CON THREADS EN C II.1 INTRODUCCION Una librería o paquete de threads permite escribir programas con varios puntos simultáneos de ejecución, sincronizados a través de memoria compartida.
Introducción a los Sistemas Operativos
Introducción a los Sistemas Operativos Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es 1 Índice General Conceptos sobre ordenadores Concepto
Caracterización temporal de los servicios del sistema operativo de tiempo real MaRTE OS
Caracterización temporal de los servicios del sistema operativo de tiempo real MaRTE OS Marta Alonso, Mario Aldea y Michael González Harbour Departamento de Electrónica y Computadores Universidad de Cantabria
Sistemas Operativos. Curso Página Web: Asignaturas de programación en el plan de estudios
Programa de la asignatura Sistemas Operativos 3 er Curso de la Licenciatura en Física Curso 2010-2011 Profesor: J. Javier Gutiérrez (gutierjj@unican.es) Página Web: http://www.ctr.unican.es/asignaturas/so/
POSIX DE TIEMPO REAL
POSIX DE TIEMPO REAL Michael González Harbour 1 Departamento de Electrónica Universidad de Cantabria Avda. los Castros s/n 39005 - Santander Correo electrónico: mgh@ccucvx.unican.es Resumen El estándar
Sincronización de Threads
Funciones POSIX III Funciones POSIX III Sincronización Sincronización Procesos Procesos Semáforos Semáforos (sem_t) (sem_t) Sincronización Sincronización Threads Threads Mutex Mutex (pthread_mutex_t) (pthread_mutex_t)
Fundamentos de los Sistemas Operativos
Práctica 3 : hilos! Fundamentos de los Sistemas Operativos Grado en Ingeniería Informática Rubén García Rodríguez Alexis Quesada Arencibia Eduardo Rodríguez Barrera Francisco J. Santana Pérez José Miguel
Sucesos asíncronos. dit. dit. Juan Antonio de la Puente DIT/UPM UPM UPM
dit dit UPM UPM Sucesos asíncronos Juan Antonio de la Puente DIT/UPM Transparencias basadas en el capítulo 10del libro de A. Burns y A. Wellings Real Time Systems and Programming Languages, 3ª edición
Plataformas de Tiempo Real
Master en Computación Plataformas de Tiempo Real POSIX Avanzado y Extensiones Tema 1. Ficheros y entrada/salida Tema 3. Monitorización y control del tiempo de ejecución Tema 4. Planificación EDF Tema 5.
Prácticas de Sistemas Operativos
Prácticas de Sistemas Operativos GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez 1 Práctica 1 Gestión de procesos y threads Objetivos: Practicar la gestión de procesos y threads concurrentes Desarrollar
Analista Universitario en Sistemas. Sistemas Operativos. Instituto Politécnico Superior THREADS
THREADS 1 Introducción Los procesadores actuales permiten realizar muchas tareas en simultáneo En los sistemas la ejecución de las tareas puede intercalarse en un sólo procesador, y en casos de multi-procesadores,
UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 10 junio de 2006
UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 10 junio de 2006 Para la realización del presente examen se dispondrá de 2 horas
Facultad de Ingeniería Industrial y de Sistemas v2.0 MA781U PLANIFICACION DE PROCESOS
PLANIFICACION DE PROCESOS Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen Se denomina planificador a aquella parte del sistema operativo encargada de asignar los recursos del sistema
INDICE 1. Introducción 2. Entrada / Salida: Principios y Programación 3. Procesos
INDICE Prólogo XV 1. Introducción 1 1.1. Evolución de los sistemas operativos 2 Procesamiento en serie 3 Procesamiento por lotes 4 Multiprogramación 7 1.2. Tipos de Sistemas Operativos 9 Sistemas operativos
HILOS POSIX. LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale Enero marzo 2011
HILOS POSIX LABORATORIO DE SISTEMAS DE OPERACIÓN I (ci 3825) Prof. Yudith Cardinale Enero marzo 2011 Librería #include HILOS POSIX Función que se comportará como hilo: void * mihilo(void *arg)
T5-multithreading. Indice
T5-multithreading 1.1 Indice Proceso vs. Flujos Librerías de flujos Comunicación mediante memoria compartida Condición de carrera Sección Crítica Acceso en exclusión mutua Problemas Abrazos mortales 1.2
Contenido 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS PROCESOS Prólogo...
1 Prólogo... xv 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS... 1 1.1. Conceptos generales sobre sistemas operativos... 2 1.1.1. Funciones del sistema operativo... 2 1.1.2. Componentes del sistema operativo...
Threads, SMP y Microkernels. Proceso
Threads, SMP y Microkernels Proceso Propiedad de los recursos a un proceso se le asigna un espacio de dirección virtual para guardar su imagen Calendarización/ejecución sigue una ruta de ejecución la cual
SISTEMAS EN TIEMPO REAL
SISTEMAS EN TIEMPO REAL Año académico: 2006/07 Centro: Escuela Politécnica Superior Estudios: Ingeniero Técnico en Informática de Sistemas Asignatura: Sistemas en Tiempo real Ciclo: 1º Curso: 3º Cuatrimestre:
Fiabilidad y Tolerancia a Fallos
Fiabilidad y Tolerancia a Fallos Los sistemas empotrados es usual que presenten requerimientos de fiabilidad y seguridad Cada vez mas se utilizan sistemas de control de tiempo real en sistemas críticos
Diseño de Sistemas de Tiempo-real
Diseño de Sistemas de Tiempo-real Aspectos básicos Computadores II / 2005-2006 Contenido Repasaremos algunos conceptos de ingeniería de software y su aplicación a sistemas de tiempo real Introduciremos
Taller de pthreads. Sistemas Operativos. Verano de 2009
Verano de 2009 Menú del día Hoy veremos: Introducción a pthreads Creación de threads Variables mutex Variables de condición Tutoriales de HPC Lawrence Livermore National Laboratory (http://www.llnl.gov)
6. Enumere tres ventajas de los ULT frente a los KLT.
1 Tarea 3 Hilos 1. Cuales bloques de control de proceso deberían pertenecer a un bloque de control de hilo y cuáles a un bloque de control de proceso en un sistema multihilo? Para modelos monohilo deben
Departamento de Automática
Departamento de Automática Tema 6 Programación paralela de sistemas SMP Prof. Dr. José Antonio de Frutos Redondo Dr. Raúl Durán Díaz Curso 2010-2011 Programación de sistemas SMP Introducción. Hebras. Sincronización.
SISTEMAS OPERATIVOS: PROCESOS. Hilos y Procesos
SISTEMAS OPERATIVOS: PROCESOS Hilos y Procesos ADVERTENCIA 2 Este material es un simple guión de la clase: no son los apuntes de la asignatura. El conocimiento exclusivo de este material no garantiza que
Sistemas Operativos. Procesos
Sistemas Operativos Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor de proceso
Sumario Prólogo Unidad didáctica 1. Introducción a los sistemas operativos Objetivos de la Unidad... 12
ÍNDICE SISTEMÁTICO PÁGINA Sumario... 5 Prólogo... 7 Unidad didáctica 1. Introducción a los sistemas operativos... 11 Objetivos de la Unidad... 12 1. Concepto de sistema operativo... 13 2. Servicios de
Convivencia Introducción
Convivencia Introducción Dra. Carolina Mañoso Dpto. Informática y Automática.UNED Definición (1/3) El sistema operativo como máquina virtual o extendida: Un sistema operativo es una serie de componentes
Facultad de Ingeniería Industrial y de Sistemas v1.1 MA781U CONCEPTOS INICIALES CASOS DE USO
CONCEPTOS INICIALES CASOS DE USO Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen Se presenta el analisis funcional basico del sistema operativo desarrollado en RationalRose. I. PAQUETES
Introducción a los Sistemas de Tiempo Real Í d n i dice
Introducción a los Sistemas de Tiempo Real Sistemas de Tiempo Real http://www.vision.uji.es/~pla/ii75 i / /ii75 Índice Introducción. Ejemplos de Sistemas Empotrados. Características de un Sistema de Tiempo
Sistemas Operativos II Junio 2006 Nombre:
Sistemas Operativos II Junio 2006 Nombre: ITIS Castellano Ejercicio 1 [1 punto] 1. Por qué es más eficiente el cambio de contexto entre threads (hilos) que entre procesos? 2. Describe brevemente la diferencia
PARADIGMA y LENGUAJES DE PROGRAMACIÓN
CATEDRA CARRERA: PARADIGMA y LENGUAJES DE PROGRAMACIÓN LICENCIATURA EN SISTEMAS DE INFORMACION FACULTAD DE CIENCIAS EXACTAS QUIMICAS Y NATURALES UNIVERSIDAD NACIONAL DE MISIONES Año 2017 2do Cuatrimestre
Procesos y Threads Procesos y Threads. Rendimiento Rendimiento (paralelismo) (paralelismo) Productividad Productividad
Procesos y Threads Procesos y Threads Procesos Procesos Threads Threads Concurrencia Concurrencia Ventajas Ventajas Modelos Modelos Información Información adicional (PCB) adicional (PCB) Preparado Preparado
Tema 4: Gestión de Procesos
Tema 4: SSOO - Curso 2005/06 E. Domínguez C. Villarrubia Departamento de Tecnologías y Sistemas de Información Escuela Superior de Informática Universidad de Castilla - La Mancha Marzo de 2006 Índice Concepto
SISTEMAS OPERATIVOS Manejo de procesos
SISTEMAS OPERATIVOS Manejo de procesos Amilcar Meneses Viveros ameneses@computacion.cs.cinvestav.mx Universidad de Occidente Presentación Concepto de proceso Despacho de procesos Operaciones sobre procesos
Diseño de sistemas de tiempo real
dit UPM Diseño de sistemas de tiempo real Juan Antonio de la Puente DIT/UPM Transparencias basadas en el capítulo 2 del libro de A. Burns y A. Wellings Real-Time Systems and Programming Languuages, 3ª
Capítulo 2 Introducción a los sistemas operativos
Sistemas operativos: una visión aplicada Capítulo 2 Introducción a los sistemas operativos Contenido Qué es un sistema operativo? Arranque del computador Componentes y estructura de un sistema operativo
PROCESOS E HILOS - Hilo
1/6 PROCESOS E HILOS - Hilo! contexto de ejecución que se planifica de forma independiente pero que comparte un mismo espacio de direcciones con otros hilos - Proceso! conjunto de uno o más hilos y los
Introducción a los Sistemas Operativos S.O.
Introducción a los Sistemas Operativos S.O. Contenido 1. Conceptos 2. Evolución de los Sistemas Operativos 3. Administración del Entorno de Hardware 1. CONCEPTOS 1.1. Definición de Sistema Operativo Es
Informática I Threads
Informática I Threads 28 de Setiembre 2010 1 Concepto de programación paralela. 2. 3 Concurrencia => Race Conditions. 4. 5 Funciones Concepto de Programación Paralela Computación paralela Técnica de programación
Convivencia Gestión de Procesos
Convivencia Gestión de Procesos Dra. Carolina Mañoso Dpto. Informática y Automática.UNED Índice: Procesos Introducción a los procesos Estados de los procesos Listas de procesos El planificador de procesos
Tecnología de sistemas de tiempo real
dit UPM Tecnología de sistemas de tiempo real Juan Antonio de la Puente DIT/UPM Copyright 2007, Juan Antonio de la Puente Motivación Los métodos, las herramientas y la tecnología que se usan para construir
Concurrencia de Procesos
Concurrencia de Procesos Dos o mas procesos, se dice que son concurrentes o paralelos, cuando se ejecutan al mismo tiempo. Esta concurrencia puede darse en un sistema con un solo procesador (pseudo paralelismo)
Programación Concurrente y Paralela. Unidad 1 Introducción
Programación Concurrente y Paralela Unidad 1 Introducción Contenido 1.1 Concepto de Concurrencia 1.2 Exclusión Mutua y Sincronización 1.3 Corrección en Sistemas Concurrentes 1.4 Consideraciones sobre el
de Gran Canaria Centro de Tecnología Médica Programación Concurrente
Universidad de Las Palmas de Gran Canaria Centro de Tecnología Médica http://www.ctm.ulpgc.es Tema 1: Introducción a la Escuela Técnica Superior de Ingenieros de Telecomunicación Conceptos Fundamentales
Concurrencia y paralelismo
Introducción a los Sistemas Operativos Concurrencia y paralelismo 1. Ejecución de programas. Procesos. 2. Multiprogramación Bibliografía Silberschatz and Galvin Sistemas Operativos. Conceptos fundamentales.
Concurrencia. Primitivas IPC con bloqueo
Concurrencia Primitivas IPC con bloqueo Primitivas de IPC con bloqueo La solución de Peterson es correcta, pero tiene el defecto de requerir espera ocupada: Cuando un proceso quiere entrar en su región
Concurrencia Monitores. Guillermo Román Díez
Concurrencia Monitores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Monitores 1/25 Recursos Compartidos Pregunta La especificación de
TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.
1 TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS. 1- Cuáles son las principales funciones de un sistema operativo? Los Sistemas Operativos tienen como objetivos o funciones principales lo siguiente; Comodidad;
Tema 12: El sistema operativo y los procesos
Tema 12: El sistema operativo y los procesos Solicitado: Tarea 06 Arquitecturas de una computadora y el funcionamiento del software M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx
Programación Concurrente
Master en Computación Programación Concurrente Bloque II: Programación concurrente en POSIX Tema 1. Introducción al estándar POSIX Tema 2. Sistema Operativo MaRTE OS Tema 3. Gestión de Threads Tema 4.
Taller de Programación Paralela
Taller de Programación Paralela Departamento de Ingeniería Informática Universidad de Santiago de Chile April 26, 2007 Concurrencia 2 Concurrencia y sincronización.............................................................
Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria
Sistemas operativos UPCO ICAI Departamento de Electrónica y Automática 1 Hasta ahora hemos visto Relación programa-sistema operativo Gestión de memoria Reserva para la ejecución Pilas, heap, memoria de
dit Planificación de tareas de tiempo real Juan Antonio de la Puente DIT/UPM UPM Copyright 2007, Juan Antonio de la Puente
dit UPM Planificación de tareas de tiempo real Juan Antonio de la Puente DIT/UPM Copyright 2007, Juan Antonio de la Puente Objetivos Plantear los problemas básicos relacionados con el cumplimiento de los
Hilos. Módulo 4. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur
Hilos Módulo 4 Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Chapter 4: Threads Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos de
Acceso coordinado a recursos compartidos
Programación Concurrente en Linux Acceso coordinado a recursos compartidos Alberto Lafuente, Dep. KAT/ATC de la UPV/EHU, bajo Licencia Creative Commons 1 Contenido 1. Recursos compartidos 2. Mecanismos
Bloque I: Principios de sistemas operativos
Bloque I: Principios de sistemas operativos Tema 1. Principios básicos de los sistemas operativos Tema 2. Concurrencia Tema 3. Ficheros Tema 4. Sincronización y programación dirigida por eventos Tema 5.
Tiempo real. Juan Antonio de la Puente DIT/UPM. Tiempo real. Comprender el papel del tiempo en el diseño y realización de sistemas de tiempo real
dit UPM Tiempo real Juan Antonio de la Puente DIT/UPM Tiempo real Objetivo Comprender el papel del tiempo en el diseño y realización de sistemas de tiempo real Contenido: Sistemas de referencia de tiempo
Arquitecturas cliente/servidor
Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?
Definición de S. Tiempo Real
Sistemas de Tiempo Real Sistemas de Tiempo Real Definición Definición Conceptos Conceptos Clasificación Clasificación Respuesta en Respuesta en tiempo tiempo especificado especificado Interacción Interacción
Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana
Fundamentos de los Sistemas Operativos Tema 2. Procesos 1998-2015 José Miguel Santos Alexis Quesada Francisco Santana Contenidos del Tema 2 Qué es un proceso Estructuras de datos para gestionar procesos
Proceso. Threads, SMP, and Microkernels. Multithreading. Proceso
Proceso Threads, SMP, and Microkernels Capítulo 4 Propiedad de Recurso el proceso se ubica en un espacio de direccionamiento virtual que tiene la imagen del proceso Planificación/ejecución sigue un camino
Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos
Sistemas operativos: una visión aplicada Capítulo 5 Comunicación y sincronización de procesos Sistema multiprogramado con un una CPU Proceso A Proceso B Proceso C Tiempo Sistemas operativos: una visión
Cena de filosofos y sincronizacion java
Programación concurrente y Distribuída Curso 2011-12 Miguel Telleria, Laura Barros, J.M. Drake telleriam AT unican.es Computadores y Tiempo Real http://www.ctr.unican.es Objetivos Presentaros la aplicación
Introducción. Requerimientos
Introducción Los SSOO de TR son necesarios cuando el lenguaje de programación no ofrece los servicios necesarios para el tiempo real No todos los SSOO son válidos para el TR. Se necesitan unos requerimientos
UPM Concurrencia en Java
UPM Concurrencia en Java Juan Antonio de la Puente DIT/UPM Hebras (threads) Una hebra es un objeto de una subclase de java.lang.thread o una implementación de la interfaz Runnable El código que ejecuta
Grado en Ingeniería de Computadores Universidad de Alcalá 2015/2016 3º Curso 2º Cuatrimestre
Sistemas de Tiempo Real Grado en Ingeniería de Computadores Universidad de Alcalá 2015/2016 3º Curso 2º Cuatrimestre GUÍA DOCENTE Nombre de la asignatura: Código: 590008 Titulación en la que se imparte:
UPM Gestión del tiempo real
UPM Gestión del tiempo real Juan Antonio de la Puente DIT/UPM Tiempo real Objetivo Comprender el papel del tiempo en el diseño y realización de sistemas de tiempo real Contenido: Sistemas de referencia
ESCUELA DE INGENIERIA Informática Y Sistemas
ESCUELA DE INGENIERIA Informática Y Sistemas ASIGNATURA SISTEMAS OPERATIVOS CODIGO ST0257 SEMESTRE 2013-2 INTENSIDAD HORARIA 64 horas semestral CARACTERÍSTICAS Suficientable CRÉDITOS 4 1. JUSTIFICACIÓN
Planificaciones Sistemas Operativos. Docente responsable: MENDEZ MARIANO. 1 de 6
Planificaciones 7508 - Sistemas Operativos Docente responsable: MENDEZ MARIANO 1 de 6 OBJETIVOS 1-Estudiar y conocer en detalle los pilares fundamentales de los sistemas operativos: el Kernel y Proceso,
Planificaciones Sistemas Operativos. Docente responsable: MENDEZ MARIANO. 1 de 6
Planificaciones 7508 - Sistemas Operativos Docente responsable: MENDEZ MARIANO 1 de 6 OBJETIVOS 1-Estudiar y conocer en detalle los pilares fundamentales de los sistemas operativos: el Kernel y Proceso,
Estructura de los sistemas de cómputo
Estructura de los sistemas de cómputo Introducción Elementos básicos de un computador Registro del procesador Ejecución de las instrucciones Interrupciones Hardware de protección Introducción Qué es un
Guía práctica de estudio 12: Hilos
: Elaborado por: M.C. M. Angélica Nakayama C. Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez Mena Guía práctica de estudio 12: Objetivo: Implementar el concepto de multitarea utilizando
Procesos e hilos. Pablo San Segundo (C-206)
Procesos e hilos Pablo San Segundo (C-206) pablo.sansegundo@upm.es KERNEL DEL SISTEMA OPERATIVO Al arrancar el PC siempre se carga en memoria una copia del Kernel desde disco El Kernel del sistema operativo