El documento describe conceptos relacionados con hilos y procesos en programación concurrente. Explica que un hilo es la unidad mínima de ejecución dentro de un proceso, y que los hilos comparten memoria dentro de un proceso. También describe algunas propiedades y métodos de la clase Thread de .NET para crear e iniciar hilos, así como conceptos como estados de hilos y sincronización.
Este material didáctico fue desarrollado para la asignatura de Tópicos Avanzados de Programación, del plan SCD-1027 2016 de Ing. En Sistemas Computacionales
Este documento presenta los principales estándares para el modelado de procesos de negocios, incluyendo BPEL, UML, EPC y BPMN. También incluye un caso de éxito de la aplicación de BPMN en RSA Seguros Generales de Chile para automatizar procesos como la cotización de pólizas de seguros.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
Este documento describe el uso de componentes y librerías en Java. Explica que las clases en Java pueden agruparse en paquetes lógicos llamados librerías. Detalla algunos paquetes comunes como java.lang y java.io y cómo crear y empaquetar componentes en archivos JAR para facilitar su reutilización.
En esta presentación se presentan los siguientes temas:
Información, estado y formación de un proceso.
Concepto de hilo y su constitución.
Planificación de servicios POXIS.
Problemas clásicos en la comunicación de procesos.
Este documento explica los conceptos de normalización de bases de datos, incluyendo las diferentes formas normales (1FN a 5FN). Define conceptos como dependencia funcional, redundancia, anomalías y cómo dividir tablas problemáticas en tablas más normalizadas para eliminar estas anomalías.
Este material didáctico fue desarrollado para la asignatura de Tópicos Avanzados de Programación, del plan SCD-1027 2016 de Ing. En Sistemas Computacionales
Este documento describe los conceptos de memoria estática y dinámica en los sistemas de computación. Explica que la memoria estática es asignada por el compilador para elementos fijos del programa, mientras que la memoria dinámica es asignada y liberada dinámicamente durante la ejecución. También cubre temas como la asignación de memoria, el uso de pilas y colas, y el recolector de basura.
Este documento describe las principales estructuras de los sistemas operativos, incluyendo la estructura monolítica, la estructura de micronúcleo, la estructura jerárquica y la máquina virtual. Explica que la estructura monolítica consiste en un solo programa con rutinas entrelazadas, mientras que la estructura de micronúcleo separa las funciones centrales del núcleo de la interfaz de usuario. También describe las ventajas de portabilidad y fiabilidad de los sistemas de micronúcleo.
Este material didáctico fue desarrollado para la asignatura de Tópicos Avanzados de Programación, del plan SCD-1027 2016 de Ing. En Sistemas Computacionales
Este documento presenta los principales estándares para el modelado de procesos de negocios, incluyendo BPEL, UML, EPC y BPMN. También incluye un caso de éxito de la aplicación de BPMN en RSA Seguros Generales de Chile para automatizar procesos como la cotización de pólizas de seguros.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
Este documento describe el uso de componentes y librerías en Java. Explica que las clases en Java pueden agruparse en paquetes lógicos llamados librerías. Detalla algunos paquetes comunes como java.lang y java.io y cómo crear y empaquetar componentes en archivos JAR para facilitar su reutilización.
En esta presentación se presentan los siguientes temas:
Información, estado y formación de un proceso.
Concepto de hilo y su constitución.
Planificación de servicios POXIS.
Problemas clásicos en la comunicación de procesos.
Este documento explica los conceptos de normalización de bases de datos, incluyendo las diferentes formas normales (1FN a 5FN). Define conceptos como dependencia funcional, redundancia, anomalías y cómo dividir tablas problemáticas en tablas más normalizadas para eliminar estas anomalías.
Este material didáctico fue desarrollado para la asignatura de Tópicos Avanzados de Programación, del plan SCD-1027 2016 de Ing. En Sistemas Computacionales
Este documento describe los conceptos de memoria estática y dinámica en los sistemas de computación. Explica que la memoria estática es asignada por el compilador para elementos fijos del programa, mientras que la memoria dinámica es asignada y liberada dinámicamente durante la ejecución. También cubre temas como la asignación de memoria, el uso de pilas y colas, y el recolector de basura.
Este documento describe las principales estructuras de los sistemas operativos, incluyendo la estructura monolítica, la estructura de micronúcleo, la estructura jerárquica y la máquina virtual. Explica que la estructura monolítica consiste en un solo programa con rutinas entrelazadas, mientras que la estructura de micronúcleo separa las funciones centrales del núcleo de la interfaz de usuario. También describe las ventajas de portabilidad y fiabilidad de los sistemas de micronúcleo.
Este documento compara diferentes sistemas gestores de bases de datos, describiendo sus características técnicas, ventajas, desventajas y empresas que los utilizan. Algunos de los SGBD más populares mencionados son MySQL, Oracle, SQL Server, PostgreSQL y SQLite. Cada uno tiene fortalezas específicas como rendimiento, escalabilidad, facilidad de uso y compatibilidad con diferentes plataformas y sistemas operativos.
Este documento presenta información sobre la importancia y características de la documentación de sistemas. Resume que la documentación es esencial para garantizar la calidad del software y el éxito de los proyectos. Explica que la documentación debe ser completa, actualizada y accesible para todos los usuarios según sus necesidades.
Este documento presenta información sobre programación concurrente utilizando hilos. Explica conceptos como hilos, clases Thread y Monitor, y métodos para la sincronización de hilos como lock, wait y pulse. También presenta ejemplos de código para crear y manejar hilos, y describe problemas como el problema de los filósofos comensales que requieren sincronización de hilos.
El documento describe una clase sobre arquitectura en capas. La clase cubre conceptos como la diferencia entre capas y niveles, las características y estructura de la arquitectura en capas, y sus ventajas y desventajas. El objetivo de la clase es explicar y describir la arquitectura de múltiples capas.
Este documento presenta diferentes métodos de búsqueda como la búsqueda secuencial, binaria y mediante transformación de llaves. Explica la búsqueda secuencial como el método de recorrer elementos de forma lineal, la búsqueda binaria como una división recursiva de la lista ordenada, y la transformación de llaves como asignar índices a elementos mediante funciones hash.
Procesos Ligeros: Hilos o Hebras
Un proceso ligero es una unidad básica de utilización de la CPU consistente en un juego de registros y un espacio de pila.
Comparte datos, código y registros con sus hebras pares.
Una tarea o proceso pesado esta conformado por una o mas hebras.
Una hebra solo puede pertenecer a una sola tarea.
Este documento describe los sistemas de bases de datos paralelas, los cuales ejecutan operaciones en múltiples procesadores y discos de forma paralela para mejorar el rendimiento. Estos sistemas constan de varios procesadores y discos conectados en red de alta velocidad. Dividen los datos y tareas entre los componentes para procesar diferentes partes de una transacción o consulta de forma simultánea, lo que mejora la velocidad y permite tratar volúmenes de datos más grandes.
Un traductor divide su proceso en dos etapas: análisis y síntesis. La etapa de análisis analiza el lenguaje fuente, verifica su corrección sintáctica y semántica, y genera estructuras intermedias. La etapa de síntesis usa estas estructuras para generar código intermedio, código máquina, y optimizar el código final. Un traductor traduce código de un lenguaje fuente a un lenguaje objetivo, como de un lenguaje de programación a código de máquina.
Este documento presenta una introducción al lenguaje de programación C#. Define a C# como un lenguaje orientado a objetos creado por Anders Hejlsberg que combina el control de bajo nivel de C con la velocidad de programación de Visual Basic. Explica las funciones, ventajas y desventajas de C# y áreas donde es más demandado como servidores de grandes empresas.
Este documento describe la metodología orientada a objetos y el modelado de sistemas de información bajo esta metodología. Explica que la metodología orientada a objetos considera que los sistemas pueden verse como un conjunto de objetos que interactúan entre sí. Luego enumera los elementos primarios y secundarios del modelo de objetos. Finalmente, detalla los diferentes diagramas que se usan en el modelado de sistemas de información con UML, incluyendo diagramas de clases, casos de uso, objetos, actividades, secuencia, colaboración,
Comparativa Arquitectura Cliente/Servidor y DistribuidaSergio Olivares
El documento describe y compara las arquitecturas cliente-servidor y distribuida. La arquitectura cliente-servidor consiste en un cliente que realiza peticiones a un servidor, el cual responde. La arquitectura distribuida se caracteriza por tener componentes de software y hardware comunicados a través de una red para lograr un objetivo común mediante el intercambio de mensajes siguiendo un protocolo. La evolución incluyó modelos centralizados en un solo computador y luego grupos de servidores conectados en red.
El documento habla sobre los sistemas de entrada/salida en los sistemas operativos. Explica que el subsistema de E/S del kernel aísla el resto del kernel de la complejidad de administrar los dispositivos de E/S y provee una interfaz uniforme para acceder a ellos. También describe los diferentes tipos de dispositivos, como bloque y carácter, así como conceptos como buffers, cachés, interrupciones y DMA que mejoran el rendimiento de la E/S.
Este documento describe conceptos básicos sobre transacciones en bases de datos, incluyendo las propiedades ACID, los estados de una transacción, los niveles de aislamiento y los comandos commit y rollback. Explica que una transacción es un conjunto de operaciones atómicas que mantienen la consistencia de los datos y que deben cumplir las propiedades de atomicidad, consistencia, aislamiento y permanencia.
El documento describe el lenguaje UML y los diagramas de clases. Explica que UML se usa para modelar sistemas de software y que los diagramas de clases representan las clases, atributos, operaciones y relaciones. También cubre los diferentes tipos de relaciones entre clases como asociación, agregación, composición y herencia.
Instalacion de un (SGBD)sistema gestor de base de datos.SergioLopez467
En este trabajo se instalaran 2 SGBD en distintas plataformas de tipo servidor.
Se mostrarán los requerimientos de instalacion, variables de ambiente, archivos importantes para la instalación, procedimiento para instalación y configuración del DBMS.
Un sistema distribuido es una colección de computadoras independientes que funcionan juntas como una sola computadora. Los sistemas distribuidos permiten compartir recursos entre computadoras conectadas en red, son escalables, tolerantes a fallos y permiten la concurrencia de procesos. Un ejemplo simple es un sistema multiprocesador donde los procesos de software se distribuyen entre procesadores diferentes.
El documento describe los conceptos de procesos y hilos (threads) en los sistemas operativos. Los procesos agrupan recursos como espacio de direcciones, archivos abiertos y hilos de ejecución. Los hilos son unidades básicas de ejecución que comparten recursos como código, datos y archivos dentro de un proceso. Los hilos permiten que una aplicación realice múltiples tareas de forma concurrente.
El documento describe el algoritmo del banquero, el cual evita el interbloqueo asignando recursos de forma segura a procesos. Se compara el funcionamiento de un banco con la asignación de recursos por parte de un sistema operativo. Se explican conceptos clave como estado, matriz de demanda y asignación. Finalmente, se describen las debilidades del algoritmo.
Este documento presenta información sobre un módulo de ingeniería de software dictado en la Universidad Nacional de Loja, Ecuador, en 2012. El tema cubierto es los métodos de ingeniería de software, con énfasis en el modelo en cascada. También incluye ejemplos de proyectos que podrían adaptarse a este modelo, como sistemas de refrigeración y aire acondicionado.
La metodología incremental consiste en desarrollar un sistema en incrementos funcionales pequeños. Cada incremento agrega nuevas funcionalidades y es evaluado por el cliente antes de pasar al siguiente. Esto permite entregar parte del producto funcional más rápido y recibir comentarios para mejorar los incrementos siguientes, reduciendo riesgos y costos del proyecto. La metodología propone 5 etapas y tiene como ventajas principal que los clientes pueden usar parte del sistema desde temprano y que involucra más a los clientes en el desarrollo.
JSP tiene ventajas como ser un lenguaje totalmente en Java, tener una fuerte capacidad de manipulación de gráficos, aprovechar APIs y ser de código abierto, pero también tiene desventajas como poseer una interfaz limitada, requerir muchas líneas de código para interfaces elaboradas y tener un riesgo de sobrecargar el servidor.
a) Las cimentaciones profundas como muros pantalla, pilotes y cimentación por sustitución se usan cuando las cargas no pueden transmitirse a través de una cimentación superficial, hay riesgo de asientos imprevisibles o el terreno sufre variaciones estacionales.
b) Los pilotes, generalmente de concreto o acero, se hincan hasta alcanzar un estrato resistente y distribuyen las cargas de forma puntual.
c) Los muros pantalla actúan como muros de contención profundos que transmiten es
Este documento compara diferentes sistemas gestores de bases de datos, describiendo sus características técnicas, ventajas, desventajas y empresas que los utilizan. Algunos de los SGBD más populares mencionados son MySQL, Oracle, SQL Server, PostgreSQL y SQLite. Cada uno tiene fortalezas específicas como rendimiento, escalabilidad, facilidad de uso y compatibilidad con diferentes plataformas y sistemas operativos.
Este documento presenta información sobre la importancia y características de la documentación de sistemas. Resume que la documentación es esencial para garantizar la calidad del software y el éxito de los proyectos. Explica que la documentación debe ser completa, actualizada y accesible para todos los usuarios según sus necesidades.
Este documento presenta información sobre programación concurrente utilizando hilos. Explica conceptos como hilos, clases Thread y Monitor, y métodos para la sincronización de hilos como lock, wait y pulse. También presenta ejemplos de código para crear y manejar hilos, y describe problemas como el problema de los filósofos comensales que requieren sincronización de hilos.
El documento describe una clase sobre arquitectura en capas. La clase cubre conceptos como la diferencia entre capas y niveles, las características y estructura de la arquitectura en capas, y sus ventajas y desventajas. El objetivo de la clase es explicar y describir la arquitectura de múltiples capas.
Este documento presenta diferentes métodos de búsqueda como la búsqueda secuencial, binaria y mediante transformación de llaves. Explica la búsqueda secuencial como el método de recorrer elementos de forma lineal, la búsqueda binaria como una división recursiva de la lista ordenada, y la transformación de llaves como asignar índices a elementos mediante funciones hash.
Procesos Ligeros: Hilos o Hebras
Un proceso ligero es una unidad básica de utilización de la CPU consistente en un juego de registros y un espacio de pila.
Comparte datos, código y registros con sus hebras pares.
Una tarea o proceso pesado esta conformado por una o mas hebras.
Una hebra solo puede pertenecer a una sola tarea.
Este documento describe los sistemas de bases de datos paralelas, los cuales ejecutan operaciones en múltiples procesadores y discos de forma paralela para mejorar el rendimiento. Estos sistemas constan de varios procesadores y discos conectados en red de alta velocidad. Dividen los datos y tareas entre los componentes para procesar diferentes partes de una transacción o consulta de forma simultánea, lo que mejora la velocidad y permite tratar volúmenes de datos más grandes.
Un traductor divide su proceso en dos etapas: análisis y síntesis. La etapa de análisis analiza el lenguaje fuente, verifica su corrección sintáctica y semántica, y genera estructuras intermedias. La etapa de síntesis usa estas estructuras para generar código intermedio, código máquina, y optimizar el código final. Un traductor traduce código de un lenguaje fuente a un lenguaje objetivo, como de un lenguaje de programación a código de máquina.
Este documento presenta una introducción al lenguaje de programación C#. Define a C# como un lenguaje orientado a objetos creado por Anders Hejlsberg que combina el control de bajo nivel de C con la velocidad de programación de Visual Basic. Explica las funciones, ventajas y desventajas de C# y áreas donde es más demandado como servidores de grandes empresas.
Este documento describe la metodología orientada a objetos y el modelado de sistemas de información bajo esta metodología. Explica que la metodología orientada a objetos considera que los sistemas pueden verse como un conjunto de objetos que interactúan entre sí. Luego enumera los elementos primarios y secundarios del modelo de objetos. Finalmente, detalla los diferentes diagramas que se usan en el modelado de sistemas de información con UML, incluyendo diagramas de clases, casos de uso, objetos, actividades, secuencia, colaboración,
Comparativa Arquitectura Cliente/Servidor y DistribuidaSergio Olivares
El documento describe y compara las arquitecturas cliente-servidor y distribuida. La arquitectura cliente-servidor consiste en un cliente que realiza peticiones a un servidor, el cual responde. La arquitectura distribuida se caracteriza por tener componentes de software y hardware comunicados a través de una red para lograr un objetivo común mediante el intercambio de mensajes siguiendo un protocolo. La evolución incluyó modelos centralizados en un solo computador y luego grupos de servidores conectados en red.
El documento habla sobre los sistemas de entrada/salida en los sistemas operativos. Explica que el subsistema de E/S del kernel aísla el resto del kernel de la complejidad de administrar los dispositivos de E/S y provee una interfaz uniforme para acceder a ellos. También describe los diferentes tipos de dispositivos, como bloque y carácter, así como conceptos como buffers, cachés, interrupciones y DMA que mejoran el rendimiento de la E/S.
Este documento describe conceptos básicos sobre transacciones en bases de datos, incluyendo las propiedades ACID, los estados de una transacción, los niveles de aislamiento y los comandos commit y rollback. Explica que una transacción es un conjunto de operaciones atómicas que mantienen la consistencia de los datos y que deben cumplir las propiedades de atomicidad, consistencia, aislamiento y permanencia.
El documento describe el lenguaje UML y los diagramas de clases. Explica que UML se usa para modelar sistemas de software y que los diagramas de clases representan las clases, atributos, operaciones y relaciones. También cubre los diferentes tipos de relaciones entre clases como asociación, agregación, composición y herencia.
Instalacion de un (SGBD)sistema gestor de base de datos.SergioLopez467
En este trabajo se instalaran 2 SGBD en distintas plataformas de tipo servidor.
Se mostrarán los requerimientos de instalacion, variables de ambiente, archivos importantes para la instalación, procedimiento para instalación y configuración del DBMS.
Un sistema distribuido es una colección de computadoras independientes que funcionan juntas como una sola computadora. Los sistemas distribuidos permiten compartir recursos entre computadoras conectadas en red, son escalables, tolerantes a fallos y permiten la concurrencia de procesos. Un ejemplo simple es un sistema multiprocesador donde los procesos de software se distribuyen entre procesadores diferentes.
El documento describe los conceptos de procesos y hilos (threads) en los sistemas operativos. Los procesos agrupan recursos como espacio de direcciones, archivos abiertos y hilos de ejecución. Los hilos son unidades básicas de ejecución que comparten recursos como código, datos y archivos dentro de un proceso. Los hilos permiten que una aplicación realice múltiples tareas de forma concurrente.
El documento describe el algoritmo del banquero, el cual evita el interbloqueo asignando recursos de forma segura a procesos. Se compara el funcionamiento de un banco con la asignación de recursos por parte de un sistema operativo. Se explican conceptos clave como estado, matriz de demanda y asignación. Finalmente, se describen las debilidades del algoritmo.
Este documento presenta información sobre un módulo de ingeniería de software dictado en la Universidad Nacional de Loja, Ecuador, en 2012. El tema cubierto es los métodos de ingeniería de software, con énfasis en el modelo en cascada. También incluye ejemplos de proyectos que podrían adaptarse a este modelo, como sistemas de refrigeración y aire acondicionado.
La metodología incremental consiste en desarrollar un sistema en incrementos funcionales pequeños. Cada incremento agrega nuevas funcionalidades y es evaluado por el cliente antes de pasar al siguiente. Esto permite entregar parte del producto funcional más rápido y recibir comentarios para mejorar los incrementos siguientes, reduciendo riesgos y costos del proyecto. La metodología propone 5 etapas y tiene como ventajas principal que los clientes pueden usar parte del sistema desde temprano y que involucra más a los clientes en el desarrollo.
JSP tiene ventajas como ser un lenguaje totalmente en Java, tener una fuerte capacidad de manipulación de gráficos, aprovechar APIs y ser de código abierto, pero también tiene desventajas como poseer una interfaz limitada, requerir muchas líneas de código para interfaces elaboradas y tener un riesgo de sobrecargar el servidor.
a) Las cimentaciones profundas como muros pantalla, pilotes y cimentación por sustitución se usan cuando las cargas no pueden transmitirse a través de una cimentación superficial, hay riesgo de asientos imprevisibles o el terreno sufre variaciones estacionales.
b) Los pilotes, generalmente de concreto o acero, se hincan hasta alcanzar un estrato resistente y distribuyen las cargas de forma puntual.
c) Los muros pantalla actúan como muros de contención profundos que transmiten es
Algoritmos, programas, compiladores y lenguajes de programacionBoris Salleg
El documento habla sobre algoritmos y programas. Define algoritmo como una secuencia ordenada de pasos para resolver un problema. Un programa es la implementación de un algoritmo en un lenguaje de programación. Explica los tipos de lenguajes de programación como lenguajes máquina, ensamblador y de alto nivel, así como ejemplos de cada uno. Finalmente, describe el ciclo de vida del desarrollo de software.
The document describes what ServiceStack is and provides examples of its capabilities. It begins by asking what ServiceStack is, where it came from, and what it does. It then discusses how earlier attempts at SOA failed and what ServiceStack learned from those experiences. Key points are that ServiceStack focuses on message-based services, code-first POCOs, and maximum productivity. Examples show how ServiceStack simplifies common tasks like JSON serialization, ORM, caching, and more.
El documento describe el lenguaje HTML. HTML permite estructurar documentos que pueden ser mostrados en navegadores web. Los documentos HTML consisten en texto plano y etiquetas que especifican elementos como encabezados, párrafos, listas e imágenes. La estructura básica de un documento HTML incluye etiquetas como <html>, <head>, <title>, <body> que definen el encabezado y cuerpo de la página.
El documento presenta tres análisis de costo unitario para diferentes partidas de obra: 1) Columna de concreto con costo unitario de S/. 435.62 por m3. 2) Muro de ladrillo king-kon con costo unitario de S/. 91.90 por m2. 3) Encofrado y desencofrado de columna con costo unitario de S/. 48.15 por m2. Cada análisis detalla los materiales, mano de obra, equipos y costo total requeridos.
Este documento describe las características y conceptos fundamentales de Visual Basic .NET. Explica que Visual Basic .NET es un lenguaje de programación orientado a objetos que forma parte de Visual Studio .NET y utiliza la plataforma .NET Framework. Detalla algunas de las características clave de Visual Basic .NET como la herencia, control de excepciones, sobrecarga, constructores, delegados, interfaces y tipos de datos. El documento está dirigido a usuarios y desarrolladores que deseen aprender Visual Basic .NET para crear aplicaciones.
Este documento presenta un diagrama de Gantt para el proceso de selección de personal. El diagrama detalla 28 actividades requeridas con su duración en horas y holgura. Cinco rutas críticas se identifican que van desde la verificación de hojas de vida hasta archivar los resultados de las pruebas. La holgura total es de 33.5 horas.
Este documento describe Windows Movie Maker, un software de edición de video incluido con Windows. Explica que Microsoft reescribió completamente Movie Maker en 2009 y lanzó versiones actualizadas en 2010 y 2012. Detalla algunas de las funciones básicas de Movie Maker como agregar transiciones, efectos, silenciar audio y agregar títulos a los videos.
El documento describe un seminario de tres días sobre principios liberales organizado por CREO. El seminario incluirá discusiones sobre temas éticos, económicos y políticos desde una perspectiva liberal con ponentes de organizaciones como la Universidad Francisco Marroquín y Atlas Network. Los objetivos son enseñar estas ideas a jóvenes y promover un diálogo crítico sobre El Salvador.
El documento describe cómo la sociedad está cambiando hacia una cultura basada en el conocimiento debido a la modernización y tecnología. En esta nueva sociedad, la sabiduría colectiva y el conocimiento son más importantes que el capital. Las organizaciones deben enfocarse en gestionar el conocimiento entre los empleados y crear comunidades de práctica para compartir ideas. La Web 2.0 permite que los usuarios generen y compartan contenido en línea de manera interactiva.
Las estructuras cíclicas y bogles son temas matemáticos. El documento instruye realizar sumas, multiplicaciones y cálculos repetidos diez veces para practicar estos conceptos.
Este documento resume las principales ramas de la economía, incluyendo la economía descriptiva, la teoría económica (microeconomía y macroeconomía), la economía normativa y la política económica. Explica brevemente cada rama y proporciona ejemplos ilustrativos.
El documento trata sobre el parkour. Explica que el objetivo del parkour es poder superar cualquier obstáculo o trayecto. Identifica algunos movimientos básicos como saltos, recepciones y técnicas para pasar obstáculos. También menciona que David Belle es considerado el inventor del parkour.
La Federación Riojana de Pesca y la Consejería de Presidencia y Justicia organizan los Juegos Deportivos de La Rioja para la temporada 2012-2013. El documento detalla las categorías, modalidades, inscripciones, calendario de competición y normas. Los juegos consistirán en tres días de pesca en diferentes lugares e incluirán categorías para niños y jóvenes.
El documento describe diferentes tipos de puentes eléctricos utilizados para realizar mediciones de precisión de resistencias, inductancias y capacitancias, incluyendo el puente de Wheatstone, el puente de Kelvin, el puente de Owen y puentes de corriente alterna. Explica que cada puente es adecuado para medir diferentes rangos de valores y factores de calidad.
1. El aparato respiratorio provee oxígeno al cuerpo y elimina dióxido de carbono a través de un proceso de intercambio gaseoso en los pulmones.
2. Está compuesto por las vías respiratorias superiores e inferiores y los pulmones. Las vías superiores conducen el aire hacia la tráquea y los pulmones, mientras que los pulmones contienen alvéolos donde ocurre el intercambio gaseoso con la sangre.
3. La respiración involucra
El documento describe los hilos y su uso en sistemas operativos. Los hilos son mini procesos que comparten el espacio de direcciones con otros hilos de un mismo proceso. Se necesita sincronizar los hilos para evitar interferencias. Los hilos aumentan la eficiencia al permitir cambiar entre tareas de forma más rápida que con procesos completos. Existen varios modelos como servidor-trabajador, equipo y entubamiento.
El documento describe conceptos básicos de programación concurrente y paralela en Java como hilos, sincronización y prioridades. Explica que los hilos son unidades básicas de ejecución que comparten memoria dentro de un proceso y que Java se enfoca más en hilos que en procesos. También cubre temas como la creación de hilos, su planificación, sincronización para evitar problemas de acceso a recursos compartidos y métodos para controlar su ejecución.
1) Los sistemas operativos modernos tratan las unidades de recursos (procesos) e unidades de despacho (hilos) de forma independiente, donde los procesos son unidades de recursos y los hilos son unidades de despacho.
2) Los procesos son pesados y comparten recursos, mientras que los hilos son livianos, existen varios por proceso, y comparten los recursos del proceso.
3) Los hilos comparten el código, datos y recursos de un proceso, y son baratos de crear y gestionar en comparación con los pro
Este documento presenta conceptos sobre programación concurrente y hilos. Explica que un hilo es un proceso que se ejecuta en el sistema operativo y que permiten dividir tareas complejas en subtareas concurrentes. Describe métodos para crear, detener y sincronizar hilos. Finalmente, presenta el problema clásico de los filósofos comensales como ejemplo de uso de recursos compartidos y sincronización entre hilos.
Las ventajas de los hilos en Java incluyen que toman menos tiempo para crear y cerrar que los procesos, permiten una comunicación más sencilla entre tareas, y pueden ejecutar múltiples tareas simultáneamente para obtener resultados más rápidos. Las desventajas son que cuando un hilo realiza una llamada al sistema, bloquea a todos los demás hilos del proceso; una mala sincronización entre hilos puede causar inconsistencia de datos; y los hilos dependen más del programa principal que los procesos para recursos.
Este documento trata sobre la programación avanzada de subprocesos en Java. Explica que un subproceso es similar a un programa secuencial con un inicio, secuencia y fin. Luego describe tres tipos de subprocesos: embebidos, reusables y múltiples. Finalmente, detalla el ciclo de vida de un subproceso y las clases relacionadas como Thread y Runnable.
El documento describe los conceptos de procesos e hilos. Explica que los procesos son programas en ejecución gestionados por el sistema operativo y que pueden estar en diferentes estados como ejecución, bloqueado o listo. También describe los cinco estados típicos de un proceso. Luego, explica que los hilos permiten la ejecución concurrente de tareas dentro de un proceso y los desafíos de la programación concurrente. Por último, presenta dos problemas clásicos de comunicación entre procesos: el problema de la cena de los fil
Un hilo es la unidad más pequeña de procesamiento que puede ser programada por un sistema operativo. Los hilos permiten que una aplicación realice múltiples tareas de forma concurrente compartiendo recursos como memoria y archivos. Los hilos dentro de un mismo proceso comparten todos los recursos, lo que les permite modificarlos y acceder a los cambios instantáneamente. Los hilos son más livianos que los procesos, lo que los hace más eficientes para la comunicación y ejecución concurrente dentro de una aplicación.
Este documento resume los diferentes tipos de sistemas operativos, incluyendo sistemas monoprogramados por lotes y por tiempo compartido, políticas de planificación del procesador, recursos lógicos ofrecidos por el SO, sistemas operativos por capas, sistemas acoplados débil y fuertemente, uso de semáforos, sistemas multihilos y consecuencias de usar una política LIFO para gestionar la cola de procesos bloqueados asociados a un semáforo.
El documento describe los conceptos de procesos e hilos en sistemas operativos. Explica que un proceso incluye un espacio de direcciones virtuales y un flujo de ejecución, mientras que un hilo es la unidad de planificación y ejecución. También discute los modelos de procesos monohilo y multihilo, y los beneficios de usar múltiples hilos dentro de un proceso.
Este documento trata sobre programación concurrente con Java. Explica conceptos clave como threads, locks y monitores. Detalla cómo Java soporta la ejecución paralela de múltiples threads que comparten recursos como memoria. También cubre temas como sincronización, wait/notify, y reglas para garantizar la corrección de programas concurrentes.
Este documento describe conceptos clave relacionados con procesos cooperativos y comunicación entre procesos en sistemas operativos. Explica que los procesos pueden ser independientes o cooperativos si comparten datos u objetivos. También describe varios métodos para la comunicación entre procesos, como la comunicación directa e indirecta a través de mensajes y buzones. Además, aborda conceptos como la sincronización, los hilos de usuario y kernel, y soluciones para garantizar la exclusión mutua en las secciones críticas.
Este documento celebra el 10o aniversario de la revista AtixLibre. Explica que mantener un proyecto a largo plazo es difícil, pero que AtixLibre ha logrado mantener su compromiso de compartir conocimiento de forma libre. También destaca que han aprendido mucho durante este tiempo y han podido cumplir su objetivo de dejar una huella en las vidas de otras personas a través de su contenido educativo.
Este documento celebra el 10o aniversario de la revista AtixLibre. Explica que mantener un proyecto a largo plazo es difícil, pero que AtixLibre ha logrado mantenerse firme en su misión de compartir conocimiento de forma libre. También destaca que a lo largo de los años, tanto los autores como los lectores de la revista han aprendido mucho, y que AtixLibre ha cumplido su objetivo de dejar una huella en las vidas de otras personas a través de la difusión del conocimiento.
Este documento introduce los conceptos básicos de la programación multihilo en Java, incluyendo la creación de hilos que extienden la clase Thread o implementan la interfaz Runnable, los diferentes estados de un hilo, y cómo sincronizar el acceso a recursos compartidos para evitar errores. También explica la planificación de hilos y la asignación de prioridades.
El documento describe conceptos básicos sobre procesos y sistemas operativos, incluyendo las definiciones de proceso, estados de procesos, control de procesos, hilos, y principios de concurrencia. Explica que un proceso es una instancia de ejecución de un programa y puede estar en estados como activo, preparado, bloqueado o suspendido. También cubre temas como la creación de jerarquías de procesos, la protección del sistema operativo a través de modos de privilegio, y los desafíos de la concurrencia al
Este documento presenta una introducción a los hilos (threads) en Java, el framework de ejecutores y CompletableFutures. Explica conceptos clave como concurrencia vs paralelismo, estados de los hilos, creación y ejecución de hilos, sincronización, wait/notify y join. También describe las interfaces del framework de ejecutores, factories de ejecutores y el uso de futures. Finalmente, introduce CompletableFutures, explicando cómo ejecutar tareas asíncronas y métodos de composición.
Este documento describe los principales componentes de los sistemas de telecomunicaciones, incluyendo fibras ópticas, receptores y transmisores ópticos, conectores, técnicas de empalme, sistemas de microondas, radiofrecuencia, satelitales, telefonía celular y convencional, y sistemas digitales. Explica cómo los sistemas de telecomunicaciones permiten la transmisión de información de un lugar a otro a través de varios medios, y los elementos clave que componen estos sistemas como emisores, receptores,
El documento define la usabilidad como la medida en la que un producto puede ser utilizado por usuarios específicos para alcanzar objetivos específicos de manera efectiva, eficiente y satisfactoria en un contexto de uso específico. Explora las definiciones de usabilidad según varios autores e instituciones y los factores que influyen en la usabilidad como el diseño de páginas web, tiempos de respuesta y vinculación.
La metodología de auditoría incluirá visitar al cliente para explicar el propósito y cronograma de la auditoría. Se elaborará un plan de auditoría y cuestionario para evaluar los servicios del laboratorio de informática en la escuela primaria "Justo Sierra". La auditoría evaluará el laboratorio mediante encuestas y listas de verificación, e identificará áreas que carecen de elementos necesarios como iluminación adecuada, ventilación, extintores y una buena distribución de equipos de cómputo.
El documento presenta las actividades que se llevarán a cabo para la instalación de una red, incluyendo la administración, planeación, control y ejecución del proyecto, así como el pre-diseño, diseño y elaboración de la red. Se describen las tareas de inicio, objetivos, alcance, roles, comunicación, riesgos, cronograma y calidad, así como el análisis del espacio, materiales, servidor, seguridad, topología, cableado e instalación.
Este documento describe las principales propiedades morfológicas de las fibras textiles como la finura, forma de la sección transversal y rizado, y cómo estas propiedades afectan el diseño textil. Explica que la finura se mide en dtex y cómo afecta la apariencia de la tela. También describe cómo la forma de la sección transversal, ya sea circular u otra forma, influye en las propiedades de flexibilidad de la fibra. Además, explica que el rizado de la fibra determina el aspecto final del tejido y su
La motivación es un estado interno que impulsa la conducta y se ve afectada por factores como las necesidades, deseos y razones de una persona. La inteligencia emocional incluye habilidades como el control de impulsos, la empatía y la perseverancia, que son fundamentales para la adaptación social. Un líder efectivo comprende que la motivación de los empleados depende de la retribución, la aceptación del grupo y la relación entre supervisores y subordinados.
El documento describe varias técnicas de motivación en el trabajo como brindar oportunidades de desarrollo, reconocer logros, mostrar interés por los empleados, dar variedad en tareas y oportunidades de relacionarse. También presenta teorías sobre motivación como la de Herzberg sobre factores higiénicos y motivadores y las tres necesidades de Maslow. Finalmente, define la calidad de vida laboral en términos de compromiso, competencia, costos y congruencia.
El documento describe las características del liderazgo transformador. Un líder transformador motiva e inspira a los demás a desarrollar su potencial y a liderar actividades que promueven el crecimiento de la organización. Este tipo de líder infunde valores para guiar las acciones de todos hacia una visión compartida y favorece la creatividad. Las estrategias de un líder transformador incluyen facilitar recursos, sensibilizar a los demás sobre la importancia de los resultados y hacer que se identifiquen con los objetivos de la organización.
C. Northcote Parkinson fue un historiador británico que formuló la Ley de Parkinson, la cual establece que (1) el trabajo se expande para llenar el tiempo disponible para su completado, (2) los gastos siempre aumentarán para igualar los ingresos, y (3) el tiempo dedicado a una tarea es inversamente proporcional a su importancia. La ley sugiere establecer fechas límites estrictas para evitar posponer tareas importantes.
La gestión del tiempo se refiere a habilidades, herramientas y técnicas para cumplir tareas, proyectos y metas. Incluye procesos como definir actividades, estimar recursos y duración, y desarrollar un cronograma. Las herramientas para gestionar el tiempo ayudan a establecer prioridades, supervisar el tiempo de manera eficiente, y tomar decisiones rápidas. Algunas herramientas clave son usar calendarios semanales y listas de tareas diarias, y evitar distracciones que roban tiempo
Este documento describe la autoestima y su importancia. Define la autoestima como la percepción evaluativa de nosotros mismos y explica que afecta nuestra manera de actuar y relacionarnos. Además, describe que la autoestima puede ser alta, baja o intermedia y que depende de factores como el autoconocimiento, la autovaloración y la aceptación. Finalmente, señala que la autoestima depende de la comparación entre la imagen real e ideal de uno mismo y entre los logros personales y las aspiraciones.
La administración del tiempo es administrar las propias actividades mediante la planificación y programación. Implica definir metas y tareas, asignar prioridades, establecer plazos y organizar las actividades diarias para mejorar el rendimiento y evitar problemas como el estrés y la falta de productividad. Los ladrones del tiempo como las interrupciones, internet y el correo electrónico pueden robar tiempo si no se los controla, por lo que se deben establecer límites y rutinas para enfocarse en cada tarea.
El documento presenta información sobre liderazgo, manejo de grupos, empatía, autoridad, poder, empowerment y coaching. Define conceptos clave como liderazgo, teorías de liderazgo, tipos de liderazgo, diferencia entre líder y jefe, empatía, diferencia entre poder y autoridad, empowerment y procesos de coaching.
Este documento trata sobre el liderazgo y manejo de grupos. Define el liderazgo como la capacidad de comunicarse e influir en un grupo para dirigirlos hacia el cumplimiento de objetivos comunes. Explica diferentes tipos de liderazgo como el autoritario, complaciente, por conveniencia e independiente. También distingue entre un jefe y un líder, señalando que un líder sirve al grupo de forma comprometida mientras que un jefe ejerce autoridad de manera rígida. Además, presenta la rejilla administr
Este documento trata sobre el tema del liderazgo y la dirección de equipos. Define el liderazgo y diferencia entre jefe y líder. Explica los tipos de liderazgo según Max Weber como autocrático, participativo y liberal. También describe la rejilla gerencial de Blake y Mouton y conceptos como la empatía, poder vs autoridad, empowerment y coaching. El objetivo es explicar las características de un buen líder y cómo dirigir equipos de alto rendimiento.
El proyecto de desarrollo de una aplicación para la gestión de clases y servicios educativos tuvo un costo final de $462,504, superando el presupuesto previsto de $37,000 debido principalmente a un mayor número de horas de trabajo y costos de suministros de lo estimado inicialmente. El proyecto se completó según lo programado.
El cronograma detalla las actividades de un proyecto de software de mayo a agosto, incluyendo el reconocimiento del tema, el alcance del proyecto, la elaboración del acta de inicio, el chárter, la descripción de objetivos y más, concluyendo con la entrega de la documentación y el sistema en julio y agosto.
1. El documento describe varios conceptos clave relacionados con la planificación y gestión de proyectos como planeación, alcance del proyecto, estructura de desglose de trabajo, diccionario, cronograma, listado de actividades, diagrama de Gantt, gestión de costos, gestión de calidad y gestión de recursos humanos.
2. Incluye ejemplos detallados de cada concepto para proporcionar más contexto.
3. El documento parece ser una guía o manual para la planificación y ejecución exitosa de pro
Este documento describe el sistema de cableado estructurado (SCS), incluyendo que provee una infraestructura flexible para soportar múltiples sistemas de manera organizada. Explica tres reglas clave para proyectos de diseño de cableado como buscar una solución completa, planificar el crecimiento futuro, y mantener la libertad de elección de proveedores. También resume varias normas ANSI vigentes para cableado estructurado y los seis componentes funcionales identificados en el estándar ANSI/TIA/EIA 568-B
El documento describe los componentes clave de un sistema de cableado estructurado, incluyendo la infraestructura de cables, los estándares y subsistemas. Un sistema de cableado estructurado consiste en una red flexible de cables que puede soportar múltiples sistemas y tecnologías actuales y futuras de acuerdo a los estándares de la industria.
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...AMADO SALVADOR
El catálogo general de electrodomésticos Teka presenta una amplia gama de productos de alta calidad y diseño innovador. Como distribuidor oficial Teka, Amado Salvador ofrece soluciones en electrodomésticos Teka que destacan por su tecnología avanzada y durabilidad. Este catálogo incluye una selección exhaustiva de productos Teka que cumplen con los más altos estándares del mercado, consolidando a Amado Salvador como el distribuidor oficial Teka.
Explora las diversas categorías de electrodomésticos Teka en este catálogo, cada una diseñada para satisfacer las necesidades de cualquier hogar. Amado Salvador, como distribuidor oficial Teka, garantiza que cada producto de Teka se distingue por su excelente calidad y diseño moderno.
Amado Salvador, distribuidor oficial Teka en Valencia. La calidad y el diseño de los electrodomésticos Teka se reflejan en cada página del catálogo, ofreciendo opciones que van desde hornos, placas de cocina, campanas extractoras hasta frigoríficos y lavavajillas. Este catálogo es una herramienta esencial para inspirarse y encontrar electrodomésticos de alta calidad que se adaptan a cualquier proyecto de diseño.
En Amado Salvador somos distribuidor oficial Teka en Valencia y ponemos atu disposición acceso directo a los mejores productos de Teka. Explora este catálogo y encuentra la inspiración y los electrodomésticos necesarios para equipar tu hogar con la garantía y calidad que solo un distribuidor oficial Teka puede ofrecer.
La inteligencia artificial sigue evolucionando rápidamente, prometiendo transformar múltiples aspectos de la sociedad mientras plantea importantes cuestiones que requieren una cuidadosa consideración y regulación.
KAWARU CONSULTING presenta el projecte amb l'objectiu de permetre als ciutadans realitzar tràmits administratius de manera telemàtica, des de qualsevol lloc i dispositiu, amb seguretat jurídica. Aquesta plataforma redueix els desplaçaments físics i el temps invertit en tràmits, ja que es pot fer tot en línia. A més, proporciona evidències de la correcta realització dels tràmits, garantint-ne la validesa davant d'un jutge si cal. Inicialment concebuda per al Ministeri de Justícia, la plataforma s'ha expandit per adaptar-se a diverses organitzacions i països, oferint una solució flexible i fàcil de desplegar.
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaAMADO SALVADOR
Descubra el catálogo completo de buzones BTV, una marca líder en la fabricación de buzones y cajas fuertes para los sectores de ferretería, bricolaje y seguridad. Como distribuidor oficial de BTV, Amado Salvador se enorgullece de presentar esta amplia selección de productos diseñados para satisfacer las necesidades de seguridad y funcionalidad en cualquier entorno.
Descubra una variedad de buzones residenciales, comerciales y corporativos, cada uno construido con los más altos estándares de calidad y durabilidad. Desde modelos clásicos hasta diseños modernos, los buzones BTV ofrecen una combinación perfecta de estilo y resistencia, garantizando la protección de su correspondencia en todo momento.
Amado Salvador, se compromete a ofrecer productos de primera clase respaldados por un servicio excepcional al cliente. Como distribuidor oficial de BTV, entendemos la importancia de la seguridad y la tranquilidad para nuestros clientes. Por eso, trabajamos en colaboración con BTV para brindarle acceso a los mejores productos del mercado.
Explore el catálogo de buzones ahora y encuentre la solución perfecta para sus necesidades de correo y seguridad. Confíe en Amado Salvador y BTV para proporcionarle buzones de calidad excepcional que cumplan y superen sus expectativas.
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...AMADO SALVADOR
Descarga el Catálogo General de Tarifas 2024 de Vaillant, líder en tecnología para calefacción, ventilación y energía solar térmica y fotovoltaica. En Amado Salvador, como distribuidor oficial de Vaillant, te ofrecemos una amplia gama de productos de alta calidad y diseño innovador para tus proyectos de climatización y energía.
Descubre nuestra selección de productos Vaillant, incluyendo bombas de calor altamente eficientes, fancoils de última generación, sistemas de ventilación de alto rendimiento y soluciones de energía solar fotovoltaica y térmica para un rendimiento óptimo y sostenible. El catálogo de Vaillant 2024 presenta una variedad de opciones en calderas de condensación que garantizan eficiencia energética y durabilidad.
Con Vaillant, obtienes más que productos de climatización: control avanzado y conectividad para una gestión inteligente del sistema, acumuladores de agua caliente de gran capacidad y sistemas de aire acondicionado para un confort total. Confía en la fiabilidad de Amado Salvador como distribuidor oficial de Vaillant, y en la resistencia de los productos Vaillant, respaldados por años de experiencia e innovación en el sector.
En Amado Salvador, distribuidor oficial de Vaillant en Valencia, no solo proporcionamos productos de calidad, sino también servicios especializados para profesionales, asegurando que tus proyectos cuenten con el mejor soporte técnico y asesoramiento. Descarga nuestro catálogo y descubre por qué Vaillant es la elección preferida para proyectos de climatización y energía en Amado Salvador.
3. Funcionamiento de hilos
• Todos los hilos se les asigna un tiempo de
ejecución apropiado y que todos aquellos
hilos que estén bloqueados o pausados no
consuman tiempo de CPU.
• En un ordenador con un solo procesador, un
programador de hilos gestiona una
alternancia rápida entre los hilos activos,
derivando en un comportamiento
entrecortado
• La asignación de tiempo para cada hilo está
en el orden de las decenas de milisegundos.
4. Hilos y procesos
• Todos los hilos dentro de una aplicación
están dentro de un proceso.
• La diferencia principal es que los procesos
están completamente aislados unos de otros
• los hilos comparten memoria con otros hilos
que pertenecen al mismo proceso
• Un hilo puede estar generando datos en un
segundo plano mientras que otro hilo
muestra los datos que van llegando.
5. Procesos y subprocesos
• Para que un proceso sea capaz de hacer
• algo, el proceso debe ser propietario de un hilo
(thread).
• Este thread es el responsable de ejecutar el
código contenido en el espacio de direcciones del
proceso.
• un proceso puede contener varios threads y todos
ellos ejecutando código “simultáneamente "en el
espacio de direcciones del proceso
6. • cada thread tiene su propia colección de
registros de la CPU y su propio stack (pila de
almacenamiento)
• threads se ejecutan concurrentemente al
asignar ‘rodajas de tiempo’ (time slices)
llamadas quantums a cada thread
alternativamente (y consecutivamente).
• cada quantum es de 15 milissegundos.
7. Administración de procesos
• Process es un componente que nos permite
• Iniciar
• detener
• controlar
• supervisar aplicaciones.
8. Administración de hebras y hilos
• El ámbito System.Threading proporciona en
la plataforma .NET las clases e interfaces
para escribir código multihebra.
• Cada hebra con un proceso
• Si el proceso crea más hebras, será
multihebra(multithreading)
9. Por que son útiles las hebras
• En primer lugar, cuando hay una tarea de
fondo. Imagine que quiere poner un logotipo
que gire en la parte superior izquierda del
formulario.
• En segundo lugar, cuando esta realizando
más de una tarea a la vez Podría dividir la
imagen en cuatro partes y ejecutar las
cuatro copias en la rutina de procesado de
imagen
10. La clase Thread
PROPIEDADES
• CurrentPrincipal
• CurrentThread
• IsAlive
• IsBackground
• Name
• Priority
• ThreadState
12. Control de las hebras
• Llame a su método Start() para comenzar la
ejecución
• Terminar una hebra puede llamar al método
Abort().
• Los métodos Suspend() y Resume() se pueden
utilizar para parar temporalmente la ejecución
de una hebra y a continuación reiniciarla de nuevo
• Sleep() se utiliza para poner una hebra a dormir
durante un periodo de tiempo, normalmente
especificado como un número de milisegundos.
13. Estados y prioridad de las hebras
La enumeración ThreadState, describe los posibles
estados que puede tener una hebra:
Elementos
• Aborted
• AbortRequested
• Background
• Running
• Stopped
• StopRequested
• Suspended
• SuspendRequested
• Unstarted
• WaitSleepJoin
14. • Un elemento de la enumeración ThreadPriority,
cuyos valores son:
Elemento
• Hightest
• AboveNormal
• Normal.
• BelowNormal
• Lowest
15. Sincronización de hebras
• compartidos y por la temporización.
• cada función de la hebra tiene su propio
conjunto de variables locales, puesto que las
variables locales se declaran en la pila
• variables locales no pueden interferir con
otras, porque se
• crean en diferentes pilas.
16. Las clases sin sincronización
• La clase Interlocked contiene cuatro métodos de
hebra segura compartidos para realizar
operaciones con variables
• estos métodos son atómicos, por lo que no se
pueden
• interrumpir por cambios de contexto de hebras:
• Increment: Incrementa una variable.
• · Decrement: Disminuye una variable.
• · Exchange: Pone una variable a un valor y
devuelve el valor original.
• · CompareExchange: Compara dos valores y
reemplaza el valor destino si son iguales
17. ¿Qué es multithreading?
• El multithreading es manejado internamente por
un programador de threads, una función que el
CLR típicamente delega el sistema operativo.
• Un programador de threads se asegura que
todos los threads activos se encuentren
apropiadamente dispuestos en tiempo de
ejecución, y que los threads que se encuentran
bloqueados - por ejemplo por un bloqueo
exclusivo, o esperando una entrada del usuario -
no consuman recursos de tiempo del CPU.
18. Threads vs. Procesos
• Todos los threads de una aplicación se
encuentran contenidos en proceso – la unidad
del sistema operativo en la cual una aplicación
corre.
• Los threads tiene ciertas similitudes con los
procesos – por ejemplo los procesos corren bajo
time-sliced con otros procesos en la
computadora de un modo similar a los threads
en una aplicación C#.
19. • La principal diferencia es que los procesos se
encuentran totalmente aislados de otros
procesos, mientras que los threads comparten el
montículo de memoria (heap) con otros threads
de la misma aplicación.
• Esto hace que los threads sean muy útiles: un
thread puede recuperar datos en segundo plano,
mientras que otro thread va mostrando los datos
mientras llegan.
20. ¿Cuándo utilizar Threads?
• Una aplicación común para el multithreading es
la ejecución en segundo plano de tareas que
consumen mucho tiempo. El thread principal se
mantiene corriendo mientras que el thread que
realiza la operación funciona en segundo plano.
• En aplicaciones Windows Forms, si el thread
principal realiza operaciones largas, los mensajes
del teclado y el mouse no pueden ser
procesados, como resultado la aplicación deja de
responder.
21. • Por esta razón es bueno hacer que las tareas que
insumen mucho tiempo funcionen en threads de
trabajo y en todo caso el thread principal puede
mostrar el diálogo modal “Procesando… espere
por favor” en caso que el programa no pueda
continuar hasta que la tarea termine.
• Esto asegura que la aplicación no sea tomada
por el sistema operativo como "No responde"
incitando al usuario a forzar la finalización del
proceso!
• El diálogo modal permite implementar un botón
"Cancelar" ya que el diálogo continúa recibiendo
eventos mientras que la tarea es realizada por el
hilo trabajador.
22. • En el caso de las aplicaciones in interfaz gráfica,
como los servicios de Windows, el
multithreading toma particular importancia
cuando una tarea es potencialmente
consumidora de tiempo porque se encuentra a la
espera de la respuesta de otra computadora
(como un servidor de aplicaciones, un servidor
de base de datos, o un cliente).
• Tener un thread trabajador realizando dicha
tarea significa que el thread que lo instancia se
encontrará inmediatamente libre para hacer
otras cosas.
23. • Otra aplicación del multithreading es utilizarlo en
métodos que realizan cálculos intensivos. Tales
métodos pueden ejecutarse más rápido en
computadoras con múltiples procesadores si la
carga de trabajo es dividida en múltiples threads.
• La cantidad de procesadores puede obtenerse
por medio de la propiedad
Environment.ProcessorCount.
24. • Una aplicación C# puede convertirse en multi
thread de dos maneras:
• Creando explícitamente threads adicionales, o
utilizando características del framework .NET
que implícitamente crean threads – como
BackgroundWorker, thread pooling, un threading
timer, un Remoting server, o un Web Services o
una aplicación ASP.NET.
• En estos últimos casos no se tiene control del
multithreading.
25. ¿Cuándo no utilizar Threads?
• El multithreading posee desventajas. La más
grande es que implica mayor complejidad en los
programas. La creación de una aplicación
multiples threads no es compleja, la complejidad
se encuentra en la interacción entre los threads.
• Esto es así cuando la interacción es válida o no, y
puede derivar en largos procesos de desarrollo y
la consecuente susceptibilidad de intermitentes
y difícilmente reproducibles bugs.
26. • Por esta razón es recomendable mantener el
diseño de la interacción entre los múltiples
threads simple – o no utilizar multithreadingl – a
menos que tangas una peculiar inclinación por
re-ecribir y debuggear!
27. • El multithreading también implica consumo de
recursos y costo de CPU en crear y cambiar entre
threads si es utilzado en exceso.
• En particular, cuando implica pesados procesos
de lectura/escritura a disco, puede ser más
rápido tener uno o dos threads trabajadores
realizando las tareas en secuencia en lugar de
tener múltiples threads trabajando en
simultáneo.
28. Creando e iniciando Threads
• Los threads utilizando el constructor de la clase
Thread, pasándole un delegado del tipo
ThreadStart– indicando el método desde donde
debe iniciar la ejecución. Aquí vemos la definición
del delegado ThreadStart:
• public delegate void ThreadStart();
• Llamando al método Start logramos que la ejecución
comience. El thread continúa hasta que su método
retorne, en este punto el thread finaliza.
29. • Aquí vemos un ejemplo utilizando la sintaxis larga
de C# para crear el delegado TheadStart:
• class ThreadTest
{
static void Main()
{
Thread t = new Thread (new ThreadStart (Go));
t.Start();
new thread.Go(); // Corre
simultaneamente Go() en el thread principal.
}
static void Go()
{
Console.WriteLine ("hello!");
}
30. • Se puede crear un thread de un modo más
conveniente utilizando la sintaxis corta de C#
para instanciar delegados:
• static void Main()
{
Thread t = new Thread (Go); // No es
necesario utilizar explícitamente ThreadStart
t.Start();
...
}
static void Go()
{
...
}
31. • En este caso el delegado ThreadStart es inferido por el
compilador. Otro método es utilizar un método anónimo
para iniciar un thread:
• static void Main()
{
Thread t = new Thread (delegate()
{
Console.WriteLine ("Hello!");
}
);
t.Start();
}
• Un thread tiene su propiedad IsAlive en valor true
después de llamar a su método Start(), hasta que el
thread finaliza. Una vez finalizado un thread no puede
ser re-iniciado.
32. Pasando datos a ThreadStart
• En ejemplo de arriba queremos distinguir mejor
la salida de cada thread, por ejemplo haciendo
que uno de ellos imprima en mayúscula.
• Podemos lograr esto pasando un flag al método
Go: pero no podemos usar el delegado
ThreadStart porque no acepta argumentos.
Afortunadamente en framework .NET define otra
versión del delegado llamada
ParameterizedThreadStart, la cual acepta un
objeto como parámetro del siguiente modo:
33. • public delegate void ParameterizedThreadStart (object obj);
• Entonces el ejemplo previo se ve así:
• class ThreadTest
{
static void Main()
{
Thread t = new Thread (Go);
t.Start (true);
Go (true)
Go (false);
}
static void Go (object upperCase)
{
bool upper = (bool) upperCase;
Console.WriteLine (upper ? "HELLO!" : "hello!");
}
}
•
hello!
HELLO!
34. • En este ejemplo el compilador infiere automáticamente el
delegado ParameterizedThreadStart porque el método Go
acepta un objeto como argumento.
• Podríamos haberlo escrito:
Thread t = new Thread (new ParameterizedThreadStart (Go));
t.Start (true);
35. Nombrando Threads
• Se puede asignar nombre a un thread a través de
su propiedad Name. Esto es de gran beneficio en
la depuración: y también permite hacer
Console.WriteLine nombre del thread, Microsoft
Visual Studio recoge el nombre del thread y lo
muestra en la barra de herramientas Debug
Location.
• Podemos nombrar un thread en cualquier
momento, pero sólo una vez, en caso de intentar
cambiar el nombre de un thread obtendremos
como resultado una excepción.
36. • También podemos asignarle nombre al thread principal de la aplicación,
en el siguiente ejemplo hacemos esto a través de la propiedad estática
CurrentThread:
class ThreadNaming
{
static void Main()
{
Thread.CurrentThread.Name = "main";
Thread worker = new Thread (Go);
worker.Name = "worker";
worker.Start(); Go();
}
static void Go()
{
Console.WriteLine ("Hello from " + Thread.CurrentThread.Name);
}
}
•
Hello from main
Hello from worker
37. Threads en primer y segundo
plano
• Por defecto los threads corren en primer plano,
esto quiere decir que la aplicación siguirá
corriendo mientras que alguno de sus threas se
encuentre activo.
• C# soporta threads en segundo plano
(background threads) los cuales no mantiene la
aplicación corriendo por si mismo, sino que
terminan inmediatamente cuando la aplicación
finaliza.
38. • Cambiar un thread de primer a segundo plano
no cambiar su estado o prioridad en la
planificación del CPU de ninguna manera.
La propiedad IsBackground del thread controla el
modo de ejecución como en el siguiente
ejemplo:
39. • class PriorityTest
{
static void Main (string[] args)
{
Thread worker = new Thread (delegate() {
Console.ReadLine();
});
if (args.Length > 0) worker.IsBackground = true;
worker.Start();
}
}
40. • Si llamamos al programa sin pasarle argumentos
el thread de trabajo corre en su modo por
defecto de primer plano y esperará en la
instrucción ReadLine hasta que el usuario
presione Enter. Mientras tanto el thread
principal deja de existir pero la aplicación sigue
corriendo porque existe un thread en primer
plano todabía vivo.
• Por otro lado, si un argumento es pasado al
thread principal (Main()) el thread de trabajo es
ejecutado en segundo plano y el programa deja
de existir cuando el thread principal termina,
finalizando la instrucción ReadLine.
41. • Cuando un hilo en segundo plano termina de
este modo, todos los bloques finally son
ignorados. Ya que no es deseable ignorar los
bloques finally es una buena práctica esperar a
que todos los threads de trabajo terminen antes
de finalizar la aplicación – posiblemente con un
timeout (esto puede lograrse utilizando
Thread.Join). Si por alguna razón un thread
renegado nunca termina, podemos intentar
abortarlo, y si esto falla, abandonar el thread
permitiendo que muera con el proceso.
42. • Tener threads en segundo plano puede ser
beneficioso, por la razón que es posible que el
último diga cuando la aplicación debe terminar.
Consideremos la alternativa - un thread en
primer plano que no muere - evitando que la
aplicación termine. Un thread en primer plano
olvidado es particularmente dañino en
aplicaciones Windows Form, porque la
aplicación aparentará terminar (el menos para el
usuario) pero el proceso continuará corriendo.
43. Preguntas…
• ¿Qué es un proceso y subproceso?
• ¿Qué es un thread?
• ¿Cuál es la diferencia entre estos dos?
• ¿Qué librería se utiliza para poder usar threads?
• ¿Cuáles son algunas de las propiedades de la clase thread?
• ¿Cuándo utilizamos los threads?
• ¿Cuándo no es necesario utilizar threads?
• ¿Qué es multithreading?
• ¿Cuáles son algunos estados y prioridades de los threads?
• Cuando creamos un thread ¿Qué tiempo es asignado para
cada hilo?