SlideShare a Scribd company logo
In C programming please. CSCI 4534 Operating Systems Programming Assignment #2 Date Due:
Monday, Mar 13th, 2023 @ 11:59pm submitted to Blackboard This assignment is meant to: 1.
Introduce students to writing basic client/server programs in C using the UNIX/Linux platform 2.
Provide an opportunity to write code that will become the base for projects similar to that of a
simulated operating system component 3. Extend the server to be able to handle requests from
multiple clients simultaneously. Objective: Create programs that run independently and can
perform simple IPC using FIFOs/named pipes to pass information back and forth in a client/server
fashion. This assignment requires the analysis, implementation, testing and documentation of two
small programs written in C on the UHCL Linux server ruby or your own Linux box or virtual
machine. A server program and a client program that will be run concurrently. Server program:
There is no change in the functionality of the server program (as far as the convert&store) other
than: 1. Make the server keep a simulated processID counter initialized to 1, increment and return
the simulated processID value to each client that initiates a connection with the server. (Clients will
need to save their simulated PID to include with each simulated system call made and sent to the
server afterwards). 2. Save the file descriptors for the return fifo for each client in an array/list so
that when a request comes in from client X, a proper reply is sent to client X through its own return
fifo. The server program will provide a simple convert&store service to clients that connect with it
and send it requests. Server program will be an iterative server (can process ONLY one client at a
time) and it needs to do the following: Create a well-known receive FIFOs where it will read its
input/requests from the client and open it in READ mode (will block of course until a client opens
the same fifo in write mode). Then go into an infinite loop to read requests from the clients, each
request will be a simulated system call, each request/system call should include: 1. Process ID of
process sending/making the system call 2. System call number (integer or byte) 3. Number n of
parameters in the system call (integer or byte) 4. Size of the rest of the message that includes 5.
Actual value(s) for the n parameters indicated in 3 As described below: System Call 1 would be
the first request sent by a new client (connect system call) 1. Process ID 2. System Call Number =
1 3. Number n of parameters = 1 4. Size of 5 5. Actual value(s) for the 1 parameter = the name of
the clients specific FIFO which the server should use to reply to that client. Server should open
that client-specific FIFO in WRITE mode, save the file descriptor and the pid of the client for use
when replies need to be sent to that client. 6. No need to return anything. Increment the processID
counter and return the next available simulated ClientID/processID System Call 2 Number to text
1. Process ID 2. System Call Number = 2 3. Number n of parameters = 1 4. Size of parameter (4
bytes for integer) 5. Actual value(s) for the parameter 6. Return the number converted to text ( 0 ->
zero, 1 -> one, 2 -> two, 3 -> three, etc. assume number will be between 0 and 9) System Call 3
Text to number 1. Process ID 2. System Call Number = 3 3. Number n of parameters = 1 4. Size
of parameter 5. Actual value(s) for the 1 parameter (zero, one, two, three, etc.) 6. Return the
number (four -> 4, five -> 5, etc) System Call 4 Store 1. Process ID 2. System Call Number = 4 3.
Number n of parameters = 1 7. Size of parameter 4. Actual value(s) for the 1 parameter 5. Return
stored value System Call 5 Recall 6. Process ID 7. System Call Number = 5 8. Number n of
parameters = 0 9. Actual value(s) for the 1 parameter = N/A 10. Return stored/recalled value
System Call 0 Exit o Process ID o System Call Number = 0 o Number n of parameters = 0 o
Actual value(s) for the parameter = N/A o Return value N/A System Call -1 Terminate o Process
ID o System Call Number = -1 o Number n of parameters = 0 o Actual value(s) for the parameter =
N/A o Return value N/A Server must print to the screen a message indicating the system call
received, something like: Client pid: 1 System Call Requested: 3 with 2 parameters which are:
Param1=xxxx param2=YYYY result=XXXX Server must reply back to the client through the client
specific fifo with a reply message that should include a result as appropriate. If the request is the
system call 0 EXIT, the server program must close the client specific fifo and continue to receive
the next system call (ready for the next client to connect) When the last client terminates, i.e.
sends system call -1, the server should close the well known FIFO, delete it and terminate as well.
Client Program: The client program will connect to the server through the well-known FIFO and
send requests through it to the server, obtaining information from the user as to what system call
to make and the corresponding values for the parameter(s), more specifically, the client program
should: The server will now return the ClientID/processID upon successful connection. This ID will
need to be saved and included with all future system calls. Acquire from the user (through the
command line or reading from the keyboard) what the client number this instance of the program
will be (i.e., client 1, client 2, etc.) or use the actual processid if you prefer. Open the well-known
servers fifo in write mode to communicate with the server (which will unblock the server from its
fifo open call) Create the client-specific FIFO using an appropriate name (e.g., ./ClientNfifo, where
N is the client number and send the initial connect system call to the server including Client
number and name of the client-specific FIFO. Open the client-specific FIFO in READ mode to be
able to read replies from the server. (This will block the client until the server opens the client-
specific FIFO in write mode). After this, the client should go into a loop where the client will ask
the user what to do next? providing three choices: o 1 Send request to server, in this case it will
ask the user for data: What sytem call? How many parameters? (user enters 0, 1, 2, 3, etc.) For
each of the n parameters indicated above, Read a value Take all the information gathered,
appropriately format a system call request and send it to the server. Request should include:
Process ID System call number (integer or byte) Number n of parameters in the system call
(integer or byte) Size of the parameter(s) data Actual value(s) for the n parameter(s) indicated
above After sending the request to the server, read the reply from the server in the client-specific
FIFO and write it to the screen. o 2 EXIT - indicates THIS client does not want to issue more
requests to the server, it should send a EXIT system call to the server, close its client specific
FIFO, delete it and exit. o 3 TERMINATE - indicates THIS client does not want to issue more
requests to the server, and is flagging the server to also exit. it should send a TERMINATE system
call to the server, close its client specific FIFO, delete it and exit. The first step in writing a
client/server application is define the communications protocol between both applications. In other
words, how are you going to encode the requests and replies into a message, you can encode
data in string forms, separating each piece with a , - a space, a new line character, or any other
kind of separator, you can use integer data, strucs, etc. Create a zip file with both your programs
source file(s) and executables, do a screen recording showing your programs working (with
multiple clients running one after the other and interacting with the server) and upload to
blackboard. Alternatively, just upload a zip file of your source files and executables and visit with
the TA during his office hours so you can do a demo of your client/server system. Make
incremental progress as you develop your code and back up your files often!! For instance (each
version expands on capabilities of previous one): Version 1: server creates and opens receiving
fifo, client opens servers fifo and creates its own input fifo and sends its name to the server which
display it on screen Version 2: server opens clients fifo, client sends a dummy system call to
servers receive fifo, server echoes data on clients fifo. Version 3: client reads input from user to
form requests and displays the formatted request on screen Version 4: client sends request to
server and server displays it on screen Version 5: server interprets request and creates and
returns result to client, client displays reply on screen Version 6: Final version with all features.

More Related Content

DOCX
AssignmentACSC_424_midterm_fall_2012.pdf1 ACSC42.docx
PPT
DS-Chapter DDEFR2-Communication_105220.ppt
PPT
2.communcation in distributed system
PPT
Chapter 4 communication2
 
PPTX
Distributed Systems Distributed Systems- COMMUNICATION.pptx
PPTX
Distributed Systems Distributed Systems- COMMUNICATION.pptx
PPTX
session 4(system calls).pptxsession 4(system calls).pptx
DOCX
Distributed System
AssignmentACSC_424_midterm_fall_2012.pdf1 ACSC42.docx
DS-Chapter DDEFR2-Communication_105220.ppt
2.communcation in distributed system
Chapter 4 communication2
 
Distributed Systems Distributed Systems- COMMUNICATION.pptx
Distributed Systems Distributed Systems- COMMUNICATION.pptx
session 4(system calls).pptxsession 4(system calls).pptx
Distributed System

Similar to In C programming please CSCI 4534 Operating Systems Program.pdf (20)

PDF
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
DOCX
client-server communication using socket IPC
PPT
Topic2 Understanding Middleware
PPT
Chapter 2B-Communication.ppt
PPT
ppt_project_group_2.ppt amnd project report
PPT
Dc 12 Chiueh
PPTX
SystemCallsAndInvocationMethods_Mayin074.pptx
PDF
System Calls - Introduction
PDF
Choose one of these three options A IPC using FIFO B Shar.pdf
PDF
Cs556 section3
PDF
Cs556 section3
PDF
D200011_2024_Dec13 (2).pdf aaaaaaaaaaaaa
PPT
SMTP and TCP protocol
PDF
Chat app case study - xmpp vs SIP
RTF
MSB-Remote procedure call
PPT
Aspect UIP Logical Architecture
PDF
Project 2 Assigned Tuesday February 21tst2023 Due Tuesd.pdf
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
client-server communication using socket IPC
Topic2 Understanding Middleware
Chapter 2B-Communication.ppt
ppt_project_group_2.ppt amnd project report
Dc 12 Chiueh
SystemCallsAndInvocationMethods_Mayin074.pptx
System Calls - Introduction
Choose one of these three options A IPC using FIFO B Shar.pdf
Cs556 section3
Cs556 section3
D200011_2024_Dec13 (2).pdf aaaaaaaaaaaaa
SMTP and TCP protocol
Chat app case study - xmpp vs SIP
MSB-Remote procedure call
Aspect UIP Logical Architecture
Project 2 Assigned Tuesday February 21tst2023 Due Tuesd.pdf
Ad

More from ankitsrivastava681882 (20)

PDF
Eskimo Joes designet of the woridis second bestselling T.pdf
PDF
Blm A 40 puan Vaka almas Aada verilen vaka almasn okuy.pdf
PDF
13 What is the name of the gateway interfaceport that face.pdf
PDF
A bond has three years to maturity a 2000 face value and.pdf
PDF
all of B all of c all of d all of e experienced a breakep at.pdf
PDF
3112 Scan for vulnerabilities in organizational system and.pdf
PDF
3 Please write java code to show the following stars 30 .pdf
PDF
Whitney received 76000 of taxable income in 2022 All of .pdf
PDF
Use the table below to compare DNA and RNA two types of nuc.pdf
PDF
Question Need to have complete possible explanation for eac.pdf
PDF
Review the following case study and create an action plan fo.pdf
PDF
Python is a very powerful tool when used properly The diffe.pdf
PDF
Smartphones A poll agency reports that 24 of teenagers age.pdf
PDF
Problem 3 4 pts Consider a personal information record w.pdf
PDF
queja principal Ya no puedo acostarme porque no puedo resp.pdf
PDF
Sara Lee Products Inc has bonds outstanding with a coupon r.pdf
PDF
n125x1122s118 n220x2106s216 We are testing the.pdf
PDF
oktan semeli veya DoruYanl TF sorular iin en iyi yant.pdf
PDF
Northwest Lumber had a profit margin of 5 a total assets t.pdf
PDF
Nueva York Nueva York Henry estaba en su ltimo semestre d.pdf
Eskimo Joes designet of the woridis second bestselling T.pdf
Blm A 40 puan Vaka almas Aada verilen vaka almasn okuy.pdf
13 What is the name of the gateway interfaceport that face.pdf
A bond has three years to maturity a 2000 face value and.pdf
all of B all of c all of d all of e experienced a breakep at.pdf
3112 Scan for vulnerabilities in organizational system and.pdf
3 Please write java code to show the following stars 30 .pdf
Whitney received 76000 of taxable income in 2022 All of .pdf
Use the table below to compare DNA and RNA two types of nuc.pdf
Question Need to have complete possible explanation for eac.pdf
Review the following case study and create an action plan fo.pdf
Python is a very powerful tool when used properly The diffe.pdf
Smartphones A poll agency reports that 24 of teenagers age.pdf
Problem 3 4 pts Consider a personal information record w.pdf
queja principal Ya no puedo acostarme porque no puedo resp.pdf
Sara Lee Products Inc has bonds outstanding with a coupon r.pdf
n125x1122s118 n220x2106s216 We are testing the.pdf
oktan semeli veya DoruYanl TF sorular iin en iyi yant.pdf
Northwest Lumber had a profit margin of 5 a total assets t.pdf
Nueva York Nueva York Henry estaba en su ltimo semestre d.pdf
Ad

Recently uploaded (20)

PDF
Microbial disease of the cardiovascular and lymphatic systems
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
VCE English Exam - Section C Student Revision Booklet
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PPTX
Cell Structure & Organelles in detailed.
PPTX
Institutional Correction lecture only . . .
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
RMMM.pdf make it easy to upload and study
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PDF
Insiders guide to clinical Medicine.pdf
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PPTX
GDM (1) (1).pptx small presentation for students
PPTX
master seminar digital applications in india
PDF
Sports Quiz easy sports quiz sports quiz
PDF
Anesthesia in Laparoscopic Surgery in India
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PDF
Classroom Observation Tools for Teachers
PPTX
Cell Types and Its function , kingdom of life
Microbial disease of the cardiovascular and lymphatic systems
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
human mycosis Human fungal infections are called human mycosis..pptx
VCE English Exam - Section C Student Revision Booklet
Supply Chain Operations Speaking Notes -ICLT Program
Cell Structure & Organelles in detailed.
Institutional Correction lecture only . . .
Final Presentation General Medicine 03-08-2024.pptx
RMMM.pdf make it easy to upload and study
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
Insiders guide to clinical Medicine.pdf
Abdominal Access Techniques with Prof. Dr. R K Mishra
GDM (1) (1).pptx small presentation for students
master seminar digital applications in india
Sports Quiz easy sports quiz sports quiz
Anesthesia in Laparoscopic Surgery in India
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
Classroom Observation Tools for Teachers
Cell Types and Its function , kingdom of life

In C programming please CSCI 4534 Operating Systems Program.pdf

  • 1. In C programming please. CSCI 4534 Operating Systems Programming Assignment #2 Date Due: Monday, Mar 13th, 2023 @ 11:59pm submitted to Blackboard This assignment is meant to: 1. Introduce students to writing basic client/server programs in C using the UNIX/Linux platform 2. Provide an opportunity to write code that will become the base for projects similar to that of a simulated operating system component 3. Extend the server to be able to handle requests from multiple clients simultaneously. Objective: Create programs that run independently and can perform simple IPC using FIFOs/named pipes to pass information back and forth in a client/server fashion. This assignment requires the analysis, implementation, testing and documentation of two small programs written in C on the UHCL Linux server ruby or your own Linux box or virtual machine. A server program and a client program that will be run concurrently. Server program: There is no change in the functionality of the server program (as far as the convert&store) other than: 1. Make the server keep a simulated processID counter initialized to 1, increment and return the simulated processID value to each client that initiates a connection with the server. (Clients will need to save their simulated PID to include with each simulated system call made and sent to the server afterwards). 2. Save the file descriptors for the return fifo for each client in an array/list so that when a request comes in from client X, a proper reply is sent to client X through its own return fifo. The server program will provide a simple convert&store service to clients that connect with it and send it requests. Server program will be an iterative server (can process ONLY one client at a time) and it needs to do the following: Create a well-known receive FIFOs where it will read its input/requests from the client and open it in READ mode (will block of course until a client opens the same fifo in write mode). Then go into an infinite loop to read requests from the clients, each request will be a simulated system call, each request/system call should include: 1. Process ID of process sending/making the system call 2. System call number (integer or byte) 3. Number n of parameters in the system call (integer or byte) 4. Size of the rest of the message that includes 5. Actual value(s) for the n parameters indicated in 3 As described below: System Call 1 would be the first request sent by a new client (connect system call) 1. Process ID 2. System Call Number = 1 3. Number n of parameters = 1 4. Size of 5 5. Actual value(s) for the 1 parameter = the name of the clients specific FIFO which the server should use to reply to that client. Server should open that client-specific FIFO in WRITE mode, save the file descriptor and the pid of the client for use when replies need to be sent to that client. 6. No need to return anything. Increment the processID counter and return the next available simulated ClientID/processID System Call 2 Number to text 1. Process ID 2. System Call Number = 2 3. Number n of parameters = 1 4. Size of parameter (4 bytes for integer) 5. Actual value(s) for the parameter 6. Return the number converted to text ( 0 -> zero, 1 -> one, 2 -> two, 3 -> three, etc. assume number will be between 0 and 9) System Call 3 Text to number 1. Process ID 2. System Call Number = 3 3. Number n of parameters = 1 4. Size of parameter 5. Actual value(s) for the 1 parameter (zero, one, two, three, etc.) 6. Return the number (four -> 4, five -> 5, etc) System Call 4 Store 1. Process ID 2. System Call Number = 4 3. Number n of parameters = 1 7. Size of parameter 4. Actual value(s) for the 1 parameter 5. Return stored value System Call 5 Recall 6. Process ID 7. System Call Number = 5 8. Number n of parameters = 0 9. Actual value(s) for the 1 parameter = N/A 10. Return stored/recalled value System Call 0 Exit o Process ID o System Call Number = 0 o Number n of parameters = 0 o Actual value(s) for the parameter = N/A o Return value N/A System Call -1 Terminate o Process
  • 2. ID o System Call Number = -1 o Number n of parameters = 0 o Actual value(s) for the parameter = N/A o Return value N/A Server must print to the screen a message indicating the system call received, something like: Client pid: 1 System Call Requested: 3 with 2 parameters which are: Param1=xxxx param2=YYYY result=XXXX Server must reply back to the client through the client specific fifo with a reply message that should include a result as appropriate. If the request is the system call 0 EXIT, the server program must close the client specific fifo and continue to receive the next system call (ready for the next client to connect) When the last client terminates, i.e. sends system call -1, the server should close the well known FIFO, delete it and terminate as well. Client Program: The client program will connect to the server through the well-known FIFO and send requests through it to the server, obtaining information from the user as to what system call to make and the corresponding values for the parameter(s), more specifically, the client program should: The server will now return the ClientID/processID upon successful connection. This ID will need to be saved and included with all future system calls. Acquire from the user (through the command line or reading from the keyboard) what the client number this instance of the program will be (i.e., client 1, client 2, etc.) or use the actual processid if you prefer. Open the well-known servers fifo in write mode to communicate with the server (which will unblock the server from its fifo open call) Create the client-specific FIFO using an appropriate name (e.g., ./ClientNfifo, where N is the client number and send the initial connect system call to the server including Client number and name of the client-specific FIFO. Open the client-specific FIFO in READ mode to be able to read replies from the server. (This will block the client until the server opens the client- specific FIFO in write mode). After this, the client should go into a loop where the client will ask the user what to do next? providing three choices: o 1 Send request to server, in this case it will ask the user for data: What sytem call? How many parameters? (user enters 0, 1, 2, 3, etc.) For each of the n parameters indicated above, Read a value Take all the information gathered, appropriately format a system call request and send it to the server. Request should include: Process ID System call number (integer or byte) Number n of parameters in the system call (integer or byte) Size of the parameter(s) data Actual value(s) for the n parameter(s) indicated above After sending the request to the server, read the reply from the server in the client-specific FIFO and write it to the screen. o 2 EXIT - indicates THIS client does not want to issue more requests to the server, it should send a EXIT system call to the server, close its client specific FIFO, delete it and exit. o 3 TERMINATE - indicates THIS client does not want to issue more requests to the server, and is flagging the server to also exit. it should send a TERMINATE system call to the server, close its client specific FIFO, delete it and exit. The first step in writing a client/server application is define the communications protocol between both applications. In other words, how are you going to encode the requests and replies into a message, you can encode data in string forms, separating each piece with a , - a space, a new line character, or any other kind of separator, you can use integer data, strucs, etc. Create a zip file with both your programs source file(s) and executables, do a screen recording showing your programs working (with multiple clients running one after the other and interacting with the server) and upload to blackboard. Alternatively, just upload a zip file of your source files and executables and visit with the TA during his office hours so you can do a demo of your client/server system. Make incremental progress as you develop your code and back up your files often!! For instance (each
  • 3. version expands on capabilities of previous one): Version 1: server creates and opens receiving fifo, client opens servers fifo and creates its own input fifo and sends its name to the server which display it on screen Version 2: server opens clients fifo, client sends a dummy system call to servers receive fifo, server echoes data on clients fifo. Version 3: client reads input from user to form requests and displays the formatted request on screen Version 4: client sends request to server and server displays it on screen Version 5: server interprets request and creates and returns result to client, client displays reply on screen Version 6: Final version with all features.