In cloud computing management system , I need the reasons to chose the scheduling algorithm such as min-min algorithm, FIFO,min-min algorithm and max min algorithm ...., and the advantages and disadvantages of each of them.
In resource allocation at infrastructure as a service level ,specific in sharing resource such as cpu and memory and disk storage. We use these algorithm so i want to know the advantages and disadvantages of them.
It depends a lot on several things, keep in mind that each of these techniques have their own pros and cons. They also do not have the ability (in an online setting) to predict the future. So when it comes to scheduling, you'll have to be careful about which approach you think would work best for your application.
FIFO: you enforce that the time a job is set is the priority. All you have to do is put a heavy job in, then potentially several short jobs will have to wait.
Round-Robin: This one depends a lot on what kind of round-robin you're talking about. Takes a "fair" approach by giving jobs "turns" (usually a priority is added). In this case I could have many high priority short jobs finish before a heavy job that has a lower priority finish. The lower priority job could have an important role. Likewise, if I make the big job a high priority task, then the small less important jobs all have to take longer.
I'm assuming the last two relate to the lengths or durations of the jobs? You could get totally unbalanced loads when you say process a lot of small jobs, then if they sit the right way a big job could congest a whole processor. Keep in mind many of the things I've outlined here are pretty much the case when we talk about processor scheduling, so I'm unsure of how much would apply for your application.
Since this likely for an online setting (as this is for a cloud computing environment), have you considered at all more online-algorithms for scheduling? All the above approaches can perform arbitrarily bad in the online setting. Have you looked into online competitive algorithms? I say this because unless your system has a special structure, you may not know what type of jobs you'll get until you get them. We use the above techniques usually on processors as they can take advantage of temporal locality (which is very common in programs).
I hope some of this may help you, I apologize if I misunderstand any little bits as some parts of your question are a bit vague.