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

  Define cognitive aid and their application in systems design

Define cognitive aids and their applications in systems design. Enumerate and explain briefly any four principles affecting flexibility principle. Differentiate between Multi-modal system and multimedia system.

  Description provided with 6 papers we have to critically

description provided with 6 papers we have to critically analyse those papers and make a document with usual report

  The network connection works fine devoid of errors the

an organizations head office is connected to its branch office over the internet. the network connection works fine

  You have been asked to be the project manager for the

you have been asked to be the project manager for the development of an information technology it project. the system

  Write a short memo that describes to the project manager

Write a short memo that describes to the project manager your reason for selecting an n-tiered architecture over a two-tiered architecture. In the memo, give some idea of the different components of the architecture that you would include.

  Questionwrite down this following program using c language

questionwrite down this following program using c language programming.at unknown university admissions department has

  Why oltp would be so desirable for use in atm systems

We noted during the discussion that banks were one of the earliest adopters of online transaction processing systems. Discuss why OLTP would be so desirable for use in ATM systems.

  Write a program that takes four integer numbers at input

Write a program that takes four integer numbers at input from keyboard. Then, call a function passing these four numbers as parameters. The function should display the minimum and maximum of the four numbers.

  Recognize the the base case

What valid values could be passed as parameters to the function mystery.

  Implementing the java program

Write down a Java program which allows the user to enter the loan amount and loan period in number of years and show the monthly and total payments.

  Accessing and reading a mouse

Accessing and reading a mouse

  What is structured programming

Suppose f is a function that returns the result of reversing the string of symbols given as its input, and g is a function that returns the concatenation of the two strings given as its input. If x is the string abcd, what is returned by g(f(x),x)..

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