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;
}
Try it now!
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
Custom Writings Help is a Quality-Oriented Company in Online Writing as a result of hiring exceptional professionals to execute clients' tasks.
Essays
At Custom Writings Help,We understand the struggle of research paper writing, and that is why at Custom WritingS Help, we are all out to help you. We pride ourselves on having a team of clinical writers. The stringent and rigorous vetting process ensures that only the 'BEST' Writers are chosen for the job. We have highly qualified Ph.D. and MA writers working with us; we equally offer these experienced writers specific bonuses and incentives to make them deliver highly original, unique, and informative content at reasonably low prices.
Admissions
Thesis Writing Service
Worlwide, Many Masters Students are struggling with Thesis Completion. A thesis is likely to be the longest and most challenging piece of work a student has ever completed. However, unlike essays and other assignments, a student can pick a particular interest topic and work on their initiative. Fortunately, we are there for you. At Custom Writings Help, you are assured of an authentic, imaginative, informative, linguistically great, and advantageous thesis that adheres to all your needs. So, why continue considering different writers when you have discovered the best in the field?
Editing
Custom Papers
Not a single student can avoid writing custom papers. However, a total lack of experience, skills, and time makes it very hard to produce a superb writing piece. Therefore, if you are seeking professional help, turn to us. Our specialized and experienced writers compose a variety of model papers, including custom essays, college term papers, research papers, book reports, MBA essays, executive summaries, dissertations, Ph.D. theses, admission essays, and research proposals for college and university students at any level.
Coursework
Essay Writing
Most of the students disregard the critical principles of essay writing and compose papers below sensible guidelines. Therefore, with Custom Writings Help, one should not worry about his/her essay. Our Writers compose informative and engaging content on all complexities and topics. We write meaningful and smart essays while prioritizing all aspects that bring about a good grade, such as impeccable grammar, proper structure, zero-plagiarism, and conformance to guidelines.
Coursework
Coourse Work Writing
Don't let the seemingly never-ending onslaught of writing assignments get you down. If you are looking where to get course work assistance online, the writers at Custom Writings Help are here to assist you with all of your writing needs. We undertake to unique delivery of papers that meet the professor's requirements. The content is proofread, edited, and checked plagiarism before submission to customers. No matter how big or small your work is, we will deliver on time. Try US Now! !
Coursework
Dissertation Writing Service
High-Quality Dissertation Writing Services are rare. They require Ph.D. academicians – not easily found. However, are an exception. The years, time, and resources we have invested in the dissertation world has given us a competitive advantage over others. Choose to come to Custom Writings Help; You will find perfect Ph.D. consultants who have written hundreds of dissertations theses ready to help you. Let our dissertation-writing services help you craft your dissertation, for you are assured we will give you the results.