answersLogoWhite

0


Best Answer

#include<stdio.h>

#include<malloc.h>

/*

filename:firstfit.c

description:this program implements first fit algorithm

Author:Anupam Biswas,NIT Allahabad,India

Date:29.08.2011

*/

#define maxp 10 //maxp:maximum no of processes

#define maxmsz 100 //maxmsz:maximum memory size

struct memory{

int bsz;//bsz:block size

int bs;//bs:block start

int be;//be:block end

int ap;//ap:allocated process

int flag;//for allocated or not

struct memory*link;

}*start,*trav,*prev;

int pq[maxp];//pq:process queue

int f=-1,r=-1;

void enqueue(int ps)

{

/*ps:process size*/

if((r+1)%maxp==f)

{

printf("\nqueue is full, no new process can be loaded");

}

else

{

r=(r+1)%maxp;

pq[r]=ps;

}

}

int dequeue()

{

int ps;

if(f==r)

{

printf("queue empty,no process left\n");

return -1;

}

else

{

f=(f+1)%maxp;

ps=pq[f];

return ps;

}

}

void first_fit(int ps,int pid)

{

/*pid:process id*/

struct memory*block;

block=(struct memory*)malloc(sizeof(struct memory));

trav=start;

/*search the memory block large enough*/

while(trav!=NULL)

{

if(trav->flag==0 && trav->bsz>=ps)

{

break;

}

prev=trav;

trav=trav->link;

}

if(trav==NULL)

{

printf("No large enough block is found\n");

}

else /*if enough memory is found*/

{

dequeue();//remove process from queue

block->bsz=ps;

block->bs=trav->bs;

block->be=trav->bs+ps-1; //anus size defininition

block->ap=pid;

block->flag=1;

block->link=trav;

trav->bsz=trav->bsz-ps;

trav->bs=block->be+1;

if(trav==start)/*if first block is large enough*/

{

start=block;

}

else

{

prev->link=block;

}

}

}

void dealocate_memory(int pid)

{

trav=start;

while(trav!=NULL && trav->ap!=pid)

{

trav=trav->link;

}

if(trav==NULL)

{

printf("This process is not in memory at all\n");

}

else

{

if(trav->link->flag==0)

{

trav->bsz=trav->bsz+trav->link->bsz; //anus link definition

trav->be=trav->link->be;

prev=trav->link;

trav->link=prev->link;

prev->link=NULL;

free(prev);

}

trav->ap=-1;

trav->flag=0;

}

}

void show_mem_status()

{

int c=1,free=0,aloc=0;

trav=start;

printf("Memory Status is::\n");

printf("Block BSZ BS BE Flag process\n");

while(trav!=NULL)

{

printf("%d %d %d %d %d %d\n",c++,trav->bsz,trav->bs,trav->be,trav->flag,trav->ap);

if(trav->flag==0)

{

free=free+trav->bsz;

}

else

{

aloc=aloc+trav->bsz;

}

trav=trav->link;

}

printf("Free memory= %d\n",free);

printf("Allocated memory= %d\n",aloc);

}

int main()

{

int ch,ps;

char cc;

/*the size of the total memory size is defined i.e. largest block or hole*/

/*......................................................................*/

start=(struct memory*)malloc(sizeof(struct memory));

start->bsz=maxmsz;

start->bs=0;

start->be=maxmsz;

start->ap=-1;

start->flag=0;

start->link=NULL;

/*......................................................................*/

while(1)

{

printf("\n\t1. Enter process in queue\n");

printf("\t2. Allocate memory to process from queue\n");

printf("\t3. Show memory staus\n");

printf("\t4. Deallocate memory of processor\n");

printf("\t5. Exit\n");

printf("Enter your choice: ");

scanf("%d",&ch);

switch(ch)

{

case 1:

do

{

printf("Enter the size of the process: ");

scanf("%d",&ps);

enqueue(ps);

printf("Do you want to enter another process(y/n)?: ");

scanf("%c",&cc);

scanf("%c",&cc);

}

while(cc=='y');

break;

case 2:

do

{

ps=pq[f+1];

if(ps!=-1)

{

first_fit(ps,f+1);

show_mem_status();

}

printf("Do you want to allocate mem to another process(y/n)?: ");

scanf("%c",&cc);

scanf("%c",&cc);

}

while(cc=='y');

break;

case 3:

show_mem_status();

break;

case 4:

do

{

printf("Enter the process Id: ");

scanf("%d",&ps);

dealocate_memory(ps);

show_mem_status();

printf("Do you want to enter another process(y/n)?: ");

scanf("%c",&cc);

scanf("%c",&cc);

}

while(cc=='y');

break;

case 5:

break;

default:

printf("\nEnter valid choice!!\n");

}

if(ch==5)

break;

}

}

User Avatar

Wiki User

12y ago
This answer is:
User Avatar

Add your answer:

Earn +20 pts
Q: C code to implement the the first fit best fit worst fit algorithm?
Write your answer...
Submit
Still have questions?
magnify glass
imp
Related questions

What is the difference between best worst and average case complexity of an algorithm?

These are terms given to the various scenarios which can be encountered by an algorithm. The best case scenario for an algorithm is the arrangement of data for which this algorithm performs best. Take a binary search for example. The best case scenario for this search is that the target value is at the very center of the data you're searching. So the best case time complexity for this would be O(1). The worst case scenario, on the other hand, describes the absolute worst set of input for a given algorithm. Let's look at a quicksort, which can perform terribly if you always choose the smallest or largest element of a sublist for the pivot value. This will cause quicksort to degenerate to O(n2). Discounting the best and worst cases, we usually want to look at the average performance of an algorithm. These are the cases for which the algorithm performs "normally."


Time complexity of selection sort?

Merge sort (or mergesort) is an algorithm. Algorithms do not have running times since running times are determined by the algorithm's performance/complexity, the programming language used to implement the algorithm and the hardware the implementation is executed upon. When we speak of algorithm running times we are actually referring to the algorithm's performance/complexity, which is typically notated using Big O notation. Mergesort has a worst, best and average case performance of O(n log n). The natural variant which exploits already-sorted runs has a best case performance of O(n). The worst case space complexity is O(n) auxiliary.


Which algorithm has some average worst case and best case time?

All algorithms have a best, worst and average case. Algorithms that always perform in constant time have a best, worst and average of O(1).


What is the worst case and best case of bubble sort?

There is no worst case for merge sort. Each sort takes the same amount of steps, so the worst case is equal to the average case and best case. In each case it has a complexity of O( N * log(N) ).


Explain the lru algorithm from the page replacement algorithm?

First In First Out (FIFO) &ndash; This is the simplest page replacement algorithm. ...Optimal Page replacement &ndash; In this algorithm, pages are replaced which would not be used for the longest duration of time in the future. ...Least Recently Used &ndash; In this algorithm page will be replaced which is least recently used.First In First Out (FIFO) &ndash; This is the simplest page replacement algorithm. ...Optimal Page replacement &ndash; In this algorithm, pages are replaced which would not be used for the longest duration of time in the future. ...Least Recently Used &ndash; In this algorithm page will be replaced which is least recently used.


Among best and breadth first search which algorithm has the property that if a wrong path is selected it can be corrected afterwards?

Best-first.


What is worst fit algorithm?

The worst fit algorithm is a means by which an operating system can choose which space in memory to store information (this algorithm can also be used for allocating hard disk space). The algorithm searches for free-space in memory in which it can store the desired information. The algorithm selects the largest possible free space that the information can be stored on (i.e., that is bigger than the information needing to be stored) and stores it there. This is directly opposed to the best fit algorithm which searches the memory in much the same way as before, only instead chooses the open memory space which is the smallest available which the information can be stored in (i.e., that is bigger than the information needing to be stored).


What is the worst case and best case for binary search?

The best case for a binary search is finding the target item on the first look into the data structure, so O(1). The worst case for a binary search is searching for an item which is not in the data. In this case, each time the algorithm did not find the target, it would eliminate half the list to search through, so O(log n).


What is the best public-key cryptography algorithm and why?

RSA (Rivest, Shamir, and Adelman) is the best public key algorithm.


Which is the best shortest path algorithm?

dijkstra's algorithm (note* there are different kinds of dijkstra's implementation) and growth graph algorithm


What is worst -fit?

The worst fit algorithm is a means by which an operating system can choose which space in memory to store information (this algorithm can also be used for allocating hard disk space). The algorithm searches for free-space in memory in which it can store the desired information. The algorithm selects the largest possible free space that the information can be stored on (i.e., that is bigger than the information needing to be stored) and stores it there. This is directly opposed to the best fit algorithm which searches the memory in much the same way as before, only instead chooses the open memory space which is the smallest available which the information can be stored in (i.e., that is bigger than the information needing to be stored).


What is best fit algorithm?

ytijkj