-
Notifications
You must be signed in to change notification settings - Fork 0
a simple operating system
License
karthikbox/os
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
70 point project -- Pre-emptive OS Team: 1. Karthik Reddy (109721778) 2. Sree Harsha Subraveti (109748906) 3. Pavan Maguluri (109892313) NOTE ======= 1. Maximum 30000 processes. 2. Each process can have 16 open files. 3. All processes combined can have 100 open files 4. Maximum characeters in a file path is 100 bytes. 5. Maximum size of each individual argv/envp is 200 bytes. 6. SCANF BLOCKS UNTIL LINE FEED I.E., CHARACTERS TERMINATED BY '\n'. 7. Process which issues scanf first is considered as foreground process and any other process issuing scanf is killed. 8. There are three processes to begin with pid process 1 initproc -> frees orphaned zombies 2 idle process 3 sbush -> loads shell Do not kill any of these three. 9. FOREGROUND - BACKGROUND BG and FG processes will be reaped by parent during waitpid, if not process will become a zombie. If the zombie's parent exits, it makes initproc the parent of all its children. Initproc sits in an infinite waitpid loop, reaping zombies BACKGROUND ========== Shell forks a background process when given with an '&' at the end of statement and returns immedialtely for next input. Does not wait for background proc. a. Background procs will fork only more background procs b. Background procs will be terminated when they attempt to use STDIN c. Background proc will be reaped by parent during waitpid, if not background proc will become a zombie. If the zombie's parent exits, it makes initproc the parent of all its children. Initproc sits in an infinite waitpid loop, reaping zombies FOREGROUND ========== a. Shell forks a foreground process and waitsfor the foreground child to exit. During this wait it may reap some zombie background child processes but will continue to wait for foreground child. b. When a foreground process forks a child, the child will become the new foreground process. Only it is allowed to read STDIN. Anyother process attempting to read STDIN will be killed. Once the forefround child, dies its parent gets to be the foreground process. 10. Available binaries -- ps, kill -9 <pid>, sleep <secs>, echo <string>, echo $PATH, ls [<path>] SBUSH MANUAL ============ Path functionality command our sbush supports: set PATH <give a path> case1: set PATH $PATH:/usr/bin/abc -> this command appends /usr/bin/abc to the existing path case2: set PATH /usr/bin/abc:$PATH -> this command prepends /usr/bin/abc to the existing path case3: set PATH /usr/bin/abc -> this command removes the existing path and sets to /usr/bin/abc case4: set PATH $PATH -> this command prints the current PATH PS1 functionality command our sbush supports: set PS1 "<give a word>" example: set PS1 "sbush$ " -> this command changes the prompt to sbush$ example: set PS1 sbush$ -> this command throws an error Pipe functionality command our sbush supports: <command1> [args]|<command2> [args][|<command3> [args]] example: ls | head | tail example: /bin/ls | head | tail example: ls -a -l | head -3 | tail -1 EXECUTE BINARY functionality syntax 1: <filepath> If given input is a path(i.e contains '/') then it executes given filepath. If given input is just a filename(i.e no '/') then shell searches for given filename in every PATH dir and tries to execute example: sbush-shell$ rootfs/bin/sbush -> since input is a path, shell executes the given filepath. example: sbush-shell$ ls -> looks up ls in every path directory and executes it, if found. EXECUTE SCRIPT functionality syntax 1: Include the following line as the first line of the script #! /bin/sbush example: bash-shell$ ./script.sh -> Can be run from outside our shell(sbush) as well example: sbush-shell$ ./script.sh -> can be given interactively within shell. Please note that it should be a filepath and not just a filename. NOTE: file CAN BE ANY extension. LS functionality syntax 1: /bin/ls <directory path 1> <directory path 2> ... example: /bin/ls .. Prints contents of specified directories syntax 2: /bin/ls Prints contents of current working directory by default NOTE: This is implemented to test our stdlib.h. ===========================================================
About
a simple operating system
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published