Форум программистов, компьютерный форум CyberForum.ru

Алгоритм планирования Round Robin с квантом времени (переделать программу) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.95
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 425
19.12.2012, 13:20     Алгоритм планирования Round Robin с квантом времени (переделать программу) #1
Если кто знаком с этим - подскажите, будьте любезны!!))
Друзья, есть код программы, который представлен ниже. Реализован в Visual Studio 2008.
Программа имитирует работу планировщика по алгоритму планирования FIFO. Там процессы находятся всего в 2-х состояниях: Готовность и Выполнение. Как бы переделать программу, чтобы она работала по алгоритму Round Robin???

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include "stdafx.h"
#include "conio.h"
#include "iostream"
#include "stdlib.h"
#include "locale.h"
using namespace std;
 
int n,i,j,sum=0;
    int serv[10],wait[10],obr[10],v=2;
    double avewait=0.0,aveobr=0.0;                                                                        
    setlocale(LC_ALL, "rus");
    printf("Задан фиксированный квант времени v=2 \n");
    printf("Введите кол-во процессов: ");
    scanf("%d", &n);
 
    for (i=0;i<n;i++)
    {   
        printf("Введите время обслуживания: ");
        scanf("%d", &serv[i]);
    }
    system("CLS");
 
    for (i=0;i<n;i++)
    {
        sum=0;
        for (j=0;j<i;j++)
            sum=sum+serv[j];
            wait[i]=sum;
    }
    
    for (i=0;i<n;i++)
    {
        obr[i]=wait[i]+serv[i];
 
    }
    for (i=0;i<n;i++)
    {
        avewait+=wait[i];
        aveobr+=obr[i];
}
    
    avewait/=n;
    aveobr/=n;
 
    printf("\n");
    printf("Процесс      Обслуживание       Ожидание       Выполнение "); 
    printf("\n\n");
 
    for (i=0;i<n;i++)
    {
        cout<<i+1<<"\t\t"<<serv[i]<<"\t\t"<<wait[i]<<"\t\t"<<obr[i];
        printf("\n");
    }
    printf("=====================================================================\n\n");
    printf("Среднее время ожидания = %.2f", avewait);
    printf("\n");
    printf("Среднее время выполнения = %.2f", aveobr);
    _getch();
}
Добавлено через 5 минут
Если кто-то забыл об этом алгоритме, но знает как реализовать, НО забыл немножечко о нем, вот ссылка, где про него хорошо написано на сайте Intuit.ru
http://www.intuit.ru/department/os/osintro/3/3.html
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2012, 13:20     Алгоритм планирования Round Robin с квантом времени (переделать программу)
Посмотрите здесь:

Помогите алгоритм для char переделать в алгоритм для float C++
Алгоритм планирования процессов First-Come, First-Served (FCFS) C++
Round Robin C++
Круговое планирование с фиксированным квантом времени C++
C++ Объяснить программу (Алгоритм планирования, Планировщик)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mokojumbot
19.12.2012, 13:23
  #2

Не по теме:

а чего у вас и printf и cout .. ?)

Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 425
19.12.2012, 13:49  [ТС]     Алгоритм планирования Round Robin с квантом времени (переделать программу) #3
Да я этот код не сам писал, так и было, да и какая разница))
kirya
-9 / 2 / 0
Регистрация: 01.06.2012
Сообщений: 87
20.12.2012, 12:14     Алгоритм планирования Round Robin с квантом времени (переделать программу) #4
Столкнулся с такой же проблемой, подскажите...

Добавлено через 21 час 31 минуту
А в ответ тишина....
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 425
21.12.2012, 09:02  [ТС]     Алгоритм планирования Round Robin с квантом времени (переделать программу) #5
Люди, подскажите, может у кого код есть на подобие этого задания???
kirya
-9 / 2 / 0
Регистрация: 01.06.2012
Сообщений: 87
21.12.2012, 12:06     Алгоритм планирования Round Robin с квантом времени (переделать программу) #6
Неужели никто не проходил это
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2014, 16:13     Алгоритм планирования Round Robin с квантом времени (переделать программу)
Еще ссылки по теме:

Фиксированный квант времени в алгоритме планирования FCFS C++
C++ Алгоритм вычисления времени
C++ Переделать алгоритм (перевод чисел в двоичную систему счислению)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Rauan
0 / 0 / 0
Регистрация: 05.12.2013
Сообщений: 68
02.02.2014, 16:13     Алгоритм планирования Round Robin с квантом времени (переделать программу) #7
Моя версия программы. Если есть ошибки подредактируйте:

Добавлено через 32 секунды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include<iostream.h>
#include<stdlib.h>
int main()
{
int st[10], bt[10], wt[10], tat[10], n, tq; /* âðåìÿ âûïîëГ*ГҐГ*ГЁГї, îæèäГ*Г*ГЁГї, âûïîëГ*ГҐГ*ГЁГї, êîëè÷åñòâî ïðîöåññîâ, ГЄГўГ*Г*ГІ âðåìåГ*ГЁ*/
int i, count=0, swt=0, stat=0, temp, sq=0; /* ïåðåìåГ*Г*ûå äëÿ âûïîëГ*ГҐГ*ГЁГї ïðîãðГ*ììû*/
float awt=0.0, atat=0.0; /* îáùåå âðåìÿ îæèäГ*Г*ГЁГї ГЁ âûïîëГ*ГҐГ*ГЁГї*/
cout<<"Vvedite kolichestvo processov: ";
cin>>n; /* Ââåäèòå êîëè÷åñòâî ïðîöåññîâ*/
for(i=0; i<n;i++) /* Г–ГЁГЄГ« Г°Г*Г*äîìГ*Г® Г¤Г*ГҐГІ Г§Г*Г*Г·ГҐГ*ГЁГї âðåìåГ*ГЁ âûïîГ*ГҐГ*ГЁГї*/
{
bt[i]=rand()%15;
st[i]=bt[i];
}
cout<<"Vvedite kvant vremeni: "; /* Ââîäèì ГЄГўГ*Г*ГІ âðåìåГ*ГЁ*/
cin>>tq; 
while(1) /* Г–ГЁГЄГ« ñîçäГ*ГҐГІ î÷åðåäü Гў êîòîðîì ГЄГ*æäûé ïðîöåññ áóäåò èñïîëüçîâГ*ГІГј Г–ГЏГ“ âðåìÿ îïðåäåëåГ*Г*îå ГЄГўГ*Г*òîì âðåìåГ*ГЁ*/
{
for(i=0, count=0;i<n;i++) /* Г–ГЁГЄГ« äëÿ îïðåäåëåГ*ГЁГї Г*îìåðГ* ïðîöåññГ**/
{
temp=tq;  
if(st[i]==0) /* Åñëè âðåìÿ âûïîГ*ГҐГ*ГЁГї Г°Г*ГўГ*Г® Г*óëþ ïåðåõîäèì ГЄ ñëåä. ïðîöåññó*/
{
count++; 
continue;
}
if(st[i]>tq) /* Åñëè âðåìÿ âûïîëГ*ГҐГ*ГЁГї áîëüøå ГЄГўГ*Г*ГІГ* âðåìåГ*ГЁ, ГІГ® ó÷èòûâГ*ГҐГ¬ ГЄГўГ*Г*ГІ âðåìåГ*ГЁ îò âðåìåГ*ГЁ âûïîëГ*ГҐГ*ГЁГї*/
{
st[i]=st[i]-tq;
}
else
if (st[i]>=0) 
{
temp=st[i];
st[i]=0;
}
sq=sq+temp; /* Âðåìÿ îáîðîòГ**/
tat[i]=sq; /* Âðåìÿ îæèäГ*Г*ГЁГї*/
}
if(n==count) /* Åñëè êîëè÷åñòâî ïðîöåññîâ Г§Г*ГЄГ®Г*Г·ГЁГІГјГ±Гї, ГІГ® öèêë Г§Г*ГЄГ®Г*Г·ГЁГІГјГ±Гї*/
break; 
} /* Çäåñü ГЄГ®Г*ГҐГ¶ öèêëГ**/
for(i=0;i<n;i++) /* Ýòîò öèêë Г*Г*õîäèò îáùåå âðåìÿ îæèäГ*Г*ГЁГї ГЁ âûïîëГ*ГҐГ*ГЁГї*/
{
wt[i]=tat[i]-bt[i];
swt=swt+wt[i];
stat=stat+tat[i];
}
awt=(float)swt/n;
atat=(float)stat/n;
/* Âûâîäèì ïîëó÷åГ*Г*ûå Г¤Г*Г*Г*ûå Г*Г* ГЅГЄГ°Г*Г* ГЄГ®Г*ñîëè*/
cout<<endl<<"Process        CPU burst       Wait        Oborot";
/* Íîìåð ïðîöåññГ*,Âðåìÿ âûïîëГ*ГҐГ*ГЁГї(ñåðâèñГ*),Âðåìÿ îæèäГ*Г*ГЁГї,Âðåìÿ îáîðîòГ**/
cout<<endl;
cout<<endl;
for(i=0; i<n; i++)
{
cout<<i+1<<"\t\t"<<bt[i]<<"\t\t\t"<<wt[i]<<"\t\t"<<tat[i];
cout<<endl;
}
cout<<endl<<"Srednee vremya ojidaniya="<<awt; /*ГЋГЎГ№ГҐГҐ âðåìÿ îæèäГ*Г*ГЁГї*/
cout<<endl<<"Srednee polnoe vremya vypolnenia="<<atat;/*ГЋГЎГ№ГҐГҐ âðåìÿ âûïîëГ*ГҐГ*ГЁГї*/
cin.get();
return 0;}
Добавлено через 1 минуту
И если вам помогло. Можете нажать "спасибо". :-)
Yandex
Объявления
02.02.2014, 16:13     Алгоритм планирования Round Robin с квантом времени (переделать программу)
Ответ Создать тему
Опции темы

Текущее время: 08:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru