<?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=Bernagoz</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=Bernagoz"/>
	<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php/Special:Contributions/Bernagoz"/>
	<updated>2026-05-19T20:47:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=ProvaPratica_2010.07.12&amp;diff=539</id>
		<title>ProvaPratica 2010.07.12</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=ProvaPratica_2010.07.12&amp;diff=539"/>
		<updated>2014-04-01T15:05:31Z</updated>

		<summary type="html">&lt;p&gt;Bernagoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;http://www.cs.unibo.it/~renzo/so/compiti/2010-07-12.tot.pdf&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Esercizio 1 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
monitor priocoop{&lt;br /&gt;
condition run[9];&lt;br /&gt;
int waiting[9]=0,0,0,0,0,0,0,0,0;&lt;br /&gt;
int maxprio=0;&lt;br /&gt;
int occupato=0;&lt;br /&gt;
&lt;br /&gt;
procedure entry init(prio){	&lt;br /&gt;
	if(occupato==1)&lt;br /&gt;
	{&lt;br /&gt;
		if(maxprio &amp;lt; prio)&lt;br /&gt;
		{&lt;br /&gt;
		maxprio=prio;&lt;br /&gt;
		}&lt;br /&gt;
	waiting[prio]++;			&lt;br /&gt;
	run[prio].wait();&lt;br /&gt;
	waiting[prio]--;&lt;br /&gt;
	}&lt;br /&gt;
occupato=1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
procedure entry yield(prio){&lt;br /&gt;
run[maxprio].signal();&lt;br /&gt;
        if(maxprio &amp;lt; prio)&lt;br /&gt;
	{&lt;br /&gt;
	maxprio=prio;&lt;br /&gt;
	}&lt;br /&gt;
waiting[prio]++;&lt;br /&gt;
run[prio].wait();&lt;br /&gt;
waiting[prio]--;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
procedure entry fini(prio){&lt;br /&gt;
int i;&lt;br /&gt;
occupato=0;&lt;br /&gt;
waiting[prio]--;&lt;br /&gt;
	if(waiting[maxprio] == 0)&lt;br /&gt;
	{&lt;br /&gt;
	maxprio=0;&lt;br /&gt;
		for(i=prio;i&amp;gt;=0;i--)&lt;br /&gt;
		{&lt;br /&gt;
			if(waiting[i]!=0)&lt;br /&gt;
			{&lt;br /&gt;
			maxprio=0;&lt;br /&gt;
			}&lt;br /&gt;
		}		&lt;br /&gt;
	run[maxprio].signal();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Alessandro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
//Processo con prioritá 0 = Processo con piú alta prioritá&lt;br /&gt;
//Processo con prioritá 9 = Processo con meno prioritá&lt;br /&gt;
monitor priocoop {&lt;br /&gt;
	condition oktogo[10];&lt;br /&gt;
	int wait[10] = 0,0,0,0,0,0,0,0,0;&lt;br /&gt;
	int running;&lt;br /&gt;
	priocoop.init(prio) {&lt;br /&gt;
		if(running != 0) {&lt;br /&gt;
			wait[prio]++;&lt;br /&gt;
			oktogo[prio].wait;&lt;br /&gt;
			wait[prio]--;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		running++;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	priocoop.yield(prio) {&lt;br /&gt;
		running--;&lt;br /&gt;
		for(int i = 0;i&amp;lt;10;i++) {&lt;br /&gt;
			if(wait[i] != 0) {&lt;br /&gt;
				oktogo[i].signal();&lt;br /&gt;
				wait[prio]++;&lt;br /&gt;
				oktogo[prio].wait;&lt;br /&gt;
				wait[prio]--;&lt;br /&gt;
				break();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		running++;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	priocoop.fini() {&lt;br /&gt;
		running--;&lt;br /&gt;
		for(int i = 0;i&amp;lt;10;i++) {&lt;br /&gt;
			if(wait[i] != 0) {&lt;br /&gt;
				oktogo[i].signal();&lt;br /&gt;
				break();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
-Midolo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
//0: priorita' maggiore&lt;br /&gt;
//9: priorita' minore&lt;br /&gt;
cond oktoenter[10];&lt;br /&gt;
int count[10];&lt;br /&gt;
bool running = false;&lt;br /&gt;
&lt;br /&gt;
//restituisce la priorita' maggiore che ha un processo in attesa&lt;br /&gt;
getprio() {&lt;br /&gt;
      	for(i=0;i&amp;lt;10;i++) {&lt;br /&gt;
		 if(count[i]&amp;gt;0)&lt;br /&gt;
			 break;&lt;br /&gt;
	 }&lt;br /&gt;
	 return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
priocoop() {&lt;br /&gt;
	init (prio) {&lt;br /&gt;
		if (running) {&lt;br /&gt;
			count[prio]++;&lt;br /&gt;
			oktoenter[prio].wait();&lt;br /&gt;
			count[prio]--;&lt;br /&gt;
		}&lt;br /&gt;
		running = true;&lt;br /&gt;
	}&lt;br /&gt;
	yield(prio) {&lt;br /&gt;
		i=getprio();&lt;br /&gt;
		if (i &amp;lt; 10) {&lt;br /&gt;
			// running = false; &lt;br /&gt;
			oktoenter[i].signal();&lt;br /&gt;
			count(prio)++&lt;br /&gt;
			oktoenter[proc].wait();&lt;br /&gt;
	                // running = true;&lt;br /&gt;
        	        count[prio]--;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	fini(prio){&lt;br /&gt;
		i=getprio();&lt;br /&gt;
		if(i&amp;lt;10)&lt;br /&gt;
			oktoenter[i].signal;&lt;br /&gt;
		else&lt;br /&gt;
			running=false;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
-Stefano B.&lt;br /&gt;
&lt;br /&gt;
== Esercizio 2 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
db.getpriortymax(); //funzione che restituisce il messaggio con prioritá maggiore e lo rimuove dal db o 0 nel caso il db sia vuoto&lt;br /&gt;
Process n: {&lt;br /&gt;
&lt;br /&gt;
	psend(dest, prio,msg) {&lt;br /&gt;
		asend((msg, prio),dest);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	precv(sender) {&lt;br /&gt;
		while((msg,prio) = arecv(sender)) {&lt;br /&gt;
			db[sender].insert((msg,prio));&lt;br /&gt;
		}&lt;br /&gt;
		return (db[sender].getpriortymax());&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
-Midolo&lt;/div&gt;</summary>
		<author><name>Bernagoz</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=ProvaPratica_2010.07.12&amp;diff=538</id>
		<title>ProvaPratica 2010.07.12</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=ProvaPratica_2010.07.12&amp;diff=538"/>
		<updated>2014-04-01T11:46:57Z</updated>

		<summary type="html">&lt;p&gt;Bernagoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;http://www.cs.unibo.it/~renzo/so/compiti/2010-07-12.tot.pdf&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Esercizio 1 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
monitor priocoop{&lt;br /&gt;
condition run[9];&lt;br /&gt;
int waiting[9]=0,0,0,0,0,0,0,0,0;&lt;br /&gt;
int maxprio=0;&lt;br /&gt;
int occupato=0;&lt;br /&gt;
&lt;br /&gt;
procedure entry init(prio){	&lt;br /&gt;
	if(occupato==1)&lt;br /&gt;
	{&lt;br /&gt;
		if(maxprio &amp;lt; prio)&lt;br /&gt;
		{&lt;br /&gt;
		maxprio=prio;&lt;br /&gt;
		}&lt;br /&gt;
	waiting[prio]++;			&lt;br /&gt;
	run[prio].wait();&lt;br /&gt;
	waiting[prio]--;&lt;br /&gt;
	}&lt;br /&gt;
occupato=1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
procedure entry yield(prio){&lt;br /&gt;
run[maxprio].signal();&lt;br /&gt;
        if(maxprio &amp;lt; prio)&lt;br /&gt;
	{&lt;br /&gt;
	maxprio=prio;&lt;br /&gt;
	}&lt;br /&gt;
waiting[prio]++;&lt;br /&gt;
run[prio].wait();&lt;br /&gt;
waiting[prio]--;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
procedure entry fini(prio){&lt;br /&gt;
int i;&lt;br /&gt;
occupato=0;&lt;br /&gt;
waiting[prio]--;&lt;br /&gt;
	if(waiting[maxprio] == 0)&lt;br /&gt;
	{&lt;br /&gt;
	maxprio=0;&lt;br /&gt;
		for(i=prio;i&amp;gt;=0;i--)&lt;br /&gt;
		{&lt;br /&gt;
			if(waiting[i]!=0)&lt;br /&gt;
			{&lt;br /&gt;
			maxprio=0;&lt;br /&gt;
			}&lt;br /&gt;
		}		&lt;br /&gt;
	run[maxprio].signal();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Alessandro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
//Processo con prioritá 0 = Processo con piú alta prioritá&lt;br /&gt;
//Processo con prioritá 9 = Processo con meno prioritá&lt;br /&gt;
monitor priocoop {&lt;br /&gt;
	condition oktogo[10];&lt;br /&gt;
	int wait[10] = 0,0,0,0,0,0,0,0,0;&lt;br /&gt;
	int running;&lt;br /&gt;
	priocoop.init(prio) {&lt;br /&gt;
		if(running != 0) {&lt;br /&gt;
			wait[prio]++;&lt;br /&gt;
			oktogo[prio].wait;&lt;br /&gt;
			wait[prio]--;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		running++;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	priocoop.yield(prio) {&lt;br /&gt;
		running--;&lt;br /&gt;
		for(int i = 0;i&amp;lt;10;i++) {&lt;br /&gt;
			if(wait[i] != 0) {&lt;br /&gt;
				oktogo[i].signal();&lt;br /&gt;
				wait[prio]++;&lt;br /&gt;
				oktogo[prio].wait;&lt;br /&gt;
				wait[prio]--;&lt;br /&gt;
				break();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		running++;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	priocoop.fini() {&lt;br /&gt;
		running--;&lt;br /&gt;
		for(int i = 0;i&amp;lt;10;i++) {&lt;br /&gt;
			if(wait[i] != 0) {&lt;br /&gt;
				oktogo[i].signal();&lt;br /&gt;
				break();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
-Midolo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
//0: priorita' maggiore&lt;br /&gt;
//9: priorita' minore&lt;br /&gt;
cond oktoenter[10];&lt;br /&gt;
int count[10];&lt;br /&gt;
bool running = false;&lt;br /&gt;
&lt;br /&gt;
//restituisce la priorita' maggiore che ha un processo in attesa&lt;br /&gt;
getprio() {&lt;br /&gt;
      	for(i=0;i&amp;lt;10;i++) {&lt;br /&gt;
		 if(count[i]&amp;gt;0)&lt;br /&gt;
			 break;&lt;br /&gt;
	 }&lt;br /&gt;
	 return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
priocoop() {&lt;br /&gt;
	init (prio) {&lt;br /&gt;
		if (running) {&lt;br /&gt;
			count[prio]++;&lt;br /&gt;
			oktoenter[prio].wait();&lt;br /&gt;
			count[prio]--;&lt;br /&gt;
		}&lt;br /&gt;
		running = true;&lt;br /&gt;
	}&lt;br /&gt;
	yield(prio) {&lt;br /&gt;
		i=getprio();&lt;br /&gt;
		if (i &amp;lt; 10) {&lt;br /&gt;
			// running = false; &lt;br /&gt;
			oktoenter[i].signal();&lt;br /&gt;
			count(prio)++&lt;br /&gt;
			oktoenter[proc].wait();&lt;br /&gt;
	                // running = true;&lt;br /&gt;
        	        count[prio]--;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	fini(prio){&lt;br /&gt;
		i=getprio();&lt;br /&gt;
		if(i&amp;lt;10)&lt;br /&gt;
			oktoenter[i].signal;&lt;br /&gt;
		else&lt;br /&gt;
			running=false;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
-Bernaπ&lt;br /&gt;
&lt;br /&gt;
== Esercizio 2 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
db.getpriortymax(); //funzione che restituisce il messaggio con prioritá maggiore e lo rimuove dal db o 0 nel caso il db sia vuoto&lt;br /&gt;
Process n: {&lt;br /&gt;
&lt;br /&gt;
	psend(dest, prio,msg) {&lt;br /&gt;
		asend((msg, prio),dest);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	precv(sender) {&lt;br /&gt;
		while((msg,prio) = arecv(sender)) {&lt;br /&gt;
			db[sender].insert((msg,prio));&lt;br /&gt;
		}&lt;br /&gt;
		return (db[sender].getpriortymax());&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
-Midolo&lt;/div&gt;</summary>
		<author><name>Bernagoz</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=ProvaPratica_2010.07.12&amp;diff=537</id>
		<title>ProvaPratica 2010.07.12</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=ProvaPratica_2010.07.12&amp;diff=537"/>
		<updated>2014-04-01T11:41:58Z</updated>

		<summary type="html">&lt;p&gt;Bernagoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;http://www.cs.unibo.it/~renzo/so/compiti/2010-07-12.tot.pdf&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Esercizio 1 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
monitor priocoop{&lt;br /&gt;
condition run[9];&lt;br /&gt;
int waiting[9]=0,0,0,0,0,0,0,0,0;&lt;br /&gt;
int maxprio=0;&lt;br /&gt;
int occupato=0;&lt;br /&gt;
&lt;br /&gt;
procedure entry init(prio){	&lt;br /&gt;
	if(occupato==1)&lt;br /&gt;
	{&lt;br /&gt;
		if(maxprio &amp;lt; prio)&lt;br /&gt;
		{&lt;br /&gt;
		maxprio=prio;&lt;br /&gt;
		}&lt;br /&gt;
	waiting[prio]++;			&lt;br /&gt;
	run[prio].wait();&lt;br /&gt;
	waiting[prio]--;&lt;br /&gt;
	}&lt;br /&gt;
occupato=1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
procedure entry yield(prio){&lt;br /&gt;
run[maxprio].signal();&lt;br /&gt;
        if(maxprio &amp;lt; prio)&lt;br /&gt;
	{&lt;br /&gt;
	maxprio=prio;&lt;br /&gt;
	}&lt;br /&gt;
waiting[prio]++;&lt;br /&gt;
run[prio].wait();&lt;br /&gt;
waiting[prio]--;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
procedure entry fini(prio){&lt;br /&gt;
int i;&lt;br /&gt;
occupato=0;&lt;br /&gt;
waiting[prio]--;&lt;br /&gt;
	if(waiting[maxprio] == 0)&lt;br /&gt;
	{&lt;br /&gt;
	maxprio=0;&lt;br /&gt;
		for(i=prio;i&amp;gt;=0;i--)&lt;br /&gt;
		{&lt;br /&gt;
			if(waiting[i]!=0)&lt;br /&gt;
			{&lt;br /&gt;
			maxprio=0;&lt;br /&gt;
			}&lt;br /&gt;
		}		&lt;br /&gt;
	run[maxprio].signal();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Alessandro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
//Processo con prioritá 0 = Processo con piú alta prioritá&lt;br /&gt;
//Processo con prioritá 9 = Processo con meno prioritá&lt;br /&gt;
monitor priocoop {&lt;br /&gt;
	condition oktogo[10];&lt;br /&gt;
	int wait[10] = 0,0,0,0,0,0,0,0,0;&lt;br /&gt;
	int running;&lt;br /&gt;
	priocoop.init(prio) {&lt;br /&gt;
		if(running != 0) {&lt;br /&gt;
			wait[prio]++;&lt;br /&gt;
			oktogo[prio].wait;&lt;br /&gt;
			wait[prio]--;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		running++;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	priocoop.yield(prio) {&lt;br /&gt;
		running--;&lt;br /&gt;
		for(int i = 0;i&amp;lt;10;i++) {&lt;br /&gt;
			if(wait[i] != 0) {&lt;br /&gt;
				oktogo[i].signal();&lt;br /&gt;
				wait[prio]++;&lt;br /&gt;
				oktogo[prio].wait;&lt;br /&gt;
				wait[prio]--;&lt;br /&gt;
				break();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		running++;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	priocoop.fini() {&lt;br /&gt;
		running--;&lt;br /&gt;
		for(int i = 0;i&amp;lt;10;i++) {&lt;br /&gt;
			if(wait[i] != 0) {&lt;br /&gt;
				oktogo[i].signal();&lt;br /&gt;
				break();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
-Midolo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
//0: priorita' maggiore&lt;br /&gt;
//9: priorita' minore&lt;br /&gt;
cond oktoenter[10];&lt;br /&gt;
int count[10];&lt;br /&gt;
bool running = false;&lt;br /&gt;
&lt;br /&gt;
//restituisce la priorita' maggiore che ha un processo in attesa&lt;br /&gt;
getprio() {&lt;br /&gt;
      	for(i=0;i&amp;lt;10;i++) {&lt;br /&gt;
		 if(count[i]&amp;gt;0)&lt;br /&gt;
			 break;&lt;br /&gt;
	 }&lt;br /&gt;
	 return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
priocoop() {&lt;br /&gt;
	init (prio) {&lt;br /&gt;
		if (running) {&lt;br /&gt;
			count[prio]++;&lt;br /&gt;
			oktoenter[prio].wait();&lt;br /&gt;
			count[prio]--;&lt;br /&gt;
		}&lt;br /&gt;
		running = true;&lt;br /&gt;
	}&lt;br /&gt;
	yield(prio) {&lt;br /&gt;
		i=getprio();&lt;br /&gt;
		if (i &amp;lt; 10) {&lt;br /&gt;
			// running = false; &lt;br /&gt;
			oktoenter[i].signal();&lt;br /&gt;
			count(prio)++&lt;br /&gt;
			oktoenter[proc].wait();&lt;br /&gt;
	                // running = true;&lt;br /&gt;
        	        count[prio]--;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	fini(prio){&lt;br /&gt;
		i=getprio();&lt;br /&gt;
		running=false;&lt;br /&gt;
		if(i&amp;lt;10)&lt;br /&gt;
			oktoenter[i].signal;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
-Bernaπ&lt;br /&gt;
&lt;br /&gt;
== Esercizio 2 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
db.getpriortymax(); //funzione che restituisce il messaggio con prioritá maggiore e lo rimuove dal db o 0 nel caso il db sia vuoto&lt;br /&gt;
Process n: {&lt;br /&gt;
&lt;br /&gt;
	psend(dest, prio,msg) {&lt;br /&gt;
		asend((msg, prio),dest);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	precv(sender) {&lt;br /&gt;
		while((msg,prio) = arecv(sender)) {&lt;br /&gt;
			db[sender].insert((msg,prio));&lt;br /&gt;
		}&lt;br /&gt;
		return (db[sender].getpriortymax());&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
-Midolo&lt;/div&gt;</summary>
		<author><name>Bernagoz</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=ProvaPratica_2010.07.12&amp;diff=535</id>
		<title>ProvaPratica 2010.07.12</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=ProvaPratica_2010.07.12&amp;diff=535"/>
		<updated>2014-04-01T11:34:55Z</updated>

		<summary type="html">&lt;p&gt;Bernagoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1&amp;gt;http://www.cs.unibo.it/~renzo/so/compiti/2010-07-12.tot.pdf&amp;lt;/h1&amp;gt;&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;
monitor priocoop{&lt;br /&gt;
condition run[9];&lt;br /&gt;
int waiting[9]=0,0,0,0,0,0,0,0,0;&lt;br /&gt;
int maxprio=0;&lt;br /&gt;
int occupato=0;&lt;br /&gt;
&lt;br /&gt;
procedure entry init(prio){	&lt;br /&gt;
	if(occupato==1)&lt;br /&gt;
	{&lt;br /&gt;
		if(maxprio &amp;lt; prio)&lt;br /&gt;
		{&lt;br /&gt;
		maxprio=prio;&lt;br /&gt;
		}&lt;br /&gt;
	waiting[prio]++;			&lt;br /&gt;
	run[prio].wait();&lt;br /&gt;
	waiting[prio]--;&lt;br /&gt;
	}&lt;br /&gt;
occupato=1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
procedure entry yield(prio){&lt;br /&gt;
run[maxprio].signal();&lt;br /&gt;
        if(maxprio &amp;lt; prio)&lt;br /&gt;
	{&lt;br /&gt;
	maxprio=prio;&lt;br /&gt;
	}&lt;br /&gt;
waiting[prio]++;&lt;br /&gt;
run[prio].wait();&lt;br /&gt;
waiting[prio]--;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
procedure entry fini(prio){&lt;br /&gt;
int i;&lt;br /&gt;
occupato=0;&lt;br /&gt;
waiting[prio]--;&lt;br /&gt;
	if(waiting[maxprio] == 0)&lt;br /&gt;
	{&lt;br /&gt;
	maxprio=0;&lt;br /&gt;
		for(i=prio;i&amp;gt;=0;i--)&lt;br /&gt;
		{&lt;br /&gt;
			if(waiting[i]!=0)&lt;br /&gt;
			{&lt;br /&gt;
			maxprio=0;&lt;br /&gt;
			}&lt;br /&gt;
		}		&lt;br /&gt;
	run[maxprio].signal();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Alessandro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
//Processo con prioritá 0 = Processo con piú alta prioritá&lt;br /&gt;
//Processo con prioritá 9 = Processo con meno prioritá&lt;br /&gt;
monitor priocoop {&lt;br /&gt;
	condition oktogo[10];&lt;br /&gt;
	int wait[10] = 0,0,0,0,0,0,0,0,0;&lt;br /&gt;
	int running;&lt;br /&gt;
	priocoop.init(prio) {&lt;br /&gt;
		if(running != 0) {&lt;br /&gt;
			wait[prio]++;&lt;br /&gt;
			oktogo[prio].wait;&lt;br /&gt;
			wait[prio]--;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		running++;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	priocoop.yield(prio) {&lt;br /&gt;
		running--;&lt;br /&gt;
		for(int i = 0;i&amp;lt;10;i++) {&lt;br /&gt;
			if(wait[i] != 0) {&lt;br /&gt;
				oktogo[i].signal();&lt;br /&gt;
				wait[prio]++;&lt;br /&gt;
				oktogo[prio].wait;&lt;br /&gt;
				wait[prio]--;&lt;br /&gt;
				break();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		running++;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	priocoop.fini() {&lt;br /&gt;
		running--;&lt;br /&gt;
		for(int i = 0;i&amp;lt;10;i++) {&lt;br /&gt;
			if(wait[i] != 0) {&lt;br /&gt;
				oktogo[i].signal();&lt;br /&gt;
				break();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
-Midolo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
//0: priorita' maggiore&lt;br /&gt;
//9: priorita' minore&lt;br /&gt;
cond oktoenter[10];&lt;br /&gt;
int count[10];&lt;br /&gt;
bool running = false;&lt;br /&gt;
&lt;br /&gt;
//restituisce la priorita' maggiore che ha un processo in attesa&lt;br /&gt;
getprio() {&lt;br /&gt;
      	for(i=0;i&amp;lt;10;i++) {&lt;br /&gt;
		 if(count[i]&amp;gt;0)&lt;br /&gt;
			 break;&lt;br /&gt;
	 }&lt;br /&gt;
	 return i;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
priocoop() {&lt;br /&gt;
	init (prio) {&lt;br /&gt;
		if (running) {&lt;br /&gt;
			count[prio]++;&lt;br /&gt;
			oktoenter[prio].wait();&lt;br /&gt;
			count[prio]--;&lt;br /&gt;
		}&lt;br /&gt;
		running = true;&lt;br /&gt;
	}&lt;br /&gt;
	yield(prio) {&lt;br /&gt;
		i=getprio();&lt;br /&gt;
		if (i &amp;lt; 10) {&lt;br /&gt;
			// running = false; &lt;br /&gt;
			oktoenter[i].signal();&lt;br /&gt;
			count(prio)++&lt;br /&gt;
			oktoenter[proc].wait();&lt;br /&gt;
	                // running = true;&lt;br /&gt;
        	        count[prio]--;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	fini(prio){&lt;br /&gt;
		i=getprio();&lt;br /&gt;
		running=false;&lt;br /&gt;
		if(i&amp;lt;10)&lt;br /&gt;
			oktoenter[i].signal;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
-Berna3.14&lt;/div&gt;</summary>
		<author><name>Bernagoz</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Talk:Esercizi_a_caso_del_Prof.&amp;diff=31</id>
		<title>Talk:Esercizi a caso del Prof.</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Talk:Esercizi_a_caso_del_Prof.&amp;diff=31"/>
		<updated>2013-10-29T14:10:18Z</updated>

		<summary type="html">&lt;p&gt;Bernagoz: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bernagoz</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Talk:Esercizi_a_caso_del_Prof.&amp;diff=27</id>
		<title>Talk:Esercizi a caso del Prof.</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Talk:Esercizi_a_caso_del_Prof.&amp;diff=27"/>
		<updated>2013-10-28T19:48:56Z</updated>

		<summary type="html">&lt;p&gt;Bernagoz: esercizio codice sorgente&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
//questo e' un tentativo che funziona&lt;br /&gt;
//Stefano Bernagozzi&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void main(void){&lt;br /&gt;
  char c[] = __FILE__;&lt;br /&gt;
  FILE *f;&lt;br /&gt;
  if (f=fopen(c, &amp;quot;r&amp;quot;)){&lt;br /&gt;
    while ((c[0]=getc(f))!=EOF)&lt;br /&gt;
      printf(&amp;quot;%c&amp;quot;, c[0]);&lt;br /&gt;
    fclose(f);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bernagoz</name></author>
	</entry>
</feed>