Create a separate proj directory in the root directory

Assignment Help Computer Engineering
Reference no: EM131409042

Project 2: User Programs

You can find the official documentation for project 2 on Stanford's website.

1. Project Setup -

1.1 Keep Alarm Code:

You'll need to create a separate proj2 directory in the root directory of your repository. You will need alarm working for project 2, therefore you will need to setup using on of the two following ways:

1. Copy and paste the contents of pintos-base repository into the proj2 directory. Afterwards copy & paste your project 1 code for alarm.

2. Copy and paste the contents of proj1 directory into the proj2 directory. Afterwards remove all the priority donation code from project 1.

Once you have setup the proj2 directory, run make check from src/threads/build to see if you pass all the alarm tests (except alarm-priority since that is a priority-donation test.

2. The Process File -

In Pintos, every user program is run by a process. In a modern operating system, a single thread can run multiple processes; however in Pintos, every thread will only run one and only one process.

If you look in src/userprog/process.h, you will see a small handful of functions. These are the functions for user programs. The following is a short and incomplete description of each:

Function - Description

process_execute - Executes the user program from the designated file in the argument

process_wait - Waits for the child process with designated tid to finish before continuing execution

process_exit - Terminates user program currently running

process_activate - Sets up CPU to run user program in current thread

3 Part 1: Setup Stack -

In this part, you will take in a filename for a user program (a command line argument), parse it, and setup the stack for this user program.

You will be mainly working in src/userprog/process.c.

3.1 Where a User Program Starts:

If you read the description for process_execute, you will see that this is the function responsible to start a user program. Also, the argument passed into this function is a filename.

3.2 Emulate process_wait()

Looking at the file process.c, when a new process is created in process_execute, you will notice that the function thread_create is created. When a child process is created, the parent process will wait for this process to ?nish loading properly, then proceed to continue with its execution.

3.3 Setup Stack:

First notice that setup_stack only takes in a void** esp (the stack pointer). Feel free to add more arguments and pass in any other information you want.

Don't modify what's already there, you'll need to add on to the function before you return success. Remember void** esp will be initialized with PHYS_BASE, which is the top of the stack. You'll need to incrementally move the pointer and write data to the pointer. Also remember that since it's a stack, you'll want to write everything in reverse order, and you want to decrement the pointer instead.

Here are the general steps to setting up the stack. The code snippets will not actually work, but they are to give you a gist of how it's supposed to work.

1. Parse the filename deliminating by white spaces. Notice that setup_stack doesn't have access to the filename. You'll need to find a way to pass that information into this function. Parsing the filename can easily be done with strtok_r.

2. Write each argument (including the executable name) in reverse order, as well as in reverse for each string, to the stack. Remember to write a \0 for each argument. memcpy will come in handy here.

3. Write the necessary number of 0s to word-align to 4 bytes. A little modulus math and mem-set will get the job done.

4. Write the last argument, consisting of four bytes of 0's.

5. Write the addresses pointing to each of the arguments. You'll need to figure out how to reference the addresses after writing all the arguments. These are char*s.

6. Write the address of argv[0]. This will be a char**.

7. Write the number of arguments (argc). Make sure that this spans over 4 bytes.

8. Write a NULL pointer as the return address. This will be a void*.

It will be a good idea to use hex_dump to check the correctness of your stack after each and every step in order to avoid a debugging mess.

4. Syscall Handler -

Part 2 of the project will require you to implement the support for user programs to request system call functions (kernel functions). You will mainly be working in src/userprog/syscall.c and src/userprog/process.c. This section is written with reference to Colin Cammarano's guide from Spring of 2016.

Assignment Files - https://www.dropbox.com/s/6z9vhonc2j6biqr/Assignment%20Files.rar?dl=0

Reference no: EM131409042

Questions Cloud

Example of protein of non-bacterial origin : Give one example of protein of NON-BACTERIAL ORIGIN with biotechnological, medical or pharmacological importance that is expressed in bacteria. What are the advantages of expressing a protein in bacteria. INCLUDE REFERENCE.
Find the effect of the rc filter on this signal : Suppose that the input to the filter is a lowpass signal of bandwidth ?f = 1 kHz. Determine the effect of the RC filter on this signal.
How the historical figure was shaped by his time period : Choose any of the Roman emperors, and write a biographical sketch explaining what you see as his most notable actions and character traits that impacted Western civilization. A biographical sketch is shorter and more specific than a typical biogra..
Develop your position on the given contemporary issue : Develop your position on this contemporary issue. In developing your position, you will show what moral reasoning you use to resolve this issue. You will show how you use traditional ethical theory to support your position.
Create a separate proj directory in the root directory : You'll need to create a separate proj2 directory in the root directory of your repository. You will need alarm working for project 2, therefore you will need to setup using on of the two following ways: Copy and paste the contents of pintos-base re..
Determine the least squares regression line and calculate r : During a year in which U.S. production of motor vehicles is 12.0 million, what would be the prediction for the number of tons of domestic steel used for vehicle production?
Sudden oak death and cedar blight : Are Phytophthora associated with plant diseases such as sudden oak death and Cedar blight?
Diversity of organisms in the water bay or inlet : Just a quick answer. What is the biosphere in a bay or water inlet that is contaminated by waste or trash? Name 2 biotic and abiotic environmental components involved in this issue and how their interaction affects the diversity of organisms in th..
What do you see as the future of businesses today : What do you see as the future of businesses today in terms of managing for sustainability? To help you think things through, consider: Will large corporations continue to change in response to pressures?

Reviews

len1409042

3/1/2017 2:43:12 AM

IMPORTANT: Note that this is only a very quick and simple implementation to get started with setup stack. You WILL be modifying these implementations. It is highly suggested you move where you up and down the semaphores to better positions in the code. For example once you start implementing syscalls, it will be a much better idea to up and down the semaphore in the syscalls rather than the process functions.

len1409042

3/1/2017 2:43:04 AM

One the pdf is the syllables of the class, another one is the homework assignment - page 32 is project #2, it should be written by C language and in operating system that i have sent it to you ... in project 2 they need to use project 1, but it doesn't matter i have done it and i will add it, I need not high level C. it needs to pass some test as you see. You can find the official documentation for project 2 on Stanford’s website.

Write a Review

Computer Engineering Questions & Answers

  Mathematics in computing

Binary search tree, and postorder and preorder traversal Determine the shortest path in Graph

  Ict governance

ICT is defined as the term of Information and communication technologies, it is diverse set of technical tools and resources used by the government agencies to communicate and produce, circulate, store, and manage all information.

  Implementation of memory management

Assignment covers the following eight topics and explore the implementation of memory management, processes and threads.

  Realize business and organizational data storage

Realize business and organizational data storage and fast access times are much more important than they have ever been. Compare and contrast magnetic tapes, magnetic disks, optical discs

  What is the protocol overhead

What are the advantages of using a compiled language over an interpreted one? Under what circumstances would you select to use an interpreted language?

  Implementation of memory management

Paper describes about memory management. How memory is used in executing programs and its critical support for applications.

  Define open and closed loop control systems

Define open and closed loop cotrol systems.Explain difference between time varying and time invariant control system wth suitable example.

  Prepare a proposal to deploy windows server

Prepare a proposal to deploy Windows Server onto an existing network based on the provided scenario.

  Security policy document project

Analyze security requirements and develop a security policy

  Write a procedure that produces independent stack objects

Write a procedure (make-stack) that produces independent stack objects, using a message-passing style, e.g.

  Define a suitable functional unit

Define a suitable functional unit for a comparative study between two different types of paint.

  Calculate yield to maturity and bond prices

Calculate yield to maturity (YTM) and bond prices

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd