125 lines
4.2 KiB
TeX
125 lines
4.2 KiB
TeX
\documentclass{article}
|
|
%\usepackage{times}
|
|
|
|
|
|
%\usepackage{amsthm}
|
|
\usepackage{algorithm} % for pseudo-codes
|
|
%\usepackage{enumerate}
|
|
\usepackage{algpseudocode}
|
|
%\usepackage{DotArrow}
|
|
%\usepackage{subfig}
|
|
%\usepackage{amsmath, environ}
|
|
%\usepackage{amssymb}
|
|
%\usepackage{amsthm}
|
|
%%\usepackage{bm}
|
|
%%\usepackage{mathtools}
|
|
\usepackage{graphicx}
|
|
%\usepackage{wrapfig}
|
|
%\usepackage{minibox}
|
|
%\usepackage{multirow}
|
|
%\usepackage{pifont} % \ding{}
|
|
%\usepackage[percent]{overpic}
|
|
%\usepackage{scrextend} % labeling environment
|
|
%
|
|
%\newtheorem{theorem}{Theorem}
|
|
%\newtheorem{definition}{Definition}
|
|
%\newtheorem{example}{Example}
|
|
%
|
|
%\renewcommand{\textfraction}{0.05}
|
|
%\renewcommand{\floatpagefraction}{0.75}
|
|
|
|
\newcommand{\centerimage}[5][-7pt]{ % [vskip] | graphics-opt | imgname | label | caption
|
|
\begin{figure}[!htb]%
|
|
\centering%
|
|
\vspace{#1}%
|
|
\includegraphics[#2]{#3}%
|
|
\caption{#5}\label{#4}\vspace{2mm}%
|
|
%\vspace{-3pt}\caption{#5}\label{#4}\vspace{-2pt}%
|
|
\end{figure}}
|
|
\date{}
|
|
%\includegraphics[trim=1cm 2cm 3cm 4cm, clip=true]{example.pdf}
|
|
|
|
|
|
|
|
\begin{document}
|
|
|
|
|
|
|
|
\title{Relazione Esercizio Rete PT (A)}
|
|
|
|
|
|
\author{Francesco Galla`, francesco.galla@edu.unito.it}
|
|
|
|
\maketitle
|
|
|
|
|
|
%=========================================================================
|
|
%%%%%%% INTRODUCTION %%%%%%%
|
|
%=========================================================================
|
|
|
|
\section{Rete A} \label{sec:reteA}
|
|
Si modelli un sistema master slave nelle seguenti versioni:
|
|
Due master identici e due slave di tipo 1 identici.
|
|
%=========================================================================================================
|
|
\subsection{La rete di Petri} \label{ssec:reteA-PN}
|
|
|
|
|
|
La figura rappresenta la rete di Petri P/T del primo esercizio (rete A).
|
|
Il master è modellato dai posti M\_Richiesta, M\_Attesa, M\_Risultato e dalle transizioni Dispatch, Ottieni\_Risultato, M\_Return.
|
|
Lo slave è modellato dai posti Slave\_Attesa, Child1/Child2, Fine\_C1, Fine\_C2, Slave\_Fine e dalle transizioni Fork, Processa\_C1/Processa\_C2, Join, Slave\_Return.
|
|
La richiesta del servizio verso l'unico tipo di slave (slave di tipo 1) \`e gestita attraverso un buffer in ingresso (posto Buffer\_Richiesta) allo slave e uno in uscita (posto Buffer\_Risultato).
|
|
|
|
%\centerimage{trim=1cm 10cm 3cm 4cm, clip=true}
|
|
\centerimage{width=\columnwidth}
|
|
{reteA.jpg}{img:reteA}
|
|
{Modello P/T della reteA}
|
|
|
|
|
|
\subsection{I risultati} \label{ssec:reteA-res}
|
|
|
|
%===================== TEST 2 FMS
|
|
\begin{table}[h!]
|
|
\centering
|
|
\begin{tabular}{ |p{3cm}||p{3cm}|p{3cm}| }
|
|
\hline
|
|
\multicolumn{3}{|c|}{Effetto della marcatura iniziale su stati e archi} \\
|
|
\hline
|
|
nMaster / nSlave & Stati & Archi\\
|
|
\hline
|
|
1 & 12 & 16 \\
|
|
2 & 71 & 164 \\
|
|
3 & 288 & 876 \\
|
|
4 & 918 & 3312 \\
|
|
5 & 2472 & 10032 \\
|
|
6 & 5874 & 25592 \\
|
|
7 & 12672 & 59928 \\
|
|
8 & 25311 & 126192 \\
|
|
\hline
|
|
\end{tabular} \\
|
|
\caption{Variazione dello spazio degli stati.}
|
|
\label{tab:reteA}
|
|
\end{table}
|
|
%=====================
|
|
|
|
La tabella elenca la dimensione dello spazio degli stati al variare del
|
|
numero $nMaster$ di master e $nSlave$ di slave. Si pu\`o osservare come, al variare della
|
|
marcatura iniziale, il numero di stati aumenta inizialmente di un fattore $5$. L'incremento a
|
|
seguito decresce fino a raddoppiare di step in step.
|
|
Si nota inoltre come il numero di archi aumenti molto pi\`u rapidamente con il numero di stati,
|
|
a parita' di marcatura iniziale.
|
|
|
|
\subsection{Considerazioni sulla Join}
|
|
|
|
Dato che sia il master che lo slave possono servire fino a due processi contemporaneamente,
|
|
la $join$ non avviene necessariamente tra due processi figli dello stesso padre.
|
|
Infatti, se un token entra nel buffer mentre lo slave sta ancora processando richiesta, \`e
|
|
possibile che venga eseguita una seconda $fork$. Lo stesso \`e possibile nel posto
|
|
$Buffer\_Risultato$ nel caso vengano restituiti due risultati contemporaneamente dallo slave.
|
|
\break
|
|
\break
|
|
Per risolvere questo problema si possono utilizzare due strutture $Slave$ differenti, o
|
|
ridurre la marcatura iniziale del posto $Slave\_Attesa$ di uno e permettere solo una richiesta
|
|
alla volta. Altrimenti si pu\`o fare ricorso alle reti WN per poter differenziare i master e
|
|
slave, di modo da tenerne traccia durante la $fork$.
|
|
|
|
\end{document}
|