Question: 1.- In this assignment you will implement a simulation of the interaction of user programs with the OS to execute an I/O operation on two

1.- In this assignment you will implement a simulation of the interaction of user programs

with the OS to execute an I/O operation on two different devices.

User programs:

User

programs will communicate with

DOIO

(OS) to request an I/O operation. (This will

simulate a system call)

User programs will give to

DOIO

three parameters: User id, device number (

dev

is a

random number in the

range

1 and 2 that represents device one or device two) and an

address (

addr

is a random number in the range 1 and 20.) (

addr

is an integer that

represents a track number in the hard drive).

User programs will pass the parameters to DOIO through three buffers of size one each

(

bufid

,

bufdev

, and

bufaddr

).

Once the parameters are stored in the buffers, user programs executes a p(request_served[

index ]) operation to wait for the completion of the I/O operation. You will need a

semaphore array

request_served

[5].

There will be five users running concurrently and each will execute 5 I/O operations.

DOIO:

DOIO

will collect and

id

, device(

dev

), and address(

addr

) from

bufid

,

bufdev

, and

bufaddr

to assemble the

IORB

.

DOIO

will check on device number to decide which one of the two devices will get the

IORB.

Once the device has been selected,

DOIO

will store the IORB (

id

and

addr

) into the two

buffers that represent the IORQ (

iorqid

and

iorqaddr

) of the selected device. Notice that

you need separate buffers (one for each device:

iorqid

and

iorqaddr and iorqid2

and

iorqaddr2

).

DOIO

must wait to receive signals from

Device drivers

indicating that all request have

been served. Then

DOIO

will shut down both

Disks

.

Device drivers (1 and 2):

Device

drivers will collect an IORB (made up of

id

and

addr

) from

iorqid

and

iorqaddr

and then initiate the physical I/O operation on the hard drive it controls and wait for the I/O

operation to be completed: p(

operation_complete

).

The device driver initiates the physical I/O operation by storing

addr

into a buffer of length

one. The buffer name is

pio

(physical I/O).

When the I/O operation completes a signal is received, the

Device

driver will identify the

User

that issued the I/O request using the

id

, and will signal the semaphore

request_served

associated to the

User

.

When the last request has been served, both drivers have to signal DOIO to indicate that all

requests have been handled and both drivers will emit a message: Driver 1 (2) stops

Disk (1 and 2):

The

Disk

processes simulates the access to a track in the hard drive.

The

Disk

process gets the

addr

from

pio

and stores it in a variable called

seek

and

iterates in a dummy loop from 1 to

seek

.

Once out of the loop, disk will execute a v on the semaphore

operation_complete

Disk

will operate continuously until DOIO shuts them down.

Note:

a) Define all semaphores that you need according to the number of buffers used.

b) Each user will make 5 system calls to initiate I/O operations

c)

DOIO

will create 25 IORB

d) The sum of the I/O operations executed by drivers must add up 25. You will need a

shared variable to control the total number of I/O operations because it is not known

before hand the numbers of I/O operations initiated by each

Device

driver.

e) Once

Driver

s have served all request they have to signal

DOIO

.

f) Once

DOIO

receives signasl from

Drivers

indicating all request have been served.

DOIO

will shut down both

Disks

.

Project Direction

You will write the program C-- based on the

BACI

interpreter that you

used in programming project 1.

Test your solution

You must run and test your solution for correctness, as well as,

comment

on the code and the expected results. If this were a task for

an employer, you would be expected to follow company policy,

including naming, conventions, and syntax.

Project Submission

What to submit?

Submit the source code(.cm file) with comments and the output

file (.txt) showing the results

.

Example for the print out of results:

User 1 executes system call SIO or DOIO

DOIO assembles IORB and inserts it in IORQ for user 1

User 2 executes system call SIO or DOIO

Driver initiates I/O operation for user 1

User 3 executes system call SIO or DOIO

User 4 executes system call SIO or DOIO

DOIO assembles IORB and inserts it in IORQ for user 2

Disk Completes I/O operation (disk does not know what process

initiated the I/O operation)

Driver signal user 1 (operation complete)

User 1 executes system call SIO or DOIO

DOIO assembles IORB and inserts it in IORQ

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!