sistemas operativos multihilos multithreading uml

multithreading - operativos - ¿Existe un enfoque UML iniciático para representar hilos?



multihilos pdf (8)

El UML está definido por la Superestructura de UML, puede encontrarlo aquí http://www.omg.org/spec/UML . Si lees la especificación, encuentras que una clase UML puede estar activa. Una clase activa es una clase con el meta-atributo isActive establecido en true. También se representa de manera diferente. Las instancias de un objeto de una clase activa ejecutan automáticamente un "comportamiento de clasificador". En cuanto a cualquier comportamiento, puede definirlo mediante una actividad en la que espere señales asíncronas (AcceptEventActions) e invoque métodos (CallOperationAction) u otros comportamientos (CallBehaviorActions). Así es como se modelan los objetos activos en UML. Solo tienes que leer la especificación UML.

Me gusta usar diagramas UML para describir mi software. En la mayoría de los casos, los diagramas son para mi propio uso y los uso para partes de código, interacciones, etc. más complicadas, donde me beneficiaré de poder mirar hacia atrás en el futuro.

Una cosa en la que me he encontrado haciendo varias maneras diferentes es la creación de diagramas de hilos. Los hilos por su naturaleza tienden a aparecer en las piezas de código más complicadas y su seguimiento suele ser el objetivo principal de mis documentos de diseño.

En el pasado, he usado un símbolo en un diagrama de secuencia para mostrar la creación de un nuevo hilo, pero mirando hacia atrás en algunos diagramas haciendo que a veces sea ambiguo entre la vida útil de un objeto (para qué diagramas de secuencia están) y la vida útil de un hilo. ¿Hay un mejor enfoque para incorporar hilos en UML?


El punto más fuerte de UML es describir la estructura estática. Si utilizas hilos de corta duración, tampoco veo una manera fácil de hacer un diagrama. Tal vez pueda encontrar una solución cambiando un poco las cosas: ¿por qué usa / necesita hilos? ¿Cuál es la funcionalidad que proporcionan? Si interactúan entre sí y siguen alguna API (paso de mensaje), dibujarlos como componentes podría tener sentido.


Logré producir un diagrama que tiene sentido para mí en el momento de dibujarlo. La premisa básica es que he superpuesto cuadros grises que representan instancias de clase con cuadros azules que representan tiempos de vida de subprocesos. Lo principal que me permite hacer un seguimiento de es saber en qué subproceso estaré ejecutando cuando llame a ciertos métodos.

Sin duda, hay formas mejores y más intuitivas de hacer el modelado de hilos y clases. La medida del éxito para mí es si mi propio diagrama todavía me da el mismo nivel de comprensión de 6 meses en el futuro.


Los diagramas de actividad UML tienen elementos de bifurcación y combinación para mostrar el flujo paralelo de lógica.


Los diagramas de actividad modelarán el funcionamiento interno de su software con horquillas y uniones para representar hilos . Para saber exactamente cómo modelar esto correctamente, consulte la excelente serie de artículos de Conrad Bock. Here está el artículo que cubre las bifurcaciones y las uniones, pero debe seguir los enlaces al primer artículo de la serie para aprender a modelar correctamente usando "Redes de Petri de colores". ¡No es como piensas (y es bastante fácil)!

Hay un nuevo estándar en proceso en el OMG para un lenguaje llamado Alf que proporciona una notación de superficie más conveniente para los diagramas de actividad y está destinado a representar el código . De la especificación:

Un objetivo principal de un lenguaje de acción es actuar como la notación de superficie para especificar comportamientos ejecutables dentro de un modelo más amplio que se representa principalmente utilizando las notaciones gráficas habituales de UML. Por ejemplo, esto podría incluir métodos sobre las operaciones de clases o comportamientos de efectos de transición en máquinas de estado.

Para un programador, probablemente no puedas ser más intuitivo que Alf. Y se convertirá perfectamente en diagramas de actividad UML.


Los diagramas de actividad, secuencia y estado son formas correctas de mostrar el comportamiento de los hilos.

1º: (A los comentarios de vs) Hay dos conjuntos de diagramas o elementos de modelado en UML, estructura estática, como lo has puesto, y comportamiento. Cualquier libro lo ayudará a comprender la división, normalmente en los contenidos / tabla de contenido, además, se puede ver en la página 11 de UML de Martin Fowler.

Segundo: (Para sipwiz la pregunta y el comentario) Los diagramas de actividad no se entienden comúnmente para modelar procesos de negocios, sin embargo, se pueden usar para eso, y la mayoría de los ejemplos o tutoriales simples lo abordarán desde un punto de vista empresarial.

Discusión sobre tus opciones para modelar hilos:

Diagramas de actividad : permite forking y especificar la concurrencia mediante el uso de un BAR y líneas de uso. Note que el ejemplo en la parte inferior no es un proceso de negocios, example . La mayoría de las personas pueden leer esto, negocios, administración y desarrolladores, aunque a veces pueden carecer de detalles o pueden complicarse.

Diagramas de interacción de secuencia : en la misma publicación, por example , verá que los diagramas de secuencia le permiten especificar el comportamiento paralelo dentro de una secuencia al encajonar el comportamiento paralelizable con una etiqueta "par", esto es útil para mostrar al lector qué métodos pueden o deben llamarse en paralelo, es decir, por diferentes hilos. Este es el método que usaría para desarrolladores detallados como las discusiones sobre la construcción de un objeto.

Diagrama de estado: el gráfico de estado, al igual que la actividad, permite la concurrencia mediante el uso de un BAR y líneas de uso.

NOTA: Estos no modelarán un hilo específico y su ciclo de elevación exacto, ya que es parte del nivel de modelado de instancia / tiempo de ejecución, si esto es lo que desea, aclare su pregunta y le responderé. Simplemente lo modelaría usando uno de los anteriores, ya que nadie más que un experto en MDA / UML lo llamará y usted no está generando un sistema en ejecución.

También: tenga en cuenta que se pueden encontrar más detalles en la mayoría de los libros UML. También aprovechado: http://www.jguru.com/faq/view.jsp?EID=56322


Tradicionalmente, los hilos se han descrito esquemáticamente utilizando redes de Petri. Rob Martin tiene un artículo sobre subprocesos múltiples en UML que puede encontrar útil.

Actualización: acabo de recordar que puede representar hilos con horquillas en diagramas de actividad. He logrado encontrar algo que explica esto .

Es muy difícil encontrar tutoriales gratuitos para las redes de Petri, sin embargo, sé que las redes de Petri son buenas para modelar la concurrencia, así que busqué en "Redes de Petri productor / consumidor" (mi cosa favorita para enhebrar hilos) y encontré esto .

También he encontrado algunas diapositivas que muestran a las redes de Petri modelando un semáforo .


No conozco una forma, pero el uso de un diagrama de secuencia no parece del todo inapropiado, considerando que un subproceso está implementado en muchos idiomas como una clase Thread (o similar).

La forma más compatible con UML probablemente sería agregar una anotación de algún tipo que indique que el ''objeto'' representa un hilo.