C/C++代写 - SE 3313A – Operating Systems

I. Objective
The project ties together the elements you have been using in the labs to create a multi-user,
multi-transaction server. This will give you the ability to apply threads, thread
synchronization (semaphores and so on), and parallel processing in ways that will give you
a new view of what they can do.
II. Introduction

The contents of this document explain what is expected. You may find resources provided
with labs beneficial for completing this project.
For this project, you are expected to work in groups of 4.

III. A Multi-User Multi-Transaction Server

Your multi-transaction, multi-user server MUST conform to the following:
• The server MUST run in the UNIX/LINUX environment. You can host your server on
Amazon, with a different cloud provider or on another computer of your choice.
Running the server in Oracle VM is also acceptable. Keep in mind, that if you are
working behind a router (maybe at home you are using a router) or firewall, you may
need to forward or open ports.
• The server MUST run in a different environment (machine) than the clients. VM and
the host are considered two environments; thus, you can run the server on VM and
clients on the machine hosting this VM.
• Each transaction MUST have AT LEAST two participating clients.
• There should in theory be NO LIMIT to the number of simultaneous possible
transactions. Note: One chat room is one transaction irrelevant how many people are
in the chat room. Concurrent private chats are multiple transactions.
• Termination MUST be graceful. That means transactions clean up after themselves
in a graceful way. It also means that terminating the server terminates all associated
transactions in a graceful way. There should be a functionality to terminate the server
such as entering ‘done’ or similar (should not depend on the IDEs functionality).
There should be no need to kill any processes (Ctrl+C is kill). Clients should receive a
meaningful message when the server is terminated.

The project is flexible with respect to the following:
• The client can run in whatever environment (or set of environments) you like.
Possibilities include Android and Java clients. “Skin” for Java is provided and you can
customize it for your project.
• The definition of what is a “transaction” is entirely up to you. Could be a game
instance, a chat room, some kind of social media thing, or something else.
• The decision on whether NEW users can choose to join a transaction already in
progress is entirely up to you.
Design Project
NOTE: Proper coding practices must be used. Examples include but are not limited to the
following: error checking and handling, proper code formatting, meaningful comments,
consistent and meaningful variable naming, and resources cleanup.

1) Submit group member names by Friday, Nov 20th on: Group Members
Only submit one entry per group
2) High level design document – pdf file.
This document needs to show the overall design. Examples of things to include: How
the various parts of your application work together? How many threads do you
need? What sort of synchronization objects do you use and how? How do you handle
termination? This should include UML diagrams as needed to describe the design.
3) ZIP file with code
• Name your submission: se3313a-project.zip.
• There should be only one submission per group.
4) Mandatory demo over Zoom. All group members must be present for the demo.

If the group did not demo the solution during the scheduled time due to illness or
other special circumstances (with documentation as per the course outline), the
students must contact the professor as soon as possible. For no demo, 50% of the
available mark will be deducted.

Design Project
Using Oracle VM VirtualBox for the Server

You need this section only if you are using OracleVM to host your server.

1. Under Devices/Network/Network Settings, change the adapter to Bridge Adapter.

2. Restart Ubuntu box. You’ll find it under arrow on upper right corner. Select Power Off
and then select Restart.

3. Find the guest OS IP address. You can use ‘ip addr show’ from terminal. It is
highlighted in the screenshot below.
You will use this for the clients to specify the connection to the server. Depending on
which network you work on, this may be the private address that only works within
the network. This should work for connections from the host OS to the guest OS
(Oracle VM), but for the access from computers outside the network you may need to
forward or open ports.