Вы находитесь на странице: 1из 40

Ex.No : 1a //PROGRAM USING PROCESS SYSTEM CALLS #include<stdio.

h> void main(int argc,char *argv[]) { int pid; pid=fork(); if(pid<0) { fprintf(stderr,"Fork Failed"); exit(-1); } else if(pid==0) { execlp("/bin/ls","ls",NULL); } else { wait(NULL); printf("child complete"); exit(0); } }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc call.c [2k9cs003@oxfordoec ~]$ ./a.out aaaa.c dir.c fork.c opwrite.c sema.c akshay.txt fac.c free.c priority.c semaphore aksmi fact.c getpid.c producer.c sjf.c alospace.c fcfs.c grep.c rename.c stat.c a.out fib.c HOSTNAME=localhost.localdomain reopen.c bankers.c fifo.c ipc.c rewrite.c call.c file.c memoryscheme.c rorobin.c cat.c firstfit.c opendir.c round.c confifile.c fopen.c oprewrite.c samp.c child complete

wc.c

Ex.No :1b //FORK,GETPID,GETPPID,EXIT #include<stdio.h> #include<sys/types.h> int main() { pid_t pid; printf("\n\n\t Before Fork\n"); pid=fork(); if(pid<0) { printf("\n Parent_ID\t:%d,\n PPID\t\t:%d\nchild_ID\t:%d\n",getpid(),getppid(), pid); } else if(pid==0) { printf("\nchild_pid\t:%d\nppid\t\t:%d\n",getpid(),getppid()); } else { printf("\n\t Fork Error\n"); exit(1); } printf("\n Both Process Continuous From Here\n"); exit(0); } OUTPUT : [2k9cs003@oxfordoec ~]$ cc getpid.c [2k9cs003@oxfordoec ~]$ ./a.out

Before Fork child_pid ppid :4606 :4605

Fork Error Both Process Continuous From Here

Ex.No :1c //STAT SYSTEM CALLS #include<stdio.h> #include<sys/stat.h> main() { int fd; char pathl[10]; struct stat *nfile; nfile=(struct stat*)malloc(sizeof(struct stat)); printf("\n Enter The Filename:\t"); scanf("%s",pathl); stat(pathl,nfile); printf("Program inodeno:%d\n",nfile->st_ino); printf("Program size:%d\n",nfile->st_blksize); printf("Access Time:%s\n",ctime(&nfile->st_atime)); printf("Modified Time:%s\n",ctime(&nfile->st_mtime)); printf("Protection:%d\n",nfile->st_mode); printf("Userid:%d\n",nfile->st_uid); printf("Groupid:%d\n",nfile->st_gid); printf("Device Driver No:%d\n",nfile->st_dev); printf("No Of Links:%d\n",nfile->st_nlink); return 0; }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc stat.c [2k9cs003@oxfordoec ~]$ ./a.out Enter The Filename: aksmi Program inodeno:15274483 Program size:4096 Access Time:Fri Jan 28 09:58:27 2011 Modified Time:Tue Jan 4 16:32:51 2011 Protection:16877 Userid:1122 Groupid:100 Device Driver No:64768 No Of Links:2

Ex.No : 1d //OPENDIR,READDIR SYSTEM CALLS #include<stdio.h> #include<dirent.h> main(int argc,char *argv[]) { DIR *dir; struct dirent *direntry; dir=opendir(argv[1]); while((direntry=readdir(dir))!=NULL) printf("%d%s\n",direntry->d_ino,direntry->d_name); closedir(dir); }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc reopen.c [2k9cs003@oxfordoec ~]$ ./a.out aksmi 15270184.. 15274490laksmi 15274502guna 15274286sanju 15274483.

Ex.No :2a //OPEN,READ,WRITE SYSTEM CALLS #include<stdio.h> main(int argc,char *argv[]) { int f,d,n; char buff[2048]; if(argc!=3) { printf("Argument Not Matched"); } f=creat(argv[2],0777); d=open(argv[1],0); while((n=read(d,buff,sizeof(buff)))>0) write(f,buff,n); }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc opwrite.c [2k9cs003@oxfordoec ~]$ ./a.out reopen.c akshay.txt [2k9cs003@oxfordoec ~]$ cat akshay.txt #include<stdio.h> #include<dirent.h> main(int argc,char *argv[]) { DIR *dir; struct dirent *direntry; dir=opendir(argv[1]); while((direntry=readdir(dir))!=NULL) printf("%d%s\n",direntry->d_ino,direntry->d_name); closedir(dir); }

Ex.No : 2b //FOPEN AND FCLOSE SYSTEM CALLS #include<stdio.h> main (int argc,char *argv[]) { int ch,nc=0; FILE *fp; fp=fopen(argv[1],r); while((ch=getc(fp))!=EOF) if(ch=argv[2][0]) nc++; printf(\n Number Of Occurrence %d,nc); exit(0); fclose(fp); }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc ffopen.c [2k9cs003@oxfordoec ~]$ ./a.out fork.c a Number Of Occurrence 172 [2k9cs003@oxfordoec ~]$ cat fork.c #include<stdio.h> #include<unistd.h> #include<sys/types.h> main() { int pid; pid=fork(); printf(Hai\n); if(pid==0) execl(/home/2k9cs003/samp.c,samp.c,NULL); }

Ex.No : 3a //GREP IN UNIX COMMANDS #include<string.h> #include<stdio.h> main(int argc,char *argv[]) { FILE *fp; int n,j,t,q,m=0,i=80,rd=0; char ch[50],msg[50],temp[50]; fp=fopen(argv[2],"r"); m=strlen(argv[1]); if(argc==3) { while(!feof(fp)) { fgets(msg,i,fp); q=strlen(msg); for(n=0;n<q-m;n++) { for(j=0,t=n;j<m;j++) { temp[j]=msg[t++]; } temp[j]='\0'; if(strcmp(temp,argv[1])==0) { if(feof(fp)) goto e; rd=1; } } if(rd==1) { printf(msg); rd=0; } } e: fclose(fp); } }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc grep.c [2k9cs003@oxfordoec ~]$ ./a.out msg grep.c char ch[50],msg[50],temp[50]; fgets(msg,i,fp); q=strlen(msg); temp[j]=msg[t++]; printf(msg);

Ex.No :3b //WC COMMAND IMPLEMENTATION #include<stdio.h> main(int argc,char *argv[]) { int ch,nc=0,chrc=0,lc=0,wc=0; FILE *fp; fp=fopen(argv[1],"r"); while((ch=getc(fp))!=EOF) { chrc++; if(ch==' '||ch=='\n'||ch=='\t') { wc++; chrc--; } if(ch=='\n') lc++; } printf("\nlines:%d words:%d characters:%d",lc,wc,chrc); }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc wc.c [2k9cs003@oxfordoec ~]$ ./a.out grep.c lines:38 words:129 characters:389

Ex.No : 3c //CAT IN UNIX COMMANDS #include<stdio.h> #include<string.h> main(int argc,char *argv[]) { int f,d,n=0; char b[1000]; if(argc>3) { printf("arguments not matched"); exit(0); } else { if(argc>2) { f=creat(argv[2],0777); while(1) { scanf("%c",&b[n++]); if(b[n-1]=='E') break; } write(f,b,n); } if(argc<=2) { f=open(argv[1],0); n=read(f,b,sizeof(b)); for(d=0;d<n;d++) printf("%c",b[d]); } } }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc cat.c [2k9cs003@oxfordoec ~]$ ./a.out > aaaa.c [2k9cs003@oxfordoec ~]$ ls aaaa.c dir.c fork.c oprewrite.c reopen.c akshay.txt fac.c free.c opwrite.c sema.c [2k9cs003@oxfordoec ~]$ ./a.out reopen.c #include<stdio.h> #include<dirent.h> main(int argc,char *argv[]) { DIR *dir; struct dirent *direntry; dir=opendir(argv[1]); while((direntry=readdir(dir))!=NULL) printf("%d%s\n",direntry->d_ino,direntry->d_name); closedir(dir); }

Ex.No : 4a //FCFS SCHEDULING ALGORITHM #include<stdio.h> main() { int i,n; int p[10],bt[10]; int wt[10],tat[10]; float ttat=0,twt=0,avgtat,avgwt; printf("Enter The No.Of Process:\n"); scanf("%d",&n); for(i=1;i<=n;i++) { p[i]=i; printf("Enter the burst time of p[%d]:",i); scanf("%d",&bt[i]); } wt[1]=0; tat[1]=bt[1]; for(i=2;i<=n;i++) { wt[i]=wt[i-1]+bt[i-1]; tat[i]=tat[i-1]+bt[i]; } for(i=1;i<=n;i++) { twt+=wt[i]; ttat+=tat[i]; } avgwt=twt/n; avgtat=ttat/n; printf("total turn around time%f\n",ttat); printf("total turn waiting time%f\n",twt); printf("avg turn around time%f\n",avgtat); printf("avg turn waiting time%f\n",avgwt); printf("\n-----------"); printf("\n"); for(i=1;i<=n;i++) { printf("p%d\t",p[i]); } printf("\n-----------"); printf("\n\n\nid\tbt\twt\ttat\n"); for(i=1;i<=n;i++) { printf("%d\t%d\t%d\t%d\n",p[i],bt[i],wt[i],tat[i]);

} }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc fcfs.c [2k9cs003@oxfordoec ~]$ ./a.out Enter The No.Of Process: 3 Enter the burst time of p[1]:5 Enter the burst time of p[2]:3 Enter the burst time of p[3]:4 total turn around time25.000000 total turn waiting time13.000000 avg turn around time8.333333 avg turn waiting time4.333333 ----------p1 p2 ----------id bt 1 5 2 3 3 4

p3 wt 0 5 8 tat 5 8 12

Ex.No : 5b //SJF SCHEDULING ALGORITHM #include<stdio.h> main() { int i,j,n,temp; int p[10],bt[10]; int wt[10],tat[10]; float ttat=0,twt=0,avgtat,avgwt; //wt[1]=tat[1]=ttat=ttwt=0; printf("Enter The No.Of Process:\n"); scanf("%d",&n); for(i=1;i<=n;i++) { p[i]=i; printf("Enter the burst time of p[%d]:",i); scanf("%d",&bt[i]); } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(bt[i]<bt[j]) { temp=p[i]; p[i]=p[j]; p[j]=temp; temp=bt[i]; bt[i]=bt[j]; bt[j]=temp; } } } wt[1]=0; tat[1]=bt[1]; for(i=2;i<=n;i++) { wt[i]=wt[i-1]+bt[i-1]; tat[i]=tat[i-1]+bt[i]; } for(i=1;i<=n;i++) { twt+=wt[i]; ttat+=tat[i]; } avgwt=twt/n;

avgtat=ttat/n; printf("total turn around time%f\n",ttat); printf("total turn waiting time%f\n",twt); printf("avg turn around time%f\n",avgtat); printf("avg turn waiting time%f\n",avgwt); printf("\n-----------"); printf("\n"); for(i=1;i<=n;i++) { printf("p%d\t",p[i]); } printf("\n-----------"); printf("\n\n\nid\tbt\twt\ttat\n"); for(i=1;i<=n;i++) { printf("%d\t%d\t%d\t%d\n",p[i],bt[i],wt[i],tat[i]); } }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc sjf.c [2k9cs003@oxfordoec ~]$ ./a.out Enter The No.Of Process: 4 Enter the burst time of p[1]:5 Enter the burst time of p[2]:9 Enter the burst time of p[3]:1 Enter the burst time of p[4]:7 total turn around time42.000000 total turn waiting time20.000000 avg turn around time10.500000 avg turn waiting time5.000000 ----------p3 p1 ----------id bt 3 1 1 5 4 7 2 9

p4 wt 0 1 6 13

p2 tat 1 6 13 22

Ex.No :5a //PRIORITY SCHEDULING ALGORITHM #include<stdio.h> main() { int i,n,j,temp,temp1,temp2; int p[10],t[10],pri[10]; int wt[10],tat[10],ttat,twt; wt[1]=tat[1]=ttat=twt=0; printf("Enter the no of processes : "); scanf("%d",&n); for (i=1;i<=n;i++) { printf("Enter The process no : "); scanf("%d",&p[i]); printf("Enter the burst time of process%d: ",p[i] ); scanf("%d",&t[i]); printf("Enter the priority of process%d : ",p[i] ); scanf("%d",&pri[i]); } printf("\n\nProcessname Bursttime Waittime TAtime Priority\n"); for(i=1;i<=n;i++) { for(j=i+1;j<=n;j++) { if(pri[i]>pri[j]) { temp=pri[i]; pri[i]=pri[j]; pri[j]=temp; temp1=t[i]; t[i]=t[j]; t[j]=temp1; temp2=p[i]; p[i]=p[j]; p[j]=temp2; } } } for(i=1;i<=n;i++) { printf("p(%d)\t\t\t",p[i]); printf("%d\t\t",t[i]); printf("%d\t\t",wt[i]); tat[i]=t[i]+wt[i]; twt+=wt[i]; ttat+=tat[i]; wt[i+1]=wt[i]+t[i]; printf("%d\t\t",tat[i]); printf("%d\t\t\n",pri[i]);

} printf("\n\n"); printf("Avg Waiting Time : %d\n",(twt/n)); printf("Avg Turnaround Time : %d\n",(ttat/n)); void space(int s) { for(j=1;j<=(s+2)/2;j++) printf(" "); } void gant() { for(i=1;i<=tat[n];i++) printf("--"); printf("\n"); printf("|"); for(i=1;i<=n;i++) { space(t[i]); printf("P%d",p[i]); space(t[i]); printf("|"); } printf("\n"); for(i=1;i<=tat[n];i++) printf("--"); printf("\n"); for(i=1;i<=n;i++) { printf(" %d ",wt[i]); space(t[i]*2+2); } printf("%d",tat[n]); printf("\n"); } gant(); }

OUTPUT :

[2k9cs003@oxfordoec ~]$cc .priority.c [2k9cs003@oxfordoec ~]$./a.out Enter the no of processes : 3 Enter The process no : 1 Enter the burst time of process1: 2 Enter the priority of process1 : 5 Enter The process no : 2 Enter the burst time of process2: 4 Enter the priority of process2 : 3 Enter The process no : 3 Enter the burst time of process3: 1 Enter the priority of process3 : 1

Processname Bursttime Waittime TAtime Priority p(3) 1 0 1 1 p(2) p(1) 4 2 1 5 5 7 3 5

Avg Waiting Time : 2 Avg Turnaround Time :4 --------------------| P3 | P2 | P1 | --------------------0 1 5 7

Ex.No :6b //ROUND ROBIN SCHEDULING ALGORITHM #include<stdio.h> main() { int i,n; int p[10],count=0,ts,ptm=0,t[10],plst[10],flag=0,psbtm[10]; int wt[10],tat[10],pp=-1,ttat=0,twt=0,tot=0; wt[1]=tat[1]=t[1]=psbtm[1]=p[1]=0; printf(" Enter the no.of process in Ready Queue : "); scanf("%d",&n); printf("\n\n Enter the Time Slice \t: " ); scanf("%d",&ts); printf("\n\n Enter the Burst Time for the Process\n\n"); for (i=1;i<=n;i++) { printf(" Enter the Process ID : "); scanf("%d",&p[i]); printf(" Enter the TimeSlice for %d Process : ",p[i] ); scanf("%d",&t[i]); wt[i]=0; plst[i]=0; psbtm[i]=t[i]; } printf("\n Process Synchronization : \n\n"); for(i=1;i<=n;i++) tot+=t[i]; for(i=1;i<=(tot/ts);i++) printf("------"); printf("\n|"); do { flag=0; for(i=1;i<=n;i++) if((count=t[i])>0) { flag=-1; count= (count>=ts) ? ts:count; printf(" P%d | ",p[i]); ptm+=count; t[i]-=count; if(pp!=i)

{ pp=i; wt[i]+=ptm-plst[i]-count; plst[i]=ptm; } } } while(flag); printf("\n"); for(i=1;i<=(tot/ts);i++) printf("------"); printf("\n\n ProcessID\t WaitingTime \t TurnAround Time\n\n"); for(i=1;i<=n;i++) { printf(" \t%d %d ",p[i],wt[i]); twt+=wt[i]; tat[i]= psbtm[i]+wt[i]; ttat+=tat[i]; printf(" %d \n",tat[i]); } printf("Avg Waiting Time : %d\n",(twt/n)); printf("Avg Turnaround Time : %d\n",(ttat/n)); }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc robin.c [2k9cs003@oxfordoec ~]$./ a.out Enter the no.of process in Ready Queue : 3 Enter the Time Slice : 4 Enter the Burst Time for the Process Enter the Process ID : 1 Enter the TimeSlice for 1 Process : 24 Enter the Process ID : 2 Enter the TimeSlice for 2 Process : 3 Enter the Process ID : 3 Enter the TimeSlice for 3 Process : 3 Process Synchronization : -----------------------------------------------| P1 | P2 | P3 | P1 | P1 | P1 | P1 | P1 | -----------------------------------------------ProcessID WaitingTime TurnAround Time 30 7 10

1 6 2 4 3 7 Avg Waiting Time : 5 Avg Turnaround Time : 15

Ex.No :6 //INTER PROCESS COMMUNICATION #include<stdio.h> int main() { int fd[2],child; char a[10]; printf("Enter the string to enter into the pipe:\n"); scanf("%s",a); pipe(fd); child=fork(); if(!child) { close(fd[0]); write(fd[1],a,5); wait(0); } else { close(fd[1]); read(fd[0],a,5); printf("\nThe string retrieved from the pipe is %s\n",a); } return 0; }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc icp.c [2k9cs003@oxfordoec ~]$ ./a.out Enter the string to enter into the pipe: hello The string retrieved from the pipe is hello

Ex.No:7 //PRODUCER CONSUMER PROBLEM USING SEMAPHORE

#include <stdio.h> #include <semaphore.h> #include <pthread.h> #define NBUFF 10 int nitems; struct { int buff[NBUFF]; sem_t mutex, nempty, nstored; } shared; void *produce (void *); void *consume (void *); int main(int argc, char **argv) { pthread_t tid_produce, tid_consume; if(argc !=2) { printf("Useage: filename <nitems> "); return 0; } printf ("\n\n Producer - Consumer Problem using Semaphore\n"); printf (" -------------------------------------------\n\n"); nitems=atoi(argv[1]); sem_init(&shared.mutex,0,1); sem_init(&shared.nempty,0,NBUFF); sem_init(&shared.nstored,0,0); pthread_setconcurrency(2); pthread_create(&tid_produce,NULL,produce,NULL); pthread_create(&tid_consume,NULL,consume,NULL); pthread_join(tid_produce,NULL); pthread_join(tid_consume,NULL); sem_destroy(&shared.mutex); sem_destroy(&shared.nempty); sem_destroy(&shared.nstored); }

void *produce (void *arg) { int i; for(i=0;i<nitems;i++) { sem_wait(&shared.nempty); sem_wait(&shared.mutex); shared.buff[i % NBUFF]=i; printf ("\tProducer....."); printf ("buff[%d] = %d\n\n",i,shared.buff[i % NBUFF]); sem_post(&shared.mutex); sem_post(&shared.nstored); sleep(3); } return NULL; } void *consume (void *arg) { int i; for(i=0;i<nitems;i++) { sem_wait(&shared.nstored); sem_wait(&shared.mutex); printf("\tConsumer....."); printf("buff[%d] = %d\n\n\n",i,shared.buff[i%NBUFF]); sem_post(&shared.mutex); sem_post(&shared.nempty); sleep(3); } return NULL; }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc -pthread producer.c [2k9cs003@oxfordoec ~]$ ./a.out 4 Producer - Consumer Problem using Semaphore ------------------------------------------Producer.....buff[0] = 0 Consumer.....buff[0] = 0

Producer.....buff[1] = 1 Consumer.....buff[1] = 1

Producer.....buff[2] = 2 Consumer.....buff[2] = 2

Producer.....buff[3] = 3 Consumer.....buff[3] = 3

Ex.No :8 IMPLEMENTATION OF MEMORY MANAGEMENT SCHEME I (USING FIRST FIT ALLOCATION)

#include<stdio.h> #include<stdlib.h> #include "freespace.c" main() { void insertf(); void displayf(); int deletf(int no,int s); int ch,prono,size,i,m; headf=NULL; head=NULL; printf("HOW MANY HOLES IN MEMORY..."); scanf("%d",&m); for(i=0;i<m;i++) insertf(); printf("\n\n"); do { printf("FREE SPACE LIST \n"); displayf(); printf("\n\nENTER THE PROCESS NO THAT U WANT TO LOAD INTO MEMORY :"); scanf("%d",&prono); printf("ENTER THE PROCESS SIZE :"); scanf("%d",&size); deletf(prono,size); printf("\n\nDO YOU WANT TO LOAD ANOTHER PROCESS ?(1/0) : "); scanf("%d",&ch); }while(ch==1); } //vi freespace.c #include<stdio.h> #include<stdlib.h> #include "allospace.c" struct list { int saddr; int eaddr; int sizeofnode; struct list *next;

}*headf; void insert(int pno,int s,int e); void display(); void delet(); void insertf() { struct list *newnode,*t; int start,end,son; printf("ENTER THE STARTING ADDRESS : "); scanf("%d",&start); printf("ENTER THE ENDING ADDRESS : "); scanf("%d",&end); son=end-start; newnode=((struct list *) malloc(sizeof(struct list))); newnode->saddr=start; newnode->eaddr=end; newnode->sizeofnode=son; newnode->next=NULL; if(headf == NULL) headf=newnode; else { t=headf; while(t->next!=NULL) t=t->next; t->next=newnode; } } void displayf() { struct list *t; if (headf==0) { printf("THIS LIST IS EMPTY, U CAN'T LOAD ANY PROCESS\n"); exit(0); } else { printf("FREE MEMORY SPACES ARE : \n"); printf("SADDR EADDR\t SIZE \n"); for(t=headf;t!=0;t=t->next) { printf("%d-----",t->saddr); printf("%d\t ",t->eaddr); printf("%d\n",t->sizeofnode); }

} } int deletf(int prono,int chsize) { struct list *current,*previous; int element; element=chsize; current=headf; if (headf==NULL) printf("LIST IS EMPTY"); else if(headf->sizeofnode>=element) { current=headf; headf=headf->next; goto e; } else { previous=current; while(current!=NULL) { if(current->sizeofnode>=element) { previous->next=current->next; goto e; } previous=current; current=current->next; } } e: printf("THE APPROPRIATE HOLE IS DELETED FROM THE FREESPACE LIST\n"); insert(prono,current->saddr,current->eaddr); display(); } //vi allospace.c #include<stdio.h> #include<stdlib.h> struct slist { int pid; int saddr; int eaddr; struct slist *next; }*head;

void insert(int proid,int start,int end) { struct slist *newnode,*t; newnode=((struct slist *) malloc(sizeof(struct slist))); newnode->pid=proid; newnode->saddr=start; newnode->eaddr=end; newnode->next=NULL; if(head == NULL) head=newnode; else { t=head; while(t->next!=NULL) t=t->next; t->next=newnode; } } void display() { struct slist *t; if (head==0) { printf("EMPTY LIST"); exit(0); } else { printf("ALLOCATED LIST : \n"); printf("PID\tSADDR\tEADDR\n" ); for(t=head;t!=0;t=t->next) { printf("%d\t",t->pid); printf("%d---",t->saddr); printf("%d\n",t->eaddr); } } }

OUTPUT : [2k9cs003@oxfordoec ~]$ cat mmsop.c [2k9cs003@oxfordoec ~]$ cc mainprg.c [2k9cs003@oxfordoec ~]$ a.out HOW MANY HOLES IN MEMORY...3 ENTER THE STARTING ADDRESS : 100 ENTER THE ENDING ADDRESS : 200 ENTER THE STARTING ADDRESS : 350 ENTER THE ENDING ADDRESS : 500 ENTER THE STARTING ADDRESS : 525 ENTER THE ENDING ADDRESS : 725

FREE SPACE LIST FREE MEMORY SPACES ARE : SADDR EADDR SIZE 100-----200 100 350-----500 150 525-----725 200

ENTER THE PROCESS NO THAT U WANT TO LOAD INTO MEMORY :1 ENTER THE PROCESS SIZE :150 THE APPROPRIATE HOLE IS DELETED FROM THE FREESPACE LIST ALLOCATED LIST : PID SADDR EADDR 1 350---500

DO YOU WANT TO LOAD ANOTHER PROCESS ?(1/0) : 1 FREE SPACE LIST FREE MEMORY SPACES ARE : SADDR EADDR SIZE 100-----200 100 525-----725 200

ENTER THE PROCESS NO THAT U WANT TO LOAD INTO MEMORY :2 ENTER THE PROCESS SIZE :200 THE APPROPRIATE HOLE IS DELETED FROM THE FREESPACE LIST ALLOCATED LIST : PID SADDR EADDR 1 350---500 2 525---725

DO YOU WANT TO LOAD ANOTHER PROCESS ?(1/0) : 1 FREE SPACE LIST FREE MEMORY SPACES ARE : SADDR EADDR SIZE 100-----200 100

ENTER THE PROCESS NO THAT U WANT TO LOAD INTO MEMORY :3 ENTER THE PROCESS SIZE :50 THE APPROPRIATE HOLE IS DELETED FROM THE FREESPACE LIST ALLOCATED LIST : PID SADDR EADDR 1 350---500 2 525---725 3 100---200

DO YOU WANT TO LOAD ANOTHER PROCESS ?(1/0) : 1 FREE SPACE LIST THIS LIST IS EMPTY, U CAN'T LOAD ANY MORE PROCESS

Ex.No :9 IMPLEMENTATION OF MEMORY MANAGEMENT SCHEME #include<stdio.h> main() { int n,ch,ff[10],ps[10],ps1[10],ps2[10],bs[10],bs1[10],bs2[10],bf[10],wf[10]; int temp,i,j,m; printf("Enter the no of blocks:"); scanf("%d",&n); for(i=0;i<n;i++) { printf("Enter the size of blocks[%d]:",i); scanf("%d",&bs[i]); bs1[i]=bs2[i]=bs[i]; } printf("Enter the no of process:"); scanf("%d",&m); for(i=0;i<n;i++) { printf("Enter the size of process[%d]:",i); scanf("%d",&ps[i]); ps1[i]=ps2[i]=ps[i]; } for(i=0;i<m;i++) for(j=0;j<n;j++) if(ps[i]<=bs[i]) { printf("\n Process size %d is allocated to block size :%d",ps[i],bs[j]); bs[j]=0; ps[i]=0; break; } for(i=0;i<m;i++) if(ps[i]!=0) printf("\n Insufficent Memory for Process %d",i); }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc fit3.c [2k9cs003@oxfordoec ~]$ ./a.out Enter the no of blocks:3 Enter the size of blocks[0]:100 Enter the size of blocks[1]:20 Enter the size of blocks[2]:200 Enter the no of process:3 Enter the size of process[0]:100 Enter the size of process[1]:200 Enter the size of process[2]:500 Process size 100 is allocated to block size :100 Insufficent Memory for Process 1 Insufficent Memory for Process 2

Ex.No :10 //CONTIGUOUS FILE ALLOCATION #include<stdio.h> main() { int i,sr,sd,sz,a=0; char file[15]; printf("enter the filename"); scanf("%s",file); printf("enter the file size"); scanf("%d",&sz); sd=sz/100; sr=sz%100; printf("file name%s \n file size %d \n",file,sz); for(i=0;i<sd;i++) { printf("%d memory block----->100 \n",i+1); a=i; } a=a+2; if(sr>0) { printf("memory block %d ----->%d",a,sr); } }

OUTPUT: [2k9cs003@oxfordoec ~]$ cc cont.c [2k9cs003@oxfordoec ~]$ ./a.out enter the filename ffit.c enter the file size398 file nameffit.c file size 398 1 memory block----->100 2 memory block----->100 3 memory block----->100 memory block 4 ----->98

Ex.No : 11 //BANKERS ALGORITHM #include<stdio.h> struct process { int allocation[3]; int max[3]; int need[3]; int finish; } p[10]; int main() { int n,i,j,avail[3],work[3],flag,count=0,sequence[10],a[10],l=0,k=0; printf("enter the no of process:"); scanf("%d",&n); for(i=0;i<n;i++) { printf("enter the %dth process allocated resource:",i); scanf("%d%d%d",&p[i].allocation[0],&p[i].allocation[1],&p[i].allocation[2]); printf("enter the %dth process maximum resource:",i); scanf("%d%d%d",&p[i].max[0],&p[i].max[1],&p[i].max[2]); p[i].finish=0; p[i].need[0]=p[i].max[0]-p[i].allocation[0]; p[i].need[1]=p[i].max[1]-p[i].allocation[1]; p[i].need[2]=p[i].max[2]-p[i].allocation[2]; } printf("enter the available vector:"); scanf("%d%d%d",&avail[0],&avail[1],&avail[2]); for(i=0;i<3;i++) work[i]=avail[i]; while(count!=n) { count=0; for(i=0;i<n;i++) { flag=1; if(p[i].finish==0) if(p[i].need[0]<=work[0]) if(p[i].need[1]<=work[1]) if(p[i].need[2]<=work[2]) { for(j=0;j<3;j++) work[j]+=p[i].allocation[j]; p[i].finish=1; sequence[k++]=i;

flag=0; } if(flag==1) count++; } } count=0; for(i=0;i<n;i++) { if(p[i].finish==1) count++; else { a[l++]=i; } } if(count==n) { printf("\n the safe sequence is:\t"); for(i=0;i<k;i++) printf("p%d \t",sequence[i]); } else { printf("system is not in a safe state due to:"); for(i=0;i<1;i++) printf("p[%d] \t",a[i]); return 0; }} OUTPUT : [2k9cs003@oxfordoec ~]$ cc bankers.c [2k9cs003@oxfordoec ~]$ ./a.out enter the no of process:3 enter the 0th process allocated resource:0 1 0 enter the 0th process maximum resource:0 2 0 enter the 1th process allocated resource:1 1 3 enter the 1th process maximum resource:1 1 4 enter the 2th process allocated resource:1 1 1 enter the 2th process maximum resource:2 1 2 enter the available vector:5 5 5 The safe sequence is: p0 p1 p2

Ex.No :12 //FIFO PAGE REPLACEMENT #include<stdio.h> int m,n,i,j,k,flag,count=-1,refer[100],page_frame[100],fault=0,min,no_frames; int main() { printf("\n Enter the number of reference"); scanf("%d",&n); printf("\n Enter the number of frames"); scanf("%d",&no_frames); printf("\n Enter the reference string:"); for(i=0;i<no_frames;i++) { page_frame[i]=-1; scanf("%d",&refer[i]); } printf("\t \t FIFO ALGORITHM \n"); for(i=0;i<n;i++) { flag=0; for(j=0;j<no_frames;j++) { if(refer[i]==page_frame[j]) { flag=1; printf("No page fault\n"); } } if(flag!=1) { fault++; count++; if(count==no_frames) count=0; page_frame[count]=refer[i]; for(j=0;j<no_frames;j++) printf("%d",page_frame[j]); printf("\n"); } } printf("\n \n Number of Page Faults %d\n",fault); }

OUTPUT : [2k9cs003@oxfordoec ~]$ cc fifo.c [2k9cs003@oxfordoec ~]$ ./a.out Enter the number of reference4 Enter the number of frames3 Enter the reference string:1 2 3 4 FIFO ALGORITHM 1-1-1 1 2-1 123 423

Number of Page Faults 4

Вам также может понравиться