In c program | Computer Science homework help

Write a solution for the producer/consumer problem using processes instead of threads. Refer to the solution worked out in the demo and make sure you fully understand what is going on there before beginning this one (source file is attached to this assignment). Turn in all code and a text file called README containing instructions for building and running your programs. All programs must compile and run on os.cs.siue.edu. Descriptions of functions listed below in bold can be found in the man pages (e.g. man fork), though sometimes you may need to specify the correct section of the manual to get the correct page (e.g. man 3 printf). Approach the homework in phases and incrementally grow your solution: start with process creation (e.g. if there’s one producer and one consumer specified, one process -the parent- will fork two others, a producer program and a consumer program), then move on to shared memory stuff (making sure that the children can read what the parent is placing in there), and only then finish up the producer/consumer portion (pretty much the same as the threaded version).

Use the following functions for process creation, etc:

fork – create a new process

execlp – replace current process image with a new process image (i.e. execute a file)

waitpid – allows parent to wait for a child with specified pid

Use the following functions for sharing stuff between processes:

shm_open – create a named chunk of shared memory

ftruncate – to change the size of the named chunk of shared memory

mmap – to map the shared memory chunk into current process’ address space

Example:

Let’s say you want to share a struct, like:

typedef struct shared{

   int some_int_to_share;

   int some_other_int_to_share;

   …

}shared;

In the parent process (the one that starts everything):

int fd = shm_open(“prodconshare”, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);

ftruncate(fd, sizeof(shared));

shared* sharedstruct = mmap(NULL, sizeof(shared), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

In the child process it is similar, but the child process would not create the named chunk if it doesn’t exist and the child process has no need to resize the chunk (so, no ftruncate):

int fd = shm_open(“prodconshare”, O_RDWR, S_IRUSR | S_IWUSR);

shared* sharedstruct = mmap(NULL, sizeof(shared), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

Use the following functions to synchronize the producers and consumers:

sem_init – initialize a semaphore

sem_wait – decrement a semaphore

sem_post – increment a semaphore

(remember that decrementing a semaphore below zero will put the calling process to sleep and sem_post will have to be called by another process to wake it up. You might think about stuffing some semaphores into the shared memory, using a struct to arrange the shared memory chunk’s contents.)

The producers can exit when they’ve produced their whole string, e.g. “hello world”.

For simplicity, the consumers may run indefinitely and be terminated with ctrl+c.

Other useful functions:

malloc – allocate memory

sizeof – get the size of things

printf – print stuff

perror – print error stuff







Place your order
(550 words)

Approximate price: $22

Calculate the price of your order

550 words
We'll send you the first draft for approval by September 11, 2018 at 10:52 AM
Total price:
$26
The price is based on these factors:
Academic level
Number of pages
Urgency
Basic features
  • Free title page and bibliography
  • Unlimited revisions
  • Plagiarism-free guarantee
  • Money-back guarantee
  • 24/7 support
On-demand options
  • Writer’s samples
  • Part-by-part delivery
  • Overnight delivery
  • Copies of used sources
  • Expert Proofreading
Paper format
  • 275 words per page
  • 12 pt Arial/Times New Roman
  • Double line spacing
  • Any citation style (APA, MLA, Chicago/Turabian, Harvard)

Our guarantees

Delivering a high-quality product at a reasonable price is not enough anymore.
That’s why we have developed 5 beneficial guarantees that will make your experience with our service enjoyable, easy, and safe.

Money-back guarantee

You have to be 100% sure of the quality of your product to give a money-back guarantee. This describes us perfectly. Make sure that this guarantee is totally transparent.

Read more

Zero-plagiarism guarantee

Each paper is composed from scratch, according to your instructions. It is then checked by our plagiarism-detection software. There is no gap where plagiarism could squeeze in.

Read more

Free-revision policy

Thanks to our free revisions, there is no way for you to be unsatisfied. We will work on your paper until you are completely happy with the result.

Read more

Privacy policy

Your email is safe, as we store it according to international data protection rules. Your bank details are secure, as we use only reliable payment systems.

Read more

Fair-cooperation guarantee

By sending us your money, you buy the service we provide. Check out our terms and conditions if you prefer business talks to be laid out in official language.

Read more

Get 15% OFF on your FIRST order. Use the coupon code: new15