110 likes | 240 Views
This programming project requires creating a command called "doit" to execute another command and provide performance statistics. Students will extend the functionality to develop a basic shell that accepts user commands and displays statistics for each executed command. Further enhancement involves supporting background command execution in the shell2 variant. This project aims to practice using Unix/Linux process management functions (fork, exec) and familiarize students with online documentation and system calls.
E N D
Programming Project #1 CS-3013 & CS-502Operating SystemsSummer 2006 Programming Project #1
Programming Assignment • Write a command called doit to execute another command and print out statistics • Extend doit to become a basic shell that prompts for and executes commands • Extend your shell to shell2 to execute commands in the background Programming Project #1
Purpose • To practice using the fork and exec facilities of Unix/Linux • To learn how to find and use on-line documentation about system calls and system facilities. • man pages • To be accustomed to speaking directly with the operating system Programming Project #1
Part 1: doit • doit command:– • Take another command line as argument • Execute that command • Print out statistics about command • Must execute on a CCC or CS Linux system • May not use system() system call • Helpful hints:– • fork(), execve(), wait() • getrusage(), gettimeofday() Programming Project #1
Part 1 (output) % doit cat /etc/motd < print the current message of the day > < statistics about the cat command > Programming Project #1
Part 2: shell • Repeatedly prompt for command lines • Execute each command and print out statistics, as in doit • Implement special “built-in” commands • exit • cd dir • Special conditions • Exit on end of file • Complain about illegal commands • Check for line length, number of arguments Programming Project #1
Part 2 output % shell ==>cat /etc/motd < print the current message of the day > < statistics about the cat command > ==>cd dir < current directory is changed to dir > ==>ls < listing of files in current directory > < statistics about this ls command > ==>exit % < back to the Unix prompt > Programming Project #1
Part 3: Background execution (shell2) • Modify shell to support execute commands in background, indicated by ‘&’ character • Causes shell to prompt for next command before previous command is complete • jobs built-in command lists background tasks in progress • Report completion at next opportunity Programming Project #1
Part 3 output % shell2 ==>numbercrunch & [1] 12345 < indicate background task #1, process id > ==>jobs [1] 12345 numbercrunch < print process id and command name for tasks > ==>ls < listing of files in the current directory > < statistics about this ls command > ==>cat /etc/motd [1] 12345 Completed < indicate background job done > < statistics about numbercrunch command > < print the current message of the day > < statistics about this cat command > ==>exit % < back to Unix prompt > Programming Project #1
Project submission • Due Monday, June 1 at start of class • Submit via turnin • command = ‘/cs/bin/turnin’ on CCC machines • classname = ‘cs502’ • assignment = ‘project1’ • Bring copy of code, test case, and printout to class. • Put your name on all files! Programming Project #1
Term Project Assignment Programming Project #1