1. Study of Basic commands of Linux.
https://ubuntu.com/tutorials/command-line-for-beginners#1-overview
2. Study the basics of shell programming.
https://www.tecmint.com/understand-linux-shell-and-basic-shell-scripting-language-tips/
Ashell script is a computer program designed to be run by the UNIX shell, a command-line interpreter. The
various dialects of shell scripts are considered to be scripting languages. Typical operations performed by shell
scripts include file manipulation, program execution, and printing of text. A script that sets up the
environment, runs the program, and does any necessary cleanup or logging, is called a wrapper.
Identification of shell prompt
You can identify whether the shell prompt on a Linux based computer is a normal or super user by looking at
the symbols of the prompt in the terminal window. The ‘#’ symbol is used for a super user and the ‘$’ symbol
is used for a user with standard privileges.
https://www.opensourceforu.com/2022/05/the-basic-concepts-of-shell-scripting/
3. Write a Shell script to print given numbers sum of all digits.
Algo:
1. Get a number
2. Split each digit from the number using modulo operator.
3. Calculate the sum
4. Print the result.
Script:
echo "Enter a number"
read num
sum=0
while [ $num -gt 0 ]
do
mod=$((num % 10)) #It will split each digits
sum=$((sum + mod)) #Add each digit to sum
num=$((num / 10)) #divide num by 10.
done
echo $sum
4. Write a shell script to validate the entered date. (eg. Date format is:
dd-mm-yyyy).
echo ""
echo "Date validator"
echo ""
#Initializing values of date, month and year
dd=0
mm=0
yy=0
#initializing no of days in a month
days=0
read -p "Enter day (dd) : " dd
read -p "Enter Month (mm) : " mm
read -p "Enter Year (yyyy) : " yy
#checking for invalid month
if [ $mm -le 0 -o $mm -gt 12 ]
then
echo "$mm is invalid month. "
exit 1
fi
#finding out no. of days in a month
case $mm in
1|3|5|7|8|10|12)
days=31
;;
2)
days=28
;;
4|6|9|11)
days=30
;;
*)
days=-1
;;
esac
#checking for leap year
if [ $mm -eq 2 ]
then
a=`expr $yy % 4`
b=`expr $yy % 100`
c=`expr $yy % 400`
if [ $a -eq 0 -a $b -ne 0 -o $c -eq 0 ]
then
days=29
else
break
fi
fi
if [ $dd -le 0 -o $dd -gt $days ]
then
echo "$dd day is invalid "
exit 3
fi
#No error means date is valid
echo ""
echo "$dd/$mm/$yy is a Valid Date"
echo ""
5. Write a shell script to check entered string is palindrome or not.
#!/bin/bash
echo "Enter a String"
read input
reverse=""
len=${#input}
for (( i=$len-1; i>=0; i-- ))
do
reverse="$reverse${input:$i:1}"
done
if [ $input == $reverse ]
then
echo "$input is palindrome"
else
echo "$input is not palindrome"
fi
6. Write a Shell script to say Good morning/Afternoon/Evening as you log in to
system.
h=$(date +"%H")
if [ $h -gt 6 -a $h -le 12 ]
then
echo good morning
elif [ $h -gt 12 -a $h -le 16 ]
then
echo good afternoon
elif [ $h -gt 16 -a $h -le 20 ]
then
echo good evening
else
echo good night
fi
Output
$ good evening
7. Write a C program to create a child process.
#include <stdio.h>
#include <sys/wait.h> /* contains prototype for wait */
int main(void)
int pid;
int status;
printf("Hello World!\n");
pid = fork( );
if(pid == -1) /* check for error in fork */
perror("bad fork");
exit(1);
if (pid == 0)
printf("I am the child process.\n");
else
wait(&status); /* parent waits for child to finish */
printf("I am the parent process.\n");
}
}
8. Finding out biggest number from given three numbers supplied as command
line arguments.
#Check if the number of arguments passed is zero
if [ "$#" = 0 ]
then
#Script exits if no
#arguments passed
echo "No arguments passed."
exit 1
fi
#Initialize maxEle with
#the first argument
maxEle=$1
#Loop that compares maxEle with the
#passed arguments and updates it
for arg in "$@"
do
if [ "$arg" -gt "$maxEle" ]
then
maxEle=$arg
fi
done
echo "Largest value among the arguments passed is: $maxEle"
9. Printing the patterns using for loop.
#include <stdio.h>
int main() {
int i, j, rows;
printf("Enter the number of rows: ");
scanf("%d", &rows);
for (i = 1; i <= rows; ++i) {
for (j = 1; j <= i; ++j) {
printf("* ");
printf("\n");
}
return 0;
#include <stdio.h>
int main() {
int i, j, rows;
printf("Enter the number of rows: ");
scanf("%d", &rows);
for (i = 1; i <= rows; ++i) {
for (j = 1; j <= i; ++j) {
printf("%d ", j);
printf("\n");
return 0;
}
#include <stdio.h>
int main() {
int i, j, rows;
printf("Enter the number of rows: ");
scanf("%d", &rows);
for (i = rows; i >= 1; --i) {
for (j = 1; j <= i; ++j) {
printf("* ");
printf("\n");
return 0;
}
10. Shell script to determine whether given file exist or not.
https://www.geeksforgeeks.org/bash-scripting-how-to-check-if-file-exists/
#!/bin/bash
# using [ expression ] syntax and in place
# of File.txt you can write your file name
if [ -f "File.txt" ];
then
# if file exist the it will be printed
echo "File is exist"
else
# is it is not exist then it will be printed
echo "File is not exist"
fi
Now save and run the file using the following command
$ chmod +x ./FirstFile.sh
$ ./FirstFile.sh
11. Write a program for process creation using C. (Use of gcc compiler.
https://medium.com/@luischaparroc/compilation-process-with-gcc-and-c-programs-344445180ac
8
12. Implementation of FCFS &Round Robin Algorithm.
//C++ Program to implement Round Robin
//Scheduling CPU Algorithm
#include <iostream>
#include <vector>
/*at = Arrival time,
bt = Burst time,
time_quantum= Quantum time
tat = Turn around time,
wt = Waiting time*/
using namespace std;
int main(){
int i,n,time,remain,temps=0,time_quantum;
int wt=0,tat=0;
cout<<"Enter the total number of process="<<endl;
cin>>n;
remain=n;
// assigning the number of process to remain variable
vector<int>at(n);
vector<int>bt(n);
vector<int>rt(n);
//dynamic array declaration using vector method of (STL)
//STL standard template library of C++
cout<<"Enter the Arrival time, Burst time for All the processes"<<endl;
for(i=0;i<n;i++)
cin>>at[i];
cin>>bt[i];
rt[i]=bt[i];
cout<<"Enter the value of time QUANTUM:"<<endl;
cin>>time_quantum;
cout<<"\n\nProcess\t:Turnaround Time:Waiting Time\n\n";
for(time=0,i=0;remain!=0;)
if(rt[i]<=time_quantum && rt[i]>0)
time += rt[i];
//Addition using shorthand operators
rt[i]=0;
temps=1;
else if(rt[i]>0)
rt[i] -= time_quantum;
//Subtraction using shorthand operators
time += time_quantum;
//Addition using shorthand operators
if(rt[i]==0 && temps==1)
remain--;
//Desplaying the result of wating, turn around time:
printf("Process{%d}\t:\t%d\t:\t%d\n",i+1,time-at[i],time-at[i]-bt[i]);
cout<<endl;
wt += time-at[i]-bt[i];
tat += time-at[i];
temps=0;
if(i == n-1)
i=0;
else if(at[i+1] <= time)
i++;
else
i=0;
cout<<"Average waiting time "<<wt*1.0/n<<endl;
cout<<"Average turn around time "<<tat*1.0/n<<endl;;
return 0;
}
13. Implementation of Banker's Algorithm.
//C++ program for Banker's Algorithm
#include <iostream>
using namespace std;
int main()
// P0, P1, P2, P3, P4 are the names of Process
int no_of_processes, no_of_resources, i, j, k;
no_of_processes = 5; // Number of processes
no_of_resources = 3; //Number of resources
int allocate[5][3] = { { 0, 1, 0 }, // P0 // Allocation Matrix
{ 2, 0, 0 }, // P1
{ 3, 0, 2 }, // P2
{ 2, 1, 1 }, // P3
{ 0, 0, 2 } }; // P4
int max[5][3] = { { 7, 5, 3 }, // P0 // MAX matrix representing max need
{ 3, 2, 2 }, // P1
{ 9, 0, 2 }, // P2
{ 4, 2, 2 }, // P3
{ 5, 3, 3 } }; // P4
int available[3] = { 3, 3, 2 }; // Available Resources
int finish[no_of_processes]={0}, safe_seq[no_of_processes], index = 0;
int need[no_of_processes][no_of_resources];
for (i = 0; i < no_of_processes; i++) {
for (j = 0; j < no_of_resources; j++)
need[i][j] = max[i][j] - allocate[i][j]; //calculating need of resources
int y = 0;
for (k = 0; k < 5; k++) {
for (i = 0; i < no_of_processes; i++) {
if (finish[i] == 0) { //unfinished process
bool flag = true;
for (j = 0; j < no_of_resources; j++) {
if (need[i][j] > available[j]){ //not enough resources
flag = false;
break;
if (flag == true) { //resources are available
safe_seq[index++] = i;
for (y = 0; y < no_of_resources; y++)
available[y] += allocate[i][y]; //allocating
resources
finish[i] = 1; //process is finished
cout<<"Th SAFE Sequence is: \n";
for (i = 0; i < no_of_processes - 1; i++)
cout<<" P->"<<safe_seq[i];
cout<<" P->"<<safe_seq[no_of_processes - 1];
return 0;
https://www.educative.io/answers/how-to-implement-the-bankers-algorithm