Need Below assignment within 1 hour and all instructions needs to be addressed.
No Plagiarism and In text citation must. No Wikipedia reference. And only scholarly references.
Please find instructions for assignment in the file uploaded.
Need Below assignment within 1 hour and all instructions needs to be addressed.
No Plagiarism and In text citation must. No Wikipedia reference. And only scholarly references.
Please find instructions for assignment in the file uploaded.
case study
Go to the website: https://epic.org/privacy/litigation/ which focuses on civil rights issues and privacy. Pick a case.
Using WORD, in you OWN WORDS, write an ORIGINAL brief essay of 300 words or more :
Overview
Assignment 1 : Hypothetical Machine Simulator
CSci 430: Introduction to Operating Systems Fall 2020
In this assignment you will be building an implementation of the hypothetical machine simulator like the one discussed in chapter 1 of our textbook and that you worked on for the first written assignment. The goal is to become better familiar with some fundamental hardware concepts that we rely on when building operating system components in this class. Another goal is to familiarize you with the structure of the assignments you need to complete for this class.
Questions
• What is the purpose of a standard fetch-execute cycle in a computing system?
• How does a computing system operate at the hardware level to translate and execute instructions? • How can test driven development help you to create and debug your code?
Objectives
1
opcode mnemonic
description
Indicates system halt state
Load AC from memory
Store AC to memory
Perform unconditional jump to address Subtract memory reference from AC Add memory reference to AC
I have given you a large portion of the simulation structure for this first assignment, as the primary goal of the assignment is to become familiar with using system development tools, like make and the compiler and the unit test frameworks. For all assignments for this class, I will always give you a Makefile and a set of starting template files. The files given should build and run successfully, though they will be incomplete, and will not pass all (or any) of the defined unit and system tests you will be given. Your task for the assignments will always be to add code so that you can pass the unit and system tests to create a final working system, using the defined development system and Unix build tools.
All assignments will have 2 targets and files that define executables that are built by the build system. For assg01 the files are named:
• assg01-tests.cpp • assg01-sim.cpp
If you examine the Makefile for this and all future assignment, you will always have the following targets defined:
2
assg01-tests.cpp:29
...............................................................................
assg01-tests.cpp:34: FAILED:
CHECK( sim.getMemoryBaseAddress() == 300 )
with expansion:
0 == 300 (0x12c)
... skipped output of teests ...
===============================================================================
test cases: 11 | 0 passed | 11 failed
assertions: 170 | 35 passed | 135 failed
I skipped the output from running the unit tests. As you can see at the end all of the test cases, and most of the unit test assertions are failing initially. But if you look before that, the code is successfully compiling, and the test and sim executable targets are being built.
You will not have to modify the assg01-tests.cpp nor the assg01-sim.cpp files that I give you for this assignments. The assg01-tests.cpp contains unit tests for the assignment. The assg01-sim.cpp file will build a command line executable to perform system tests using your simulator. You should always start by writing code to pass the unit tests, and only after you have the unit tests working should you move on and try and get the whole system simulation working.
Unit Test Tasks
You should take a look at the test cases and assertions defined in the assg01-tests.cpp file to get started. I will try and always give you the unit tests in the order that it would be best to work on. Thus you should always start by looking at the first unit test in the first test case, and writing the code to get this test to pass. Then proceed to work on the next unit test and so on.
I have given you files named HypotheticalMachineSimulator.hpp and HypotheticalMachineSimulator.cpp for this first assignment. The .hpp file is a header file, it contains the declaration of the HypotheticalMachineSimulator class, as well as some supporting classes. You will not need to make any changes to this header file for this assignment. The .cpp file is where the implementations of the simulation class member functions will be created. All of your work for this assignment will be done in the HypotheticalMachineSimulator.cpp file, where you will finish the code to implement several member functions of the simulator class.
For this assignment, to get all of the functions of the simulator working, you need to perform the following tasks in this order. I give an outline of what should be done here to write each member function of the simulator. There are additional hints in the template files given as comments that you should look at as well for additional tasks you will need to perform that are not described here.
1. Implement the initializeMemory() function. You can pass these unit tests by simply initializing the member variables with the parameters given to this function. However, you also need to dynamically allocate an array of integers in this function that will serve as the memory storage for the simulation. You should also initialize the allocated memory so that all locations initially contain a value of 0. If you are a bit rusty on dynamic memory allocation, basically you need to do the following. There is already a member variable named memory in this class. Memory is a type int* (a pointer to an integer) defined for our HypotheticalMachineSimulator class. If you know how much memory you need to allocate, you can simply use the new keyword to allocate a block / array of memory, doing something like the following
memory = new int[memorySize];
There are some additional tasks as well for this first function. You should check that the memory to be initialized
makes sense in terms of it size for this simulation.
2. Implement the translateAddress() function and get the unit tests to work for this test case. The
translateAddress() function takes a virtual address in the simulation memory address space and translates it 3
to a real address. So for example, if the address space defined for the simulation has a base address of 300 and a bounding (last) address of 1000, then if you ask to translate address 355, this should be translated to the real address 55. The address / index of 55 can then be used to index into the memory[] array to read or write values to the simulated memory. There is one additional thing that should be done in this function. If the requested address is beyond the bounds of our simulation address space, you should throw an exception. For example, if the base address of memory is 300, and the bounds address is 1000, then any address of 299 or lower should be rejected and an exception thrown. Also for our simulation, any address exactly equal to the upper bound of 1000 or bigger is an illegal reference, and should also generate an exception.
System Tests: Putting it all Together
Once all of the unit tests are passing, you can begin working on the system tests. For this first assignment you do not have to do anything to get the simulation working, it has been implemented for you. But in future assignments you may be asked to implement part of the full simulation as well. So you should try out the simulator and understand how it works.
4
The sim executable that is built uses the HypothetheticalMachineSimulation class you finished implementing to load and execute a program in the simulated machine. The sim targets for the assignments for this class will be typical command line programs that will expect 1 or more command line parameters to run. In this first assignment the sim program needs 2 command line arguments: the maximum number of cycles to simulate and the name of a hypothetical machine simulation file to load and attempt to run. You can ask the sim executable for help from the command line to see what command line parameters it is expecting:
$ ./sim -h
Usage: sim maxCycles prog.sim
Run hypothetical machine simulation on the given system state/simulation file
maxCycles The maximum number of machine cycles (fetch/execute
cycles) to perform
file.sim A simulation definition file containing starting
state of machine and program / memory contents.
If the sim target has been built successfully, you can run a system test simulation manually by invoking the sim program with the correct arguments:
$ ./sim 100 simfiles/prog-01.sim
This will load and try and simulate the program from the file simfiles/prog-01.sim. The first parameter specifies the maximum number of simulated machine cycles to perform, so if the program is an infinite loop it will stop in this case after performing 100 cycles.
If you are passing all of the unit tests, your simulation should be able to hopefully pass all of the system tests. You can run all of the system tests using the system-tests target from the command line
$ make system-tests
./run-system-tests
System test prog-01: PASSED
System test prog-02: PASSED
System test prog-03: PASSED
System test prog-04: PASSED
System test prog-05: PASSED
System test prog-06: PASSED
System test prog-07: PASSED
System test prog-08: PASSED
System test prog-09: PASSED
System test prog-10: PASSED
===============================================================================
All system tests passed (10 tests passed of 10 system tests)
The system tests work by running the simulation on a program and comparing the actual output seen with the correct expected output. Any difference in output will cause the system test to fail for that given input program test.
Assignment Submission
In order to document your work and have a definitive version you would like to grade, a MyLeoOnline submission folder has been created named Assignment 01 for this assignment. There is a target in your Makefile for these assignments named submit. When your code is at a point that you think it is ready to submit, run the submit target:
$ make submit
$ make submit
tar cvfz assg01.tar.gz HypotheticalMachineSimulator.hpp HypotheticalMachineSimulator.cpp
HypotheticalMachineSimulator.hpp
HypotheticalMachineSimulator.cpp
The result of this target is a tared and gziped (compressed) archive, named assg01.tar.gz in your directory. You should upload this file archive to the submission folder to complete this assignment.
5
Requirements and Grading Rubrics
Program Execution, Output and Functional Requirements
Program Style and Documentation
This section is supplemental for the first assignment. If you uses the VS Code editor as described for this class, part of the configuration is to automatically run the uncrustify code beautifier on your code files everytime you save the file. You can run this tool manually from the command line as follows:
$ make beautify
uncrustify -c ../../config/.uncrustify.cfg --replace --no-backup *.hpp *.cpp
Parsing: HypotheticalMachineSimulator.hpp as language CPP
Parsing: HypotheticalMachineSimulator.cpp as language CPP
Parsing: assg01-sim.cpp as language CPP
Parsing: assg01-tests.cpp as language CPP
Class style guidelines have been defined for this class. The uncrustify.cfg file defines a particular code style, like indentation, where to place opening and closing braces, whitespace around operators, etc. By running the beautifier on your files it reformats your code to conform to the defined class style guidelines. The beautifier may not be able to fix all style issues, so I might give comments to you about style issues to fix after looking at your code. But you should pay attention to the formatting of the code style defined by this configuration file.
Another required element for class style is that code must be properly documented. Most importantly, all functions and class member functions must have function documentation proceeding the function. These have been given to you for the first assignment, but you may need to provide these for future assignment. For example, the code documentation block for the first function you write for this assignment looks like this:
/**
* @brief initialize memory
*
* Initialize the contents of memory. Allocate array larget enough to * hold memory contents for the program. Record base and bounds
* address for memory address translation. This memory function
* dynamically allocates enough memory to hold the addresses for the
* indicated begin and end memory ranges.
*
*
*
*
*
*
*
*
*
* address space is invalid. Currently we support only 4 digit
@param memoryBaseAddress The int value for the base or beginning address of the simulated memory address space for this simulation.
@param memoryBoundsAddress The int value for the bounding address, e.g. the maximum or upper valid address of the simulated memory address space for this simulation.
@exception Throws SimulatorException if
This is an example of a doxygen formatted code documentation comment. The two ** starting the block comment are required for doxygen to recognize this as a documentation comment. The @brief, @param, @exception etc. tags
6
are used by doxygen to build reference documentation from your code. You can build the documentation using the make docs build target, though it does require you to have doxygen tools installed on your system to work.
$ make docs
doxygen ../../config/Doxyfile 2>&1
| grep warning
| grep -v "file statement"
| grep -v "pagebreak"
| sort -t: -k2 -n
| sed -e "s|/home/dash/repos/csci430-os-sims/assg/assg01/||g"
The result of this is two new subdirectories in your current directory named html and latex. You can use a regular browser to browse the html based documentation in the html directory. You will need latex tools installed to build the pdf reference manual in the latex directory.
You can use the make docs to see if you are missing any required function documentation or tags in your documentation. For example, if you remove one of the @param tags from the above function documentation, and run the docs, you would see
$ make docs
doxygen ../../config/Doxyfile 2>&1
| grep warning
| grep -v "file statement"
| grep -v "pagebreak"
| sort -t: -k2 -n
| sed -e "s|/home/dash/repos/csci430-os-sims/assg/assg01/||g"
HypotheticalMachineSimulator.hpp:88: warning: The following parameter of
HypotheticalMachineSimulator::initializeMemory(int memoryBaseAddress,
int memoryBoundsAddress) is not documented:
parameter 'memoryBoundsAddress'
The documentation generator expects that there is a description, and that all input parameters and return values are documented for all functions, among other things. You can run the documentation generation to see if you are missing any required documentation in you project files.
7
Your Research Project on the surveillance state consists of two parts:
1 a Powerpoint presentation consisting of at least 12 slides not including title and references.
2. 750 word research paper with at least 3 sources.
You must include at least 3 quotes from your sources enclosed in quotation marks and cited in-line.
There should be no lists – bulleted, numbered or otherwise.
Write in essay format with coherent paragraphs not in outline format.
Do your own work. Zero points will be awarded if you copy other’s work and do not cite your source or you use word replacement software.
The topic must be appropriate for graduate level. Find a topic that we covered in the course and dig deeper or find something that will help you in your work or in a subject area of interest related to the course topic. Use academically appropriate resources which you can find in the Danforth Library Research Databases.
Read the project research below. Discuss possible project/research ideas identifying the different angles.
Prerequisite:
The case study in chapter 4. The case study introduces the process of completing a data visualization project.
Project:
You’re responsible for creating a Data Visualization project plan and implementation. You have to plan the process and the implementation of the project. You should identify a data visualization problem and a corresponding data set. You’re responsible for building a project plan for a company. The project should include a graph/chart of the final product. You should provide a detailed project plan and a PowerPoint presentation.
Further details are in attached “Research.docx”
assignment, this is the class lecture (week1_class) and the lab manual and full project is (WA1_cnit345)
Briefly respond to all the following questions. Make sure to explain and backup your responses with facts and examples. This assignment should be in APA format and have to include at least two references. As you consider the reputation service and the needs of customers or individual consumers, think of a large organization that are security conscious like a fictitious enterprise named, Digital Diskus.
What will be the expectations and requirements of the customers? Will consumers’ needs be different from those of enterprises? Who owns the data that is being served from the reputation service?
In addition, what kinds of protections might a customer expect from other customers when accessing reputations? Address these questions for this assignment.
Select your final project topic. It must be unique. It should be a high level topic related to this course. Pick a topic that you will learn something from or that will be useful in your work. It must be specific not generic. Your final project will consist of a 12 minutes, 12 slide powerpoint presentation that you will present at residency and a 1 page single spaced summary and an annotated reference list as described below all of which will be submitted in Week 15.
You must also respond to two of your peers’ proposals. Help them make a better, more focused, and more interesting presentation.
Defend your choice of topic in 500 words or more. Include at least 3 expert supporting quotes surrounded by quotation marks and cited in-line. Provide an annotated reference list at the end. Annotations consist of two paragraphs of at least five sentences each about each of at least five references. The first paragraph should summarize the content of the source and the second are your thoughts or reflections about the source.