Gowri lakshmi V's Website

Welcome! link!

  • yarn
  • 1.Shell programming

    #!/bin/bash

    echo "Enter First Number:"read x

    echo "Enter Second Number:"

    read y

    (( sum=x+y ))

    echo "Result of addition:$sum"

    Output

    chezhian@chezhian-desktop:~$ bash ex2.sh

    Enter First Number : 25

    Enter Second Number : 25

    Result of addition : 50

    2.(A)CPU Scheduling: Round Robin

    #include

    main()

    {

    int i,j,n,bu[10],wa[10],tat[10],t,ct[10],max;

    float awt=0,att=0,temp=0;

    printf("Enter the no of processes:"); scanf("%d",&n);

    for(i=0;i

    {

    printf("\n Enter Burst Time for process %d:", i+1); scanf("%d",&bu[i]);

    ct[i]=bu[i];

    }

    printf("\n Enter the size of time slice:"); scanf("%d",&t);

    max=bu[0];

    for(i=1;i

    if(max

    max=bu[i];

    for(j=0;j<(max/t)+1;j++)

    for(i=0;i

    if(bu[i]!=0)

    if(bu[i]<=t)

    {

    tat[i]=temp+bu[i];

    temp=temp+bu[i];

    bu[i]=0;

    }

    else

    {

    bu[i]=bu[i]-t;

    temp=temp+t;

    }

    for(i=0;i

    {

    wa[i]=tat[i]-ct[i];

    att+=tat[i];

    awt+=wa[i];

    }

    printf("\n Average Turnaround time is:%f",att/n); printf("\n Average Waiting time is:%f ",awt/n);

    printf("\n\tPROCESS\t BURST TIME \t WAITING TIME\tTURNAROUND TIME\n");

    for(i=0;i

    printf("\t%d \t %d \t\t %d \t\t %d \n",i+1,ct[i],wa[i],tat[i]); getch();

    }

    Output

    Enter the no of processes:3

    Enter Burst Time for process 0: 24

    Enter Burst Time for process 1: 3

    Enter Burst Time for process 2: 3

    Enter the size of time slice:3

    PROCESS BURST TIME WAITING TIME TURNAROUND

    P0 24 6 30

    P1 3 4 7

    P2 3 7 10

    Average Turnaround time is : 15.666667

    Average Waiting time is : 5.666667

    2.(B)CPU Scheduling:Sortest job first

    #include

    int main()

    {

    int

    n,j,temp,temp1,temp2,pr[10],b[10],t[10],w[10],p[10],i; float att=0,awt=0; for(i=0;i<10;i++)

    {

    b[i]=0;w[i]=0;

    }

    printf("enter the number of process"); scanf("%d",&n);

    printf("enter the burst times");

    for(i=0;i

    {

    scanf("%d",&b[i]);

    p[i]=i;

    }

    for(i=0;i

    {

    for(j=i;j

    {

    if(b[i]>b[j])

    {

    temp=b[i];

    temp1=p[i];

    b[i]=b[j];

    p[i]=p[j];

    b[j]=temp;

    p[j]=temp1;

    }

    }

    }

    w[0]=0;

    for(i=0;i

    w[i+1]=w[i]+b[i];

    for(i=0;i

    {

    t[i]=w[i]+b[i];

    awt=awt+w[i];

    att=att+t[i];

    }

    awt=awt/n;

    att=att/n;

    printf("\n\t process \t waiting time \t turn around time \n");

    for(i=0;i

    printf("\t p[%d] \t %d \t\t %d \n",p[i],w[i],t[i]);

    printf("the average waitingtimeis %f\n",awt);

    printf("the average turn around time is %f\n",att); return 1;

    }

    Output

    Enter the number of process:5

    Enter the burst times:

    2 4 5 6 8

    PROCESS WAITING TIME TURNAROUND

    P[0] 0 2

    P[1] 2 6

    P[2] 6 11

    P[3] 11 17

    P[4] 17 25

    Average Turnaround time is : 7.200000

    Average Waiting time is : 12.200000

    2.(c)CPU scheduling: First Come First Serve

    #include

    int main()

    {

    int n,a[10],b[10],t[10],w[10],g[10],i,m;

    float att=0,awt=0;

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

    {

    a[i]=0; b[i]=0; w[i]=0; g[i]=0;

    }

    printf("Enter number of process:")

    scanf("%d",&n);

    printf("Enter burst times:");

    for(i=0;i

    scanf("%d",&b[i]);

    printf("\n Enter arrival times:");

    for(i=0;i

    scanf("%d",&a[i]);

    g[0]=0;

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

    g[i+1]=g[i]+b[i];

    for(i=0;i

    {

    w[i]=g[i]-a[i];

    t[i]=g[i+1]-a[i];

    awt=awt+w[i];

    att=att+t[i];

    }

    awt =awt/n;

    att=att/n;

    printf("\n\tProcess\tWaiting time\t Turn arround time\n");

    for(i=0;i

    {

    printf("\tp%d\t\t%d\t\t%d\n",i,w[i],t[i]);

    }

    printf("Average waiting time: %f\n",awt); printf("Average turn around time:%f\n",att);

    }

    Output

    Enter number of process: 4

    Enter burst times:

    4 9 8 3

    Enter arrival times:

    0 2 4 3

    Process Waiting time Turn arround time

    p0 0

    p1 2 11

    p2 9 17

    p3 18 21

    Average waiting time : 7.250000

    Average turn around time : 13.250000

    2.(D)Priority Scheduling

    #include

    int main()

    {

    int

    bt[20],p[20],wt[20],tat[20],pr[20],i,j,n,total=0,pos,temp,avg_wt,av g_tat;

    printf("Enter Total Number of Process:");

    scanf("%d",&n);

    printf("\nEnter Burst Time and Priority\n"); for(i=0;i

    {

    printf("\nP[%d]\n",i+1);

    printf("Burst Time:");

    scanf("%d",&bt[i]);

    printf("Priority:");

    scanf("%d",&pr[i]);

    p[i]=i+1;

    }

    for(i=0;i

    {

    pos=i;

    for(j=i+1;j

    {

    if(pr[j]

    pos=j;

    }

    temp=pr[i];

    pr[i]=pr[pos];

    pr[pos]=temp;

    temp=bt[i];

    bt[i]=bt[pos];

    bt[pos]=temp;

    temp=p[i];

    p[i]=p[pos];

    p[pos]=temp;

    }

    wt[0]=0;

    for(i=1;i

    {

    wt[i]=0;

    for(j=0;j

    wt[i]+=bt[j];

    total+=wt[i];

    }

    avg_wt=total/n;

    total=0;

    printf("\nProcess\t Burst Time \tWaiting Time\tTurnaround Time");

    for(i=0;i

    {

    tat[i]=bt[i]+wt[i];

    total+=tat[i];

    printf("\nP[%d]\t\t%d\t\t%d\t\t\t%d",p[i],bt[i],wt[i],tat[i]);

    }

    avg_tat=total/n; //average turnaround time

    printf("\n\nAverage Waiting Time=%d",avg_wt);

    printf("\nAverage Turnaround Time=%d\n",avg_tat);

    return 0;

    }

    Output

    Enter number of process: 4

    Enter burst times:

    4 9 8 3

    Enter arrival times:

    0 2 4 3

    Process Waiting time Turn arround time

    p0 0 4

    p1 2 11

    p2 9 17

    p3 18 21

    Average waiting time : 7.250000

    Average turn around time : 13.250000

    3.(A)Sequential Method

    #include

    int main()

    {

    int n,i,j,b[20],sb[20],t[20],x,c[20][20];

    printf("Enter no.of files:");

    scanf("%d",&n);

    for(i=0;i

    {

    printf("Enter no. of blocks occupied by file%d",i+1); scanf("%d",&b[i]);

    printf("Enter the starting block of file%d",i+1);

    scanf("%d",&sb[i]);

    t[i]=sb[i];

    for(j=0;j

    c[i][j]=sb[i]++;

    }

    printf("Filename\tStart lock\tlength\n");

    for(i=0;i

    printf("%d\t %d \t%d\n",i+1,t[i],b[i]);

    printf("Enter file name:");

    scanf("%d",&x);

    printf("File name is:%d",x);

    printf("length is:%d",b[x-1]);

    printf("blocks occupied:");

    for(i=0;i

    printf("%4d",c[x-1][i]);

    return 0;

    }

    Output

    Enter no.of files: 2

    Enter no. of blocks occupied by file1 : 4

    Enter the starting block of file1 : 2

    Enter no. of blocks occupied by file2 : 10

    Enter the starting block of file2 : 5

    Filename Start block length

    1 2 4

    2 5 10

    Enter file name: Sai

    File name is:12803 length is:0 blocks occupied

    3.(B)Indexed Method

    #include

    int main()

    {

    int n,m[20],i,j,ib[20],b[20][20];

    printf("Enter no. of files:");

    scanf("%d",&n);

    for(i=0;i

    {

    printf("Enter index block :",i+1);

    scanf("%d",&ib[i]);

    printf("Enter blocks occupied by file%d:",i+1); scanf("%d",&m[i]);

    printf("enter blocks of file%d:",i+1);

    for(j=0;j

    scanf("%d",&b[i][j]);

    }

    printf("\nFile\t index\tlength\n");

    for(i=0;i

    printf("%d\t%d\t%d\n",i+1,ib[i],m[i]);

    printf("blocks occupiedare:");

    for(i=0;i

    {

    printf("fileno%d",i+1);

    for(j=0;j

    printf("\t%d--->%d\n",ib[i],b[i][j]);

    printf("\n");

    }

    return 0;

    }

    Output

    Enter no. of files :2

    Enter index block :3

    Enter blocks of file1:

    9

    4

    6

    7

    Enter index block :5

    10

    8

    File index length

    1 3 4

    2 5 2

    blocks occupied are:fileno1

    3--->9

    3--->4

    3--->6

    3--->7

    Fileno2

    5--->10

    5--->8

    3.(C)Indexed Method

    #include

    struct file

    {

    char fname[10];

    int start,size,block[10];

    }f[10];

    int main()

    {

    int i,j,n;

    printf("Enter no. of files:");

    scanf("%d",&n);

    for(i=0;i

    {

    printf("Enter file name:");

    scanf("%s",&f[i].fname);

    printf("Enter starting block:");

    scanf("%d",&f[i].start);

    f[i].block[0]=f[i].start;

    printf("Enter no.of blocks:");

    scanf("%d",&f[i].size);

    printf("Enter block numbers:");

    for(j=1;j<=f[i].size;j++)

    {

    scanf("%d",&f[i].block[j]);

    }

    }

    printf("File\tstart\tsize\tblock\n");

    for(i=0;i

    {

    printf("%s\t%d\t%d\t",f[i].fname,f[i].start,f[i].size);

    for(j=1;j<=f[i].size-1;j++)

    printf("%d--->",f[i].block[j]);

    printf("%d",f[i].block[j]);

    printf("\n");

    }

    return 0;

    }

    Output

    Enter no. of files:2

    Enter file name:venkat

    Enter starting block:20

    Enter no.of blocks:6

    Enter block numbers: 4 12 15 45 32 25

    Enter file name:rajesh

    Enter starting block:12

    Enter no.of blocks:5

    Enter block numbers:6 5 4 3 2

    File start size block

    venkat 20 6 4--- >12--- >15 --- >45--- >32--- >25

    rajesh 12 5 6--- >5--- >4--- >3 --->2

    4.Semaphores

    #include

    #include

    #include

    #include

    sem_t mutex;

    void* thread(void* arg)

    {

    //wait

    sem_wait(&mutex);

    printf("\nEntered thread\n");

    //critical section

    sleep(4);

    //signal

    printf("\n Exit thread\n");

    sem_post(&mutex);

    }

    int main()

    {

    sem_init(&mutex, 0, 1);

    pthread_t t1,t2;

    pthread_create(&t1,NULL,thread,NULL);

    sleep(2);

    pthread_create(&t2,NULL,thread,NULL);

    pthread_join(t1,NULL);

    pthread_join(t2,NULL);

    sem_destroy(&mutex);

    return 0;

    }

    Output

    Output 1: (Have semaphore mean)

    Entered Thread

    Exit thread

    Entered Thread

    Exit thread

    Output 2: (Don’t Have semaphore mean)

    Entered Thread

    Entered Thread

    Exit thread

    Exit thread

    5.(A)Single level directory

    #include

    main()

    {

    intmaster,s[20];

    char f[20][20][20];

    char d[20][20];

    inti,j;

    printf("\n Enter number of directories:");

    scanf("%d",&master);

    printf("\n Enter name of directories:");

    for(i=0;i

    scanf("%s",&d[i]);

    printf("\n Enter the size of directories:");

    for(i=0;i

    scanf("%d",&s[i]);

    printf("\n Enter the file names:");

    for(i=0;i

    for(j=0;j

    scanf("%s",&f[i][j]);

    printf("\n");

    printf("\n Directory\tsize\tfilenames");

    printf("\n ********************************");

    for(i=0;i

    {

    printf("\n %s\t\t%d\t",d[i],s[i]);

    for(j=0;j

    printf("%s\n\t\t\t",f[i][j]);

    printf("\n");

    }

    printf("\t\n");

    }

    Output

    Enter number of directories

    : 3

    Enter name of directories

    :

    1

    2

    3

    Enter the size of directories :

    3

    2

    1

    Enter the file names :

    9

    8

    7

    6

    5

    4

    Directory size filenames

    ************************************

    1 3 9

    8

    7

    2 2 6

    5

    3 1 4

    5.(B)Two level directory

    #include

    struct st

    {

    char dname[10];

    char sdname[10][10];

    char fname[10][10][10];

    int ds,sds[10];

    }

    dir[10];

    int main()

    {

    int i,j,k,n;

    printf("enter number of directories:");

    scanf("%d",&n);

    for(i=0;i

    {

    printf("enter directory %d names:",i+1);

    scanf("%s",&dir[i].dname);

    printf("enter size of directories:");

    scanf("%d",&dir[i].ds);

    for(j=0;j

    {

    printf("enter subdirectory name and size:");

    scanf("%s",&dir[i].sdname[j]);

    scanf("%d",&dir[i].sds[j]);

    for(k=0;k

    {

    printf("enter file name:");

    scanf("%s",&dir[i].fname[j][k]);

    }

    }

    }

    printf("\nDirname\t\tSize\tSubdirname\tSize\tFiles");

    printf("\n*\n");

    for(i=0;i

    {

    printf("%s\t\t%d",dir[i].dname,dir[i].ds);

    for(j=0;j

    {

    printf("\t%s\t\t%d\t",dir[i].sdname[j],dir[i].sds[j]);

    for(k=0;k

    printf("%s\t",dir[i].fname[j][k]);

    printf("\n\t\t");

    }

    printf("\n");

    }

    return 0;

    }

    Output

    Enter number of directories : 1

    Enter directories 1 names : Kavin

    Enter size of directories : 1

    Enter subdirectory name and size : Sai 1

    Enter file name : Tamil

    Dirname Size Subdirname Size Files ******************************************************

    Kavin 1 Sai 1 Tamil

    5.(C)Hierarchical directory`

    #include

    #include

    struct tree_element

    {

    char name[20];

    int x, y, ftype, lx, rx, nc, level;

    struct tree_element *link[5];

    };typedef struct tree_element node;

    int main()

    {

    int gd=DETECT,gm;

    node *root;

    root=NULL;

    create(&root,0,"root",0,639,320);

    initgraph(&gd,&gm,"c:\tc\BGI");

    display(root);

    closegraph();

    }

    create(node **root,int lev,char *dname,int lx,int rx,int x)

    {

    int i, gap; if(*root==NULL)

    {

    (*root)=(node *)malloc(sizeof(node));

    printf("Enter name of dir/file(under %s) : ",dname);

    fflush(stdin); gets((*root)->name);

    printf("Enter 1 for Dir/2 for file :");

    scanf("%d",&(*root)->ftype);

    (*root)->level=lev;

    (*root)->y=50+lev*50;

    (*root)->x=x;

    (*root)->lx=lx;

    (*root)->rx=rx;

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

    (*root)->link[i]=NULL;

    37

    if((*root)->ftype==1)

    {

    printf("No of sub directories/files(for %s):",(*root)->name);

    scanf("%d",&(*root)>nc);

    if((*root)->nc==0)

    gap=rx-lx;

    else

    gap=(rx-lx)/(*root)->nc;

    for(i=0;i<(*root)->nc;i++)

    create(&((*root)>link[i]),lev+1,(*root)>name,lx+gap*i,lx+gap*i+gap,lx+gap*i+gap/2);

    }

    else

    (*root)->nc=0;

    }

    }

    display(node *root)

    {

    int i; settextstyle(2,0,4);

    settextjustify(1,1);

    setfillstyle(1,BLUE);

    setcolor(14);

    if(root !=NULL)

    {

    for(i=0;inc;i++)

    line(root->x,root->y,root->link[i]->x,root->link[i]->y);

    if(root->ftype==1)

    bar3d(root->x-20,root->y-10,root->x+20,root>y+10,0,0);

    else

    fillellipse(root->x,root->y,20,20);

    outtextxy(root->x,root->y,root->name);

    for(i=0;inc;i++)

    display(root->link[i]);

    }

    }

    Output

    Enter Name of dir/file(under root) : ROOT

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for ROOT) : 2

    Enter Name of dir/file(under ROOT) : USER1

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for USER1) : 1

    Enter Name of dir/file(under USER1) : SUBDIR1

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for SUBDIR1): 2

    Enter Name of dir/file(under USER1) : JAVA

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for JAVA) : 0

    Enter Name of dir/file(under SUBDIR1) : VB

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for VB) : 0

    Enter Name of dir/file(under ROOT) : USER2

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for USER2) : 2

    Enter Name of dir/file(under ROOT) : A

    Enter 1 for Dir/2 for File : 2

    Enter Name of dir/file(under USER2) : SUBDIR2

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for SUBDIR2): 2

    Enter Name of dir/file(under SUBDIR2) : PPL

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for PPL) : 2

    Enter Name of dir/file(under PPL) : B

    Enter 1 for Dir/2 for File : 2

    Enter Name of dir/file(under PPL) : C

    Enter 1 for Dir/2 for File : 2

    Enter Name of dir/file(under SUBDIR) : AI

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for AI) : 2

    Enter Name of dir/file(under AI) : D

    Enter 1 for Dir/2 for File : 2

    Enter Name of dir/file(under AI) : E

    Enter 1 for Dir/2 for File : 2

    5.(D)DAG

    #include

    #include

    #include

    #include

    struct tree_element

    {

    char name[20];

    int x,y,ftype,lx,rx,nc,level;

    struct tree_element *link[5];

    };

    typedef struct tree_element node;

    typedef struct

    {

    char from[20];

    char to[20];

    }

    link;

    Link L[10]; Int nofl;

    node * root;

    void main()

    {

    int gd=DETECT,gm; root=NULL;

    create(&root,0,"root",0,639,320);

    read_links();

    clrscr();

    initgraph(&gd,&gm,"c:\\tc\\BGI");

    draw_link_lines();

    display(root);

    getch();

    closegraph();

    }

    read_links()

    {

    int i;

    printf("how many links");

    scanf("%d",&nofl);

    for(i=0;i

    {

    printf("File/dir:");

    fflush(stdin);

    gets(L[i].from);

    printf("user name:");

    fflush(stdin);

    gets(L[i].to);

    }

    }

    draw_link_lines()

    41

    {

    int i,x1,y1,x2,y2;

    for(i=0;i

    {

    search(root,L[i].from,&x1,&y1);

    search(root,L[i].to,&x2,&y2);

    setcolor(LIGHTGREEN);

    setlinestyle(3,0,1);

    line(x1,y1,x2,y2);

    setcolor(YELLOW);

    setlinestyle(0,0,1);

    }

    }

    search(node *root,char *s,int *x,int *y)

    {

    int i;

    if(root!=NULL)

    {

    if(strcmpi(root->name,s)==0)

    {

    *x=root->x;

    *y=root->y;

    return;

    }

    else

    {

    for(i=0;inc;i++) search(root->link[i],s,x,y);

    }

    }

    }

    create(node **root,int lev,char * dname,int lx,int rx,int x)

    {

    int i,gap; if(*root==NULL)

    {

    (*root)=(node *)malloc(sizeof(node));

    printf("enter name of dir/file(under %s):",dname);

    fflush(stdin);

    gets((*root)->name);

    printf("enter 1 for dir/ 2 for file:");

    scanf("%d",&(*root)- >ftype);

    (*root)->level=lev;

    (*root)->y=50+lev*50;

    (*root)->x=x;

    (*root)->lx=lx;

    (*root)->rx=rx;

    for(i=0;i<5;i++) (*root)->link[i]=NULL;

    if((*root)->ftype==1)

    42

    {

    printf("no of sub directories /files (for %s):",(*root)->name);

    scanf("%d",&(*root)->nc);

    if((*root)->nc==0) gap=rx-lx;

    else

    gap=(rx-lx)/(*root)->nc;

    for(i=0;i<(*root)->nc;i++)

    create( & ( (*root)->link[i] ) , lev+1 , (*root)->name,lx+gap*i,lx+gap*i+gap,lx+gap*i+gap/2);

    }

    else

    (*root)->nc=0;

    }

    }

    display(node *root)

    {

    int i;

    settextstyle(2,0,4);

    settextjustify(1,1);

    setfillstyle(1,BLUE);

    setcolor(14);

    ot!=NULL)

    {

    for(i=0;inc;i++)

    {

    line(root->x,root->y,root->link[i]->x,root->link[i]->y);

    }

    if(root->ftype==1) bar3d(root->x-20,root->y-10,root->x+20,root->y+10,0,0);

    else

    fillellipse(root->x,root->y,20,20);

    outtextxy(root->x,root->y,root->name);

    for(i=0;inc;i++)

    {

    display(root->link[i]);

    }

    }

    }

    Output

    Enter Name of dir/file(under root) : ROOT

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for ROOT) : 2

    Enter Name of dir/file(under ROOT) : USER1

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for USER1) : 1

    Enter Name of dir/file(under USER1) : SUBDIR1

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for SUBDIR1): 2

    Enter Name of dir/file(under USER1) : JAVA

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for JAVA) : 0

    Enter Name of dir/file(under SUBDIR1) : VB

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for VB) : 0

    Enter Name of dir/file(under ROOT) : USER2

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for USER2) : 2

    Enter Name of dir/file(under ROOT) : A

    Enter 1 for Dir/2 for File : 2

    Enter Name of dir/file(under USER2) : SUBDIR2

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for SUBDIR2): 2

    Enter Name of dir/file(under SUBDIR2) : PPL

    Enter 1 for Dir/2 for File : 1

    No of subdirectories/files(for PPL) : 2

    Enter Name of dir/file(under PPL) : B

    6.Deadlock Avoidance

    #include

    int main()

    {

    int n, m, i, j, k;

    n = 5;

    m = 3;

    int alloc[5][3] = { { 0, 1, 0 },

    { 2, 0, 0 }, { 3, 0, 2 }, { 2, 1, 1 }, { 0, 0, 2 }

    };

    int max[5][3] = { { 7, 5, 3 },

    { 3, 2, 2 }, { 9, 0, 2 }, { 2, 2, 2 }, { 4, 3, 3 } };

    int avail[3] = { 3, 3, 2 };

    int f[n], ans[n], ind = 0;

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

    {

    f[k] = 0;

    }

    int need[n][m];

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

    {

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

    need[i][j] = max[i][j] - alloc[i][j];

    }

    int y = 0;

    for (k = 0; k < 5; k++) { for (i = 0; i < n; i++)

    {

    if (f[i] == 0)

    {

    int flag = 0;

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

    {

    if (need[i][j] > avail[j])

    {

    flag = 1;

    break;

    }

    }

    if (flag == 0)

    {

    ans[ind++] = i;

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

    avail[y] += alloc[i][y];

    f[i] = 1;

    }

    }

    46

    }

    }

    int flag = 1;

    for(int i=0;i

    {

    if(f[i]==0)

    {

    flag=0;

    printf("The following system is not safe");

    break;

    }

    }

    if(flag==1)

    {

    printf("Following is the SAFE Sequence\n");

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

    printf(" P%d ->", ans[i]);

    printf(" P%d", ans[n - 1]);

    }

    return (0);

    }

    Output

    Following is the SAFE Sequence

    P1 -> P3 -> P4 -> P0 -> P2

    7.Deadlock detection

    #include

    int main()

    {

    int

    found,flag,l,p[4][5],tp,tr,c[4][5],i,j,k=1,m[5],r[5],a[5],temp[5],sum=0;

    printf("Enter total no of processe

    scanf("%d",&tp);

    printf("Enter total no of resources");

    scanf("%d",&tr);

    printf("Enter claim (Max. Need) matrix\n");

    for(i=1;i<=tp;i++)

    {

    printf("process %d:\n",i);

    for(j=1;j<=tr;j++)

    scanf("%d",&c[i][j]);

    }

    printf("Enter allocation matrix\n");

    for(i=1;i<=tp;i++)

    {

    printf("process %d:\n",i);

    for(j=1;j<=tr;j++)scanf("%d",&p[i][j]);

    }

    printf("Enter resource vector (Total resources):\n");

    for(i=1;i<=tr;i++)

    {

    scanf("%d",&r[i]);

    }

    printf("Enter availability vector (available resources):\n");

    for(i=1;i<=tr;i++)

    {

    scanf("%d",&a[i]);

    temp[i]=a[i];

    }

    for(i=1;i<=tp;i++)

    {

    sum=0;

    49

    for(j=1;j<=tr;j++)

    {

    sum+=p[i][j];

    }

    if(sum==0)

    {

    m[k]=i; k++;

    }

    }

    for(i=1;i<=tp;i++)

    {

    for(l=1;l

    if(i!=m[l])

    {

    flag=1; for(j=1;j<=tr;j++)

    if(c[i][j]

    {

    flag=0; break;

    }

    }

    if(flag==1)

    {

    m[k]=i; k++;

    for(j=1;j<=tr;j++)

    temp[j]+=p[i][j];

    }

    }

    printf("Deadlock causing processes are:");

    for(j=1;j<=tp;j++)

    {

    found=0;

    for(i=1;i

    {

    if(j==m[i])

    found=1;

    }

    if(found==0)

    printf("%d\t",j);

    }

    }

    Output

    Enter total no. of processes : 4

    Enter total no. of resources : 5

    Enter claim (Max. Need) matrix :

    0 0 0 0 1

    0 0 0 0 1

    0 0 0 0 1

    1 0 1 0 1

    Enter allocation matrix :

    1 0 1 1 0

    1 1 0 0 0

    0 0 0 1 0

    0 00 0 0

    Enter resource vector (Total resources) :

    2 1 1 2 1

    Enter availability vector (available resources) :

    0 00 0 1

    deadlock causing processes are : 2 3

    8.(A)FIFO

    #include

    int fr[3];

    void main()

    {

    void display();

    int i,j,page[12]=

    {2,3,2,1,5,2,4,5,3,2,5,2};

    intflag1=0,flag2=0,pf=0,frsize=3,top=0;

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

    {

    fr[i]=-1;

    }

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

    {

    flag1=0;

    flag2=0;

    for(i=0;i<12;i++)<\p>

    {

    if(fr[i]==page[j])

    {

    flag1=1;

    flag2=1;

    break;

    }

    }

    if(flag1==0)

    {

    for(i=0;i

    {

    if(fr[i]==-1)

    {

    fr[i]=page[j];

    flag2=1;

    break;

    }

    }

    }

    if(flag2==0)

    {

    fr[top]=page[j];

    top++;

    pf++;

    if(top>=frsize)

    top=0;

    }

    display();

    }

    printf("Number of page faults : %d ",pf+frsize); }

    void display()

    {

    int i;

    printf("\n"); for(i=0;i<3;i++);

    printf("%d\t",fr[i]);

    }

    Output

    2 -1 -1

    2 3 -1

    2 3 -1

    2 3 1

    5 3 1

    5 2 1

    5 2 4

    5 2 4

    3 2 4

    3 2 4

    3 5 4

    3 5 2

    8.(B)LRU

    #include

    int fr[3];

    void main()

    {

    void display();

    int p[12]={2,3,2,1,5,2,4,5,3,2,5,2},i,j,fs[3];

    int

    index,k,l,flag1=0,flag2=0,pf=0,frsize=3;

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

    {

    fr[i]=-1;

    }

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

    {

    flag1=0; flag2=0;

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

    {

    if(fr[i]==p[j])

    {

    flag1=1; flag2=1;

    break;

    }

    }

    if(flag1==0)

    {

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

    {

    if(fr[i]==-1)

    {

    fr[i]=p[j];

    flag2=1;

    break;

    }

    }

    }

    if(flag2==0)

    {

    for(i=0;i<3;i++) fs[i]=0;

    for(k=j-1,l=1;l<=frsize-1;l++,k--)

    {

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

    {

    if(fr[i]==p[k])

    fs[i]=1;

    }

    }

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

    {

    if(fs[i]==0)

    index=i;

    }

    fr[index]=p[j];

    pf++;

    }

    display();

    }

    printf("\n no of page faults :%d",pf+frsize);

    }

    void display()

    {

    int i;

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

    printf("\t%d",fr[i]);

    }

    Output

    2 -1 -1

    2 3 -1

    2 3 -1

    2 3 1

    2 5 1

    2 5 1

    2 5 4

    2 5 4

    3 5 4

    3 5 2

    3 5 2

    3 5 2

    No of page faults: 7

    8.(C)LFU

    #include

    int fr[3], n, m;

    void display();

    void main()

    {

    int i,j,p ge[20],fs[10];

    int max,found=0,lg[3],index,k,l,flag1=0,flag2=0,pf=0; float pr;

    clrscr();

    printf("Enter length of the reference string: ");

    scanf("%d",&n);

    printf("Enter the reference string: ");

    for(i=0;i

    scanf("%d",&page[i]);

    printf("Enter no of frames: ");

    scanf("%d",&m);

    for(i=0;i

    pf=m;

    for(j=0;j

    {

    flag1=0;

    flag2=0;

    for(i=0;i

    {

    if(fr[i]==page[j])

    {

    flag1=1;

    flag2=1;

    break;

    }

    if(flag1==0)

    {

    for(i=0;i

    {

    if(fr[i]==-1)

    {

    fr[i]=page[j];

    flag2=1;

    break;

    }

    }

    }

    if(flag2==0)

    {

    59

    for(i=0;ilg[i]=0;

    for(i=0;i{

    for(k=j+1;k<=n;k++)

    {

    if(fr[i]==page[k])

    {

    lg[i]=k-j;

    }

    }

    }

    found=0;

    for(i=0;i

    {

    if(lg[i]==0)

    {

    }

    }

    if(found==0)

    {

    max=lg[0];

    index=0;

    for(i=0;i

    {

    if(max

    {

    max=lg[i];

    index=i;

    }

    }

    }

    fr[index]=page[j];

    pf++;

    }

    display();

    }

    printf("Number of page faults : %d\n",); pr=(float)pf/n*100;

    rintf("Page fault rate = %f \n", pr);

    }

    void display()

    int i;

    for(i=0;i

    printf("%d\t",fr[i]);

    }

    output

    Enter length of the reference string: 12

    Enter the reference string: 1 2 3 4 1 2 5 1 2 3 4 5

    Enter no of frames: 3

    1 -1 -1

    1 2 -1

    1 2 3

    1 2 4

    1 2 4

    1 2 4

    1 2 5

    1 2 5

    1 2 5

    3 2 5

    4 2 5

    4 2 5

    Number of page faults : 7

    Page fault rate = 58.333332

    9.Shared Memory and IPC

    #include

    #include

    #include

    #include

    #include

    main()

    {

    int pid,pfd[2],n,a,b,c;

    if(pipe(pfd)==-1)

    {

    printf("\n Error in pipe onnection\n");

    exit(1);

    }

    pid=fork();

    if(pid>0)

    {

    printf("\n Parent Process");

    printf("\n\n\t Fibonacci Series");

    printf("\n Enter the limit for the

    series:");

    scanf("%d",&n);

    close(pfd[0]);

    write(pfd[1],&n,sizeof(n));

    close(pfd[1]);

    exit(0);

    }

    else

    {

    close(pfd[1]);

    read(pfd[0],&n,sizeof(n));

    printf("\n Child process");

    a=0;b=1;

    close(pfd[0]);

    printf("\n Fibonacci series is:");

    printf("\n\n%d\n%d",a,b);

    while(n>2)

    {

    c=a+b;

    printf("\n%d",c);

    a=b;b=c;

    n--;

    }

    }

    }

    Output

    Parent Process

    Fibonacci Series

    Enter the limit for the series : 5

    Child Process

    Fibonacci Series is:

    0

    1

    1

    2

    3

    10.Paging Technique

    #include

    #include

    int main()

    {

    int np,ps,i;

    int *sa;

    printf("Enter how many pages\n");

    scanf("%d",&np);

    printf("Enter the page size \n");

    scanf("%d",&ps);

    sa=(int*)malloc(2*np);

    for(i=0;i

    {

    sa[i]=(int)malloc(ps);

    printf("Page%d\t Address %u\n",i+1,sa[i]);

    return 0;

    }

    Output

    Enter how many pages: 5

    Enter the page size: 4

    Page1 Address: 1894

    Page2 Address: 1902

    Page3 Address: 1910

    Page4 Address: 1918

    Page5 Address: 1926

    11.Thread

    #include

    #include

    #include

    #include

    #include

    pthread_t tid[2];

    int counter;

    void* doSomeThing(void *arg)

    {

    unsigned long i = 0;

    counter += 1;

    printf("\n Job %d started\n",

    counter);

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

    printf("\n Job %d finished\n",

    counter);

    return NULL;

    }

    int main(void)

    {

    int i = 0;

    int err;

    while(i < 2)

    {

    int counter;

    void* &doSomeThing, NULL);

    if (err != 0)

    printf ("\ncan't create thread :[%s]", strerror(err));

    i++;

    }

    pthread_join(tid[0], NULL);

    pthread_join(tid[1], NULL);

    urn 0;

    }

    Output

    Job 1 started

    Job 2 started

    Job 1 finished

    Job 2 finished

    **