Enhancing xv6 Shell with Advanced Features

Job ID: 39168262

Budget: ₹600 – ₹1,500 INR

Please follow the detailed instruction from the attached document.
This project requires proficiency in operating systems concepts, C programming, and familiarity with xv6 internals to successfully implement these features.

Project Description:
This project involves solving an assignment focused on extending the functionality of the xv6 operating system's shell. The assignment is divided into multiple parts, each requiring the implementation of specific features in xv6. Below is a detailed description of the tasks:

Installing and Testing xv6:
Install and set up xv6 version 11 along with Qemu for testing. Follow the provided build instructions to ensure a functional development environment.

Enhanced Shell Login System :
Implement a username-password-based login system for the xv6 shell. The credentials will be defined as macros in the Makefile. The user gets three attempts to log in, after which access is disabled. Proper prompts should be displayed for entering the username and password.

Shell Command: history :
Add a new shell command, history, which displays a list of processes executed so far, sorted by time. Each entry should include process ID (pid), process name, and total memory utilization (text, bss, data, stack, and heap segments). This requires implementing a new system call, sys_gethistory.

Shell Commands: block and unblock :
Implement two commands to block and unblock system calls for processes spawned by the current shell. Introduce two new system calls, sys_block and sys_unblock. Ensure critical system calls like fork and exit cannot be blocked.

Shell Command: chmod:
Develop a chmod command to modify file permissions based on a 3-bit mode (read, write, execute). This involves creating a new system call, sys_chmod, which takes a filename and mode as arguments.

Report Submission :
Prepare a report (maximum 10 pages) detailing the implementation methodology for each part of the assignment. Include code snippets or pseudocode as necessary and highlight any additional work done beyond the requirements.

Submission Instructions:
Package the modified xv6 codebase and report into a tarball using specific commands provided in the assignment instructions. Ensure compliance with submission guidelines to avoid penalties.

This project requires proficiency in operating systems concepts, C programming, and familiarity with xv6 internals to successfully implement these features.

Additional instructions for the project:
Please note that the shell commands -- history/block/unblock/chmod -- are to be implemented as shell-specific features, unlike ls, echo, and cat, which are implemented as user programs. Also, note that since these shell commands are not user-programs, hence they are NOT logged in history.
Related categories: C Programming Linux Shell Script