Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Mindsurfer
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 15
1

Программа, имитирующая память компьютера, как завершить?

27.12.2012, 10:34. Просмотров 488. Ответов 3
Метки нет (Все метки)

Жутко нужна программа, которая имитирует память компьютера, ниже представлен код, ошибок нет, но надо завершить его. Программа имитирует заполнение физической памяти (a[10]), заполняя пустое место (нули), выполняемыми процессами (единицы). Имеется 10 ячеек, и 4 процесса(p[1-4]), которые требуют место по 3 ячейки на каждый(p[i].mem). Первые 3 процесса нормально помещаются в 9 ячеек физической памяти, а вот для четвертого процесса осталась одна ячейка, хотя нужны 3. Следовательно нужно заполнить этот процесс в виртуальную память (отдельный динамический массив *b[10]). Также, у каждого процесса есть время выполнения (p[i].time), и если процесс выполнится, то он должен выгрузиться из памяти, то есть единицы должны заменяться на 0.
Ниже дан код, в котором идет заполнение только физической памяти и без учета времени выполнения процесса.
Пожалуйста дополните его до полноценной описанной выше программы! Крайней степени нужно!

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
65
66
67
68
69
70
71
72
#include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "stdlib.h"
#include "time.h"
 
int a[10];
int *b[10];
int t[5];
 
struct proc
{
    int mem;
    int time;
};
 
void main()
{
    int poz=0;
    int empty=0;
    setlocale(LC_ALL, "rus");
    proc p[4];
    srand(time(NULL));
 
    t[0]=0;
    t[1]=1;
 
    for (int i=0; i<4;i++)
    {
        p[i].mem=3;
        p[i].time=rand()%10+1;
    }
 
    printf("t0 = 0  ");
    for (int i=0; i<10; i++)
    {
        a[i]=0;
        printf("%d ", a[i]);
    }
    printf("\n");
    for (int i=1; i<=4; i++)
    {
        if (i==1) 
        { 
            printf("t%d = %d  ",i,i);
            for (int j=0;j<p[i].mem;j++)
                a[j]=1;
            for (int k=0; k<10; k++)
                printf("%d ", a[k]);
            printf("\n");
            poz=poz+p[i].mem;
        }
        else
        {
            t[i]=t[i-1]+p[i-1].time;
            printf("t%d = %d  ", i, t[i]);
            for (int j=poz;j<p[i].mem+poz;j++)
                a[j]=1;
            for (int k=0; k<10; k++)
                printf("%d ", a[k]);
            printf("\n");
            poz=poz+p[i].mem;
            for (int w=0;w<10;w++)
            {
                if (a[w]==0) empty=empty+1;
            } 
            if (empty<3) i=5;
            }
        }
    
    _getch();
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2012, 10:34
Ответы с готовыми решениями:

Программа, имитирующая файловую систему
Создать программу, которая будет имитировать файловую систему. Как это сделать?...

Программа, имитирующая реализацию элементов метода защиты информации RSA
Программеры, выручайте! Нужно разработать программу, имитирующую реализацию...

Программа, имитирующая игру в "Кости"
Написать программу, которая имитирует игру в кости. Игроки (2 человека) кидают...

Память компьютера
Добрый вечер. Можете ли по подробнее рассказать о памяти компьютера? Как...

Можно ли как-то узнать, что программа была перенесена с одного компьютера на другой
нужно это для того, чтобы программа работала только на доверенных компьютерах....

3
Alexandr1966
28 / 28 / 2
Регистрация: 17.12.2012
Сообщений: 493
27.12.2012, 13:22 2
Друзья, реально очень надо, подскажите...

Добавлено через 1 час 46 минут
программу нужно запустить в VS 2008 в консольном приложении
0
Kastaneda
Jesus loves me
Эксперт С++
4945 / 3022 / 346
Регистрация: 12.12.2009
Сообщений: 7,624
Записей в блоге: 2
Завершенные тесты: 1
27.12.2012, 13:50 3
Парни, у вас ведь даже не просто программерская специальность, а какая-то системная, т.к. на просто программерсой таких вещей не дают (ну нам не давали). Это ведь основы для системщика - язык С и понимание организации памяти, может сами попробуете дописать?
Если будете обращатся с конкретными вопросами, то у вас больше шансов получить помощь, чем просто "допишите за меня".
0
Alexandr1966
28 / 28 / 2
Регистрация: 17.12.2012
Сообщений: 493
27.12.2012, 17:08 4
Ну здесь в принципе конкретно вопросы заданы, как, скажем, ДОреализовать эту прогу ))

Добавлено через 2 часа 29 минут
и всего лишь то)))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2012, 17:08

Как завершить поток
Как завершить поток, начатый _beginthread( Thread, 0, NULL );

Как завершить цикл?
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; using namespace...

Как корректно завершить COM порт?
Здравствуйте. Пишу программу на С++ CLR для считывания с устройства пакетов...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru