A modified xv6 operating system with several extra features.
-
Added contributors names to boot message.
-
Shell features:
CTRL + K
: Cursor jumps left one wordCTRL + L
: Cursor jumps right one wordCTRL + I
: Line is deleted upto current char above cursor
-
Comparing two string by adding
strdiff
command.
calculate_biggest_perfect_square(int n)
: returns the biggest perfect square smaller thanget_ancestors(int pid)
: prints all the ancestors of the process associated with pidget_descendants(int pid)
: prints all the descendants of the process associated with pidset_sleep(int n)
: sleeps the process for n seconds
Modified the scheduler by adding 4 different levels for processes.
- Level 0: Round Robin
- Level 1: Minimum Priority
- Level 2: Best Job First (BJF)
- Level 3: First Come First Served (FCFS)
Some system calls added:
set_queue(int pid, int queue)
: Sets the level for the processset_priority(int pid, int priority)
: Sets the priority value for those processes in Level 1set_bjf_params(int pid, int priority_ratio, int arrival_time_ratio, int executed_cycle_ratio)
: Sets the parameters needed to chose the best job
View all processes in a beautiful table with ps
command.
-
Allowing to acquire a lock multiple times. The user program
multiple_acquire
is added for test. -
Reader/Writer problem:
- Reader Priority:
rwtest <num> 0
- Writer Priority:
rwtest <num> 1
where num in binary, represents a queue of readers (0) and writers (1) waiting to enter a space.