Os program regarding shared memory

NEED TO Submit ‘producer.c’ and ‘consumer.c’ in the Linux machine.

Read the following document for programming assigment.

Download two programs ‘producer.c’ and ‘consumer.c’ and add your code there so that producer send a list of items to consumer. Producer read the item from a file ‘input.txt’.

In order to use shared memory library, compilation need to link a library ‘rt’. And since we will run two programs, we need to create two executables. See below.

Download ‘hw2.c’. It is a file that contains the definition of shared memory structure and a function to print current time. It is already included in ‘producer.c’ and ‘consumer.c’. You don’t need to change this file. You don’t need to compile it. ‘Producer.c’ and ‘consumer.c’ already include the file. Just keep ‘hw2.c’ in the same folder with other files.

‘read_example.c’ is an example file to show you how to read the input file and to show how to print with time stamps.

You need to copy ‘input.txt’ in the same folder and test as below.

Following is a sample run.

Run producer first. It need to read a number after another from the file and display while sending them to consumer. Since the consumer is not started, the buffer will become full soon and producer will wait.

Now run consumer as below. It need to display all items received. It keeps running until it gets end-of-item message ‘-1’

After consumer begins, the producer will also proceed to read all items from the file and end.

read_example.c:

#include <stdio.h>

#include <stdlib.h>

#include “hw2.c”

int main()

{

        int     item;

        FILE    *fp;

        fp = fopen(“input.txt”,”r”);

        while(fscanf(fp, “%d”,&item)!= EOF){

                printf(“%s Read %d from the filen”,get_time(),item);

        }

        fclose(fp);

}

producer.c:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <fcntl.h>

#include <sys/shm.h>

#include <sys/stat.h>

#include <sys/mman.h>

#include “hw2.c”

int main()

{

        const int SIZE = sizeof(shm_structure);

        const char *name = “OS-ipark”; // ATTENTION: Change this using YOUR id to avoid conflicts with others

        int     item;

        FILE    *fp;

        int shm_fd;

        shm_structure *ptr;

        /* create the shared memory segment */

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

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

        ftruncate(shm_fd,SIZE);

        /* now map the shared memory segment in the address space of the process */

        ptr = mmap(0,SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);

        if (ptr == MAP_FAILED) {

                printf(“Map failedn”);

                return -1;

        }

        /*****************************************************

        Add your code here.

        Read one item after another from the file ‘input.txt’.

        And write it to the shared memory so the consumer can read.

        Need to wait if the buffer is full

        *****************************************************/

        printf(“Successn”);

        return 0;

}

input.txt:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

32

64

128

256

512

1024

2048

4096

11

22

33

44

55

66

77

88

-1

consumer.c:

#include <stdio.h>

#include <stdlib.h>

#include <fcntl.h>

#include <sys/shm.h>

#include <sys/stat.h>

#include <sys/mman.h>

#include “hw2.c”

int main()

{

        const char *name = “OS-ipark”; // ATTENTION: Change this to the same name you used in producer.c

        const int SIZE = sizeof(shm_structure);

        int shm_fd;

        shm_structure *ptr;

        int i;

        int item;

        /* open the shared memory segment */

        shm_fd = shm_open(name, O_RDWR, 0666);

        if (shm_fd == -1) {

                printf(“shared memory failedn”);

                exit(-1);

        }

        /* now map the shared memory segment in the address space of the process */

        ptr = mmap(0,SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);

        if (ptr == MAP_FAILED) {

                printf(“Map failedn”);

                exit(-1);

        }

        /***************************************************

        Add your code for consumer here.

        Read an item after another from the shared memory

        And display to screen using printf().

        Need to wait if the buffer is empty.

        Check if this displays all the items in ‘input.txt’ 

        except end-of-message signal ‘-1’

        ***************************************************/

        

        /* remove the shared memory segment */

        if (shm_unlink(name) == -1) {

                printf(“Error removing %sn”,name);

                exit(-1);

        }

        return 0;

}

hw2.c:

// Definitions for shared memory structure

#define BUFFER_SIZE 10

typedef struct{

        int buffer[BUFFER_SIZE];

        int in;

        int out;

} shm_structure;

#include <time.h>

char time_str[100];

char *get_time()

{

        

        time_t t=time(NULL);    // get time info (month, day, hour, min)

        struct tm *tm1 = localtime(&t); // convert to easy format

        struct timeval tv;

        struct tm *tm;

        gettimeofday(&tv, NULL);    // get time info (month, day, hour, min)

        tm=localtime(&tv.tv_sec);   // convert to easy format

        sprintf(time_str,”(%02d/%02d %d:%d:%d %d)”, tm1->tm_mon+1,tm1->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec, tv.tv_usec);

        return time_str;

}

Get 20% Discount on This Paper
Pages (550 words)
Approximate price: -

Try it now!

Get 20% Discount on This Paper

We'll send you the first draft for approval by at
Total price:
$0.00

How it works?

Follow these simple steps to get your paper done

Place your order

Fill in the order form and provide all details of your assignment.

Proceed with the payment

Choose the payment system that suits you most.

Receive the final file

Once your paper is ready, we will email it to you.

Our Services

Assignment Help has assembled a team of highly skilled writers with diverse experience in the online writing circles. Our aim is to become a one stop shop for all your Academic/ online writing. Check out below our amazing service!

Essays

Essay Writing Services

At Assignment Help, we prioritize on all aspects that creates a good grade such as impeccable grammar, proper structure, zero-plagiarism, and conformance to guidelines. The principal purpose of essay writing is to present the author's evaluation concerning a singular subject about which they have made. Since Professionalism is the mother of every success, try our team of experienced writers in helping you complete your essays and other assignments.

Admissions

Admission Papers

You have been trying to join that prestigious institution you long yearned for, but the hurdle of an admission essay has become a stumbling block. We have your back, with our proven team that has gained invaluable experience over time, your chance of joining that institution is now! Just let us work on that essay.How do you write an admission essay? How do you begin the essay? For answers, try Quality Custom Writers Now!

Editing

Editing and Proofreading

Regardless of whether you're pleased with your composing abilities, it's never an impractical notion to have a second eye go through your work. The best editing services leaves no mistake untouched. We recognize the stuff needed to polish up a writing; as a component of our editing and proofreading, we'll change and refine your write up to guarantee it's amazing, and blunder free. Our group of expert editors will examine your work, giving an impeccable touch of English while ensuring your punctuation and sentence structures are top-notch.

Coursework

Technical papers

We pride ourselves in having a team of clinical writers. The stringent and rigorous vetting process ensures that only the best persons for job. We hire qualified PhD and MA writers only. We equally offer our team of writers bonuses and incentives to motivate their working spirit in terms of delivering original, unique, and informative content. They are our resources drawn from diverse fields. Therefore your technical paper is in the right hands. Every paper is assessed and only the writers with the technical know-how in that field get to work on it.

Coursework

College Essay Writing

If all along you have been looking for a trustworthy college essay service provider that provides superb academic papers at reasonable prices, then be glad that you search has ended with us. We are your best choice! Get high-quality college essay writing from our magnificent team of knowledgeable and dedicated writers right now!

Coursework

Quality Assignment/Homework Help

We give the students premium quality assignments, without alarming them with plagiarism and referencing issues. We ensure that the assignments stick to the rules given by the tutors. We are specific about the deadlines you give us. We assure you that you will get your papers well in advance, knowing that you will review and return it if there are any changes, which should be incorporated.