Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/55: Рейтинг темы: голосов - 55, средняя оценка - 4.58
Эксперт по электронике
6791 / 3218 / 335
Регистрация: 28.10.2011
Сообщений: 12,567
Записей в блоге: 7

Дискуссия о распределении памяти в ОС

11.02.2021, 01:09. Показов 13935. Ответов 132
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Замабувараев Посмотреть сообщение
Картинку можно будет взять хоть миллион на миллион пикселей
Умножьте миллион на миллион и на 3. Узнаете сколько нужно памяти для хранения данных картинки.
Нужно 2793 ГБ. У вас установлено столько в компе?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2021, 01:09
Ответы с готовыми решениями:

Работа со стеком на последовательном распределении памяти
1. Создание пустого стека 2. Добавление элемента на вершину стека 3. Удаление элемента с вершины стека Работу программы...

Реализация стека на массиве и динамическом распределении памяти
всем привет, дано такое задание: Используя стек, решить следующую задачу. Напечатать каждое слово текстового файла Т в обратном...

Реализовать процедуры работы со стеком на последовательном распределении памяти
Помогите кто может. Задание 1. На языке программирования Pascal реализовать процедуры работы со стеком на последовательном...

132
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
11.02.2021, 07:10
Цитата Сообщение от locm Посмотреть сообщение
У вас установлено столько в компе?
Не установлено. Но можно установить и программа будет работать.
И не обязательно всю картинку хранить в памяти, файл может лежать на диске и отображаться кусочно.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
11.02.2021, 09:09
Цитата Сообщение от Замабувараев Посмотреть сообщение
Не установлено. Но можно установить
Максимально Вин 10 x64 поддерживает 2048 ГБ оперативки, более старые версии и того меньше.
Нужно для этого DDR4 планка на 128 ГБ. и 16 слотов на материнке.
0
11.02.2021, 13:19  [ТС]

Не по теме:

Цитата Сообщение от Замабувараев Посмотреть сообщение
Но можно установить и программа будет работать.
Думаете сейчас есть системная плата поддерживающая 2793 ГБ ОЗУ? Даже если предположить что есть, при объеме модуля памяти 16 ГБ, нужно 174 модуля.
Я уже молчу о том сколько будет стоить такой комп.

0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
11.02.2021, 18:17
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Максимально Вин 10 x64 поддерживает 2048 ГБ оперативки, более старые версии и того меньше.
Нужно для этого DDR4 планка на 128 ГБ. и 16 слотов на материнке.
Ну вообще-то приложения работающие под виндой используют виртуальную память, а не физическую. Лимиты виртуальной памяти намного больше чем 2 ТБ на Win10.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
11.02.2021, 20:40
Цитата Сообщение от The trick Посмотреть сообщение
Ну вообще-то приложения работающие под виндой используют виртуальную память, а не физическую.
А если виртуальная отключена совсем?
Цитата Сообщение от The trick Посмотреть сообщение
имиты виртуальной памяти намного больше чем 2 ТБ на Win10.
Где про это можно прочитать?
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
11.02.2021, 20:41
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Где про это можно прочитать?
У Руссиновича.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
11.02.2021, 20:48
Цитата Сообщение от Pro_grammer Посмотреть сообщение
А если виртуальная отключена совсем?
Что? Прикладным программам доступна только виртуальная память, с физической памятью они не работают напрямую.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Где про это можно прочитать?
https://docs.microsoft.com/en-... s-releases
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
11.02.2021, 22:36
Цитата Сообщение от The trick Посмотреть сообщение
Что? Прикладным программам доступна только виртуальная память, с физической памятью они не работают напрямую.
Не надо путать теплое с мягким. Что такое виртуальная память, про которую ты пишешь? Где она находится физически, не на Луне? Есть жесткий диск, есть оперативка. Вот и вся физика. Если виртуальная память, а именно файл подкачки отключен, то остаётся только оперативка. Вот её максимально в win 10 PRO может быть 2ТБ, в домашней вообще мизер - 128 GB.
Откуда взялось твоё утверждение, вот это:
Цитата Сообщение от The trick Посмотреть сообщение
Лимиты виртуальной памяти намного больше чем 2 ТБ на Win10.
1
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
12.02.2021, 01:43
Да в своё время инжи придумали знатный рудимент, т.н. страницы виртуальной памяти,
которые отображаются в физическую или чалятся на жёстком диске до востребования.
Всё это есть механизм использования т.н. защищённого режима.
В общем то они нужны для консолидации физической памяти. Без такой штуки нормальное
управление памятью было бы невозможно. Однако файл подкачки - это конечно дикое зло.
Все помнят страшные тормоза Win95\98 первых пеньков, когда память была близка к заполнению
и врубался файл подкачки. Страшная штука, адски медленные диски начинало колбасить,
т.к. по мере загрузки и выгрузки страниц памяти они ещё что-то подгружали, головки шли
в расколбас и юзер мог минут 5 ждать завершения простой писюлечной операции)))
Сейчас, благо, при объёмах в 16\32 Гб эту штуку можно смело отключать.
В целом же такие огромные объёмы памяти, обсуждаемые тут, нам ещё пока что не грозят.
А уж ставить такое дело, чтобы гех поигрался с кружочками - ну как бы безумие.

Добавлено через 13 минут
Как-то так:
https://www.compuram.de/blog/e... g-systems/
Больше не получится адресовать.
А вот про MAC OS с его 18 экзабайтами пруфы чую получим не скоро.)))
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
12.02.2021, 14:38
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Не надо путать теплое с мягким.
Я ничего не путаю. Это ты что-то путаешь иначе как это понимать:
Цитата Сообщение от Pro_grammer Посмотреть сообщение
А если виртуальная отключена совсем?
? Отключить можно файл подкачки, а не виртуальную память. Твои прикладные программы в подавляющем большинстве всегда работают с виртуальной памятью.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Если виртуальная память, а именно файл подкачки отключен
Это не одно и тоже. Во-вторых то что файл подкачки может быть отключен ничего не меняет. Вот к примеру у меня отключен файл подкачки, оперативной памяти 14ГБ всего. Вопрос как я смог выделить 100ГБ памяти если Pro_grammer утверждает что с отключенным файлом подкачки это невозможно?


Цитата Сообщение от Pro_grammer Посмотреть сообщение
Вот её максимально в win 10 PRO может быть 2ТБ, в домашней вообще мизер - 128 GB.
Не зря тебе Замабувараев написал чтобы ты почитал Руссиновича. Про оперативную память я тебе вообще ничего не говорил, я говорил про виртуальную память.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Откуда взялось твоё утверждение, вот это:
Я уже скинул ссылку. Там есть секция Memory and Address Space Limits, читать до просветления.
1
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
12.02.2021, 17:14
Цитата Сообщение от The trick Посмотреть сообщение
я говорил про виртуальную память.
А я тебя спрашивал, где она находится физически? Любая память, в которой хранятся реальные данные должна быть материальна, хоть как её назови. Виртуальная память - это комбинация физической памяти и файла подкачки.
если нет файла подкачки, то она не может быть больше оперативки. Не откуда ей взяться физически.

Цитата Сообщение от The trick Посмотреть сообщение
Вопрос как я смог выделить 100ГБ памяти
Не знаю. Я думаю это фейк или заблуждение твоё.
Лично я при 16 Гиг оперативки смог выделить только 14 гигов на двумерный массив. Больше - прога сразу вылетает с ошибкой, что нет памяти. При этом 2 гига было занято уже системой. Так что у меня всё копейка в копейку.
Скинь мне этот экзешник, я посмотрю, сколько он занимает памяти при работе. Посмотрю на твою чудо-программу
1
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
12.02.2021, 17:25
Цитата Сообщение от Pro_grammer Посмотреть сообщение
сколько он занимает памяти при работе
На какие конкретно цифры вы будете смотреть: Private Bytes, Virtual Size, Working Set?

Добавлено через 3 минуты
И что покажут цифры, если сделать VirtualAlloc с MEM_RESERVE, но без MEM_COMMIT?
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
12.02.2021, 17:39
Цитата Сообщение от Pro_grammer Посмотреть сообщение
А я тебя спрашивал, где она находится физически? Любая память, в которой хранятся реальные данные должна быть материальна, хоть как её назови. Виртуальная память - это комбинация физической памяти и файла подкачки.
если нет файла подкачки, то она не может быть больше оперативки. Не откуда ей взяться физически.
Нет. Я изначально написал про лимиты виртуальной памяти, и что не важно сколько у тебя оперативной памяти на что ты написал что она может быть отключена. Но это не так, для прикладных приложений под Windows она неотключаема, т.к. процессор работает в защищеном режиме, и чтобы отключить ее нужно переключать процессор в реальный режим.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Не знаю. Я думаю это фейк или заблуждение твоё.
Просто это твое незнание того как работает виртуальная память. https://docs.microsoft.com/en-... orking-set
A hard page fault must be resolved by reading page contents from the page's backing store, which is either the system paging file or a memory-mapped file created by the process.
Так я просто создал 100ГБ файл на диске и система отобразила мне его в виртуальное адресное пространство. Работа с этой памятью для меня прозрачна и не зависит от того сколько оперативной памяти у меня установлено и включен ли файл подкачки. По сути это и есть файл подкачки только мой собственный.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
12.02.2021, 17:53
Цитата Сообщение от The trick Посмотреть сообщение
Так я просто создал 100ГБ файл на диске и система отобразила мне его в виртуальное адресное пространство.
Так он и так уже на диске? Тупо тебе показали виртуальную адресацию
Это фигня. Ты вот выдели под массив 100ГБ и заполни его единицами. Вот и посмотрим, как он запишется в виртуальную память.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
12.02.2021, 17:57
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Это фигня. Ты вот выдели под массив 100ГБ и заполни его единицами. Вот и посмотрим, как он запишется в виртуальную память.
Что? Это файл-отображенный в память и он работает почти также как и файл подкачки.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Ты вот выдели под массив 100ГБ и заполни его единицами. Вот и посмотрим, как он запишется в виртуальную память.
И что помешает мне это сделать?
Давай я сделаю такой пример, но как ты будешь контролировать это? Опиши мне, а я сделаю пример для тебе где в 100ГБ адресное пространство запишу единицы.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
12.02.2021, 19:57
Цитата Сообщение от The trick Посмотреть сообщение
Давай я сделаю такой пример, но как ты будешь контролировать это?
Смысл кода такой:
Visual Basic
1
2
3
4
5
6
7
8
Dim a(327680, 327680) As Byte
For i = 0 To 327680
    For j = 0 To 327680
        a(i, j) = Int(Rnd() * 250)
    Next
Next
MsgBox a(10, 10)
MsgBox a(327680, 327680)
100 Гигабайт = 107374182400 Байт = 327680 х 327680
ЯП любой, мне без разницы, x64 возьми компилятор, для верности
Компилируешь, выкладываешь exe. Я запускаю, смотрю сколько памяти кушает приложение в Process Explorer.
1
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
12.02.2021, 21:24
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Компилируешь, выкладываешь exe. Я запускаю, смотрю сколько памяти кушает приложение в Process Explorer.
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <Windows.h>
#include <stdio.h>
 
WCHAR GetDriveWithMaxFreeSpace(ULARGE_INTEGER *pTotalAvailable);
 
int main() {
    ULARGE_INTEGER uMaxAvailable;
    LARGE_INTEGER szSwapSize;
    WCHAR chDrive,
          pszSwapFile[] = L"A:\\swap.map";
    HANDLE hFile = NULL,
           hMap = NULL;
    PBYTE pbData = NULL;
    int iRet = 0;
 
    if ((chDrive = GetDriveWithMaxFreeSpace(&uMaxAvailable)) == NULL) {
        printf("Unable to get drive\r\n"); iRet = 1;
        goto CleanUp;
    }
 
    pszSwapFile[0] = chDrive;
 
    if ((hFile = CreateFile(pszSwapFile, GENERIC_READ | GENERIC_WRITE, 0, NULL, 
                            CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE) {
        printf("Unable to create swap file\r\n"); iRet = 2;
        goto CleanUp;
    }
    
    if (uMaxAvailable.QuadPart < 0x1900000000) {
 
        szSwapSize.QuadPart = uMaxAvailable.QuadPart;
        printf("Available max %I64u bytes\r\n", szSwapSize.QuadPart);
 
    } else {
        szSwapSize.QuadPart = 0x1900000000;
    }
 
    if (!SetFilePointerEx(hFile, szSwapSize, NULL, FILE_BEGIN)) {
        printf("Unable to set file pointer\r\n"); iRet = 3;
        goto CleanUp;
    }
 
    if (!SetEndOfFile(hFile)) {
        printf("Unable to expand file\r\n"); iRet = 4;
        goto CleanUp;
    }
 
    if ((hMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL)) == NULL) {
        printf("Unable to create file mapping\r\n"); iRet = 5;
        goto CleanUp;
    }
 
 
    if ((pbData = (PBYTE)MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0)) == NULL) {
        printf("Unable to map mapping\r\n"); iRet = 6;
        goto CleanUp;
    }
 
    printf("Memory filling in progress...\r\n");
 
    for (UINT64 i = 0; i < szSwapSize.QuadPart; i++)
        pbData[i] = 1;
    
    printf("Done\r\n");
    getchar();
 
CleanUp:
 
    if (pbData)
        UnmapViewOfFile(pbData);
 
    if (hMap)
        CloseHandle(hMap);
 
    if (hFile)
        CloseHandle(hFile);
 
    return iRet;
}
 
WCHAR GetDriveWithMaxFreeSpace( 
      ULARGE_INTEGER *pTotalAvailable) {
    DWORD dwMask = GetLogicalDrives();
    DWORD dwDrive = 1;
    WCHAR chName = 'A',
          chRet = '\0';
    ULARGE_INTEGER uSize = {0, 0};
    
    while (dwMask) {
        
        if (dwMask & dwDrive) {
 
            WCHAR pszDrive[4] = L"A:\\";
            ULARGE_INTEGER uCurSize;
 
            pszDrive[0] = chName;
 
            if (GetDiskFreeSpaceEx(pszDrive, &uCurSize, NULL, NULL)) {
                if (uCurSize.QuadPart > uSize.QuadPart) {
                    uSize = uCurSize; chRet = chName;
                }
            }
 
            dwMask ^= dwDrive;
 
        }
 
        chName++;
        dwDrive <<= 1;
    
    }
 
    *pTotalAvailable = uSize;
    return chRet;
 
}
Вложения
Тип файла: zip memlimit.zip (2.4 Кб, 12 просмотров)
3
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
12.02.2021, 21:27
Цитата Сообщение от Pro_grammer Посмотреть сообщение
ЯП любой, мне без разницы, x64 возьми компилятор, для верности
Можно и на 32 битах сделать, но придется проверять границы и вручную подгружать страницы.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
12.02.2021, 22:47
Анатолий всё верно расписал и верно показал, через маппинг файл, т.к. файл подкачки может быть меньше.
Выделить можно, да. Но ведь мы все прекрасно понимаем, что когда оператива заканчивается,
нормальной работы за компом уже не будет. Небольшой уход в подкачку обычно не сильно критичен
и можно быстро среагировать закрыть пару софтин. Но глубокий уход в маппинг для софта - это ужас.
К слову сказать Pro_grammer, тоже таки прав, тут в проге маппинг организован руками,
это можно сказать отдельная фича системы, но у большинства пользователей файл подкачки обычно
установлен либо в размер оперативы, либо в половину размера, ну или вообще вырублен.
Это означает что софт на том же бейсике, где идёт выделение обычного массива скорее всего
не даст выделить больше, конечно, не лазил в отладчик не знаю какими функциям там идёт выделение
но что-то подсказывает, что то, которое не подкреплено физической памятью - оно не выделяет,
ну т.е. это очень даже логично.
Т.е. выходит что все эти вещи, если они нужны - нужно делать руками. А если так, то наверное,
собственная реализация с простым открытием файла для своих алгоритмов - будет быстрее,
т.е. загрузить под объём оперативы, обсчитать кусок, выгрузить и т.п., примерно как мы работали
с VESA в реальном режиме или EMS памятью давным давно, кусками.
Хотя Стас, когда пилил редактор HEX-ов уверял, что маппинг файла в память творит чудеса,
говорит там файл в 700Мб читался и обсчитывался его прогой за пару секунд(ну или типа того), точных
цифр не помню, но меня смутило, что гораздо быстрее скорости чтения с обычного диска.
Все мы знаем что линейное чтение со среднего диска ~это обычно около 100 Мб/с. Да есть харды,
где по 200, но они дороже. Поэтому вполне возможно какие-то бенефиты во всём этом есть.
Ну или это магия префетчинга системы, хотя для чистоты эксперимента он перезагружал комп.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.02.2021, 22:47
Помогаю со студенческими работами здесь

Реализовать процедуры работы со стеком на последовательном распределении памяти
На языке программирования Pascal реализовать процедуры работы со стеком на последовательном распределении памяти: - Создание пустого...

Реализовать процедуры работы со стеком на последовательном распределении памяти
Ребят, нужна помощь!!! Так вот, у меня проблема! всегда пишет что стек переполнен, а из файла просто стирает всю инфу. НЕ разбираюсь в...

Ошибка при распределении памяти: realloc(): invalid next size
Добрый день. Написал программу с динамическим массивом. Нужно для него сделать динамическое увеличение памяти, если оно нужно, однако...

Стек: Реализовать процедуры работы со стеком на последовательном распределении памяти
Есть задание 1. На языке программирования C++ реализовать процедуры работы со стеком на последовательном распределении памяти: -...

Стоит ли при динамическом распределении памяти перехватывать возможные ошибки через try/catch?
Здравствуйте. Обращаюсь к опытным. Скажите, стоит ли при каждом динамическом распределении памяти перехватывать возможные ошибки...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru