Concurrent UNIX Processes and Shared Memory


The goal of this project is to become familiar with concurrent processing in Linux using shared memory.


As Kim knew from her English courses, palindromes are phrases that read the same way right-to-left as they do left-to-right, when disregarding capitalization. Being the nerd she is, she likened that to her hobby of looking for palindromes on her vehicle odometer: 245542 (her old car), or 002200 (her new car).

Now, in her first job after completing her undergraduate program in Computer Science, Kim is once again working with Palindromes. As part of her work, she is exploring alternative security encoding algorithms based on the premise that the encoding strings are not palindromes. Her first task is to examine a large set of strings to identify those that are palindromes, so that they may be deleted from the list of potential encoding strings.

The strings consist of letters, (a, . . . , z, A, . . . Z), and numbers (0, . . . , 9). Ignore any punctuations and spaces. Kim has a one-dimensional array of pointers, mylist[], in which each element points to the start of a string (You can use string class of C++ if you so desire, but I think it will be easier to use C strings for this project). Each string terminates with the NULL character. Kim’s program is to examine each string and print out all strings that are palindromes in one file while the non-palindromes are written to another file.

Your job is obviously to write the code for Kim. The main program will read the list of palindromes from a file (one string per line) into shared memory and fork off processes. Each child will test the string at the index assigned to it and write the string into appropriate file, named [login to view URL] and nopalin.out. In addition, the processes will write into a log file (described below). You will have to use the code for multiple process ipc problem (Solution 4 in notes) to protect the critical resources – the two files.

Make sure you never have more than 20 processes in the system at any time, even if the program is invoked with n > 20. Add the pid of the child to the file as comment in the log file.

Skills: Linux, C Programming, UNIX, C++ Programming, Computer Security

See more: sqlite shared memory database, visual studio 2005 shared memory wrapper, sqlite shared memory, shared memory c, c++ shared memory between processes example, shared memory system in interprocess communication, shared memory - tutorialspoint, shared memory architecture, shared memory in os, shared memory - geeksforgeeks, shared memory architecture in computer architecture, shared memory life cycle, sqllite shared memory, xen shared memory, shared memory communication channel, communication via shared memory xen, shared memory works xen, com ipc shared memory server, shared memory json, shared memory mt4

About the Employer:
( 4 reviews ) St. Louis, United States

Project ID: #27459973

Awarded to:

(15 Reviews)

3 freelancers are bidding on average $95 for this job


Hello, Hope this message finds you well, I checked your details and I believe that my experience is what you are looking 4. I have been working on similar projects for the past eight years, and I have the essential sk More

$150 USD in 3 days
(9 Reviews)

Hello, I am expert in kernel programming specially linux kernel. I have in depth knowledge of linux kernel from memory subsystem(virtual memory), file subsystem(VFS[virtual file system], ext4) , process subsystem(inte More

$56 USD in 2 days
(0 Reviews)