Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

This program is to establish a shared-memory object between the parent and child processes. This technique allows the child to write the contents of the

This program is to establish a shared-memory object between the parent and child processes. This technique allows the child to write the contents of the sequence to the shared-memory object. The parent can then output the sequence when the child completes. Because the memory is shared, any changes the child makes will be reflected in the parent process as well.

This program will be structured using POSIX shared memory as described in code sample below. The parent process will progress through the following steps:

a. Establish the shared-memory object (shm_open(), ftruncate(), and mmap()). b. Create the child process and wait for it to terminate. c. Output the contents of shared memory. d. Remove the shared-memory object. One area of concern with cooperating processes involves synchronization issues. In this exercise, the parent and child processes must be coordinated so that the parent does not output the sequence until the child finishes execution. These two processes will be synchronized using the wait() system call: the parent process will invoke wait(), which will suspend it until the child process exits.

Deliverable: A C or C++ code that implements the coding requirements. Please include the source code and a screenshot with output a couple of test cases. Copy and paste your code into the submission box, attached image for output.

//Producer process illustrating POSIX shared-memory API.

#include

#include

#include

#include

#include

#include

#include

int main()

{

/* the size (in bytes) of shared memory object */

const int SIZE = 4096;

/* name of the shared memory object */

const char *name = "OS";

/* strings written to shared memory */

const char *message_0 = "Hello";

const char *message_1 = "World!";

/* shared memory file descriptor */

int fd;

/* pointer to shared memory obect */

char *ptr;

/* create the shared memory object */

fd = shm_open(name,O_CREAT | O_RDWR,0666);

/* configure the size of the shared memory object */

ftruncate(fd, SIZE);

/* memory map the shared memory object */

ptr = (char *)

mmap(0, SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

/* write to the shared memory object */

sprintf(ptr,"%s",message_0);

ptr += strlen(message_0);

sprintf(ptr,"%s",message_1);

ptr += strlen(message_1);

return 0;

}

//Consumer process illustrating POSIX shared-memory API.

#include

#include

#include

#include

#include

#include

int main()

{

/* the size (in bytes) of shared memory object */

const int SIZE = 4096;

/* name of the shared memory object */

const char *name = "OS";

/* shared memory file descriptor */

int fd;

/* pointer to shared memory obect */

char *ptr;

/* open the shared memory object */

fd = shm_open(name, O_RDONLY, 0666);

/* memory map the shared memory object */

ptr = (char *)

mmap(0, SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

/* read from the shared memory object */

printf("%s",(char *)ptr);

/* remove the shared memory object */

shm_unlink(name);

return 0;

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Inference Control In Statistical Databases From Theory To Practice Lncs 2316

Authors: Josep Domingo-Ferrer

2002nd Edition

3540436146, 978-3540436140

More Books

Students also viewed these Databases questions