Saturday, 12 January 2013

OS Disk Scheduling: C-LOOK implementation in Java


/* For info on C-LOOk check the link:
http://en.wikipedia.org/wiki/LOOK_algorithm
*/

import java.util.*;

class CLOOKDS{

int head=0;
int dir=0;
Scanner obj=new Scanner(System.in);
int start=0,end=0,beg=0;
int sum[]=new int[2];
int ref[][]=new int[8][2];

void moveLeft(){
System.out.println("ML Wrkng");
int j=0;

for(int i=(start-1);i>0;i--){

ref[j][1]=Math.abs(ref[i][0]-ref[i-1][0]);
sum[0]+=ref[j][1];
System.out.println(ref[i][0]+" "+ref[j][1]);
j++;
}
}
void moveRight(){
System.out.println("MR Wrkng");
for(int i=start;i<7;i++){
ref[i][1]=Math.abs(ref[i][0]-ref[i+1][0]);
sum[1]+=ref[i][1];
System.out.println(ref[i][0]+" "+ref[i][1]);
}

}
void sort(){
System.out.println("Working Sort");
int temp=0;
for(int i=0;i<8;i++){
for(int j=i+1;j<8;j++){
if(ref[i][0]>ref[j][0]){
temp=ref[i][0];
ref[i][0]=ref[j][0];
ref[j][0]=temp;
}
}
}

for(int i=0;i<8;i++){
System.out.println(ref[i][0]+" ");
}

for(int i=0;i<8;i++){
if(ref[i][0]>head){
start=i;
break;
}

}
if(head>=200)
start=7;
System.out.println("The Start Pos Is:"+ref[start][0]);
}

void getInput(){
System.out.println("GI Wrkng");
System.out.println("Enter The Head Pos:");
head=obj.nextInt();
System.out.println("Enter The Beg And End Points");
beg=obj.nextInt();
end=obj.nextInt();
System.out.println("Enter The Direction of Head Mov '0(L) or 1(R)'");
dir=obj.nextInt();
System.out.println("Enter The REF String");
for(int i=0;i<8;i++){
ref[i][0]=(int)((Math.random()*200)+1);
}
}

void compute(){
getInput();
sort();
if(dir==0){
moveLeft();
moveRight();
sum[0]+=Math.abs((head-ref[start-1][0]));
sum[1]+=Math.abs((ref[0][0]-ref[7][0]));
System.out.println("Left Sum Is "+sum[0]+" Right sum is "+sum[1]);}
else
{
moveRight();
moveLeft();
sum[1]+=Math.abs((head-ref[start][0]));
sum[0]+=Math.abs(ref[7][0]-ref[0][0]);
System.out.println("Left Sum Is "+sum[0]+" Right sum is "+sum[1]);
}
System.out.println("The Total Cylinder Mov Are:"+(sum[0]+sum[1]));

}

}

class CLOOKDSTest{
public static void main(String args[]){
CLOOKDS one=new CLOOKDS();
one.compute();
}
}

OS Disk Scheduling: C-SCAN implementation in Java

/*
For info about  C-SCAN check the link: http://en.wikipedia.org/wiki/Elevator_algorithm
*/
import java.util.*;

class CSCANDS{

int head=0;
int dir=0;
Scanner obj=new Scanner(System.in);
int start=0,end=0,beg=0;
int sum[]=new int[2];
int ref[][]=new int[8][2];

void moveLeft(){
System.out.println("ML Wrkng");
int j=0;

for(int i=(start-1);i>0;i--){

ref[j][1]=Math.abs(ref[i][0]-ref[i-1][0]);
sum[0]+=ref[j][1];
System.out.println(ref[i][0]+" "+ref[j][1]);
j++;
}

}

void moveRight(){
System.out.println("MR Wrkng");
for(int i=start;i<7;i++){
ref[i][1]=Math.abs(ref[i][0]-ref[i+1][0]);
sum[1]+=ref[i][1];
System.out.println(ref[i][0]+" "+ref[i][1]);
}

}
void sort(){
System.out.println("Working Sort");
int temp=0;
for(int i=0;i<8;i++){
for(int j=i+1;j<8;j++){
if(ref[i][0]>ref[j][0]){
temp=ref[i][0];
ref[i][0]=ref[j][0];
ref[j][0]=temp;
}
}
}

for(int i=0;i<8;i++){
System.out.println(ref[i][0]+" ");
}

for(int i=0;i<8;i++){
if(ref[i][0]>head){
start=i;
break;
}

}
if(head>=end){
start=7;
}
System.out.println("The Start Pos Is:"+ref[start][0]);
}

void getInput(){
System.out.println("GI Wrkng");
System.out.println("Enter The Head Pos:");
head=obj.nextInt();
System.out.println("Enter The Beg And End Points");
beg=obj.nextInt();
end=obj.nextInt();
System.out.println("Enter The Direction of Head Mov '0(L) or 1(R)'");
dir=obj.nextInt();
System.out.println("Enter The REF String");
for(int i=0;i<8;i++){
ref[i][0]=obj.nextInt();
}
}

void compute(){
getInput();
sort();
if(dir==0){
moveLeft();
moveRight();
if(start!=0)
{sum[0]+=Math.abs((ref[0][0]-beg)+(head-ref[start-1][0]));}
if (start!=7)
sum[1]+=Math.abs((beg-end));
System.out.println("Left Sum Is "+sum[0]+" Right sum is "+sum[1]);}
else
{
moveRight();
moveLeft();
sum[1]+=Math.abs((ref[7][0]-end)+(head-ref[start][0]));
sum[0]+=Math.abs((end-beg)+ref[0][0]);
System.out.println("Left Sum Is "+sum[0]+" Right sum is "+sum[1]);
}
System.out.println("The Total Cylinder Mov Are:"+(sum[0]+sum[1]));

}

}

class CSCANDSTest{
public static void main(String args[]){
CSCANDS one=new CSCANDS();
one.compute();
}
}

Dijkstra's Algorithm implemenation in C


/*
The following program is an implementation of 

Dijkstra's algorithm in C language.

To know about the algo check the link :

http://en.wikipedia.org/wiki/Dijkstra's_algorithm


The default number of nodes are 7,however the user can 

change the maxnodes field.
*/

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#define infinity 20
#define maxnodes 7
#define member 1
#define nonmember 0

void djalgo(int cost[maxnodes][maxnodes],int s,int t,int *pd,int precede[]){
int distance[maxnodes],perm[maxnodes];
int current,i,j,k,dc;
int smalldist,newdist,curr,prev;
for(i=0;i<maxnodes;i++){
perm[i]=nonmember;
distance[i]=infinity;
}

perm[s]=member;
distance[s]=0;
current=s;
while(current!=t){
smalldist=infinity;
dc=distance[current];
for(i=0;i<maxnodes;i++){
if(perm[i]==nonmember)
{
newdist=dc+cost[current][i];
if(newdist<distance[i])
{distance[i]=newdist;

}
if(distance[i]<smalldist){
smalldist=distance[i];
k=i;
}
}
} precede[k]=current;
current=k;
perm[current]=member;


*pd=distance[t];
}
int path[maxnodes],pos=1;
path[0]=t;
printf("\nThe Path is :");
curr=t;
prev=precede[t];
while(curr!=s)
{ if(cost[prev][curr]==distance[curr]-distance[prev]){
printf("%d<-",path[pos-1]);
path[pos++]=prev;
curr=prev;
prev=precede[curr];   }
else
prev=precede[prev];
}
printf("%d",s);
}


void main(){
int i,j,s,t;
int precede[maxnodes],pd;
/*
        printf("\nEnter weight matrix:");
for(i=0;i<maxnodes;i++)
{ printf("Enter For Node %d ",i);
for(j=0;j<maxnodes;j++)
scanf("%d",&iost[i][j]);

}*/

int cost[maxnodes][maxnodes]={{20,20,20,8,2,20,20},
{7,20,1,20,20,20,20},
{3,20,20,20,4,3,20},
{2,20,20,20,1,20,20},
{20,20,20,20,20,20,2},
{20,20,20,10,4,20,7},
{20,20,20,2,20,20,20}
};
printf("Enter the starting and endng node:");
scanf("%d%d",&s,&t);

for(i=0;i<maxnodes;i++){
printf("\n");
for(j=0;j<maxnodes;j++)
printf("%d ",cost[i][j]);
}

djalgo(cost,s,t,&pd,precede);
printf("\nThe shortest dist is %d",pd);
}