Published using Google Docs
project_spec
Updated automatically every 5 minutes

Operating Systems: COL331/COL633: 2015-16 II Sem.

Lab5/ Final Project Specification

Part-1: Shell: 5 marks:

Deadline: 15th April, 3PM

Goals:

  1. Implement a shell in JOS which runs in the user mode as a process and does the following:
  1. Accept user commands (example : sleep, time, date, cal, help, kill, logout, who, adduser, echo, fibonacci, factorial...........) and invoke the corresponding action. You can choose to have some pre-defined commands supported. Support minimum 5 commands (fibonacci and factorial are must).
  2. The action invoked as per the user command should be running as a child process of the shell (in background). Example : factorial 100 & 
  3. Implement testcases to prove that your implementation is correct (e.g. print PID of child/parent to prove that child process was properly created, etc.).
    Example : On entering the process print -
    In process with PID = <PID Value>
    In process with Parent PID = <Parent_PID Value>

In the above we have given as a starting point,  please don’t necessarily limit to the above examples.

Submission Guidelines:

  1. This can be done in groups of upto 2 students per group.
  2. This needs to be submitted on moodle.
  3. The assignment will be graded by TAs and not by automatic grading on moodle.
  4. There will be no/minimal support from TAs on this assignment.
  5. You need to mention during submission about what functions are implemented in your shell.

Submission Checklist/ procedure:

  1. Only one of the team member needs to submit the assignment on moodle.
  2. There is a file upload and a text box available during submission. Students must write the partner’s name in the text box and instructions on how to run their shell (so that TAs can grade them easily). In case, clear instructions are missing, you may not be able to fetch marks. You need to also mention on what commands are supported by your shell in the text box.
  3. Uploaded file should be in tar.gz format.You can compress the complete lab folder and submit. Here are the steps :
  1. Download the GNUMakeFile , rename the downloaded GNUmakefile.txt to GNUmakefile and copy it to lab folder.
  2. cd <Lab_Folder>
  3. git commit -am 'my solutions to lab 5'
  4. In case you have some source code files which are untracked and you want to submit these files. Say :  kern/my_code.c
    Then do,
    git add kern/my_code.c
    And then do,
    git commit -am 'my updated solutions to lab 5'
  5. make tarball
  6. Submit lab5-handin.tar.gz on moodle
  1. Submission file limit is 2MB, so adhere to that.

General guidelines for project:

  1. No/minimal support will be provided by TAs during the project.
  2. You are allowed to work in groups of upto 2 people for the project. If so, you must communicate your group member's name and project choice by 12th April. Please fill the spreadsheet . Link : http://tinyurl.com/jc4dpqq
  3. The project demos can be held just after the majors (or just before the majors if you need to leave for internship after majors) depending on the preference of the student groups.
  4. Submission Deadline:
  1. Indicate team choice and project choice: 12th April
  2. Project specification (details of your scope): 19th April
  3. Design document and Intermediate submission-1: 26th April
  4. Intermediate submission-2: 4th May
  5. Final submission: 11th May, 11.55pm
  6. Demos: 12th and 13th May
  1. Grading:
  1. Grading and demo will be held only if the system boots/ feature works. No demo if a particular portion is not functional.
  2. The breakup of marks for each item is dependent on how much effort is put in each of these and the level of thinking.
  3. Project will be graded ONLY if the shell is implemented.

Intermediate submissions will be used to check if you worked regularly to solve the problem or just did a last minute coding. Regular work will be suitably awarded.



Final project:
Project Ideas: 10 marks

  1. Running JOS on bare hardware (Intel-x86):
  1. Get the existing JOS code working on bare hardware (not on QEMU). Bare hardware(x86 based) could be a desktop, laptop or Intel Galileo board. We will provide the board if you need.
  2. Implement support for x86 4MB pages.
  3. Design an application to run over the JOS. Measure any parameter that you would like to improve for the same application. (e.g. num of page faults, execution time, etc.)
  4. Explore the exokernel feature of JOS to improve the application w.r.t. the same parameter and report the amount of improvement seen.
  5. Also demonstrate the benefits of using 4MB pages versus 4KB pages for the application.

           

  1. Running JOS on ARM:
  1. Pick the working ARM JOS code from web (https://github.com/pykello/arunos).
  2. Get the kernel running over Raspberry Pi board.
  3. Extend it to support exokernel features. Currently it doesn’t support so.
  4. Demonstrate an application to improve a particular parameter of interest (e.g. page faults, execution time, etc.)

  1. User level debugger:
  1. Implement support for strace, register profiling (Oprofile), call traces

  1. Running JOS on JOS (virtualization):
  1. Boot JOS as a process on JOS (you will need to modify the base JOS to support this).
  2. You can choose to just boot till lab1 as guest OS.
  3. The base JOS should be upto lab4 while the virtual JOS should be atleast lab1.