Periféricos Interfaces y Buses
|
|
- Pilar Padilla Valdéz
- hace 5 años
- Vistas:
Transcripción
1 Periféricos Interfaces y Buses I. Arquitectura de E/S II. Programación de E/S Aspectos básicos de la programación de E/S. Arquitectura y programación de la E/S en el sistema operativo. Manejadores de dispositivos (drivers) y su programación (interrupciones). III. Interfaces de E/S de datos IV. Dispositivos de E/S de datos V. Buses VI. Controladores e interfaces de dispositivos de almacenamiento VII. Sistemas de almacenamiento GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 1 8 II. Programación de E/S Bloque III Drivers en MaRTE OS GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 2
2 Nociones básicas de Marte OS Se pueden hacer aplicaciones en Ada y C En la instalación se elige un directorio export donde se va a colocar el ejecutable del target para que sea cargado, por ejemplo por etherboot: en el servidor en /etc/dhcpd.conf se encuentran la MAC e IP del host y del target, el nombre del fichero y su path Suponemos que el directorio de instalación es /marte aquí se encuentran los fuentes y algunas utilidades de compilación En /marte/utils se encuentra el fichero globals.pl en el que hay parámetros de configuración creados al instalar MaRTE GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 3 Nociones básicas de Marte OS (cont.) En /marte/utils se encuentran algunas utilidades de compilación: mkdrivers: compila sólo los drivers mkmarte: compila el Kernel de MaRTE salvo el runtime mkrtsmarteuc: compila el runtime de MaRTE para la plataforma seleccionada mgcc: compila el programa de aplicación C y crea el ejecutable mgnatmake: compila el programa de aplicación en Ada y crea el ejecutable Los ejecutables se tienen que llevar al directorio export en el que el target espera encontrar el fichero para cargarlo GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 4
3 Drivers en MaRTE OS Tipos de drivers sólo existen los drivers de caracteres Identificación de ficheros de dispositivo números mayores y números menores asignados en una tabla de dispositivos (cualquier variación en esta tabla exige la recompilación del kernel) Instalación de los drivers instalación estática a través de la correspondiente modificación de la tabla de dispositivos Los drivers se pueden escribir tanto en Ada como en C - si se escriben en C necesitan un envoltorio Ada GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 5 Drivers en MaRTE OS (cont.) Pueden usar todas las funciones POSIX threads, mutexes, variables condicionales, temporizadores, semáforos,... excepto en las rutinas de servicio de interrupción, donde no se pueden usar operaciones bloqueantes - esto incluye escribir en otros drivers (p.e., no usar la entrada/salida estándar) - alternativamente existe una operación printc para escribir en consola directamente Cada driver debe ir localizado en un subdirectorio de marte/x86_arch/drivers/ GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 6
4 Identificación de drivers La identificación de los drivers se hace con los números mayores y menores con un significado similar al que hemos visto para Linux La implementación se realiza mediante tres tablas: Tabla de descriptores de fichero: permite el acceso al dispositivo desde las aplicaciones Tabla de ficheros de dispositivo: contiene la información de dispositivo instalado (asocia el número mayor y menor) Tabla de drivers: cada driver es identificado por el número mayor y contiene toda la funcionalidad del driver Las dos últimas permiten la instalación de driver y dispositivos GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 7 Tabla de descriptores de ficheros Esta tabla es gestionada automáticamente por el sistema File descriptor Se crea una entrada en cada open File_Open_Status File_Access_Mode Table 1: The_FD_Table Device_File_Assigned Device_File_Number Specific_Data Integer Fd_Used Boolean 0??? False 3 Read_Write 4 0 True??? False Configuration_parameters. Open_Files_Mx-1 GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 8
5 Tabla de ficheros de dispositivos Esta tabla es configurada por el usuario Device_File_ Number Linux: cada entrada es equivalente a un mknod Table 2: The_Device_Files_Table File_Name Path Major_ Number Major Minor_ Number Minor Device_Used Boolean 1? 1 1 False 4 test_driver1 5 1 True? 1 1 False Configuration_parameters. Device_Files_Mx GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 9 Tabla de drivers Esta tabla es configurada por el usuario Major Create Create_ Procedure_Ac Remove Remove_ Procedure_Ac Table 3: The_Driver_Table Open Open_ Procedure_Ac Close Close_ Procedure_Ac Read Read_ Procedure_Ac Write Write_ Procedure_Ac Ioctl Ioctl_ Procedure_Ac 1 null null null null null null null 5 test_ create Configuration_ Parameters. Devices_Mx test_ remove test_ open test_ close test_ read test_ write Linux: es equivalente al uso de register_chrdev_region, cdev_alloc y cdev_add test_ ioctl null null null null null null null GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 10
6 Puntos de entrada de los drivers Puntos de entrada de los drivers create/remove funciones de instalación/desinstalación del driver, externas al sistema de archivos - Linux: suplen las operaciones de instalación y desintalación de módulos open/close y read/write funciones de entrada/salida básicas de POSIX gestionadas internamente por el sistema de archivos ioctl función que permite transmitir una orden al dispositivo GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 11 API de los puntos de entrada (C) int my_driver_create (void); int my_driver_remove (void); int my_driver_open (int file_descriptor, int file_access_mode); int my_driver_close (int file_descriptor); ssize_t my_driver_read (int file_descriptor, void *buffer, size_t bytes); ssize_t my_driver_write (int file_descriptor, void *buffer, size_t bytes); int my_driver_ioctl (int file_descriptor, int request, void *argp); GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 12
7 Creación de un driver C Incluso para drivers C hay que escribir una especificación Ada puede usarse como plantilla el fichero drivers/demo_driver_c/demo_driver_c_import.ads Además, hay que crear un GNUmakefile mkdrivers ejecutará make en el directorio del driver después mkdrivers copiará en lib/libdrivers.o los objetos de los directorios de los drivers GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 13 Ficheros implicados en la instalación de un driver /marte/x86_arch/arch_dependent_files/marte-kerneldevices_table.ads - registra todas las funciones de los drivers - es un fichero único para todos los drivers /marte/x86_arch/arch_dependent_files/marteconfiguration_parameters.ads - parámetros de configuración del kernel - se pueden configurar entre otras cosas algunos parámetros correspondientes a los drivers, como los rangos de números mayores y menores /marte/x86_arch/drivers/my_driver/* - ficheros con el código de mi driver en el subdirectorio my_driver GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 14
8 Instalación de un driver El fichero marte-kernel-devices_table.ads tiene dos tablas: The_Driver_Table: drivers incluidos en el sistema - esta tabla asocia números mayores a los drivers y contiene los puntos de entrada The_Device_Files_Table: registra los dispositivos y asocia el driver que los controla GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 15 Instalación de un driver (cont.) Para incluir un nuevo driver: Añadir una entrada a The_Driver_Table, eligiendo un número mayor no usado Añadir uno o varios ficheros de dispositivos (uno por número menor) a The_Device_Files_Table - el nombre es un string cualquiera (se puede usar el prefijo /dev por analogía con Linux) - elegir como número mayor el asociado al driver - el número menor es cualquiera; se usará para identificar unidades de manera definida por el driver GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 16
9 Ejemplo de fichero de marte-kernel-devices_table.ads -- Typical standard devices(std input,output,error) with Keyboard_Functions; -- standard input with Text_And_Serial_Console_Import; -- std output,error -- User's drivers "withs" (add with{your_driver}') with Demo_Driver_C_Import; -- MaRTE OS "withs" (Do not edit) with Marte.Kernel.File_System_Data_Types; use Marte.Kernel.File_System_Data_Types; package Marte.Kernel.Devices_Table is pragma Elaborate_Body; GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 17 marte-kernel-devices_table.ads (cont.) The_Driver_Table : Kernel.File_System_Data_Types.Driver_Table_Type := (1 => (Name => "Keyboard ", Create => Keyboard_Functions.Create'Access, Remove => null, Open => null, Close => null, Read => Keyboard_Functions.Read'Access, Write => null, Ioctl => Keyboard_Functions.Ioctl'Access, Delete => null, Lseek => null), 2 => (Name => "Text/Serial ", Create => Text_And_Serial_console_Import.Create_Ac, GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 18
10 marte-kernel-devices_table.ads (cont.) Remove => Text_And_Serial_console_Import.Remove_Ac, Open => Text_And_Serial_console_Import.Open_Ac, Close => Text_And_Serial_console_Import.Close_Ac, Read => null, Write => Text_And_Serial_console_Import.Write_Ac, Ioctl => Text_And_Serial_console_Import.Ioctl_Ac, Delete => null, Lseek => null), 3 => (Name => "Text/Serial ", Create => Text_And_Serial_console_Import.Create_Ac, Remove => Text_And_Serial_console_Import.Remove_Ac, Open => Text_And_Serial_console_Import.Open_Ac, Close => Text_And_Serial_console_Import.Close_Ac, Read => null, Write => Text_And_Serial_console_Import.Write_Error_Ac, Ioctl => Text_And_Serial_console_Import.Ioctl_Ac, Delete => null, Lseek => null), GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 19 marte-kernel-devices_table.ads (cont.) 7 => (Name => "Demo Driver C ", Create => Demo_Driver_C_Import.Create_Ac, Remove => Demo_Driver_C_Import.Remove_Ac, Open => Demo_Driver_C_Import.Open_Ac, Close => Demo_Driver_C_Import.Close_Ac, Read => Demo_Driver_C_Import.Read_Ac, Write => Demo_Driver_C_Import.Write_Ac, Ioctl => Demo_Driver_C_Import.Ioctl_Ac, Delete => null, Lseek => null), others => (" ", null, null, null, null, null, null, null, null, null) ); GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 20
11 marte-kernel-devices_table.ads (cont.) function To_Path (Str : String) return Path; The_Device_Files_Table : Kernel.File_System_Data_Types.Device_Files_Table_Type := ( -- File path Major Minor Used Type Del Count 1 => (To_Path ("/dev/stdin"), 1, 0, True, Device, False,0), 2 => (To_Path ("/dev/stdout"), 2, 0, True, Device, False,0), 3 => (To_Path ("/dev/stderr"), 3, 0, True, Device, False,0), 12 => (To_Path ("/dev/demo_c"), 7, 0, True, Device, False,0), others => (To_Path (""), Major'Last, Minor'Last, False, Device, False,0) ); end Marte.Kernel.Devices_Table; GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 21 Resumen del proceso de instalación de un driver Realizar el código del driver: en C: además se necesita un fichero Ada para importar las funciones C y compilar las funciones C con mkdrivers en Ada: se hace uso del paquete Drivers_Marte en /marte/misc que contiene la interfaz de las funciones y tipos Modificar marte-kernel-devices_table.ads para "instalar" el driver Realizar el código de la aplicación Compilar el driver con mkkernel, mkrtskerneluc, o mkdrivers Compilar y enlazar la aplicación: mgcc (C) o mgnatmake (Ada) GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 22
12 Operaciones disponibles para drivers Operaciones de <drivers/drivers_marte.h> /* retorna el número mayor del driver asociado al * descriptor de fichero, o -1 si hay error */ int get_major (int filedes); /* retorna el número menor del driver asociado al * descriptor de fichero, o -1 si hay error */ int get_minor (int filedes); /* Obtiene el dato específico del dispositivo */ int driver_getspecific (int filedes, int *data); /* Cambia el dato específico del dispositivo */ int driver_setspecific (int filedes, int data); /* Obtiene el modo de acceso */ int get_fd_access_mode (int filedes); GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 23 Acceso a la memoria MaRTE OS maneja un espacio de direcciones que es único no diferencia la memoria del kernel de la de usuario en los puntos de entrada no es necesario el uso de funciones especiales para el intercambio de datos entre el driver y la aplicación las funciones están en <stdlib.h> para reservar memoria void *malloc (size_t size) para liberar memoria void free (void *buff); GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 24
13 Ejemplo de un driver C: demo_driver_c.c #include <stdio.h> #include <drivers/drivers_marte.h> #define BUFFER_SIZE 30 char demo_buffer [BUFFER_SIZE] = ""; int demo_c_create () { return 0; } int demo_c_remove () { return 0; } GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 25 Ejemplo de un driver C: demo_driver_c.c int demo_c_open (int file_descriptor, int file_access_mode) { printf ("Demo C Drv:Open dev file %d (Maj:%d, Min:%d) Mod %d\n", file_descriptor, get_major(file_descriptor), get_minor(file_descriptor), file_access_mode); return 0; } int demo_c_close (int file_descriptor) { printf ("Demo C Drv: Close dev file %d (Major:%d, Minor:%d)\n", file_descriptor, get_major(file_descriptor), get_minor(file_descriptor)); return 0; } GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 26
14 Ejemplo de un driver C: demo_driver_c.c ssize_t demo_c_read (int file_descriptor, void *buffer, size_t bytes) { size_t i, bytes_read = 0; if (bytes < BUFFER_SIZE) bytes_read = bytes; else bytes_read = BUFFER_SIZE; for (i=0; i<bytes_read; i++) ((char *)buffer)[i] = demo_buffer[i]; } printf ("Demo C Diver: read %d bytes\n", bytes_read); return bytes_read; GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 27 Ejemplo de un driver C: demo_driver_c.c ssize_t demo_c_write (int file_descriptor, void *buffer, size_t bytes) { size_t i, bytes_written = 0; } if (bytes < BUFFER_SIZE) bytes_written = bytes; else bytes_written = BUFFER_SIZE; for (i=0; i<bytes_written; i++) demo_buffer[i] = ((char *)buffer)[i]; printf ("Demo C Diver: written %d bytes\n", bytes_written); return bytes_written; GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 28
15 Ejemplo de un driver C: demo_driver_c.c int demo_c_ioctl (int file_descriptor, int request, void* argp) { printf ("Demo C Diver: Ioctl. Request:%d, argp:%s\n", request, (char *) argp); return 0; } GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 29 Ejemplo de un driver C: demo_driver_c_import.ads with Drivers_MaRTE; use Drivers_MaRTE; with System, Ada.Unchecked_Conversion; package Demo_Driver_C_Import is -- Create function Create return Int; pragma Import (C, Create, "demo_c_create"); function Address_To_Create_Ac is new Ada.Unchecked_Conversion (System.Address, Create_Function_Ac); Create_Ac : Create_Function_Ac := Address_To_Create_Ac (Create'Address); -- Remove function Remove return Int; pragma Import (C, Remove, "demo_c_remove"); function Address_To_Remove_Ac is new Ada.Unchecked_Conversion (System.Address, Remove_Function_Ac); Remove_Ac : Remove_Function_Ac := Address_To_Remove_Ac (Remove'Address); GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 30
16 Ejemplo de un driver C: demo_driver_c_import.ads -- Open function Open (Fd : in File_Descriptor; Mode : in File_Access_Mode) return Int; pragma Import (C, Open, "demo_c_open"); function Address_To_Open_Ac is new Ada.Unchecked_Conversion (System.Address, Open_Function_Ac); Open_Ac : Open_Function_Ac := Address_To_Open_Ac (Open'Address); -- Close function Close (Fd : in File_Descriptor) return Int; pragma Import (C, Close, "demo_c_close"); function Address_To_Close_Ac is new Ada.Unchecked_Conversion (System.Address, Close_Function_Ac); Close_Ac : Close_Function_Ac := Address_To_Close_Ac (Close'Address); GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 31 Ejemplo de un driver C: demo_driver_c_import.ads -- Read function Read (Fd : in File_Descriptor; Buffer_Ptr : in Buffer_Ac; Bytes : in Buffer_Length) return Int; pragma Import (C, Read, "demo_c_read"); function Address_To_Read_Ac is new Ada.Unchecked_Conversion (System.Address, Read_Function_Ac); Read_Ac : Read_Function_Ac := Address_To_Read_Ac (Read'Address); -- Write function Write (Fd : in File_Descriptor; Buffer_Ptr : in Buffer_Ac; Bytes : in Buffer_Length) return Int; pragma Import (C, Write, "demo_c_write"); function Address_To_Write_Ac is new Ada.Unchecked_Conversion (System.Address, Write_Function_Ac); Write_Ac : Write_Function_Ac := Address_To_Write_Ac (Write'Address); GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 32
17 Ejemplo de un driver C: demo_driver_c_import.ads -- Ioctl function Ioctl (Fd : in File_Descriptor; Request : in Ioctl_Option_Value; Ioctl_Data_Ptr : in Buffer_Ac) return Int; pragma Import (C, Ioctl, "demo_c_ioctl"); function Address_To_Ioctl_Ac is new Ada.Unchecked_Conversion (System.Address, Ioctl_Function_Ac); Ioctl_Ac : Ioctl_Function_Ac := Address_To_Ioctl_Ac (Ioctl'Address); end Demo_Driver_C_Import; GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 33 Ejemplo de un driver C: GNUmakefile MGCC =../../../utils/mgcc DEFAULT: demo_driver_c.o demo_driver_c.o: demo_driver_c.c Makefile $(MGCC) -c $(CFLAGS) demo_driver_c.c tabulador GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 34
18 Programa de prueba Dado que MaRTE OS no tiene procesos, no podemos poner dos programas a ejecutar (p.e., uno de lectura y otro de escritura) la concurrencia se debe hacer con threads (o tareas en el caso de Ada) El programa de prueba hace lo siguiente: abre el dispositivo /dev/demo_c realiza un lazo hasta una condición de parada - escribe en el dispositivo un string dado por el usuario - lee seguidamente el buffer del dispositivo cuando sale del lazo cierra el dispositivo GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 35 Sincronización Para el acceso a secciones críticas mútexes y semáforos con un manejador de interrupción se deben inhibir interrupciones Para la sincronización de espera semáforos y variables condicionales un manejador de interrupción - puede despertar a un thread en espera en un semáforo - dispone de una función especial para despertar a un thread Si el driver se escribe en Ada la sincronización se puede hacer con los objetos protegidos GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 36
19 Sincronización (cont.) Semáforos definidos en <semaphore.h> int sem_init (sem_t *sem, int pshared, unsigned int value); int sem_destroy (sem_t *sem); int sem_wait (sem_t *sem); int sem_trywait (sem_t *sem); int sem_timedwait (sem_t *sem, const struct timespec *abs_timeout); int sem_post (sem_t *sem); int sem_getvalue (sem_t *sem, unsigned int *value); Mutexes, variables condicionales, threads y funciones de planificación definidos en <pthread.h> GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 37 Sincronización (cont.) Mutexes: int pthread_mutexattr_init (pthread_mutexattr_t *attr); int pthread_mutexattr_destroy (pthread_mutexattr_t *attr); int pthread_mutex_init (pthread_mutex_t *m, const pthread_mutexattr_t *attr); int pthread_mutex_destroy (pthread_mutex_t *m); int pthread_mutex_lock (pthread_mutex_t *m); int pthread_mutex_trylock (pthread_mutex_t *m); int pthread_mutex_unlock (pthread_mutex_t *m); int pthread_mutex_timedlock (pthread_mutex_t *m, const struct timespec *abs_timeout); GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 38
20 Temporización MaRTE OS dispone de los temporizadores de POSIX que están pensados para enviar una señal a un thread También dispone de los relojes de POSIX y de las funciones de dormir de alta resolución Esto permite la creación de threads periódicos también en los drivers; en <time.h> struct timespec { time_t tv_sec; int tv_nsec; }; int nanosleep (const struct timespec *rqtp, struct timespec *rmtp); int clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 39 Acceso al hardware El acceso a los registros de un dispositivo se consigue con las funciones de <sys/pio.h> funciones de entrada y salida de bytes inb(port) inb_p(port) outb(port, val) outb_p(port, val) también hay funciones para 16 y 32 bits Hay facilidades para uso del bus PCI en <sys/pci.h> GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 40
21 Interrupciones Hay facilidades para interrupciones hardware en <intr.h> instalación y desintalación de manejadores de interrupción int posix_intr_associate (intr_t intr, int (*intr_handler) (void * area, intr_t intr), volatile void * area, size_t areasize); int posix_intr_disassociate (intr_t intr, int (*intr_handler) (void * area, intr_t intr)); bloqueo y desbloqueo de interrupciones int posix_intr_lock (intr_t intr); int posix_intr_unlock (intr_t intr); espera temporizada a un manejador int posix_intr_timedwait (int flags, const struct timespec *abs_timeout, intr_t *intr, int (**intr_handler) (void * area, intr_t intr) ); GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 41 Threads del kernel No existen threads especiales en MaRTE OS Se puede usar un thread "normal" para esperar a un manejador de interrupción éste después puede activar a cualquier otro que estuviera esperando en un punto de entrada del driver la espera al manejador se hace - con posix_intr_timedwait - con un semáforo GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 42
22 Threads de MaRTE OS Creación y destrucción de threads int pthread_create (pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); void pthread_exit (void *value_ptr); Creación de los atributos int pthread_attr_init (pthread_attr_t *attr); int pthread_attr_destroy (pthread_attr_t *attr); GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 43 Threads de MaRTE OS (cont.) Atributos generales int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize); int pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *stacksize); int pthread_attr_setstackaddr(pthread_attr_t *attr, void * stackaddr); int pthread_attr_getstackaddr(pthread_attr_t *attr, void ** stackaddr); int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate); int pthread_attr_getdetachstate(const pthread_attr_t *attr, int *detachstate); GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 44
23 Threads de MaRTE OS (cont.) Atributos de planificación int pthread_attr_setinheritsched (pthread_attr_t *attr, int inheritsched); int pthread_attr_getinheritsched (pthread_attr_t *attr, int *inheritsched); int pthread_attr_setschedpolicy (pthread_attr_t *attr, int policy); int pthread_attr_getschedpolicy (pthread_attr_t *attr, int policy); int pthread_attr_setschedparam (pthread_attr_t *attr, const struct sched_param *param); int pthread_attr_getschedparam (const pthread_attr_t *attr, struct sched_param *param); int pthread_setschedparam (pthread_t thread, int policy, const struct sched_param *param); int pthread_getschedparam (pthread_t thread, int *policy, struct sched_param *param); int pthread_setschedprio (pthread_t thread, int prio); GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 45 Bibliografía [1] Jonathan Corbet, Greg Kroah-Hartman, Alessandro Rubini, "Linux Device Drivers", 3rd Ed., O'Reilly, [2] P. J. Salzman, M. Burian, O. Pomerantz, "The Linux Kernel Module Programming Guide", Ver , : [3] MaRTE OS: [4] Francisco Guerreira, "Entorno para la instalación y utilización de manejadores de dispositivos en MaRTE OS", Proyecto fin de carrera, GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Michael González 46
Plataformas de Tiempo Real
Master en Computación Plataformas de Tiempo Real Bloque II: Manejadores de dispositivos y drivers Tema 1. Arquitectura de E/S Tema 2. Programación básica de E/S en Linux Tema 3. Programación avanzada de
Características de los gestores de dispositivos en MaRTE OS
Características de los gestores de dispositivos en MaRTE OS En este documento vamos a resumir los aspectos más relevantes del diseño de gestores de dispositivos en MaRTE y algunas de sus diferencias con
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.
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)
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.
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.
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.
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
ENTORNO PARA LA INSTALACIÓN Y UTILIZACIÓN DE MANEJADORES DE DISPOSITIVOS EN MARTE OS
ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INDUSTRIALES Y DE TELECOMUNICACIÓN UNIVERSIDAD DE CANTABRIA Proyecto Fin de Carrera ENTORNO PARA LA INSTALACIÓN Y UTILIZACIÓN DE MANEJADORES DE DISPOSITIVOS EN MARTE
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
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)
Funciones POSIX III Funciones POSIX III. No Nombrados Nombrados. sem_open sem_open. sem_close sem_close. sem_unlink sem_unlink
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)
Informática Electrónica Manejadores de Dispositivos (Device Drivers)
Informática Electrónica Manejadores de Dispositivos (Device Drivers) DSI-EIE-FCEIA 2015 Que es un DD? Es una pieza de software que interactúa con (entre) el sistema operativo y con uno o mas dispositivos
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.
Manejadores de buses serie en MaRTE OS
Programa Oficial de Postgrado en Ciencias, Tecnología y Computación Máster en Computación Facultad de Ciencias Universidad de Cantabria Manejadores de buses serie en MaRTE OS Autor: Directores: Mario Aldea
Entrada/Salida. Alexis Tcach. Sistemas Operativos, 1c DC - FCEyN - UBA
DC - FCEyN - UBA Sistemas Operativos, 1c-2016 Menú del día Menú del día Recordar que es un device driver Recordar tipos de device drivers Programación básica (pseudocódigo). Más real en el taller Recordando
Prácticas de Periféricos Interfaces y Buses
Prácticas de Periféricos Interfaces y Buses 3 er Curso de Ingeniería Informática GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez, Julio Medina 1 GRUPO DE COMPUTADORES Y TIEMPO REAL J. Javier Gutiérrez,
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/
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
Mecanismos de extensión del núcleo
Mecanismos de extensión del núcleo Yolanda Becerra Fontal Juan José Costa Prats Facultat d'informàtica de Barcelona Universitat Politècnica de Catalunya BarcelonaTech 2014-2015QT Índice Concepto Mecanismos
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
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
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)
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
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
Instrumentación de Tiempo Real
Instrumentación de Tiempo Real Tema 1. Introducción Tema 2. Recursos de acceso al hardware Tema 3. Interrupciones Tema 4. Puertas básicas de entrada/salida (I) Tema 5. Recursos de temporización de bajo
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
Práctica 1: (Tema 2) Instalación de MaRTE OS
Práctica 1: (Tema 2) Instalación de Objetivos: Instalar practicar el uso del entorno de de ción Concurrente oct-13 1 Acceso a los puestos del laboratorio Elegir la primera de las opciones de arranque:
Gestión de dispositivos de entrada/salida analógica, digital y por el bus serie I2C
Gestión de dispositivos de entrada/salida analógica, digital y por el bus serie I2C Daniel Sangorrín López daniel.sangorrin@gmail.com Director: Michael González Harbour Universidad de Cantabria Tabla de
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
Entrada y Salida de Archivos
Entrada y Salida de Archivos E/S Básica de Archivo El servicio básico es sin buffering, a diferencias de la E/S estándar (stdio.h), dado que las primeras generan llamadas al sistema (read y write). Son
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
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,
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
Plataformas de Tiempo Real
Master en Computación Plataformas de Tiempo Real POSIX Avanzado y Extensiones Tema 2. Gestión de Interrupciones en MaRTE OS Tema 3. Monitorización y control del tiempo de ejecución Tema 4. Planificación
Entorno de programación de nivel 1: La librería PCAP
Entorno de programación de nivel 1: La librería PCAP La librería libpcap nos permite capturar paquetes desde un programa C. En sistemas Windows, la librería se llama Winpcap. Para compilar cualquier programa
POSIX-RT. Librería. Sistemas Informáticos de Tiempo Real Francisco Pastor Gomis
Librería Sistemas Informáticos de Tiempo Real Francisco Pastor Gomis 1. Estándares POSIX POSIX es el acrónimo de Interfaz de Sistemas Operativos Portables (Portable Operating Systems Interfaces). Es un
Tema 13: Manejo de archivos en lenguaje C
Tema 13: Manejo de archivos en lenguaje C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco)
Periféricos Interfaces y Buses
Periféricos Interfaces y Buses I. Arquitectura de E/S II. Programación de E/S III. Interfaces de E/S de datos IV. Dispositivos de E/S de datos V. Buses Buses de E/S (PCI, PC104, AGP). Sistemas de interconexión
Laboratorio: Construyendo un Driver para Linux 2.6
Escucho y olvido, veo y recuerdo, hago y entiendo. * Lic. Ing. Osvaldo Clúa 2009 Facultad de Ingeniería Universidad de Buenos Aires Laboratorio: Construyendo un Driver para Linux 2.6 FIUBA 2009 1 Lectura
Biblioteca de sistema
* Para la realización del presente examen se aconseja un tiempo de 2 horas. Teoría 1. Explique en detalle cómo se pasa una llamada al sistema operativo. El sistema operativo se activa cuando debe responder
Los conocimientos previos necesarios para el desarrollo de estas prácticas son:
PRÁCTICA 2: MODIFICACIONES AL KERNEL Presentación Las prácticas de las asignaturas Ampliación de Sistemas Operativos y Diseño de Sistemas Operativos pretenden que el estudiante sea capaz de entender porciones
Sistemas Operativos I Manual de prácticas
Sistemas Operativos I Manual de prácticas Grupo de Sistemas Operativos (DSIC/DISCA) Práctica 4: Programación con hilos OBJETIVOS DE LA PRÁCTICA...2 ANTES DE EMPEZAR......2 PARTE 1: HOLA MUNDO CONCURRENTE...3
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.
SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS. Desarrollo de servidores concurrentes
SISTEMAS OPERATIVOS: COMUNICACIÓN Y SINCRONIZACIÓN ENTRE PROCESOS Desarrollo de servidores concurrentes Contenido 2 Servidores de peticiones. Solución basada en procesos. Solución basada en hilos bajo
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...
DSX - Sistemas Digitales Utilizando Linux Incrustado
Unidad responsable: Unidad que imparte: Curso: Titulación: Créditos ECTS: 2017 230 - ETSETB - Escuela Técnica Superior de Ingeniería de Telecomunicación de Barcelona 710 - EEL - Departamento de Ingeniería
Seminario de Utilización del Laboratorio de ITR
Seminario de Utilización del Laboratorio de ITR Mario Aldea Rivas Departamento de Electrónica y Computadores Universidad de Cantabria GRUPO DE COMPUTADORES Y TIEMPO REAL Mario Aldea Rivas 1 Estructura
Llamadas al sistema de ficheros
Universidad Carlos III de Madrid Departamento de Informática Área de Arquitectura y Tecnología de Computadores Grado en Ingeniera Informática SISTEMAS OPERATIVOS Práctica 3. Llamadas al sistema de ficheros
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,
Introducción al lenguaje C
Introducción al lenguaje C Programación 2 Instituto de Computación, Facultad de Ingeniería, Universidad de la República, Uruguay 2 de marzo de 2016 Programación 2 Introducción al lenguaje C 2 de marzo
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
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.
Sistemas Operativos 1
Ejercicio 1. Se desea implementar una aplicación de n procesos concurrentes, donde cada proceso ejecuta una determinada tarea en forma de pipeline. Un ejemplo de esta aplicación con n=4 sería la siguiente:
Interfaces y Manejadores de Dispositivos
Informática Electrónica Unidad 6 Interfaces y Manejadores de Dispositivos Modalidad y Materiales Dos clases expositivas a cargo del docente responsable (jlsimon@fceia.unr.edu.ar) Una práctica cargo de
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
Departamento de Automática
Departamento de Automática Ejemplo Producto escalar Producto escalar (secuencial) /*Cálculo del producto escalar programa secuencial */ #include #include typedef struct double *a;
Máster en Computación
Máster en Computación TESIS DE MÁSTER INSTRUMENTACIÓN DE CÓDIGO PARA EL CÁLCULO DE TIEMPOS DE EJECUCIÓN Y RESPUESTA EN SISTEMAS DE TIEMPO REAL Autor: Álvaro García Cuesta Director: J. Javier Gutiérrez
Librería para la creación de interfaces gráficas para el control de sistemas empotrados y aplicación a un brazo telemanipulado
Librería para la creación de interfaces gráficas para el control de sistemas empotrados y aplicación a un brazo telemanipulado Graphical interfaces library for embedded control systems. Application to
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
Tema 4: Gestión de Procesos
Tema 4: Gestión de Procesos 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
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.
dit Concurrencia Juan Antonio de la Puente DIT/UPM UPM
dit UPM Concurrencia Juan Antonio de la Puente DIT/UPM Objetivos Repasaremos los principios de la programación concurrente Analizaremos la distintas alternativas de ejecución de procesos concurrentes Veremos
Práctica 2. Implementación de un driver básico para la transmisión de datos a través de la UART.
Práctica 2. Implementación de un driver básico para la transmisión de datos a través de la UART. 1. Objetivo El objetivo de la siguiente práctica es el de implementar el software de control (driver) de
Matías Zabaljáuregui
El buffer de la entrada estándar en GNU/Linux Matías Zabaljáuregui (matiasz@info.unlp.edu.ar) http://linux.linti.unlp.edu.ar 0. Introducción Se intentará describir en términos sencillos la forma de tratar
Examen Teórico (1/3 de la nota final)
Examen Teórico (1/3 de la nota final) 105000016 - Programación para Sistemas Grado en Ingeniería Informática (2009) Lenguajes y Sistemas Informáticos e Ingeniería de Software Facultad de Informática Universidad
Programación I Teoría : Entrada/Salida - Archivos.
Programación I Teoría : Entrada/Salida - Archivos http://proguno.unsl.edu.ar proguno@unsl.edu.ar Entrada/Salida Interacción del programa con su ambiente para leer (entrada) y escribir (salida) datos. 2
Introducción a Sistemas Operativos: Concurrencia
Introducción a Sistemas Operativos: Concurrencia Clips xxx Fr ancisco J Ballesteros 1. Semáforos Quizá la abstracción más conocida para sincronizar procesos en programación concurrente controlar el acceso
Novedades en MaRTE OS: Librería de Pthreads para Linux [1] y Java de Tiempo Real [2]
Novedades en MaRTE OS: Librería de Pthreads para Linux [1] y Java de Tiempo Real [2] Mario Aldea Rivas (aldeam@unican.es) [1][2] Michael González Harbour (mgh@unican.es) [1] Dpto. Electrónica y Computadores,
Usando el Sistema Operativo
Sistemas Operativos Pontificia Universidad Javeriana Enero de 2010 Los sistemas operativos Los sistemas operativos Perspectivas del Computador Concepto general El sistema operativo es parte del software
TIPOS DE DATOS BASICOS EN LENGUAJE C
TIPOS DE DATOS BASICOS EN LENGUAJE C TIPO char int float double void ANCHO EN BIT 64 0 TIPOS DE DATOS RANGO EN PC -12 a 127 3.4E-3 a 3.4E+3 1.7E-30 a 1.7E+30 sin valores TIPO ANCHO EN BIT RANGO EN PC char
SISTEMAS OPERATIVOS:
SISTEMAS OPERATIVOS: Lección 8: Desarrollo de servidores concurrentes Jesús Carretero Pérez Alejandro Calderón Mateos José Daniel García Sánchez Francisco Javier García Blas José Manuel Pérez Lobato Introducción
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.
La función de un SO en los sistemas de I/O, es manejar y controlar las operaciones y los dispositivos de I/O.
Sistemas de I/O pagina 1 de 5 Sistemas de Entrada/Salida Las aplicaciones utilizan los dispositivos (devices) para realizar la I/O (entrada-salida). Estos dispositivos son variados y trabajan de manera
Introducción al lenguaje C
Programación 2 Profesorado de Informática CeRP del Suroeste, Uruguay 29 de marzo de 2016 Estructuras de control IV Iteración Sentencia for: for (inicio; condicion; paso) cuerpo for (int i = 0; i < 10;
Sistemas Operativos sesión 12: tuberías
Sistemas Operativos sesión : tuberías Grado en Ingeniería Informática Universidad Carlos III de Madrid Agenda Linux Comunicación con tuberías Ejercicios Agenda Linux Comunicación con tuberías Ejercicios
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 3. Gestión de Threads Tema 4. Gestión del Tiempo Tema 5. Planificación
Práctica 1 Programación de Aplicaciones Distribuidas: Sockets UDP. Laboratorio de Comunicación de Datos ITT Telemática Septiembre 2011
Práctica 1 Programación de Aplicaciones Distribuidas: Sockets UDP Laboratorio de Comunicación de Datos ITT Telemática Septiembre 2011 Introducción Aplicaciones Distribuidas Su funcionalidad se distribuye
Seminario de Programación en Ada
Seminario de Programación en Ada Tutorial básico del entorno de desarrollo GPS GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González, J. Javier Gutiérrez, Héctor Pérez Tijero 1 Estructura del laboratorio
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:
Periféricos Interfaces y Buses
Periféricos Interfaces y Buses I. Arquitectura de E/S II. Programación de E/S III. Interfaces de E/S de datos IV. Dispositivos de E/S de datos Dispositivos de entrada de datos (teclado, escáner, tablas
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
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
Comunicación y sincronización
Comunicación y sincronización Son conceptos relacionados con la interacción entre los procesos La comunicación se refiere al paso de información de un proceso a otro La sincronización corresponde al cumplimiento
TEMA 2 Técnicas básicas de construcción de aplicaciones distribuidas. Universidad de Oviedo / Dpto. de Informática
TEMA 2 Técnicas básicas de construcción de aplicaciones distribuidas Lección 2 Modelos de aplicaciones distribuidas Modelos de aplicaciones distribuidas Una aplicación distribuida sería una pieza de software
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
Funciones POSIX (I): Introducción
Funciones POSIX I Funciones POSIX I Llamadas al Llamadas al Sistema Sistema Gestión Básica Gestión Básica de Procesos de Procesos Procesos Procesos fork fork Señales Señales getpid getpid Memoria Memoria
Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.
Tema 5 : Comunicación entre Procesos mediante Tuberías Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Introducción Algunas
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 1 Contenidos: 1. Características generales de C++ 2. Entrada/salida estándar 3. Variables y tipos de datos
Índice. Definición Objetivos Estructura de una unidad Ejemplo de creación y uso FAQs Opciones de compilación Unidades estándar de TurboPascal
Departamento de Informática Universidad de Valladolid Campus de Segovia Unidades en TurboPascal Programación II Prácticas 2006 (E.I.T.G. Segovia) Índice Definición Objetivos Estructura de una unidad Ejemplo
CUDA 5.5 y Visual Studio Express 2012 para Escritorio. Primeros pasos.
CUDA 5.5 y Visual Studio Express 2012 para Escritorio. Primeros pasos. La nueva versión de CUDA 5.5 es completamente compatible con la plataforma de desarrollo Visual Studio Express 2012 para escritorio
Sist s em e a m s s O per e ativos o. s Unidad V Entrada Sali l d i a.
Sistemas Operativos. Unidad V Entrada Salida. Programación de Entrada y Salida Introducción. Comunicación de los procesos con el mundo externo : Mecanismo de E/S de información. Aspectos que diferencian
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
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
Fundamentos de los Sistemas Operativos. Tema 1. Conceptos generales Estructura del sistema operativo ULPGC - José Miguel Santos Espino
Fundamentos de los Sistemas Operativos Tema 1. Conceptos generales Estructura del sistema operativo 2015 ULPGC - José Miguel Santos Espino Contenido Componentes del S.O. Programas del sistema El núcleo
Threads en Linux. Definición de thread. Thread implementado en Linux. Creando un thread en Linux. Ing. Marcelo Doallo Threads en Linux 1/9
Threads en Linux Definición de thread Es un mecanismo por el cual un programa puede hacer mas de una cosa al mismo tiempo. Como los procesos, los threads parecen correr simultáneamente; pero hay que tener
Sistemas Operativos Práctica 3
Sistemas Operativos Práctica 3 Ing. Andrés Bustamante afbustamanteg@unal.edu.co Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que