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

Calculate the price of your order

Select your paper details and see how much our professional writing services will cost.

We`ll send you the first draft for approval by at
Price: $36
  • Freebies
  • Format
  • Formatting (MLA, APA, Chicago, custom, etc.)
  • Title page & bibliography
  • 24/7 customer support
  • Amendments to your paper when they are needed
  • Chat with your writer
  • 275 word/double-spaced page
  • 12 point Arial/Times New Roman
  • Double, single, and custom spacing
  • We care about originality

    Our custom human-written papers from top essay writers are always free from plagiarism.

  • We protect your privacy

    Your data and payment info stay secured every time you get our help from an essay writer.

  • You control your money

    Your money is safe with us. If your plans change, you can get it sent back to your card.

How it works

  1. 1
    You give us the details
    Complete a brief order form to tell us what kind of paper you need.
  2. 2
    We find you a top writer
    One of the best experts in your discipline starts working on your essay.
  3. 3
    You get the paper done
    Enjoy writing that meets your demands and high academic standards!

Samples from our advanced writers

Check out some essay pieces from our best essay writers before your place an order. They will help you better understand what our service can do for you.

Get your own paper from top experts

Order now

Perks of our essay writing service

We offer more than just hand-crafted papers customized for you. Here are more of our greatest perks.

  • Swift delivery
    Our writing service can deliver your short and urgent papers in just 4 hours!
  • Professional touch
    We find you a pro writer who knows all the ins and outs of your subject.
  • Easy order placing/tracking
    Create a new order and check on its progress at any time in your dashboard.
  • Help with any kind of paper
    Need a PhD thesis, research project, or a two-page essay? For you, we can do it all.
  • Experts in 80+ subjects
    Our pro writers can help you with anything, from nursing to business studies.
  • Calculations and code
    We also do math, write code, and solve problems in 30+ STEM disciplines.

Frequently asked questions

Get instant answers to the questions that students ask most often.

See full FAQ
    See full FAQ

    Take your studies to the next level with our experienced specialists

    Chat
    Hello, Send us a message or inquiry, and we will respond right away