Ask Computer Engineering Expert

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

Computer Engineering, Engineering

  • Category:- Computer Engineering
  • Reference No.:- M92218841

Have any Question?


Related Questions in Computer Engineering

Does bmw have a guided missile corporate culture and

Does BMW have a guided missile corporate culture, and incubator corporate culture, a family corporate culture, or an Eiffel tower corporate culture?

Rebecca borrows 10000 at 18 compounded annually she pays

Rebecca borrows $10,000 at 18% compounded annually. She pays off the loan over a 5-year period with annual payments, starting at year 1. Each successive payment is $700 greater than the previous payment. (a) How much was ...

Jeff decides to start saving some money from this upcoming

Jeff decides to start saving some money from this upcoming month onwards. He decides to save only $500 at first, but each month he will increase the amount invested by $100. He will do it for 60 months (including the fir ...

Suppose you make 30 annual investments in a fund that pays

Suppose you make 30 annual investments in a fund that pays 6% compounded annually. If your first deposit is $7,500 and each successive deposit is 6% greater than the preceding deposit, how much will be in the fund immedi ...

Question -under what circumstances is it ethical if ever to

Question :- Under what circumstances is it ethical, if ever, to use consumer information in marketing research? Explain why you consider it ethical or unethical.

What are the differences between four types of economics

What are the differences between four types of economics evaluations and their differences with other two (budget impact analysis (BIA) and cost of illness (COI) studies)?

What type of economic system does norway have explain some

What type of economic system does Norway have? Explain some of the benefits of this system to the country and some of the drawbacks,

Among the who imf and wto which of these governmental

Among the WHO, IMF, and WTO, which of these governmental institutions do you feel has most profoundly shaped healthcare outcomes in low-income countries and why? Please support your reasons with examples and research/doc ...

A real estate developer will build two different types of

A real estate developer will build two different types of apartments in a residential area: one- bedroom apartments and two-bedroom apartments. In addition, the developer will build either a swimming pool or a tennis cou ...

Question what some of the reasons that evolutionary models

Question : What some of the reasons that evolutionary models are considered by many to be the best approach to software development. The response must be typed, single spaced, must be in times new roman font (size 12) an ...

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As