Diferencia entre revisiones de «Programación Imperativa»

m (Texto reemplazado: «<div align="justify">» por «»)
 
(No se muestran 4 ediciones intermedias de 2 usuarios)
Línea 3: Línea 3:
 
|imagen=Proc.JPG
 
|imagen=Proc.JPG
 
|descripcion=conjunto de [[técnica]]s y notaciones que sirven para expresar el [[paralelismo]] potencial en los programas
 
|descripcion=conjunto de [[técnica]]s y notaciones que sirven para expresar el [[paralelismo]] potencial en los programas
}}<div align="justify">
+
}}
 
'''Programación Imperativa.''' Se entiende por [[programación]] [[concurrente]] el conjunto de [[técnicas]] y notaciones que sirven para expresar el [[paralelismo]] [[potencial]] en los programas, así como resolver problemas de [[comunicación]] y [[sincronización]].
 
'''Programación Imperativa.''' Se entiende por [[programación]] [[concurrente]] el conjunto de [[técnicas]] y notaciones que sirven para expresar el [[paralelismo]] [[potencial]] en los programas, así como resolver problemas de [[comunicación]] y [[sincronización]].
  
Un [[proceso]] es un programa en ejecución con un estado asociado. Las distintas [[aplicaciones]] que se ejecutan en un [[sistema operativo]] [[multitarea]] son [[procesos]] independientes. Cada una de ellas tiene asociado un contexto (prioridad, estado del [[procesador]], lista de interrupciones y señales que admite, páginas de [[memoria]] que ocupa, etc.).
+
Un [[proceso]] es un programa en ejecución con un estado asociado. Las distintas [[aplicaciones]] que se ejecutan en un [[sistema operativo]] [[multitarea]] son procesos independientes. Cada una de ellas tiene asociado un contexto (prioridad, estado del [[procesador]], lista de interrupciones y señales que admite, páginas de [[memoria]] que ocupa, etc.).
  
 
Una aplicación concurrente está formada por un conjunto de procesos concurrentes. En ella existen distintas hebras de control independientes, vías simultáneas de ejecución. Dichas hebras de control pueden ser [[procesos independientes]] en el [[sistema operativo]] o hebras dentro de un [[proceso]]. Una [[aplicación multihebra]] está constituida por distintas hebras que comparten el espacio de un [[proceso]] en el [[sistema operativo]].
 
Una aplicación concurrente está formada por un conjunto de procesos concurrentes. En ella existen distintas hebras de control independientes, vías simultáneas de ejecución. Dichas hebras de control pueden ser [[procesos independientes]] en el [[sistema operativo]] o hebras dentro de un [[proceso]]. Una [[aplicación multihebra]] está constituida por distintas hebras que comparten el espacio de un [[proceso]] en el [[sistema operativo]].
Línea 13: Línea 13:
 
Cada hebra/proceso supone una carga adicional para el [[sistema]].
 
Cada hebra/proceso supone una carga adicional para el [[sistema]].
 
* El [[diseño]] de [[aplicaciones concurrentes]] es complejo, ya que hemos de garantizar la independencia de las hebras/procesos y la [[integridad]] de los datos con los que trabajan simultáneamente.
 
* El [[diseño]] de [[aplicaciones concurrentes]] es complejo, ya que hemos de garantizar la independencia de las hebras/procesos y la [[integridad]] de los datos con los que trabajan simultáneamente.
* La [[depuración]] de las [[aplicaciones concurrentes]] es difícil, dado que la [[ejecución]] de los distintos procesos/hebras se realiza de forma atómica.
+
* La [[depuración]] de las [[aplicaciones concurrentes]] es difícil, dado que la ejecución de los distintos procesos/hebras se realiza de forma atómica.
* [[Hebras]] y [[procesos]] han de coordinarse de algún modo, para lo cual hemos de emplear mecanismos de [[comunicación]] y [[sincronización]] que permitan coordinar la [[ejecución]] de las distintas hebras/procesos.
+
* [[Hebras]] y procesos han de coordinarse de algún modo, para lo cual hemos de emplear mecanismos de [[comunicación]] y [[sincronización]] que permitan coordinar la ejecución de las distintas hebras/procesos.
  
 
== ¿Por qué usar hebras y procesos? ==
 
== ¿Por qué usar hebras y procesos? ==
El uso de [[paralelismo]] (múltiples [[procesos]] y hebras, en particular) proporciona una serie de ventajas frente a las limitaciones de los [[sistemas monotarea]].
+
El uso de [[paralelismo]] (múltiples procesos y hebras, en particular) proporciona una serie de ventajas frente a las limitaciones de los [[sistemas monotarea]].
 
===Ejemplo===
 
===Ejemplo===
 
*Aprovechamiento de los recursos del [[sistema]].
 
*Aprovechamiento de los recursos del [[sistema]].
Línea 25: Línea 25:
 
== Estructuración, Paralelismo implícito ==
 
== Estructuración, Paralelismo implícito ==
 
'''Importante''': El objetivo principal del uso de [[paralelismo]] es mejorar el rendimiento del [[sistema]]. El diseñador/programador deberá decidir hasta qué punto debe utilizarse en cada momento.
 
'''Importante''': El objetivo principal del uso de [[paralelismo]] es mejorar el rendimiento del [[sistema]]. El diseñador/programador deberá decidir hasta qué punto debe utilizarse en cada momento.
*[[Ejecución]] de procesos.
+
*Ejecución de procesos.
 
*Finalización de procesos.
 
*Finalización de procesos.
 
*[[Monitorización]] de procesos.
 
*[[Monitorización]] de procesos.
Línea 31: Línea 31:
  
 
=== Ejecución de procesos ===
 
=== Ejecución de procesos ===
La clase System.Diagnostics.Process permite crear y monitorizar [[procesos]] (accediendo a la [[información]] que se visualiza en el Administrador de Tareas de Windows). El método Process.Start() equivale a la llamada ShellExecute del API de Windows (Win32) y es el que deberemos utilizar para lanzar un [[proceso]]. Los parámetros del [[proceso]] se especifican mediante un objeto de la clase ProcessStartInfo. Al encapsular una llamada al shell de Windows, el método Start también podemos usarlo para abrir un [[fichero]] de cualquier tipo de los que tengan acciones asociadas en el registro de Windows.
+
La clase System.Diagnostics.Process permite crear y monitorizar procesos (accediendo a la [[información]] que se visualiza en el Administrador de Tareas de Windows). El método Process.Start() equivale a la llamada ShellExecute del API de Windows (Win32) y es el que deberemos utilizar para lanzar un [[proceso]]. Los parámetros del [[proceso]] se especifican mediante un objeto de la clase ProcessStartInfo. Al encapsular una llamada al shell de Windows, el método Start también podemos usarlo para abrir un [[Archivo (Informática)|fichero]] de cualquier tipo de los que tengan acciones asociadas en el registro de Windows.
  
 
== Fuentes ==
 
== Fuentes ==
  
*[[Berzal Galiano Fernando]] .[[Concurrencia]].
+
*[[Berzal Galiano Fernando]]. ''Concurrencia''.
*[[David Carmona]].[[Programming the Thread Pool in the .NET Framework]].June [[2002]].
+
*[[David Carmona]].''Programming the Thread Pool in the .NET Framewor''.June [[2002]].
 
*Colaboración de Ing. Yordanger Fernández Reyna. Joven Club de Computación y Electrónica Palma Soriano II.
 
*Colaboración de Ing. Yordanger Fernández Reyna. Joven Club de Computación y Electrónica Palma Soriano II.
 
[[Category:Informática]]
 
[[Category:Informática]]

última versión al 21:30 6 jul 2019

Programación Concurrente en CSharp
Información sobre la plantilla
Proc.JPG
conjunto de técnicas y notaciones que sirven para expresar el paralelismo potencial en los programas

Programación Imperativa. Se entiende por programación concurrente el conjunto de técnicas y notaciones que sirven para expresar el paralelismo potencial en los programas, así como resolver problemas de comunicación y sincronización.

Un proceso es un programa en ejecución con un estado asociado. Las distintas aplicaciones que se ejecutan en un sistema operativo multitarea son procesos independientes. Cada una de ellas tiene asociado un contexto (prioridad, estado del procesador, lista de interrupciones y señales que admite, páginas de memoria que ocupa, etc.).

Una aplicación concurrente está formada por un conjunto de procesos concurrentes. En ella existen distintas hebras de control independientes, vías simultáneas de ejecución. Dichas hebras de control pueden ser procesos independientes en el sistema operativo o hebras dentro de un proceso. Una aplicación multihebra está constituida por distintas hebras que comparten el espacio de un proceso en el sistema operativo.

Consideraciones

Cada hebra/proceso supone una carga adicional para el sistema.

¿Por qué usar hebras y procesos?

El uso de paralelismo (múltiples procesos y hebras, en particular) proporciona una serie de ventajas frente a las limitaciones de los sistemas monotarea.

Ejemplo

Estructuración, Paralelismo implícito

Importante: El objetivo principal del uso de paralelismo es mejorar el rendimiento del sistema. El diseñador/programador deberá decidir hasta qué punto debe utilizarse en cada momento.

  • Ejecución de procesos.
  • Finalización de procesos.
  • Monitorización de procesos.
  • Operaciones de E/S

Ejecución de procesos

La clase System.Diagnostics.Process permite crear y monitorizar procesos (accediendo a la información que se visualiza en el Administrador de Tareas de Windows). El método Process.Start() equivale a la llamada ShellExecute del API de Windows (Win32) y es el que deberemos utilizar para lanzar un proceso. Los parámetros del proceso se especifican mediante un objeto de la clase ProcessStartInfo. Al encapsular una llamada al shell de Windows, el método Start también podemos usarlo para abrir un fichero de cualquier tipo de los que tengan acciones asociadas en el registro de Windows.

Fuentes

  • Berzal Galiano Fernando. Concurrencia.
  • David Carmona.Programming the Thread Pool in the .NET Framewor.June 2002.
  • Colaboración de Ing. Yordanger Fernández Reyna. Joven Club de Computación y Electrónica Palma Soriano II.