Concurrencia..

Slides:



Advertisements
Presentaciones similares
Sistema computacional Por Salvador Aguilar Gómez.
Advertisements

¿Que es PHP? PHP Hypertext Preprocessor Y solo porque me quiero hacer el profesor cool y meter un chiste: PHP también significa: Para Hacer Páginas.
INTRODUCCION A LOS SISTEMAS DE COMPUTO ARQUITECTURA VON NEUMAN Ing. David Gonzalez.
ALUMNO: NORMA DOLORES ILLESCAS CANALIZO. GRUPO:503 CECYTEM TEPOTZOTLAN. Procesador de un servidor.
Paul Leger Modelo OSI Paul Leger
Generalidades. Introducción a los procesos
Proceso: Una instancia de un programa en ejecución
Programación Concurrente y Paralela (PCyP) Dr
“Los Sistemas Operativos”
SOFTWARE Se forma por el conjunto de instrucciones o programas. Los programa son una secuencia de órdenes que se le dan a la computadora para que haga.
Mecanismos de Comunicación usando Paso de Mensajes
Procesos Concurrentes
SISTEMAS DE E/S Es la colección de interfaces que usan las distintas unidades funcionales de un sistema de procesamiento de información para comunicarse.
Programación Orientada a Objetos
Sistemas Distribuidos
MODELO CLIENTE -SERVIDOR
LENGUAJES Y REPRESENTACION TECNICA
Comunicación de redes informáticas
El hardware y el software
HILOS EN SISTEMAS DISTRIBUIDOS
EQUIPO No 3.
TECNOLOGÍAS DE LA INFORMACIÓN Y DE LA COMUNICACIÓN (TIC’S)
COMPUTADORA Una computadora es una colección de circuitos integrados  y otros componentes relacionados que puede ejecutar con exactitud, rapidez y de.
Comunicación Serial: Conceptos Generales
Software Es intangible, existe como información, ideas, conceptos, símbolos, pero no ocupa un espacio físico, se podría decir que no tiene sustancia. Se.
LÓGICA DE PROGRAMACIÓN
Sistemas Operativos Ing. Jhonnathan Quintero V.
QUE ES EL SOFTWARE Es un conjunto de programas de computo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones.
DULCE BRIANDA CUESTA ESCOBAR ANAYELY HERNANDEZ GUILLEN
PROCESOS COMENZAR.
Salvador Arteaga Gracia
CONCEPTOS PRELIMINARES (Cont)
SOL GUTIÉRREZ Y MARIANA HEINTZ 4°C Prof. Gustavo price
TIC TECNOLOGIAS DE LA INFORMACION Y LA COMUNICACION
EL SISTEMA OPERATIVO Es un conjunto de programas hechos para la ejecución de varias tareas, en las que sirve de intermediario entre el usuario y la computadora.
A RQUITECTURA C LIENTE - SERVIDOR La arquitectura del cliente servidor se divide en dos partes Los promovedores de recursos o servicios llamados servidores.
INGENIERÍA INFORMÁTICA Y DE SISTEMAS Docente: Mg Ing. Jesús Ocaña Velásquez ARQUITECTURA DEL COMPUTADOR.
UNIVERSIDAD DEL VALLE Docente: MsC. Cinthya Irene Rosales Martinez Facultad de Ingeniería Lenguajes de Programación.
ESTRUCTURA DE S.OPERATIVO
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS.
Curso: fundamentos de redes Profesor: Miguel farfan Sesion: 03
Fundamentos de la Programación I
MIDDLEWARE Y PROGRAMACION WEB DISTRIBUIDA. ¿ QUE ES MIDDLEWARE?
“Conceptos Básicos de Java”
Estructura de Sistemas Operativos CAMPOS CHACALTANA, ANTHONY.
Estructura de los sistemas Operativos 1. Componentes de un sistema operativo  Administración de procesos  Administración de memoria  Subsistema de Entrada/Salida.
Estructura de los Sistemas Operativos Alumna:Arratea Almeyda Aracelli.
EJECUCION PARALELA THREADS Y FIBERS
Características de los Sistemas Operativos
1 TEMA 10. SISTEMAS OPERATIVOS DISTRIBUIDOS Introducción Hardware Software Aspectos de diseño.
Gestión del sistema de entrada / salida
Procesos Lic. Gonzalo Pastor.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS CHACALIAZA BOZA MARGARET AMARLLY.
Estructura de los SISTEMAS OPERATIVOS.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS
ESTRUCTURA DE SISTEMAS OPERATIVOS - ROY CANEPA JUAN FABIO
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS CHACALIAZA BOZA MARGARET AMARLLY.
Estructura de Sistemas Operativos
Ha llegado el momento de dar una mirada al interior de los Sistemas Operativos. En las siguientes secciones examinaremos cuatro estructuras distintas.
ESTRUCTURA DE LOS SISTEMAS OPERATIVOS. Estos sistemas no tienen una estructura definida, sino que son escritos como una colección de procedimientos donde.
Conjunto de programas contenidos en un núcleo o kernel que efectúan la gestión de los procesos básicos de un Sistema informático, y permite la normal.
Estructura de los Sistemas Operativos
Estructura de los Sistemas Operativos por: Omar Saravia Tasayco
SISTEMAS OPERATIVOS Estudiante: Rojas De la Cruz Jesus Manuel. Ciclo: VI. Turno: Noche.
Hilos de Procesamiento. Hilos Concepto Beneficios Hilos a nivel kérnel y a nivel usuario Modelos multihilos Hilos de Solaris 2 Hilos de Java.
Creación de un servicio web con RMI 3Unidad N°. comprende el funcionamiento de un servicio web con RMI de manera eficiente y responsable. Logro.
Transcripción de la presentación:

Concurrencia.

Importancia de la Concurrencia. Para capturar la estructura lógica de algunos problemas. Para cooperar entre varias máquinas físicas. Para incrementar el desempeno corriendo más de un procesador simultáneamente. Muchos programas, particularmente servidores y aplicaciones gráficas, deben mantener el hilo de varias tareas independientes al mismo tiempo. Por tanto, usualmente la forma más natural de estructurar estos programas es a través de hilos separados de control; de allí que el uso de la concurrencia sea indispensable. Algunos programas son concurrentes por necesidad. Un sistema operativo puede ser interrumpido por un artefacto externo en casi todo momento. Por tanto, se necesita de un contexto que represente lo que se estaba haciendo antes de la interrupción, para reanudar las tareas luego de que se atienda la misma. Cada procesador tiene su hilo de control, que debe interactuar con los de los otros procesadores en aras de culminar la tarea general.

Precedentes de la Concurrencia. La concurrencia no es una nueva idea. Los primeros desarrollos teóricos surgen en la década de los 60'. Algol-68 incluye algunas características de la programación concurrente. La concurrencia surge por la necesidad de evitar que el procesador se mantuviera ocioso. El interés por la concurrencia comienza cuando se comenzaron a producir multiprocesadores a bajo costo, lo que permitía físicamente ejecutar distintas tareas de forma simultánea. El procesamiento lineal deja al procesador ocioso durante mucho tiempo. Por ejemplo, cuando las tareas de entrada-salida son muy grandes en comparación con las de cómputo, el procesador pierde mucho tiempo esperando por datos que introduce el usuario, mientras que trabajando con concurrencia, se deja la tarea de lectura en espera (mientras se termina de introducir los datos) y continúa con otra tarea que tenga pendiente. Para leer o escribir registros, el programa que está corriendo cede el control a sistema operativo, quien envía el comando al aparato externo de comenzar la operación requerida, y entonces transfiere el control inmediatamente a otro programa.

Los Programas Multihilos. La concurrencia permite conservar la estructura lógica de este tipo de programas. La semántica de la simulación de eventos discretos requieren que los eventos ocurran atómicamente en puntos fijos de tiempo. Los programas multihilos han surgido en los últimos anos con la creación de aplicaciones Web, ya que éstas requieren esta estructura lógica. La Entrada-Salida interactiva es un caso en el que es pertinente la concurrencia, ya que la misma interrumpe la ejecución del programa que está corriendo. Los juegos de video, por ejemplo, debemos manejar los movimientos de mouse y golpes de tecla para actualizar continuamente la imagen en la pantalla. En las simulaciones de eventos discretos se usa la concurrencia para representar las entidades activas de algún sistema del mundo real. En navegadores como Netscape o Internet Explorer hay muchos hilos corriendo simultáneamente, donde cada uno de ellos se debe comunicar con un servidor remoto muchas veces antes de completar su tarea.

Arquitectura de los Multiprocesadores. Las computadoras que trabajan con concurrencia se dividen en dos grandes grupos: Multicomputadores. Multiprocesadores. No resulta lo mismo hablar de un multicomputador que de una simple colección de computadores. Los multiprocesadores pueden ser simétricos (si comparten poca memoria) o de arquitectura de memoria distribuida (si comparten mucha). Los multicomputadores son aquellos que se comunican entre sí a través del envío de mensajes, mientras que los multiprocesadores comparten espacios de memoria unos con otros. La diferencia entre los multicomputadores y una colección de computadores en una red está en que los primeros están más estrechamente emparejados entre sí, y por tanto las interconexiones físicas son más cortas. Además, todos los entes de un multicomputador comparten un mismo sistema operativo. Los multiprocesadores simétricos se llaman así porque la memoria que comparten está se encuentra equidistante de todos los procesadores; esta arquitectura se utiliza en multiprocesadores que comparten poca memoria. En la arquitectura de memoria distribuida, cada banco de memoria está físicamente adyacente a un procesador en particular. Cada procesador puede acceder a la memoria de otro, pero la memoria local es mucho más rápida.

Fundamentos de la Programación Concurrente. Los conceptos Concurrencia y Corrutina no significan lo mismo. El término Paralelismo caracteriza los programas concurrentes cuya ejecución ocurre en más de un contexto a la vez. Los hilos (threads) de un programa dado son implementados en el tope de uno o más procesos proveídos por el sistema operativo. Cuando hablamos de corrutinas, nos referimos a varias rutinas que están corriendo al mismo tiempo; sin embargo, dichas rutinas no están activas simultáneamente, es decir, cuando una está activa, la(s) otra(s) está(n) inactivas. Por esta razón el concepto de corrutina no es equivalente al de concurrencia.

Fundamentos de la Programación Concurrente. En cualquier modelo de programación concurrente es necesario considerar dos conceptos: Comunicación. Los mecanismos de comunicación en lenguajes imperativos está basado en compartimiento de memoria y pase de mensajes. Sincronización. Generalmente va implícita en el pase de mensajes. La comunicación en la concurrencia se refiere a cualquier mecanismo que permita que un hilo de ejecución pueda obtener información de otro. En el modelo de programación con memoria compartida, algunas o todas las variables del programa están accesible para múltiples threads. Para que un par de threads se comuniquen, uno de ellos escribe un valor en la variable, y el otro simplemente la lee. En el modelo de programación con pase de mensajes, un thread debe ejecutar una operación explícita de envío para transmitir data a otro. La sincronización se refiere a cualquier mecanismo que permita que el programador controle el orden en que las operaciones ocurran en distintos threads. En los modelos de pase de mensajes, la sincronización va implícita: un mensaje debe ser enviado antes de ser recibida. Para sincronizar en un modelo de memoria compartida, se debe especificar que una variable no puede ser leída antes de que sea escrita por el otro thread.

Lenguajes y Librerías. La concurrencia puede ser proveída al programador de tres formas: En forma de lenguajes explícitamente concurrentes. Extensiones de lenguajes secuenciales. Paquetes de librerías fuera del lenguaje. Actualmente, las últimas dos alternativas son las más frecuentes en los programas concurrentes.

Creación de Hilos. Una implementación del lenguaje que provea un número fijo de hilos es muy restrictiva. La mayoría de los sistemas concurrentes permiten que el programador cree hilos a tiempo de corrida. Los detalles de sintaxis y semántica varían mucho entre lenguajes. Hay seis opciones para la sintaxis de la creación de hilos. Co-begin. Parallel-loops (ciclos paralelos). Launch-at-elaboration. Fork(con “join” opcional). Implicit receipt. Early Reply. Algol-68 usa co-begin. Occam usa tanto co-begin como parallel loops. HPF usa sólo parallel loops, Ada usa launch-at-elaboration y fork. Modula3 y Java usan fork/join. Los sistemas RPC emplean implicit receipt. La corutina detach de Simula puede considerarse como una forma de early-reply.

Implementación de los Hilos. Hay dos formas de concebir la implementación de los threads: Usar un proceso del S.O. para cada thread. Colocar todos los threads de un programa en el tope de un solo proceso. Comunmente, los lenguajes adoptan una posición intermedia: corren un gran número de hilos de ejecución en el tope de unos pocos procesos. El problema de emplear un proceso para cada thread está en que resulta muy costoso en muchos sistemas operativos. Esta implementación es aceptable para computadores personales con procesos poco costosos. Con la otra forma de tratar la implementación de los threads hay dos problemas: Imposibilita la ejecución paralela en un multiprocesador. Si el thread que esté corriendo hace una llamada a sistema y se bloquea, entonces los demás threads no pueden correr porque el proceso es suspendido por el S.O.