• Breaking

    You'll get reports of electrical and computer engineering here.

    Friday, October 4, 2019

    Sequential,Linked & Indexed file Allocation

    Problem No: 04
    Name of the problem: Sequential file Allocation

    Theory:  Sequential allocation is a simple and attractive mechanism for the allocation of indivisible goods. Agents take turns, according to a policy, to pick items. Sequential allocation is guaranteed to return an allocation that is efficient but may not have optimal social welfare.


    Code:
    #include<bits/stdc++.h>
    using namespace std;
    struct filetable
    {
        char name[20];
        int sb,nob;
    } ft[30];
    int main()
    {
        int i,j,n;
        char s[20];
        cout<<"enter the no of files ";
        cin>>n;
        for(i=0; i<n; i++)
        {
            cout<<"enter file name "<<i+1<<": ";
            cin>>ft[i].name;
            cout<<"enter starting block of file "<<i+1<<": ";
            cin>>ft[i].sb;
            cout<<"enter no of blocks in the file "<<i+1<<": ";
            cin>>ft[i].nob;
        }
        cout<<"enter the file name to be searched : ";
        cin>>s;
        for(i=0; i<n; i++)
            if(strcmp(s,ft[i].name)==0)
                break;
        if(i==n)
            cout<<"file not found.";
        else
        {
            cout<<"file name\tstart block\t no of blocks\t blocks occupied"<<endl;
            cout<<ft[i].name<<"\t\t  "<<ft[i].sb<<"\t\t   "<<ft[i].nob<<"\t\t  ";
            for(j=0; j<ft[i].nob; j++)
            {
                cout<<ft[i].sb+j;
                if(j<ft[i].nob-1)
                {
                    cout<<",";
                }}}
    }
    OS lab report



    Problem No: 05
    Name of the problem: Linked file allocation

    Theory: In this scheme, each file is a linked list of disk blocks that need not be contiguous. The disk blocks can be scattered anywhere on the disk. The directory entry contains a pointer to the starting and the ending file block. Each block contains a pointer to the next block occupied by the file.


    Code:

    #include<bits/stdc++.h>
    using namespace std;

    struct fileTable
    {
        char name[20];
        int nob;
        struct block *sb;
    }ft[30];
    struct block
    {
        int bno;
        struct block *next;
    };
    int main()
    {
        int i,j,n;
        char s[20];
        struct block *temp;
        printf("Enter no of files:  ");
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            cout<<"enter file name "<<i+1<<": ";
            cin>>ft[i].name;
            cout<<"enter no of blocks in the file "<<i+1<<": ";
            cin>>ft[i].nob;
            ft[i].sb=(struct block*)malloc(sizeof(struct block));
            temp=ft[i].sb;
            cout<<"enter the blocks of the file : ";
            scanf("%d",&temp->bno);
            temp->next=NULL;
            for(j=1;j<ft[i].nob;j++){
                temp ->next =(struct block*)malloc(sizeof(struct block));
                temp=temp->next;
                scanf("%d",&temp->bno);
            }

        temp->next=NULL;

        }
        printf("\n Enter the file to be searched...");
        scanf("%s",s);
        for(i=0;i<n;i++)
        if(strcmp(s,ft[i].name)==0)
            break;
        if(i==n)
            printf("\nfile not found");
        else{
            printf("\n FILE NAME    NO OF BLOCKS    BLOCKS OCCUPIED");
            printf("\n %s\t\t%d\t\t",ft[i].name,ft[i].nob);
            temp=ft[i].sb ;
            for(j=0;j<ft[i].nob;j++)
            {

                cout<<temp->bno;
                temp=temp->next;
                if(j<ft[i].nob-1)
                {
                    cout<<"->";
                }
            }
        }
    }



    linked file allocation



    Problem No: 06
    Name of the problem: Indexed file allocation

    Theory: Indexed Allocation. Provides solutions to problems of contiguous and linked allocation. An index block is created having all pointers to files. Each file has its own index block which stores the addresses of disk space occupied by the file. The directory contains the addresses of index blocks of files.


    Code:
    #include<bits/stdc++.h>
    using namespace std;
    struct filetable
    {
        char name[20];
        int nob,blocks[30];
    }ft[30];

    int main()
    {
        int i,j,n;
        char s[20];

        cout<<"enter the no of files: ";
        cin>>n;

        for(i=0;i<n;i++)
        {
            cout<<"enter file name"<<i+1<<": ";
            cin>>ft[i].name;

            cout<<"enter no of blocks in the file "<<i+1<<": ";
            cin>>ft[i].nob;
             cout<<"enter the blocks of file: ";
            for(j=0;j<ft[i].nob;j++)
                cin>>ft[i].blocks[j];

        }
        cout<<"enter the file name to be searched: ";
        cin>>s;
        for(i=0;i<n;i++)
            if(strcmp(s,ft[i].name)==0)
            break;
        if(i==n)
            cout<<"file not found ";

            else
            {
                printf("\nfile name  no of blocks blocks occupied");
                printf("\n  %s\t\t%d\t",ft[i].name,ft[i].nob);
                for(j=0; j<ft[i].nob; j++)
        {

                    printf("%d",ft[i].blocks[j]);
                    if(j<ft[i].nob-1)
                {
                    cout<<",";
                }
        }
            }
    }
    OS lab report, file allocation


    No comments:

    Post a Comment