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)

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 pair of buffes for each device).

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

.

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

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.

As a note, this needs to be in C-- and it has to contain 2 drivers and 2 disks. Other responses were in C and not C--, or did not have 2 drivers/disks.

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!