NOIDA INSTITUTE OF ENGINEERING AND TECHNOLOGY
GREATER NOIDA-201306
(An Autonomous Institute)
School of Computer Sciences & Engineering
Operating System Lab (ACSE-0453A)
Session (2022 – 2023)
LAB MANUAL
OF
Operating System Lab
(ACSE-0453A)
(4th Semester)
Affiliated to Dr. A.P.J Abdul Kalam Technical University,
Uttar Pradesh, Lucknow.
Operating System SESSION-2022-23
SEM- 4th (EVEN)
Lab
Faculty Details
Name : Mr. Aditya Narayan Singh
Designation: Assistant Professor
Department: Department of CSE
Course Details
Name of the Programme: B.Tech.
Batch: 2021-2025
Branch:CSE
Semester: 4th
Name of Subject: Operating System Lab
Subject Code: ACSE-0453A
Category of Course: Core
NOIDA INSTITUTE OF ENGINEERING AND TECHNOLOGY
GREATER NOIDA-201306
(An Autonomous Institute)
School of Computer Sciences & Engineering
Lab Course Outcomes
After completion of this course students will be able to
CO1 Gain all round knowledge of various Linux Commands.
CO2 Analyze and implement Process Synchronization technique.
CO3 Analyze and implement CPU scheduling algorithms.
CO4 Analyze and implement Memory allocation and Memory management techniques.
CO5 Analyze and implement Disk Scheduling Policies.
NOIDA INSTITUTE OF ENGINEERING AND TECHNOLOGY
GREATER NOIDA-201306
(An Autonomous Institute)
School of Computer Sciences & Engineering
Operating System Lab (ACSE-0453A)
INDEX
B. TECH. SECOND YEAR
Course Code ACSE0453A LT P Credits
Course Title Operating Systems Lab 0 02 1
List of Experiments:
Sr. No. Name of Experiment CO
1. Linux based Lab1: Execute Various types of Linux Commands (Miscellaneous, File oriented, CO1
Commands Directory oriented)
Lab2: Shell Programming
Write a shell program, which accepts the name of a file from standard inputand
perform the following test on it:
i. File readable
ii. File writable
iii. Both readable and writable
2. CPU Lab3: Implement CPU Scheduling Algorithms: CO3
Scheduling 1. FCFS
Algorithms 2. SJF
3. PRIORITY
Lab4:
4. Round Robin
5. Multi-level Queue Scheduling
3. Deadlock Lab5: Implementation of Banker’s algorithm for the purpose of Deadlock CO3
Management Avoidance.
4. Memory Lab6: Write a program to simulate the following contiguous memory allocation CO4
Management techniques:
Techniques a) First fit
b) Best fit
c) Worst Fit
Lab7: a) Write a Program for implementation of Contiguous memory fixed
partition technique.
b) Write a program for implementation of Contiguous memory variable
partitiontechnique.
Lab8: Write a program to simulate page replacement algorithms:
a) FIFO
b) LRU
c) Optimal
5. Disk Lab9: Write a program to simulate Disk Scheduling Algorithms: CO5
Scheduling a) FCFS
Techniques b) SSTF
Lab 10: c) SCAN & C-SCAN
d) Look & C-LOOK
6. Process Lab11: Write a program to simulate Producer Consumer problem CO2
Synchronization
Lab Course Outcome: After completion of this course students will be able to
CO1 Gain all round knowledge of various Linux Commands. K2
CO2 Analyze and implement Process Synchronization technique. K4,K5
CO3 Analyze and implement CPU scheduling algorithms. K4, K5
CO4 Analyze and implement Memory allocation and Memory management techniques. K4, K5
CO5 Analyze and implement Disk Scheduling Policies. K4, K5
Program No 1:- Unix and Unix Commands
Unix Operating System
Unix was originally developed in 1969 by a group of AT&T employees Ken Thompson, Dennis
Ritchie, Douglas McIlroy, and Joe Ossanna at Bell Labs.
Several people can use a Unix computer at the same time; hence Unix is called a
multiuser system.
A user can also run multiple programs at the same time; hence Unix is a multitasking
environment.
There are various Unix variants available in the market.
Solaris Unix, AIX, HP Unix and BSD are a few examples. Linux is also a flavor of Unix
which is freely available.
Unix Operating System
The Unix operating system is a set of programs that act as a link between the computer
hardware and the user.
The computer programs that allocate the system resources and coordinate all the details
of the computer's internals is called the operating system or the kernel.
Users communicate with the kernel through a program known as the shell. The shell is a
command line interpreter; it translates commands entered by the user and converts them into a
language that is understood by the kernel.
Unix Architecture :
Unix Commands
Command Name Purpose Syntax
1. Directory Commands
MD/MKDIR / allow user to create dir / -P -m mode directory
CD / to change the current working dir in linux and other unix-like operating system /
[/D][drive:][path]
LS /List information about the file (the current directory by default)/ Is Abfs
ChfsdhfgCgshglVDfsdhgfCjhfdjf FILE
DIR / to organize these files / [Drive:][Path][FileName] (/F),(/D)
RMDIR / Remove the DIRECTORY,if it is empty / OPTIONS DIRECTORY..
2. File Commands
CAT / Conceatenate file and print on the standard output / -benstuv file
TOUCH / Update the last-modified date on the given FILEs / -c -d DATE FILE FILE
CP / Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY / -fip -R -H/-
L/-P SOURCE DEST
MV / Move or rename file / OPTION.. -T SOURCE DEST
RM / Remove file or directories / -dfiPRr file
MORE / View file or standard input one screenful at a time / -dlfpcsu -num+/pattern
+linenum file
3.Terminal Commands
CLEAR / Clear the Terminal Screen / -T term
ECHO / Write arguments to the standard output / -n string
4. Help Commands
Man / An interface to the on-line reference manuals / -d -D warning=warning -R
encoding .
Help / to provide more information on another command / -d opton
5. Information commands
History / allow the user to recall, edit and return previous commands / -a
Who am I / Show who is logged on / OPTION FILE
Tail / Print last n lines of each file to standard output / -f/-r -b number/-c number
Head / Print first 10 lines of each FILE to standard output / OPTIONS FILE
WC / Print line, word and byte counts for each FILE and a total line if more than one
FILE is specified / OPTIONS FILE
Date / Display time & set time / OPTIONS+FMT TIME
CAL / calander command / cal[[month]year]
6. Permission and File Storage Commands
Chmod / Change the file mode bits of each given file according to mode / -Rcvf
MODE,MODE.. FILE
Passwd / to change and sets passwords for user / -k -l -u -f -d -e -n mindays -x maxdays
Df / Display statistics about the amount of free disk space on the specified file_system or on the
file system of which file is a part / df -hiKlnP -t type file/file_system
Du / see the amount of space taken by various / -aHLdclsxhmk FILE
7. Process commands
PS / Shows status of processes / -AacefbdshfsdDHdfhdb -core -Sysytem -Ofmt
Kill / send the specified signal to the specified process or process group / -s signal/-p --
pid
Jobs / responsible for the installation, configuration and maintenance / jobs jobID
Program No 2 :- Implement various UNIX system call for
A. Process Management
B. Input/output System Calls
System call
The system call provides an interface to the operating system services.
Application developers often do not have direct access to the system calls, but can access
them through an application programming interface (API). The functions that are
included in the API invoke the actual system calls. By using the API, certain benefits can
be gained:
Portability: as long a system supports an API, any program using that API can compile
and run.
Ease of Use: using the API can be significantly easier than using the actual system call.
Types of System Calls : There are 5 different categories of system calls
1. Process control :-This system calls perform the task of process creation, process
termination, etc.
2. File management:-File management system calls handle file manipulation jobs like
creating a file, reading, and writing, etc.
3. Device management:-Device management does the job of device manipulation like
reading from device buffers, writing into device buffers, etc.
4. Information maintenance:-It handles information and its transfer between the OS and
the user program.
5. Communication:-These types of system calls are specially used for interprocess
communications.
Program A: To Write a program using the Process system call of UNIX system call.
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
// make two process which run same
// program after this instruction
fork();
printf("Hello world!\n");
return 0;
Program B: To Write a program using the I/O System call of UNIX Operating system
(open, read, write) etc.
Program No 3:- Introduction of C programming
1. INTRODUCTION OF C PROGRAMMING LANGUAGE
The C language is a structure oriented programming language, developed at Bell Laboratories in
1972 by Dennis Ritchie
C programming language features were derived from a
Combined Programming Language BCPL)
2. FEATURES OF C LANGUAGE:
C language is one of the powerful languages. Below are some of the features of C language.
Reliability
Portability
Flexibility
Interactivity
Modularity
Efficiency and Effectiveness
3. LEVEL IS C LANGUAGE BELONGING TO?
There are 3 levels of programming languages. They are,
A. Middle Level languages:
-in functions found in high level languages, but
provides all building blocks that we need to produce the result we want. Examples: C, C++
B. High Level languages:
High level languages provide almost everything that the programmer might need to do as already
built into the language. Example: Java, Python
C. Low Level languages:
Low level languages provide nothing other than access to the machines basic instruction set.
Example: Assembler
4. C LANGUAGE IS A STRUCTURED LANGUAGE:
Structure oriented language:
In this type of language, large programs are divided into small programs called functions
Prime focus is on functions and procedures that operate on the data Data moves freely around the
systems from one function to another
Examples: C, Pascal, ALGOL and Modula-2
Object oriented language:
In this type of language, programs are divided into objects
Prime focus is in the data that is being operated and not on the functions or procedures
Data is hidden and cannot be accessed by external functions
Examples: C++, JAVA and C# (C sharp)
Non structure oriented language:
There is no specific structure for programming this language. Examples: BASIC, COBOL,
FORTRAN
5. TO WRITE A C PROGRAM:
Below are few commands and syntax used in C programming to write a
see all the sections of a simple C program line by line.
C Basic commands Explanation
#include <stdio.h> This is a preprocessor command that includes standard input output header
file(stdio.h) from the C library before compiling a C program
int main() This is the main function from where execution of any C program begins.
{ This indicates the beginning of the main function.
/*_some_comments_*/
mpilation and execution.
printf command prints the output onto the screen.
getch(); This command waits for any character input from keyboard.
return 0; This command terminates C program (main function) and returns 0.
} This indicates the end of the main function.
Program
Program 1:- Print the message Hello world
#include <stdio.h>
int main()
{
/* Our first simple C basic program */
printf("Hello World! ");
getch();
return 0;
}
OUTPUT:
Hello World!
3. STEPS TO WRITE C PROGRAMS AND GET THE OUTPUT:
Below are the steps to be followed for any C program to create and get the output. This is
common to all C program and there is no exception whether its a very small C program or very
large C program.
1. Create
2. Compile
3. Execute or Run
4. Get the Output
4. CREATION, COMPILATION AND EXECUTION OF A C PROGRAM:
Prerequisite:
If you want to create, compile and execute C programs by your own, you have to install
C compiler in your machine. Then, you can start to execute your own C programs in your
machine.
You can refer below link for how to install C compiler and compile and execute C
programs in your machine.
Once C compiler is installed in your machine, you can create, compile and execute C
programs as shown in below link.
Program 2 . C program print integer
This c program first inputs an integer and then prints it. Input is done using scanf function and
number is printed on screen using printf.
#include <stdio.h>
int main()
{
int a;
printf("Enter an integer\n");
scanf("%d", &a);
printf("Integer that you have entered is %d\n", a);
return 0;
}
Program No 3:- Add two numbers
#include<stdio.h>
main()
{
int a, b, c;
printf("Enter two numbers to
add\n"); scanf("%d%d",&a,&b);
c = a + b;
printf("Sum of entered numbers = %d\n",c);
return 0;
}
Program 4 : c printf() function
1 #include <stdio.h>
2 int main()
3{
4 char ch = 'A';
5 char str[20] = "fresh2refresh.com";
6 float flt = 10.234;
7 int no = 150;
8 double dbl = 20.123456;
9 printf("Character is %c \n", ch);
10 printf("String is %s \n" , str);
11 printf("Float value is %f \n", flt);
12 printf("Integer value is %d\n" , no);
13 printf("Double value is %lf \n", dbl);
14 printf("Octal value is %o \n", no);
15 printf("Hexadecimal value is %x \n", no);
16 return 0;
17 }
OUTPUT:
Character is A
String is fresh2refresh.com
Float value is 10.234000
Integer value is 150
Double value is 20.123456
Octal value is 226
Hexadecimal value is 96
Program 5: for c arithmetic operators:
1 #include <stdio.h>
2
3 int main()
4{
5 int a=40,b=20, add,sub,mul,div,mod;
6 add = a+b;
7 sub = a-b;
8 mul = a*b;
9 div = a/b;
10 mod = a%b;
11 printf("Addition of a, b is : %d\n", add);
12 printf("Subtraction of a, b is : %d\n", sub);
13 printf("Multiplication of a, b is : %d\n", mul);
14 printf("Division of a, b is : %d\n", div);
15 printf("Modulus of a, b is : %d\n", mod);
16 }
OUTPUT:
Addition of a, b is : 60
Subtraction of a, b is : 20
Multiplication of a, b is : 800
Division of a, b is : 2
Modulus of a, b is : 0
PROGRAM 6 :LOGICAL OPERATORS IN C:
1 #include <stdio.h>
2
3 int main()
4{
5 int m=40,n=20;
6 int o=20,p=30;
7 if (m>n && m !=0)
8 {
9 printf("&& Operator : Both conditions are true\n");
10 }
11 if (o>p || p!=20)
12 {
13 printf("|| Operator : Only one condition is true\n");
14 }
15 if (!(m>n && m !=0))
16 {
17 printf("! Operator : Both conditions are true\n");
18 }
19 else
20 {
21 printf("! Operator : Both conditions are true. " \
22 "But, status is inverted as false\n");
23 }
24 }
OUTPUT:
&& Operator : Both conditions are true
|| Operator : Only one condition is true
! Operator : Both conditions are true. But, status is inverted as false
PROGRAM 7- FOR CONDITIONAL/TERNARY OPERATORS IN C:
1 #include <stdio.h>
2
3 int main()
4{
5 int x=1, y ;
6 y = ( x ==1 ? 2 : 0 ) ;
7 printf("x value is %d\n", x);
8 printf("y value is %d", y);
9}
OUTPUT:
x value is 1
y value is 2
PROGRAM 8 :- FOR IF STATEMENT IN C:
#include <stdio.h>
int main()
{
int m=40,n=40;
if (m == n)
{
printf("m and n are equal");
}
}
OUTPUT:
m and n are equal
PROGRAM 9: FOR IF ELSE STATEMENT IN C:
1 #include <stdio.h>
2 int main()
3{
4 int m=40,n=20;
5 if (m == n)
6 {
7 printf("m and n are equal");
8 }
9 else
10 {
11 printf("m and n are not equal");
12 }
13
14 }
OUTPUT:
m and n are not equal
PROGRAM 10 :- FOR NESTED IF STATEMENT IN C:
1 #include <stdio.h>
2 int main()
3{
4 int m=40,n=20;
5 if (m>n) {
6 printf("m is greater than n");
7 }
8 else if(m<n) {
9 printf("m is less than n");
10 }
11 else {
12 printf("m is equal to n");
13 }
14 }
OUTPUT:
m is greater than n
PROGRAM 11:- (FOR LOOP) IN C:
In for loop control statement, loop is executed until condition becomes false.
include <stdio.h>
int main()
{
int i;
for(i=0;i<10;i++)
{
printf("%d ",i);
}
}
OUTPUT:
0123456789
PROGRAM 12:- (WHILE LOOP) IN C:
1 #include <stdio.h>
2
3 int main()
4{
5 int i=3;
6
7 while(i<10)
8 {
9 printf("%d\n",i);
10 i++;
11 }
12
13 }
OUTPUT:
3456789
PROGRAM 13:- (DO WHILE LOOP) IN C:
1 #include <stdio.h>
2
3 int main()
4{
5 int i=1;
6
7 do
8 {
9 printf("Value of i is %d\n",i);
10 i++;
11 }while(i<=4 && i>=2);
12
13 }
OUTPUT:
Value of i is 1
Value of i is 2
Value of i is 3
Value of i is 4
Case control statements
PROGRAM 14 :- FOR SWITCH..CASE STATEMENT IN C:
1 #include <stdio.h>
2
3 int main ()
4{
5 int value = 3;
6 switch(value)
7 {
8 case 1:
9 printf( Value is 1 \n );
10 break;
11
12 case 2:
13 printf( Value is 2 \n );
14 break;
15
16 case 3:
17 printf( Value is 3 \n );
18 break;
19
20 case 4:
21 printf( Value is 4 \n );
22 break;
23
24 default :
25 printf( Value is other than 1,2,3,4 \n );
26 }
27 return 0;
28 }
OUTPUT:
Value is 3
PROGRAM 15 :- FOR BREAK STATEMENT IN C:
1 #include <stdio.h>
2 int main()
3{
4 int i;
5
6 for(i=0;i<10;i++)
7 {
8 if(i==5)
9 {
10 printf("\nComing out of for loop when i = 5");
11 break;
12 }
13 printf("%d ",i);
14 }
15 }
OUTPUT:
01234
Coming out of for loop when i = 5
PROGRAM 16: FOR CONTINUE STATEMENT IN C:
1 #include <stdio.h>
2 int main()
3{
4 int i;
5 for(i=0;i<10;i++)
6 {
7 if(i==5 || i==6)
8 {
9 printf("\nSkipping %d from display using " \
10 "continue statement \n",i);
11 continue;
12 }
13 printf("%d ",i);
14 }
15 }
OUTPUT:
01234
Skipping 5 from display using continue statement
Skipping 6 from display using continue statement
789
PROGRAM 17 :- FOR GOTO STATEMENT IN C:
1 #include <stdio.h>
2 int main()
3{
4 int i;
5 for(i=0;i<10;i++)
6 {
7 if(i==5)
8 {
9 printf("\nWe are using goto statement when i = 5");
10 goto HAI;
11 }
12 printf("%d ",i);
13 }
14
15 HAI : printf("\nNow, we are inside label name \"hai\" \n");
16 }
OUTPUT:
01234
We are using goto statement when i = 5
PROGRAM 18 : FOR ONE DIMENSIONAL ARRAY IN C:
1 #include<stdio.h>
2
3 int main()
4{
5 int i;
6 int arr[5] = {10,20,30,40,50};
7
8 // declaring and Initializing array in C
9 //To initialize all array elements to 0, use int arr[5]={0};
10 /* Above array can be initialized as below also
11 arr[0] = 10;
12 arr[1] = 20;
13 arr[2] = 30;
14 arr[3] = 40;
15 arr[4] = 50; */
16
17 for (i=0;i<5;i++)
18 {
19 // Accessing each variable
20 printf("value of arr[%d] is %d \n", i, arr[i]);
21 }
22
23 }
OUTPUT:
value of arr[0] is 10
value of arr[1] is 20
value of arr[2] is 30
value of arr[3] is 40
value of arr[4] is 50
PROGRAM 19 :- FOR TWO DIMENSIONAL ARRAY IN C:
1 #include<stdio.h>
2
3 int main()
4{
5 int i,j;
6 // declaring and Initializing array
7 int arr[2][2] = {10,20,30,40};
8 /* Above array can be initialized as below also
9 arr[0][0] = 10; // Initializing array
10 arr[0][1] = 20;
11 arr[1][0] = 30;
12 arr[1][1] = 40; */
13 for (i=0;i<2;i++)
14 {
15 for (j=0;j<2;j++)
16 {
17 // Accessing variables
18 printf("value of arr[%d] [%d] : %d\n",i,j,arr[i][j]);
19 }
20 }
21 }
OUTPUT:
value of arr[0] [0] is 10
value of arr[0] [1] is 20
value of arr[1] [0] is 30
value of arr[1] [1] is 40
PROGRAM 20 :- FOR STRING IN C:
#include <stdio.h>
#include <string.h>
int main( )
{
char source[ ] = " fresh2refresh" ;
char target[ ]= " C tutorial" ;
printf ( "\nSource string = %s", source ) ;
printf ( "\nTarget string = %s", target ) ;
strcat ( target, source ) ;
printf ( "\nTarget string after strcat( ) = %s", target ) ;
}
OUTPUT:
Source string = fresh2refresh
Target string = C tutorial
Target string after strcat( ) = C tutorial fresh2refresh
PROGRAM 21:- FOR C FUNCTION:
1 #include<stdio.h>
2 // function prototype, also called function declaration
3 float square ( float x );
4 // main function, program starts from here
5
6 int main( )
7{
8 float m, n ;
9 printf ( "\nEnter some number for finding square \n");
10 scanf ( "%f", &m ) ;
11 // function call
12 n = square ( m ) ;
13 printf ( "\nSquare of the given number %f is %f",m,n );
14 }
15
16 float square ( float x ) // function definition
17 {
18 float p ;
19 p = x * x ;
20 return ( p ) ;
21 }
OUTPUT:
Enter some number for finding square
2
Square of the given number 2.000000 is 4.000000
PROGRAM 22 :- FOR C FUNCTION (USING CALL BY VALUE):
1 #include<stdio.h>
2 // function prototype, also called function declaration
3 void swap(int a, int b);
4
5 int main()
6{
7 int m = 22, n = 44;
8 // calling swap function by value
9 printf(" values before swap m = %d \nand n = %d", m, n);
10 swap(m, n);
11 }
12
13 void swap(int a, int b)
14 {
15 int tmp;
16 tmp = a;
17 a = b;
18 b = tmp;
19 printf(" \nvalues after swap m = %d\n and n = %d", a, b);
20 }
OUTPUT:
values before swap m = 22
and n = 44
values after swap m = 44
and n = 22
PROGRAM 23 :- FOR C FUNCTION (USING CALL BY REFERENCE):
1 #include<stdio.h>
2 // function prototype, also called function declaration
3 void swap(int *a, int *b);
4
5 int main()
6{
7 int m = 22, n = 44;
8 // calling swap function by reference
9 printf("values before swap m = %d \n and n = %d",m,n);
10 swap(&m, &n);
11 }
12
13 void swap(int *a, int *b)
14 {
15 int tmp;
16 tmp = *a;
17 *a = *b;
18 *b = tmp;
19 printf("\n values after swap a = %d \nand b = %d", *a, *b);
20 }
OUTPUT:
values before swap m = 22
and n = 44
values after swap a = 44
and b = 22
PROGRAM 24 :- FOR POINTERS IN C:
#include <stdio.h>
int main()
{
int *ptr, q;
q = 50;
/* address of q is assigned to ptr */
ptr = &q;
/* display q's value using ptr variable */
printf("%d", *ptr);
return 0;
}
Date 06/02/2023
Date 06/02/2023
Date 13/02/2023
Date 13/02/2023
Date 20/02/2023
Date 13/03/2023
Date 20/03/2023
Date 20/03/2023
Date 27/03/2023
Date 03/04/2023
Date 17/04/2023