Question: 1 . A bounded buffer is frequently implemented as a circular buffer, which is A bounded buffer is frequently implemented as a circular buffer, which
A bounded buffer is frequently implemented as a circular buffer, which is A bounded buffer is frequently implemented as a circular buffer, which is
an array that is indexed modulo its length:
One variable, in contains the index of the first empty space and an
ther, out, the index of the first full space if any If in out, there
is data in bufferoutin; if in out, there is data in bufferout and
bufferin; if in out, the buffer is empty. Consider the following
algorithm for two processes sharing a circular buffer:
a The algorithm is intended to provide mutually exclusive access to
individual elements of the array. That is when is able to write
a value to the array, should not be able to read from the same
array index. State this property as an invariant and prove it using
induction. You may need to prove other invariants to do this.
b The algorithm is also intended to provide freedom from starvation
for each process. That is after getting an item process should
eventually write it to the buffer, and when an item is in the buffer
process q should eventually read it State these properties using
temporal logic and prove they are correct. You may need to prove
further invariants to do this.
Deliverable: A file circular.pdf containing your answers to a and b
and your
an array that is indexed modulo its length
One variable, in contains the index of the first empty space and another, out, the index of the first full space if any If in out, there
is data in bufferoutin; if in out, there is data in bufferoutN and
bufferin; if in out, the buffer is empty. Consider the following
algorithm for two processes sharing a circular buffer:
Circular buffer
dataType array N buffer
integer in out
p q
dataType d dataType d
loop forever loop forever
p: d getItem q: await in out
p: await out in mod N q: d bufferout
p: bufferin d q: out out mod N
p: in in mod N q: useItemd
Assume that useItemd always runs to completion, but that getItem
may not terminate since there may be no items available.
a The algorithm is intended to provide mutually exclusive access to
individual elements of the array. That is when p is able to write
a value to the array, q should not be able to read from the same
array index. State this property as an invariant and prove it using
induction. You may need to prove other invariants to do this.
b The algorithm is also intended to provide freedom from starvation
for each process. That is after getting an item process p should
eventually write it to the buffer, and when an item is in the buffer
process q should eventually read it State these properties using
temporal logic and prove they are correct. You may need to prove
further invariants to do this.
Deliverable: A file circular.pdf containing your answers to a and b
and your name and student number.
Check the above algorithm for any lines which contain more than one
critical reference.
a Write a Promela specification for the algorithm that does not have
more than one critical reference in any atomic statement. Note that
the modulo operator in Promela is as in C and Java
b Use Spin to prove that the algorithm is correct: use assertions to
prove mutual exclusion, and an LTL property to prove freedom from
starvation. You may need to introduce additional auxiliary variables to do this.
Deliverable: A file circular.pml containing the Promela specification, and
a comment describing any changes you made to avoid lines with more
than one critical reference, the properties you proved, and your name and
student number.
Write a Java program to format an arbitrary text file to have exactly
characters per line except for the last line which may have or less characters after replacing all occurrences of tabs and two or more consecutive
spaces with a single space. Your program must use three threads running
concurrently. The first thread reads characters from the input file using the
provided class AReader, and replaces endofline characters with spaces.
The second thread removes and replaces tabs and removes consecutive
occurrences of spaces, and the third thread writes lines of characters
to the output file using the provided class AWriter. The threads must
communicate characters via circular buffers of length characters using
the algorithm from question
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
