0% found this document useful (0 votes)
28 views35 pages

Name: Tejas Deshmukh Class: TE Computer, Div: TE-1 Roll No.: 305A029 Subject: Laboratory Practice - 1 College: Sinhgad College of Engineering

Uploaded by

tejasdeshmukh812
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views35 pages

Name: Tejas Deshmukh Class: TE Computer, Div: TE-1 Roll No.: 305A029 Subject: Laboratory Practice - 1 College: Sinhgad College of Engineering

Uploaded by

tejasdeshmukh812
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 35

Name: Tejas Deshmukh

Class: TE computer,
Div: TE-1 Roll No.: 305A029
Subject: Laboratory Practice -1
College: Sinhgad College Of Engineering
Pass – 1 Assembler Program

import java.io.*;
class SymbTab
{
public static void main(String args[])throws Exception
{
FileReader FP=new FileReader("/Desktop/Java/input.txt");
BufferedReader bufferedReader = new BufferedReader(FP);
String line=null;
int line_count=0,LC=0,symTabLine=0,opTabLine=0,litTabLine=0,poolTabLine=0;
//Data Structures final
int MAX=100;
String SymbolTab[][]=new String[MAX][3];
String OpTab[][]=new String[MAX][3];
String LitTab[][]=new String[MAX][2]; int
PoolTab[]=new int[MAX];
// int litTabAddress=0;
/*---------------------------------------------------------------------------------------------------*/
System.out.println("___________________________________________________"); while((line
= bufferedReader.readLine()) != null)
{
String[] tokens = line.split("\t");
if(line_count==0)
{
LC=Integer.parseInt(tokens[1]); //set
LC to operand of START
for(int i=0;i<tokens.length;i++) //for printing the input program
System.out.print(tokens[i]+"\t");
System.out.println("");
} else
{
for(int i=0;i<tokens.length;i++) //for printing the input program
System.out.print(tokens[i]+"\t");
System.out.println(""); if(!tokens[0].equals(""))
{
//Inserting into Symbol Table
SymbolTab[symTabLine][0]=tokens[0];
SymbolTab[symTabLine][1]=Integer.toString(LC); SymbolTab[symTabLine]
[2]=Integer.toString(1);
symTabLine++;
}
else if(tokens[1].equalsIgnoreCase("DS")||tokens[1].equalsIgnoreCase("DC")) {
//Entry into symbol table for declarative statements
SymbolTab[symTabLine][0]=tokens[0];
SymbolTab[symTabLine][1]=Integer.toString(LC); SymbolTab[symTabLine]
[2]=Integer.toString(1);
symTabLine++;
}

if(tokens.length==3 && tokens[2].charAt(0)=='=')


{
//Entry of literals into literal table LitTab[litTabLine][0]=tokens[2];
LitTab[litTabLine][1]=Integer.toString(LC); litTabLine++;
}
else if(tokens[1]!=null)
{
//Entry of Mnemonic in opcode table OpTab[opTabLine][0]=tokens[1];
if(tokens[1].equalsIgnoreCase("START")||tokens[1].equalsIgnoreCase("END")||tokens[1].equalsIgnoreCase("
ORIGIN")||tokens[1].equalsIgnoreCase("EQU")||tokens[1].equalsIgnoreCase("LTORG")) //if Assembler
Directive
{
OpTab[opTabLine][1]="AD";
OpTab[opTabLine][2]="R11";
}
else if(tokens[1].equalsIgnoreCase("DS")||tokens[1].equalsIgnoreCase("DC")) {
OpTab[opTabLine][1]="DL";
OpTab[opTabLine][2]="R7";
} else
{
OpTab[opTabLine][1]="IS";
OpTab[opTabLine][2]="(04,1)";
}
opTabLine++;
}}
line_count++;
LC++;
}

System.out.println("___________________________________________________");

//print symbol table


System.out.println("\n\n SYMBOL TABLE ");
System.out.println("--------------------------");
System.out.println("SYMBOL\tADDRESS\tLENGTH");
System.out.println("--------------------------");
for(int i=0;i<symTabLine;i++)
System.out.println(SymbolTab[i][0]+"\t"+SymbolTab[i][1]+"\t"+SymbolTab[i][2]);
System.out.println("--------------------------");
//print opcode table
System.out.println("\n\n OPCODE TABLE ");
System.out.println("----------------------------");
System.out.println("MNEMONIC\tCLASS\tINFO");
System.out.println("----------------------------");
for(int i=0;i<opTabLine;i++)
System.out.println(OpTab[i][0]+"\t\t"+OpTab[i][1]+"\t"+OpTab[i][2]);
System.out.println("----------------------------");

//print literal table


System.out.println("\n\n LITERAL TABLE ");
System.out.println("-----------------");
System.out.println("LITERAL\tADDRESS");
System.out.println("-----------------"); for(int
i=0;i<litTabLine;i++)
System.out.println(LitTab[i][0]+"\t"+LitTab[i][1]);
System.out.println("------------------");

//intialization of POOLTAB for(int


i=0;i<litTabLine;i++)
{
if(LitTab[i][0]!=null && LitTab[i+1][0]!=null ) //if literals are present
{ if(i==0)
{
PoolTab[poolTabLine]=i+1;
poolTabLine++;
}
else if(Integer.parseInt(LitTab[i][1])<(Integer.parseInt(LitTab[i+1][1]))-1) {
PoolTab[poolTabLine]=i+2;
poolTabLine++;
}
}
}
//print pool table
System.out.println("\n\n POOL TABLE ");
System.out.println("-----------------");
System.out.println("LITERAL NUMBER");
System.out.println("-----------------");
for(int i=0;i<poolTabLine;i++)
System.out.println(PoolTab[i]);
System.out.println("------------------"); //
Always close files.
bufferedReader.close();
}
}
OUTPUT:

___________________________________________________

START 100

READ A

LABLE MOVER A,B

LTORG

='5'

='1'

='6'

='7'

MOVEM A,B

LTORG

='2'

LOOP READ B

A DS 1

B DC '1'

='1'

END ___________________________________________________

SYMBOL TABLE

--------------------------

SYMBOL ADDRESS LENGTH

--------------------------

LABLE 102 1

LOOP 111 1

A 112 1
B 113 1

--------------------------

OPCODE TABLE

----------------------------

MNEMONIC CLASS INFO


----------------------------

READ IS (04,1)

MOVER IS (04,1)

LTORG AD R11

MOVEM IS (04,1)

LTORG AD R11

READ IS (04,1)

DS DL R7

DC DL R7
END AD
R11
----------------------------

LITERAL TABLE

-----------------

LITERAL ADDRESS

-----------------
='5' 104

='1' 105

='6' 106

='7' 107

='2' 110
='1'
114
------------------

POOL TABLE

-----------------

LITERAL NUMBER

-----------------

------------------
Pass-2 Assembler Program

Progarm:

package spos;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter; import
java.io.IOException; import
java.util.HashMap;

public class Pass2 { public static void main(String[] Args)


throws IOException{
BufferedReader b1 = new BufferedReader(new
FileReader("/home/omkar/eclipseworkspace/spos/src/intermediate.txt"));
BufferedReader b2 = new BufferedReader(new
FileReader("/home/omkar/eclipseworkspace/spos/src/symtab.txt"));
BufferedReader b3 = new BufferedReader(new FileReader("/home/omkar/eclipse-
workspace/spos/src/littab.txt"));
FileWriter f1 = new FileWriter("/home/omkar/eclipse-workspace/spos/src/Pass2.txt");
HashMap<Integer, String> symSymbol = new HashMap<Integer, String>();
HashMap<Integer, String> litSymbol = new HashMap<Integer, String>();
HashMap<Integer, String> litAddr = new HashMap<Integer, String>();
String s;
int symtabPointer=1,littabPointer=1,offset;
while((s=b2.readLine())!=null){ String
word[]=s.split("\t\t\t");
symSymbol.put(symtabPointer++,word[1]);
}
while((s=b3.readLine())!=null){
String word[]=s.split("\t\t");
litSymbol.put(littabPointer,word[0]);
litAddr.put(littabPointer++,word[1]);
}
while((s=b1.readLine())!=null){
if(s.substring(1,6).compareToIgnoreCase("IS,00")==0){
f1.write("+ 00 0 000\n");
}
else if(s.substring(1,3).compareToIgnoreCase("IS")==0){
f1.write("+ "+s.substring(4,6)+" ");
if(s.charAt(9)==')'){
f1.write(s.charAt(8)+" ");
offset=3;
}
else{
f1.write("0 ");
offset=0;
}
if(s.charAt(8+offset)=='S')
f1.write(symSymbol.get(Integer.parseInt(s.substring(10+offset,s.length()-
1)))+"\n");
else
f1.write(litAddr.get(Integer.parseInt(s.substring(10+offset,s.length()-1)))+"\n");
}
else if(s.substring(1,6).compareToIgnoreCase("DL,01")==0){ String
s1=s.substring(10,s.length()-1),s2=""; for(int i=0;i<3-s1.length();i++)
s2+="0";
s2+=s1;
f1.write("+ 00 0 "+s2+"\n");
}
else{
f1.write("\n");
}
}
f1.close();
b1.close(); b2.close();
b3.close();
}
}

Intermediate.txt

(AD,01)(C,200)
(IS,04)(1)(L,1)
(IS,05)(1)(S,1)
(IS,04)(1)(S,1)
(IS,04)(3)(S,3) (IS,01)(3)(L,2)
(IS,07)(6)(S,4)
(DL,01)(C,5)
(DL,01)(C,1)
(IS,02)(1)(L,3) (IS,07)(1)(S,5)
(IS,00)
(AD,03)(S,2)+2
(IS,03)(3)(S,3)
(AD,03)(S,6)+1
(DL,02)(C,1)
(DL,02)(C,1)
(AD,02)
(DL,01)(C,1)

littab.txt
5 206
1 207
1 213

symtab.txt

A 211 1
LOOP 202 1
B 212 1
NEXT 208 1
BACK 202 1
LAST 210 1
Output
Pass2.txt

+ 04 1 206 +
05 1 211
+ 04 1 211 +
04 3 212
+ 01 3 207
+ 07 6 208
+ 00 0 005
+ 00 0 001
+ 02 1 213
+ 07 1 202
+ 00 0 000

+ 03 3 212

+ 00 0 001
Input.txt

MACRO

INCR1 &FIRST,&SECOND=DATA9

A 1,&FIRST

L 2,&SECOND

MEND

MACRO

INCR2 &ARG1,&ARG2=DATA5

L 3,&ARG1

ST 4,&ARG2

MEND

PRG2 START

USING *,BASE

INCR1 DATA1

INCR2 DATA3,DATA4

FOUR DC F'4'

FIVE DC F'5'

BASE EQU 8

TEMP DS 1F

DROP 8

END

MACRO.java

import java.util.*;

import java.io.*; class

MACRO

static String mnt[][]=new String[5][3]; //assuming 5 macros in 1 program static

String ala[][]=new String[10][2]; //assuming 2 arguments in each macro static

String mdt[][]=new String[20][1]; //assuming 4 LOC for each macro static int

mntc=0,mdtc=0,alac=0;

public static void main(String args[])


{

pass1();

System.out.println("\n*********PASS-1 MACROPROCESSOR***********\n");

System.out.println("MACRO NAME TABLE (MNT)\n");

System.out.println("i macro loc\n");

display(mnt,mntc,3);

System.out.println("\n");

System.out.println("ARGUMENT LIST ARRAY(ALA) for Pass1\n");

display(ala,alac,2);

System.out.println("\n");

System.out.println("MACRO DEFINITION TABLE (MDT)\n"); display(mdt,mdtc,1);

System.out.println("\n");

static void pass1()

int index=0,i;

String s,prev="",substring;

try

BufferedReader inp = new BufferedReader(new FileReader("input.txt")); File

op = new File("pass1_output.txt");

if (!op.exists()) op.createNewFile();

BufferedWriter output = new BufferedWriter(new FileWriter(op.getAbsoluteFile()));

while((s=inp.readLine())!=null)

if(s.equalsIgnoreCase("MACRO"))

prev=s;

for(;!(s=inp.readLine()).equalsIgnoreCase("MEND");mdtc++,prev=s)

if(prev.equalsIgnoreCase("MACRO"))

{
StringTokenizer st=new StringTokenizer(s); String str[]=new

String[st.countTokens()]; for(i=0;i<str.length;i++)

str[i]=st.nextToken(); mnt[mntc][0]=(mntc+1)+""; //mnt

formation mnt[mntc][1]=str[0]; mnt[mntc++][2]=(++mdtc)

+""; st=new StringTokenizer(str[1],","); //tokenizing the

arguments String string[]=new String[st.countTokens()];

for(i=0;i<string.length;i++)

string[i]=st.nextToken(); ala[alac]

[0]=alac+""; //ala table formation

index=string[i].indexOf("="); if(index!=-1)

ala[alac++][1]=string[i].substring(0,index);

else ala[alac++][1]=string[i];

else //automatically eliminates tagging of arguments in definition

{ //mdt formation index=s.indexOf("&");

substring=s.substring(index);

for(i=0;i<alac;i++) if(ala[i]

[1].equals(substring))

s=s.replaceAll(substring,"#"+ala[i][0]); }

mdt[mdtc-1][0]=s;

mdt[mdtc-1][0]=s;

else

output.write(s); output.newLine();

output.close();

}
catch(FileNotFoundException ex)

System.out.println("UNABLE TO END FILE ");

catch(IOException e)

e.printStackTrace();

static void display(String a[][],int n,int m)

{ int

i,j;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

System.out.print(a[i][j]+" ");

System.out.println();

output:
Microsoft Windows [Version 10.0.19044.2006] (c)
Microsoft Corporation. All rights reserved.

C:\Users\Prerana>cd Desktop

C:\Users\Prerana\Desktop>javac MACRO.java

C:\Users\Prerana\Desktop>java MACRO

*********PASS-1 MACROPROCESSOR***********

MACRO NAME TABLE (MNT)

i macro loc

1 INCR1 1
2 INCR2 5

ARGUMENT LIST ARRAY(ALA) for Pass1

0 &FIRST
1 &SECOND
2 &ARG1
3 &ARG2

MACRO DEFINITION TABLE (MDT)

INCR1 &FIRST,&SECOND=DATA9
A 1,#0
L 2,#1
MEND
INCR2 &ARG1,&ARG2=DATA5
L 3,#2
ST 4,#3
MEND
#include<pthread.h>
#include<stdio.h>
#include<semaphore.h>
#include<unistd.h>

void *funl();

void *fun2();
int shared=1; //shared
variable sem_t s; //semaphore
variable
int
main()
{
sem_init(&s,0,1); //initialize semaphore variable - Ist argument is
address of variable, 2nd is number of
processes sharing semaphore, 3rd argument is the initial value of
semaphore variable

pthread_t thread1, thread2;

pthread_create(&thread1, NULL, funl, NULL);

pthread_create(&thread2, NULL, fun2, NULL);

pthread_join(thread1, NULL);

pthread_join(thread2,NULL);

printf("Final value of shared is %d\n",shared); //prints the last


updated value of shared variable

}
void *fun!()
{ int
x;
sem_wait(&s); //executes wait Operation on s
x = shared;//thread] reads value of shared
variable printf("Thread! reads the value as %d\
n",x);

x++; //thread! increments its value

print("Local updation by Thread1; %d\n",x);


sleep(1); (bread | is preempted by thread
2
shared=x; //thread one updates the value of shared
variable printf("Value of shared variable updated by
Thread 1 is:
%d\n",shared);

sem_post(&s);

}
void *fun2()
{ int
y;
sem_wait(&s);
y=shared;//thread2 reads value of shared
variable printf("Thread2 reads the value as %d\
n",y);

y--; /thread2 increments its value

printf("Local updation by Thread2: %d\n",y);

sleep(1); /Ahread2 is preempted by thread |

shared=y; /Ahread2 updates the value of shared variable

printf("Value of shared variable updated by Thread2 is; %d\n",shared);

sem_post(&s);
}

Output :-

Thread1 reads the value as 1


Local updation by Thread1: 2
Value of shared variable updated by Thread1 is: 2
Thread2 reads the value as 2
Local updation by Thread2: 1
Value of shared variable updated by Thread2 is: 1
Final value of shared is 1

1.FCFS
*/ import java.io.*;
import java.util.Scanner;
public class FCFS
{
public static void main(String args[])
{
int i,no_p,burst_time[],TT[],WT[];
float avg_wait=0,avg_TT=0;
burst_time=new int[50]; TT=new
int[50];
WT=new int[50];
WT[0]=0;
Scanner s=new Scanner(System.in);
System.out.println("Enter the number of process: ");
no_p=s.nextInt();
System.out.println("\nEnter Burst Time for processes:");
for(i=0;i<no_p;i++)
{
System.out.print("\tP"+(i+1)+": ");
burst_time[i]=s.nextInt();
}

for(i=1;i<no_p;i++)
{
WT[i]=WT[i-1]+burst_time[i-1];
avg_wait+=WT[i];
}
avg_wait/=no_p;

for(i=0;i<no_p;i++)
{
TT[i]=WT[i]+burst_time[i];
avg_TT+=TT[i];
}
avg_TT/=no_p;

System.out.println("\n************************************************************
****");
System.out.println("\tProcesses:");

System.out.println("*************************************************************
*
**");
System.out.println(" Process\tBurst Time\tWaiting Time\tTurn Around Time");
for(i=0;i<no_p;i++)
{
System.out.println("\tP"+(i+1)+"\t "+burst_time[i]+"\t\t "+WT[i]+"\t\t "+TT[i]);

}
System.out.println("\n----------------------------------------------------------------");
System.out.println("\nAverage waiting time : "+avg_wait);
System.out.println("\nAverage Turn Around time : "+avg_TT+"\n");
}
}

/*Output:
Enter the number of process:
3

Enter Burst Time for processes:


P1: 24
P2: 3
P3: 3

****************************************************************
Processes:
****************************************************************
Process Burst Time Waiting Time Turn Around Time
P1 24 0 24
P2 3 24 27
P3 3 27 30

----------------------------------------------------------------
Average waiting time : 17.0
Average Turn Around time : 27.0 */

/*Round Robin(Preemptive)*/
import java.util.*; import
java.io.*; class RoundR
{
public static void main(String args[])
{
int Process[]=new int[10];
int a[]=new int[10]; int
Arrival_time[]=new int[10]; int
Burst_time[]=new int[10]; int
WT[]=new int[10]; int TAT[]=new
int[10]; int Pno,sum=0;;
int TimeQuantum;

System.out.println("\nEnter the no. of Process::");


Scanner sc=new Scanner(System.in);
Pno=sc.nextInt();
System.out.println("\nEnter each process::");
for(int i=0;i<Pno;i++)
{
Process[i]=sc.nextInt();
}

System.out.println("\nEnter the Burst Time of each process::");


for(int i=0;i<Pno;i++)
{
Burst_time[i]=sc.nextInt();
}
System.out.println("\nEnter the Time Quantum::");
TimeQuantum=sc.nextInt();
do{
for(int i=0;i<Pno;i++)
{
if(Burst_time[i]>TimeQuantum)
{
Burst_time[i]-=TimeQuantum;
for(int j=0;j<Pno;j++)
{
if((j!=i)&&(Burst_time[j]!=0))
WT[j]+=TimeQuantum;
}
}
else
{
for(int j=0;j<Pno;j++)
{
if((j!=i)&&(Burst_time[j]!=0))
WT[j]+=Burst_time[i];
}
Burst_time[i]=0;
}
}
sum=0;
for(int k=0;k<Pno;k++)
sum=sum+Burst_time[k];
} while(sum!=0);

for(int i=0;i<Pno;i++)
TAT[i]=WT[i]+a[i];
System.out.println("process\t\tBT\tWT\tTAT");
for(int i=0;i<Pno;i++)
{
System.out.println("process"+(i+1)+"\t"+a[i]+"\t"+WT[i]+"\t"+TAT[i]);
}
float avg_wt=0; float
avg_tat=0; for(int
j=0;j<Pno;j++)
{
avg_wt+=WT[j];
}
for(int j=0;j<Pno;j++)
{
avg_tat+=TAT[j];
}
System.out.println("average waiting time "+(avg_wt/Pno)+"\n Average turn around time"+
(avg_tat/Pno));
}
}
/*OUTPUT::
Enter the no. of Process::
5
Enter each process::
1
2
3
4
5
Enter the Burst Time of each process::
2
1
8
4
5
Enter the Time Quantum::
2
process BT WT TAT process1 0 0 0
process2 0 2 2 process3 0 12 12
process4 0 9 9 process5 0 13 13
average waiting time 7.2
Average turn around time7.2 */ import java.util.Scanner; class SJF1{ public static void main(String
args[]){ int burst_time[],process[],waiting_time[],tat[],i,j,n,total=0,pos,temp; float wait_avg,TAT_avg;
Scanner s = new Scanner(System.in);

System.out.print("Enter number of process: "); n


= s.nextInt();

process = new int[n];


burst_time = new int[n];
waiting_time = new int[n]; tat
= new int[n];

System.out.println("\nEnter Burst time:"); for(i=0;i<n;i++)


{
System.out.print("\nProcess["+(i+1)+"]: ");
burst_time[i] = s.nextInt();; process[i]=i+1;
//Process Number
}

//Sorting for(i=0;i<n;i++)
{
pos=i; for(j=i+1;j<n;j++)
{
if(burst_time[j]<burst_time[pos]) pos=j;
}

temp=burst_time[i]; burst_time[i]=burst_time[pos];
burst_time[pos]=temp;
temp=process[i]; process[i]=process[pos];
process[pos]=temp;
}
//First process has 0 waiting time
waiting_time[0]=0; //calculate
waiting time for(i=1;i<n;i++)
{
waiting_time[i]=0; for(j=0;j<i;j++)
waiting_time[i]+=burst_time[j];
total+=waiting_time[i];
}

//Calculating Average waiting time


wait_avg=(float)total/n; total=0;

System.out.println("\nProcess\t Burst Time \tWaiting Time\tTurnaround Time"); for(i=0;i<n;i++)


{
tat[i]=burst_time[i]+waiting_time[i]; //Calculating Turnaround Time total+=tat[i];
System.out.println("\n p"+process[i]+"\t\t "+burst_time[i]+"\t\t "+waiting_time[i]+"\t\t "+tat[i]);
}

//Calculation of Average Turnaround Time


TAT_avg=(float)total/n;
System.out.println("\n\nAverage Waiting Time: "+wait_avg);
System.out.println("\nAverage Turnaround Time: "+TAT_avg);

}
}

import java.util.*; class SJF { public


static void main(String args[])
{ Scanner sc = new
Scanner(System.in); int n, BT[], WT[],
TAT[];

System.out.println(“Enter no of process”);
n = sc.nextInt(); BT
= new int[n + 1];
WT = new int[n + 1]; TAT
= new int[n + 1]; float
AWT = 0;
System.out.println(“Enter Burst time for each process”); for
(int i = 0; i < n; i++) {
System.out.println(“Enter BT for process ” + (i + 1));
BT[i] = sc.nextInt(); }

for (int i = 0; i < n; i++) {


WT[i] = 0;
TAT[i] = 0;
}
int temp;
for (int i = 0; i < n; i++) { for
(int j = 0; j < n – 1; j++) { if
(BT[j] > BT[j + 1]) { temp =
BT[j]; BT[j] = BT[j + 1]; BT[j
+ 1] = temp;

temp = WT[j]; WT[j]


= WT[j + 1];
WT[j + 1] = temp;
}
}
}

for (int i = 0; i < n; i++) { TAT[i]


= BT[i] + WT[i];
WT[i + 1] = TAT[i];
}

TAT[n] = WT[n] + BT[n];


System.out.println(” PROCESS BT WT TAT “);
for (int i = 0; i < n; i++)
System.out.println(” ” + i + ” ” + BT[i] + ” ” + WT[i] + ” ” + TAT[i]); for (int j
= 0; j < n; j++)
AWT += WT[j];
AWT = AWT / n;
System.out.println(“***********************************************”);
System.out.println(“Avg waiting time=” + AWT +
“\n***********************************************”);
}
}

/*
O/P for SJF shortest job first scheduling algorithm is :
Enter no of process
4
Enter Burst time for each process
Enter BT for process 1
5
Enter BT for process 2
3
Enter BT for process 3
3
Enter BT for process 4
1
PROCESS BT WT TAT
0101
1314
2347
3 5 7 12
***********************************************
Avg waiting time=3.0
***********************************************
*/

import java.util.Scanner; public class


Bankers{ private int need[][],allocate[][],max[]
[],avail[][],np,nr;

private void input(){


Scanner sc=new Scanner(System.in);
System.out.print("Enter no. of processes: ");
np=sc.nextInt(); //no. of process
System.out.print("Enter no. of Resources : ");
nr=sc.nextInt(); //no. of resources
need=new int[np][nr]; //initializing arrays
max=new int[np][nr]; allocate=new int[np]
[nr]; avail=new int[1][nr];

System.out.println("Enter allocation matrix -->");


for(int i=0;i<np;i++) for(int j=0;j<nr;j++)
allocate[i][j]=sc.nextInt(); //allocation matrix

System.out.println("Enter max matrix -->");


for(int i=0;i<np;i++) for(int j=0;j<nr;j++)
max[i][j]=sc.nextInt(); //max matrix

System.out.println("Enter available matrix -->");


for(int j=0;j<nr;j++) avail[0][j]=sc.nextInt();
//available matrix

sc.close();
}

private int[][] calc_need(){ for(int i=0;i<np;i+


+) for(int j=0;j<nr;j++) //calculating need
matrix need[i][j]=max[i][j]-allocate[i][j];

return need;
}

private boolean check(int i){


//checking if all resources for ith process can be allocated
for(int j=0;j<nr;j++) if(avail[0][j]<need[i][j]) return
false;

return true;
}

public void isSafe(){ input();


calc_need(); boolean done[]=new
boolean[np];
int j=0;

while(j<np)
{
//until all process allocated
boolean allocated=false;
for(int i=0;i<np;i++) if(!
done[i] && check(i)){
//trying to allocate
for(int k=0;k<nr;k++)
avail[0][k]=avail[0][k]-need[i][k]+max[i][k];
System.out.println("Allocated process : "+i); allocated=done[i]=true;
j++;
}
if(!allocated) break; //if no allocation
}
if(j==np) //if all processes are allocated System.out.println("\
nSafely allocated");
else
System.out.println("All proceess cant be allocated safely");
}

public static void main(String[] args)


{ new Bankers().isSafe();
}
}

/*
OUTPUT:
Enter no. of processes: 5
Enter no. of Resources : 3
Enter allocation matrix -->
010
200
302
211
002
Enter max matrix -->
753
322
902
222
433
Enter available matrix -->
332
Allocated process : 1
Allocated process : 3
Allocated process : 4
Allocated process : 0
Allocated process : 2

Safely allocated

*/
//Java implementation of First - Fit algorith

//Java implementation of First - Fit algorithm


class
GFG
{
// Method to allocate memory to //
blocks as per First fit algorithm
static void firstFit(int blockSize[], int m, int processSize[], int n)
{
// Stores block id of the
// block allocated to a process

int allocation[] = new int[n];

// Initially no block is assigned to any process

for (int i = 0; i < allocation.length; i++) allocation[i]


= -1;

// pick each process and find suitable blocks


// according to its size ad assign to it

for (int i = 0; i <n; i++)


{
for (int j = 0; j < m; j++)
{
if (blockSize[j] >= processSize[i])
{

// allocate block j to p[i] process allocation[i]


=j;

// Reduce available memory in this block.


blockSize[j] = processSize[i]; break;
}
}
}

System.out. println( "\nProcess No.\tProcess Size\tBlock no.");

for (int i = 0; i<n; i++)


{
System.out.print(" "+ (i+1) + "\t\t" + processSize[i] + "\t\t"); if
(allocation[i] != -1)
System.out.print(allocation[i] + 1); else
System.out.print("Not Allocated");
System.out.println();
}
}
// Driver
Code
public static void main(String args)

Windows PowerShell Copyright (C) Microsoft


Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows

PS C:\Users\Mandar\OneDrive\Desktop\Java> cd "c:\Users\Mandar\OneDrive\Desktop\" ; if ($?) { javac GFG.java } ; if ($?) { java


Process No. Process Size Block No.

1 212 2
2 417 5
3 112 2
4 426 Not Allocated
PS C:\Users\Mandar\OneDrive\Desktop>

{ int blockSize[] = {100, 500, 200, 300,


600}; int processSize[] = {212, 417, 112,
426}; int m= blockSize.length; int n=
processSize.length; firstFit(blockSize, m,
processSize, n);
}
}

Output :-
****LRU****

import java.io.*;
class lru
{
public static void main(String args[])throws IOException
{
BufferedReader obj=new BufferedReader(new InputStreamReader(System.in));
int f,page=0,ch,pgf=0,n,chn=0; boolean flag; int pages[];
//pgf-page fault

System.out.println("1.LRU");
int pt=0;
System.out.println("enter no. of frames: ");
f=Integer.parseInt(obj.readLine());
int frame[]=new int[f];

for(int i=0;i<f;i++)
{
frame[i]=-1;
}

System.out.println("enter the no of pages ");


n=Integer.parseInt(obj.readLine());

pages=new int[n];
System.out.println("enter the page no ");

for(int j=0;j<n;j++)
pages[j]=Integer.parseInt(obj.readLine());

int pg=0;
for(pg=0;pg<n;pg++)
{
page=pages[pg];

flag=true; for(int
j=0;j<f;j++)
{
if(page==frame[j])
{
flag=false;
break;
}
}
int temp,h=3,i;
if(flag) { if(
frame[1]!=-1 && frame[2]!=-1 && frame[0]!=-1)
{
temp=pages[pg-3];
if(temp==pages[pg-2] || temp==pages[pg-1])
temp=pages[pg-4];

for(i=0;i<f;i++)
if(temp==frame[i])
break;
frame[i]=pages[pg];
}
else
{
if(frame[0]==-1)
frame[0]=pages[pg];
else if(frame[1]==-1)
frame[1]=pages[pg]; else
if(frame[2]==-1)
frame[2]=pages[pg];
}

System.out.print("frame :");
for(int j=0;j<f;j++)
System.out.print(frame[j]+" ");
System.out.println(); pgf++;
} else
{
System.out.print("frame :"); for(int j=0;j<f;j++)
System.out.print(frame[j]+" ");
System.out.println();
}
}//for

System.out.println("Page fault:"+pgf);

}//main
}//class

/*
OUTPUT:-

enter no. of frames:


4 enter the no of
pages 10 enter the
page no
1
0
1
2
3
7
8
1
5 2 frame :1 -1 -1
-1 frame :1 0 -1
-1 frame :1 0 -1
-1 frame :1 0 2
-1 frame :1 3 2
-1 frame :7 3 2
-1 frame :7 3 8
-1 frame :7 1 8
-1 frame :5 1 8
-1 frame :5 1 2
-1
Page fault:9

*/
****Optimal****

import java.util.*; import


java.io.*;
class Optimal
{
public static void main(String args[])throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int numberOfFrames, numberOfPages, flag1, flag2, flag3, i, j, k, pos = 0, max;
int faults = 0; int temp[] = new int[10];

System.out.println("Enter number of Frames: ");


numberOfFrames = Integer.parseInt(br.readLine());
int frame[] = new int[numberOfFrames];

System.out.println("Enter number of Pages: "); numberOfPages =


Integer.parseInt(br.readLine());

int pages[] = new int[numberOfPages];


System.out.println("Enter the pages: ");
for(i=0; i<numberOfPages; i++)
pages[i] = Integer.parseInt(br.readLine());

for(i = 0; i < numberOfFrames; i++)


frame[i] = -1;

for(i = 0; i < numberOfPages; ++i){


flag1 = flag2 = 0;

for(j = 0; j < numberOfFrames; ++j){


if(frame[j] == pages[i]){
flag1 = flag2 = 1; break;
}
}

if(flag1 == 0){ for(j = 0; j


< numberOfFrames; ++j){
if(frame[j] == -1){
faults++;
frame[j] = pages[i];
flag2 = 1; break;
}
}
}

if(flag2 == 0){
flag3 =0;

for(j = 0; j < numberOfFrames; ++j)


{ temp[j] = -1;
for(k = i + 1; k < numberOfPages; ++k){
if(frame[j] == pages[k]){
temp[j] = k; break;
}
}
}

for(j = 0; j < numberOfFrames; ++j){


if(temp[j] == -1){
pos = j; flag3 = 1;
break; }
}

if(flag3 ==0){
max = temp[0];
pos = 0;
for(j = 1; j < numberOfFrames; ++j){
if(temp[j] > max){
max = temp[j]; pos = j;
}
}
}

frame[pos] = pages[i];
faults++;
}

// System.out.print();

for(j = 0; j < numberOfFrames; ++j){


System.out.print("\t"+ frame[j]);
}
}

System.out.println("\n\nTotal Page Faults: "+ faults);

Output:-
Enter number of Pages:
10
Enter the pages:
1
0
1
2
3
7
8
1
5
2
1 -1 -1 -1 1 0 -1 -1 1 0 -1 -1 1 0 2 -1 1 0 2 3
1 7 2 3
Total Page Faults: 7

You might also like