Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

CSE 2431: Systems II: Introduction to Operating Systems

Lab 4: Choose Your Own Problem

This is an individual project and may only be completed with a partner by permission. Please seek help from the course professor or either course assistant if you need assistance.

1 Project Overview

In this project you will choose your own problem to solve, and implement a solution. There are two steps to this project, that will be graded individually:

Step

Description

Final Code Submission

Due December 7, 11:59pm

You will submit your code, README, and Makefile (if appropriate) according to the instructions in this document. Up to 24 points may be earned for a creative project that meets most listed requirements.

Final Report Submission

Due December 8, 11:59pm

You will submit your report according to the instructions in this document. Up to 15 points may be earned for a creative project that meets all listed requirements.

2 Problem Requirements

The problem you choose to solve must be of sufficient scope that a significant amount of work is needed to complete a solution, but finishing within 2-3 weeks is possible. Secondly, the problem you choose to solve must include significant potential for use of the Operating Systems skills you have developed over the course of this semester, such as processes, threads, shared memory, message passing, synchronization, data parallelism, task-level parallelism, process scheduling, memory management, resource management, deadlock correction, page replacement, or disk scheduling.

It is allowed for more than one group to use the same problem for their final project. Before you begin working on your chosen problem, please confirm with me that the problem you chose is suitable for the time frame. Your first step is a 1-paragraph statement, due at class time on your return from Thanksgiving break. Early submission may result in early feedback.

3 Solution Requirements

The criteria on which your solution will be graded includes creativity, forethought, perseverance, and adaptability.  Your forethought will be graded on the completeness of your algorithm. You are treading new ground, and as such, you are laying the path for others to follow. This means that you must also document your code so that it can be well understood.

While coding, please bear in mind the following guidelines:

At least two (2)
different programming constructs:

Processes

Threads

Shared Memory

Message Passing

Mutex

Semaphores

Monitors

Dynamic memory allocation

Material from at least one (1)
of the main concepts from this class:

Interrupts

System calls

Process scheduling

Resource allocation

Deadlocks

Contiguous memory allocation

Paging

Segmentation

Page replacement

Disk scheduling

At least one (1) problem introduced during this class. Examples include, but are not limited to:

Readers-Writers Problem

Dining Philosopher’s Problem

Producer-Consumer Problem

Data-level parallelism

Task-level parallelism

Constructs, concepts, and problems must be used correctly to count towards each requirement. You must also organize your code into documented functions to make it easier to read, and must include and use a main() function or equivalent. You may use any language with which you are familiar, as long as it compiles or interprets on stdlinux. If you use a compiled language, include a Makefile or similar. Your README file should include instructions for compiling and running your program, expected inputs, and expected results.

You are allowed to reuse code from the textbook, code developed from this course, and code that you have turned in previously for labs, but you must document the source within the comments or docstring related to this piece of code, as well as in the methodology section of your report. Reused code does not count toward the above requirements.

5 Final Report

Your code should be completed by December 7, 11:59 pm. This gives you at least 1 day before the report deadline so that you have time to write your final report, due by December 8, 11:59 pm. Remember, your lab report must be done INDIVIDUALLY, even if you have been approved to work with a partner. Your report for your final project must contain sections for an abstract, introduction, methodology, results, and conclusion. Completeness and clarity of thought are more important than length. All questions should be completed in detail. Maximum length for the report is two pages.

Abstract: What problem are you solving? Why is this an important problem to solve? What did you do? And how does this solve the problem? Make sure your abstract answers all 4 of these questions. You should write approximately 1 sentence per question.

Introduction: Expand upon the problem defined in your abstract with more detail. Give any background required to solve the problem. What similar problems have been solved in this area? What makes this problem or the solution you have achieved creative?

Background: Give any background required in order to solve the problem.

Methodology: What sources did you use to solve the problem? Include the line numbers for code you wrote new for your final project here, and explain what pieces of code have come from other sources, such as the provided code or the textbook. If you worked with a partner, who wrote which parts of the code? Explain how your code solves the problem.

Results: What issues did you face while you were coding? What did you learn? How did you show perseverance in the face of these issues?

Conclusion: What would you do differently if you had this project to do over again? How could you use the code you wrote to solve a different problem in the future?

6 Submission Instructions

For this project, you will turn in:

Lab 4 Code, Makefile, and README by December 7, 11:59 pm

Lab 4 Report.pdf by December 8, 11:59 pm

Your final report should include an image (screenshot) of your code running and its output in your results section. Be sure to follow these submission guidelines to receive full credit on your project. Remember this is an individual project and you may only work on the code with a partner if expressly given permission. Remember that you are to write your own, individual report on your final project.