<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://so.v2.cs.unibo.it/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ossama+G.</id>
	<title>Sistemi Operativi - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://so.v2.cs.unibo.it/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ossama+G."/>
	<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php/Special:Contributions/Ossama_G."/>
	<updated>2026-05-02T20:54:16Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=ProvaTeorica_2012.02.09&amp;diff=1960</id>
		<title>ProvaTeorica 2012.02.09</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=ProvaTeorica_2012.02.09&amp;diff=1960"/>
		<updated>2017-09-02T11:59:22Z</updated>

		<summary type="html">&lt;p&gt;Ossama G.: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Esercizio 1&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Esercizio 1: Il monitor seq da implementare deve fornire due procedure entry:&lt;br /&gt;
procedure entry void enter(void);&lt;br /&gt;
procedure entry void exit(void);&lt;br /&gt;
I processi chiamano i servizi di seq come segue:&lt;br /&gt;
….&lt;br /&gt;
seq.enter();&lt;br /&gt;
// codice controllato da seq&lt;br /&gt;
seq.exit();&lt;br /&gt;
….&lt;br /&gt;
Tutti i processi che ne facciano rischiesta possono entrare nel codice controllato da seq contemporaneamente (questa &lt;br /&gt;
NON e' una sezione critica!). Exit deve garantire che i processi escano dal codice controllato tutti insieme. Per &lt;br /&gt;
esempio se tre processi a,b e c chiamano seq.enter ogni processo non potra' completare la exit se prima tutti gli altri &lt;br /&gt;
due non hanno chiamato la exit. Se nel frattempo altri processi dovessero chiamare la seq.enter occorrera' attendere &lt;br /&gt;
anche questi ultimi.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
monitor seq&lt;br /&gt;
{&lt;br /&gt;
	int processi=0;&lt;br /&gt;
	condition oktoexit;&lt;br /&gt;
&lt;br /&gt;
	procedure entry enter()&lt;br /&gt;
	{&lt;br /&gt;
		processi++&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	procedure entry exit()&lt;br /&gt;
	{&lt;br /&gt;
		processi--&lt;br /&gt;
		oktoexit.signal();&lt;br /&gt;
		while(processi!=0)&lt;br /&gt;
		{&lt;br /&gt;
			oktoexit.wait();&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
-stefano92&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
monitor seq&lt;br /&gt;
{&lt;br /&gt;
	int processi=0;&lt;br /&gt;
        int inattesa=0 ;&lt;br /&gt;
	condition oktoexit;&lt;br /&gt;
&lt;br /&gt;
	procedure entry enter()&lt;br /&gt;
	{&lt;br /&gt;
		processi++&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	procedure entry exit()&lt;br /&gt;
	{&lt;br /&gt;
&lt;br /&gt;
                &lt;br /&gt;
		processi-- ;&lt;br /&gt;
		&lt;br /&gt;
		while(processi!=0)&lt;br /&gt;
		{&lt;br /&gt;
		    inattesa++ ;&lt;br /&gt;
                    oktoexit.wait();&lt;br /&gt;
                    inattesa--;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
                oktoexit.signal();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Save&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
   monitor seq{&lt;br /&gt;
	condition ok2exit;&lt;br /&gt;
	int exit;&lt;br /&gt;
	seq(){&lt;br /&gt;
		count=exit=0&lt;br /&gt;
	}&lt;br /&gt;
	entry enter(){&lt;br /&gt;
		count++&lt;br /&gt;
		ok2exit.wait()&lt;br /&gt;
		if count &amp;gt;0:&lt;br /&gt;
			ok2exit.signal()&lt;br /&gt;
		&lt;br /&gt;
	}&lt;br /&gt;
	entry exit(){&lt;br /&gt;
		exit++&lt;br /&gt;
		if exit==count:&lt;br /&gt;
			ok2exit.signal()	&lt;br /&gt;
	}&lt;br /&gt;
-AlbertoD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ossama G.</name></author>
	</entry>
</feed>