\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}