Ss Prgms
Ss Prgms
PROGRAM
#include<stdio.h>
void main(){
int i=0,j=0,b[i],g[20],p[20],w[20],t[20],a[20],n=0,m;
float avgw=0,avgt=0;
scanf("%d",&n);
for(i=0;i<n;i++){
printf("Process ID : ");
scanf("%d",&p[i]);
scanf("%d",&b[i]);
scanf("%d",&a[i]);}
int temp=0;
for(i=0;i<n-1;i++){
for(j=0;j<n-1;j++){
if(a[j]>a[j+1])
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
g[0]=0;
for(i=0;i<=n;i++)
g[i+1]=g[i]+b[i];
for(i=0;i<n;i++)
t[i]=g[i+1]-a[i];
w[i]=t[i]-b[i];
avgw+=w[i];
avgt+=t[i];
avgw=avgw/n;
avgt=avgt/n;
printf("pid\tarrivalT\tBrustT\tCompletionT\tWaitingtime\tTurnaroundTi\n");
for(i=0;i<n;i++)
printf("%d\t%d\t%d\t%d\t\t%d\t\t\t%d\n",p[i],a[i],b[i],g[i+1],w[i],t[i]);
}
SJF (Shortest Job First)
PROGRAM
#include<stdio.h>
void main()
int i=0,j=0,p[i],b[i],g[20],w[20],t[20],a[20],n=0,m;
int k=1,min=0,btime=0;
float avgw=0,avgt=0;
scanf("%d",&n);
for(i=0;i<n;i++)
printf("\nProcess id : ");
scanf("%d",&p[i]);
scanf("%d",&b[i]);
scanf("%d",&a[i]);
int temp=0;
for(i=0;i<n-1;i++)
for(j=0;j<n-1;j++)
if(a[j]>a[j+1])
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
for(i=0;i<n;i++)
btime=btime+b[i];
min=b[k];
for(j=k;j<n;j++)
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
temp=b[j];
b[j]=b[j-1];
b[j-1]=temp;
temp=p[j];
p[j]=p[j-1];
p[j-1]=temp;
}
k++;
g[0]=a[0];
for(i=0;i<n;i++)
g[i+1]=g[i]+b[i];
if(g[i]<a[i])
g[i]=a[i];
for(i=0;i<n;i++)
t[i]=g[i+1]-a[i];
w[i]=t[i]-b[i];
avgw+=w[i];
avgt+=t[i];
avgw=avgw/n;
avgt=avgt/n;
for(i=0;i<n;i++)
}
Priority Scheduling
#include
int main()
scanf("%d", &limit);
printf("\nProcess[%d]\n", i + 1);
scanf("%d", &burst_time[i]);
printf("Process Priority:\t");
scanf("%d", &priority[i]);
process[i] = i + 1; }
position = i;
position = j;
}}
temp = priority[i];
priority[i] = priority[position];
priority[position] = temp;
temp = burst_time[i];
burst_time[i] = burst_time[position];
burst_time[position] = temp;
temp = process[i];
waiting_time[0] = 0;
waiting_time[i] = 0;
sum = 0;
return 0; }
Round Robin (pre-emptive)
scanf("%d", &limit);
x = limit;
printf("Arrival Time:\t");
scanf("%d", &arrival_time[i]);
printf("Burst Time:\t");
scanf("%d", &burst_time[i]);
temp[i] = burst_time[i];
scanf("%d", &time_quantum);
for(total = 0, i = 0; x != 0;)
temp[i] = 0;
counter = 1;
{
x--;
counter = 0;
if(i == limit - 1)
i = 0;
i++;
else
i = 0;
}}
return 0;
}
FIRST COME FIRST SERVE (FCFS)
PROGRAM
int ioq[20],i,n,ihead,tot;
float seek=0,avgs;
scanf("%d",&n);
scanf("%d",&ihead);
ioq[0] = ihead;
ioq[n+1] =0;
for(i=1;i<=n;i++){
scanf("%d",&ioq[i]);
ioq[n+1] =ioq[n];
for(i=0;i<=n;i++){
seek += tot;
// printf("%d\t%d\n",ioq[i],tot);
avgs = seek/(n);
}
SCAN PROGRAM
int ioq[20],i,n,j,ihead,temp,scan,tot;
float seek=0,avgs;
scanf("%d",&n);
scanf("%d",&ihead);
ioq[0] = ihead;
ioq[1] = 0; n += 2;
for(i=2;i ioq[j+1])
temp = ioq[j];
ioq[j] = ioq[j+1];
ioq[j+1] = temp;
}}}
ioq[n]=ioq[n-1];
for(i=0;i<n;i++){
if(ihead == ioq[i]){
scan = i;
break;
}}
tot = 0;
for(i=scan;i>=0;i--){
tot=ioq[i]-ioq[scan+1];//me
if(tot < 0)
//seek += tot;
printf("%d\t%d\n",ioq[i],tot);
}for(i=scan+1;i<n;i++){
if(tot < 0)
//seek += tot;
printf("%d\t%d\n",ioq[i],tot); }
avgs = seek/(n-2);
}
CSCAN
PROGRAM
#include<stdio.h>
void main()
int ioq[20],i,n,j,ihead,itail,temp,scan,tot=0;
float seek=0,avgs;
scanf("%d",&n);
ioq[0] = 0;
scanf("%d",&ihead);
ioq[1] = ihead;
scanf("%d",&itail);
ioq[2] = itail;
n += 3;
for(i=3;i<n;i++){
scanf("%d",&ioq[i]);
for(i=0;i<n-1;i++){
for(j=0;j<n-1;j++)
temp = ioq[j];
ioq[j] = ioq[j+1];
ioq[j+1] = temp; } }}
for(i=0;i<n+1;i++){
if(ihead == ioq[i]){
scan = i;
break;
}}
i = scan;
temp = n;
printf("\n");
while(i != temp){
if(tot < 0)
seek += tot;}
// printf("%d\t%d\n",ioq[i],tot);
i++;
if(i == n){
i = 0;
temp = scan;
seek += itail;
}}
avgs = seek/(n-3);
}
PASS ONE OF TWO PASS ASSEMBLER
PROGRAM
#include<stdio.h>
#include<string.h>
void main()
FILE *f1,*f2,*f3,*f4;
char s[100],lab[30],opcode[30],opa[30],opcode1[30],opa1[30];
int locctr,x=0;
f1=fopen("input.txt","r");
f2=fopen("opcode.txt","r");
f3=fopen("out1.txt","w");
f4=fopen("sym1.txt","w");
while(fscanf(f1,"%s%s%s",lab,opcode,opa)!=EOF)
if(strcmp(lab,"**")==0)
if(strcmp(opcode,"START")==0)
fprintf(f3,"%s %s %s",lab,opcode,opa);
locctr=(atoi(opa));
else
rewind(f2);
x=0;
while(fscanf(f2,"%s%s",opcode1,opa1)!=EOF)
{
if(strcmp(opcode,opcode1)==0)
x=1;
if(x==1)
fprintf(f3,"\n %d %s %s %s",locctr,lab,opcode,opa);
locctr=locctr+3;
else
if(strcmp(opcode,"RESW")==0)
fprintf(f3,"\n %d %s %s %s",locctr,lab,opcode,opa);
fprintf(f4,"\n %d %s",locctr,lab);
locctr=locctr+(3*(atoi(opa)));}
else if(strcmp(opcode,"WORD")==0){
fprintf(f3,"\n %d %s %s %s",locctr,lab,opcode,opa);
fprintf(f4,"\n %d %s",locctr,lab);
locctr=locctr+3;}
else if(strcmp(opcode,"BYTE")==0){
fprintf(f3,"\n %d %s %s %s",locctr,lab,opcode,opa);
fprintf(f4,"\n %d %s",locctr,lab);
locctr=locctr1;}
else if(strcmp(opcode,"RESB")==0){
fprintf(f3,"\n %d %s %s %s",locctr,lab,opcode,opa);
fprintf(f4,"\n %d %s",locctr,lab);
locctr=locctr+1;
}else{
fprintf(f3,"\n %d %s %s %s",locctr,lab,opcode,opa);
fprintf(f4,"\n %d %s",locctr,lab);
locctr=locctr+(atoi(opa));
}}}}
INPUT FILES
input.txt
** START 2000
** LDA FIVE
** STA ALPHA
** LDCH CHARZ
** STCH C1
ALPHA RESW 1
FIVE WORD 5
C1 RESB 1
** END **
opcode.txt
START *
LDA 03
STA 0F
LDCH 53
STCH 57
END
PASS TWO OF TWO PASS ASSEMBLER
PROGRAM
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
add[20],objectcode[20];
int flag,flag1,locctr,location,loc;
FILE *fp1,*fp2,*fp3,*fp4;
fp1=fopen("out3.txt","r"); fp2=fopen("twoout.txt","w");
fp3=fopen("opcode.txt","r"); fp4=fopen("sym1.txt","r");
fscanf(fp1,"%s%s%s",label,opcode,operand);
if(strcmp(opcode,"START")==0)
{ fprintf(fp2,"%s\t%s\t%s\n",label,opcode,operand);
fscanf(fp1,"%d%s%s%s",&locctr,label,opcode,operand);
while(strcmp(opcode,"END")!=0)
{ flag=0;
fscanf(fp3,"%s%s",code,mnemonic);
while(strcmp(code,"END")!=0)
{ flag=1;
break;
fscanf(fp3,"%s%s",code,mnemonic);
}
if(flag==1)
{ flag1=0; rewind(fp4);
while(!feof(fp4))
fscanf(fp4,"%s%d",symbol,&loc);
if(strcmp(symbol,operand)==0)
flag1=1; break;
}}
if(flag1==1)
sprintf(add,"%d",loc);
strcpy(objectcode,strcat(mnemonic,add));
}}
if((operand[0]=='C') || (operand[0]=='X'))
character=operand[2];
sprintf(add,"%d",character);
strcpy(objectcode,add);
}else{
strcpy(objectcode,add);} }
else
strcpy(objectcode,"\0");
fprintf(fp2,"%s\t%s\t%s\t%d\t%s\n",label,opcode,operand,locctr,objectcode);
fscanf(fp1,"%d%s%s%s",&locctr,label,opcode,operand);}
fprintf(fp2,"%s\t%s\t%s\t%d\n",label,opcode,operand,locctr);
fclose(fp1);
fclose(fp2);
fclose(fp3);
fclose(fp4);}
INPUT FILES
opcode.txt
START *
LDA 03
STA 0F
LDCH 53
STCH 57
END +
out3.txt
** START 2000
2009 ** STCH C1
2019 C1 RESB 1
2020 ** END **
sym1.txt
2012 ALPHA
2015 FIVE
2018 CHARZ
2019 C1
SINGLE PASS MACRO PROCESSOR
PROGRAM
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#include<string.h>
int m=0,i,j,flag=0;
char mac[10][10];
void main()
FILE *fpm=fopen("macro.txt","r");
FILE *fpi=fopen("minput.txt","r");
FILE *fpo=fopen("moutput.txt","w");
clrscr();
while(!feof(fpm))
fgets(str,50,fpm);
s1=strtok(str," ");
s2=strtok(NULL," ");
if(strcmp(s1,"MACRO")==0)
strcpy(mac[m],s2);
m++;
s1=s2=NULL;
fgets(str,50,fpi);
while(!feof(fpi))
flag=0;
strcpy(str1,str);
for(i=0;i<m;i++)
if(strcmp(str1,mac[i])==0)
rewind(fpm);
while(!feof(fpm))
fgets(str,50,fpm);
s2=strtok(str," ");
s3=strtok(NULL," ");
if(strcmp(s2,"MACRO")==0&&strcmp(s3,str1)==0)
fgets(str,50,fpm);
strncpy(s4,str,4);
s4[4]='\0';
while(strcmp(s4,"MEND")!=0)
fprintf(fpo,"%s",str);
printf("\n####%s",str);
fgets(str,50,fpm);
strncpy(s4,str,4);
s4[4]='\0';
}}}
flag=1;
break;}}
if(flag==0){
fprintf(fpo,"%s",str);
printf("%s",str);}
fgets(str,50,fpi);}
fclose(fpm);
fclose(fpi);
fclose(fpo);}
INPUT FILES
Macro.txt
MACRO ADD1
MOV A,B
ADD C
MEND
MACRO SUB1
STORE C
MEND
MInput.txt
MOV B,10
MOV C,20
ADD1
MUL C
SUB1
END
ABSOLUTE LOADER
PROGRAM
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main()
FILE *fp;
int i,addr1,l,j,staddr1;
char name[10],line[50],name1[10],addr[10],rec[10],ch,staddr[10];
scanf("%s",name);
fp=fopen("objectcode.txt","r");
fscanf(fp,"%s",line);
for(i=2,j=0;i<8,j<6;i++,j++)
name1[j]=line[i];
name1[j]='\0';
if(strcmp(name,name1)==0)
fscanf(fp,"%s",line);
do
if(line[0]=='T')
for(i=2,j=0;i<8,j<6;i++,j++)
staddr[j]=line[i];
staddr[j]='\0';
staddr1=atoi(staddr);
i=12;
while(line[i]!='$')
if(line[i]!='^')
staddr1++;
i=i+2;
else i++;
else if(line[0]='E')
fscanf(fp,"%s",line);
}while(!feof(fp) );
fclose(fp);
objectcode.txt
H^SAMPLE^001000^0035
T^001000^0C^001003^071009$
T^002000^03^111111$
H^SAMPLE^001000^0035
T^001000^0C^001003^071009$
T^002000^03^111111$
E^001000
RELOCATING LOADER
PROGRAM
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
char bitmask[12];
char bit[12]={0};
void main()
{char add[6],length[10],input[10],binary[12],relocbit,ch,pn[5];
int start,inp,len,i,address,opcode,addr,actualadd,tlen;
FILE *fp1,*fp2;
clrscr();
scanf("%x",&start);
fp1=fopen("RLIN.txt","r");
fp2=fopen("RLOUT.txt","w");
fscanf(fp1,"%s",input);
fprintf(fp2," ----------------------------\n");
fprintf(fp2," ADDRESS\tCONTENT\n");
fprintf(fp2," ----------------------------\n");
while(strcmp(input,"E")!=0)
if(strcmp(input,"H")==0)
fscanf(fp1,"%s",pn);
fscanf(fp1,"%x",add);
fscanf(fp1,"%x",length);
fscanf(fp1,"%s",input);
if(strcmp(input,"T")==0)
fscanf(fp1,"%x",&address);
fscanf(fp1,"%x",&tlen);
fscanf(fp1,"%s",bitmask);
address+=start;
convert(bitmask);
len=strlen(bit);
if(len>=11)
len=10;
for(i=0;i<len;i++)
fscanf(fp1,"%x",&opcode);
fscanf(fp1,"%x",&addr);
relocbit=bit[i];
if(relocbit=='0')
actualadd=addr;
else
actualadd=addr+start;
fprintf(fp2,"\n %x\t\t%x%x\n",address,opcode,actualadd);
address+=3;
fscanf(fp1,"%s",input);
}
fprintf(fp2," ----------------------------\n");
fcloseall();
fp2=fopen("RLOUT.txt","r");
ch=fgetc(fp2);
while(ch!=EOF)
printf("%c",ch);
ch=fgetc(fp2);
fclose(fp2);
getch();
int i,l;
strcpy(bit,"");
l=strlen(h);
for(i=0;i<l;i++)
switch(h[i])
case '0':
strcat(bit,"0");
break;
case '1':
strcat(bit,"1");
break;
case '2':
strcat(bit,"10");
break;
case '3':
strcat(bit,"11");
break;
case '4':
strcat(bit,"100");
break;
case '5':
strcat(bit,"101");
break;
case '6':
strcat(bit,"110");
break;
case '7':
strcat(bit,"111");
break;
case '8':
strcat(bit,"1000");
break;
case '9':
strcat(bit,"1001");
break;
case 'A':
strcat(bit,"1010");
break;
case 'B':
strcat(bit,"1011");
break;
case 'C':
strcat(bit,"1100");
break;
case 'D':
strcat(bit,"1101");
break;
case 'E':
strcat(bit,"1110");
break;
case 'F':
strcat(bit,"1111");
break;
INPUT file:
RLIN.TXT
T 000000 1E FFC 14 0033 48 1039 10 0036 28 0030 30 0015 48 1061 3C 0003 20 002A 1C 0039
30 002D
E 000000
BANKER’S ALGORITHM FOR DEADLOCK AVOIDANCE
PROGRAM
#include<stdio.h>
struct pro{
int all[10],max[10],need[10];
int flag;
};
int i,j,pno,r,nr,id,k=0,safe=0,exec,count=0,wait=0,max_err=0;
int aval[10],seq[10];
void safeState()
while(count!=pno){
safe = 0;
for(i=0;i<pno;i++){
if(p[i].flag){
exec = r;
for(j=0;j<r;j++)
if(p[i].need[j]>aval[j]){
exec =0;
if(exec == r){
for(j=0;j<r;j++){
aval[j]+=p[i].all[j];
p[i].flag = 0;
seq[k++] = i;
safe = 1;
count++;
if(!safe)
break;
if(safe){
for(i=0;i<k;i++)
printf("P[%d] ",seq[i]);
printf("\n\n");
void reqRes(){
printf("\nProcess id ? ");
scanf("%d",&id);
for(i=0;i<r;i++){
scanf("%d",&nr);
{
if( nr <= aval[i]){
aval[i] -= nr;
p[id].all[i] += nr;
p[id].need[i] -= nr;
else
wait = 1;
else
max_err = 1;
safeState();
else if(max_err){
else{
void main()
scanf("%d",&pno);
scanf("%d",&r);
for(i=0;i<r;i++){
scanf("%d",&aval[i]);
}
printf("\n\n---Resourse Details---");
for(i=0;i<pno;i++){
printf("\nAllocation Matrix\n");
for(j=0;j<r;j++){
scanf("%d",&p[i].all[j]);
for(j=0;j<r;j++){
scanf("%d",&p[i].max[j]);
p[i].flag = 1;
// Calcualting need
for(i=0;i<pno;i++){
for(j=0;j<r;j++){
printf("\nProcess Details\n");
printf("Pid\t\tAllocattion\t\tMax\t\tNeed\n");
for(i=0;i<pno;i++)
printf("%d\t\t",i);
for(j=0;j<r;j++){
printf("%d ",p[i].all[j]);
}
printf("\t\t");
for(j=0;j<r;j++){
printf("%d ",p[i].max[j]);
printf("\t\t");
for(j=0;j<r;j++){
printf("%d ",p[i].need[j]);
printf("\n");
safeState();
int ch=1;
do{
scanf("%d",&ch);
if(ch)
reqRes();
}while(ch!=0);
//end:printf("\n");