|
|
||
Дискуссия о распределении памяти в ОС11.02.2021, 01:09. Показов 14650. Ответов 132
Метки нет (Все метки)
Нужно 2793 ГБ. У вас установлено столько в компе?
0
|
||
| 11.02.2021, 01:09 | |
|
Ответы с готовыми решениями:
132
Работа со стеком на последовательном распределении памяти Реализация стека на массиве и динамическом распределении памяти Реализовать процедуры работы со стеком на последовательном распределении памяти |
|
Модератор
|
||||
| 12.02.2021, 23:00 | ||||
|
Quiet Snow, это просто пример того что процесс может выделить памяти сколько ему нужно и работать с ней не смотря на то сколько у него установлено RAM. Тут нет никаких оптимизаций вообще, тут тупо массив от нулевого элемента и до конца забивается данными, т.е. когда физическая память кончается то система сначала одну страницу (4КБ) записывает в файл, а другую (4КБ) читает. По уму нужно делать это бОльшими регионами - это повысит быстродействие, но чудес не будет и все будет ограничено скоростью доступа к файлу.
1
|
||||
|
|
|||
| 12.02.2021, 23:04 | |||
![]() Уж извини, но это вообще не то, о чем я тут пишу. Смотри, ты пишешь : Но выделить память напрямую у тебя не вышло, вот так: Dim a(327680, 327680) As Byte не 2ТБ, а всего 100ГБ. Не умеет так Винда. И ты решил схитрить, создал принудительно swap файл на моём HDD swap.map ![]() Но вот облом, я запустил exe на диске, а там нету 100ГБ в наличии. А я писал выше, что виртуальная память не берётся с Луны, она должна физически присутствовать в компьютере! И чуда не вышло, израсходовав всю оперативку, ровно 16 ГБ, комп основательно затормозил, да так, что еле удалось вырубить через диспетчер задач.
1
|
|||
|
Модератор
|
||||||||||
| 12.02.2021, 23:26 | ||||||||||
ты читал что в мсдн написано? Будешь спорить с ними. Ок, я переубеждать не стану.
1
|
||||||||||
|
Кормпилятор
|
||||
| 13.02.2021, 00:09 | ||||
|
реально сжирали бы даже 4 Гб, т.е. лимит 32 битной системы. Ну т.е. сделать то это легко можно, но так чтобы этого требовала задача - такого не было. Хотя чисто теоретичеки можно было бы табличными оптимизациями занять неестественное пространство, но это нерациональный расход, пользователи за такое покусают. Ну кстати согласись, у нас мало народу, кто сможет так лаконично объяснить про такие глубокие вопросы, и не просто объяснить, а ещё и код показать. Так что Анатолию респект однозначно. Вот никогда особо не задумывался об этом, но профи так или иначе лезут в эти аспекты, колупают. По сути же это всё сделано для просто нормального управления памятью, т.е. назначать программам корректно свободные куски, не таская их туда сюда(это бы сильно замедлило процессы выделения и уничтожения памяти и требовало бы остановки всех процессов). Добавлено через 14 минут Т.е. своя архитектура под задачу. Она не даст, конечно, обратиться ко всему этому пространству, как файл маппинг, но если этого и не требуется - отработает значительно быстрее.
1
|
||||
|
COM‐пропагандист
|
|
| 13.02.2021, 00:32 | |
|
0
|
|
|
Кормпилятор
|
|||||||
| 13.02.2021, 00:35 | |||||||
|
И там где-то внизу зиждятся серверные винды, скромненько, со своими 24 терабайтами.
0
|
|||||||
|
|
||||
| 13.02.2021, 08:06 | ||||
![]() Пример хороший, спору нет. Но это он реализован в коде, вот когда Винда сможет без всяких бубнов просто выполнить этот код Dim a(327680, 327680) As Byte при недостатке физической оперативки, тогда да, я подниму руки вверх, скажу сдаюсь! А написать руками что угодно можно, особенно такому монстру как тебе. Я вообще удивился, что ты это не на VB6 написал, я был почти уверен, что сможешь
1
|
||||
|
COM‐пропагандист
|
||
| 13.02.2021, 08:19 | ||
|
0
|
||
|
|
||
| 13.02.2021, 08:42 | ||
|
0
|
||
|
COM‐пропагандист
|
|
| 13.02.2021, 09:10 | |
|
Вам дали указатель на область памяти. Вам есть разница каким образом этот указатель получен? Или вам конкретно нужно получить объект типа SafeArray, именно так в потрохах VB6 устроены массивы?
Добавлено через 15 минут Если SafeArray, то количество элементов упирается в 32‐битное целое, такой массив не может занимать больше четырёх гигабайт.
0
|
|
|
|
||||||||
| 13.02.2021, 09:43 | ||||||||
|
Утверждение: 2ТБ это максимальная оперативка в win10 pro. Иными словами The trick утверждает, что Винда сама может выделить память приложению столько, сколько оно запросит, если даже это будет больше, чем наличии оперативной памяти. Я прошу написать на любом ЯП эквивалент кода:
Ваш выход! FreeBasic x64 существует же? Пусть Винда сама выделит память под массив такого размера.
0
|
||||||||
|
COM‐пропагандист
|
||
| 13.02.2021, 09:53 | ||
|
0
|
||
|
Модератор
|
|||||||
| 13.02.2021, 10:03 | |||||||
|
0
|
|||||||
|
Модератор
|
||||||||
| 13.02.2021, 10:07 | ||||||||
0
|
||||||||
|
|
|||||||
| 13.02.2021, 10:31 | |||||||
|
И твой подход можно тупо заменить на файл с произвольным доступом. Без всяких танцев со swap.map, читать любые данные из файла и писать в файл. Даже массив не нужно создавать. А DIM это другое. Это Винда сама берёт, и автоматически выделяет память для массива. Мы больше ни чего не пишем в коде. Только DIM. Разницу видишь? просто скомпилировать 1 строчу
0
|
|||||||
|
Модератор
|
||||
| 13.02.2021, 10:41 | ||||
|
0
|
||||
|
COM‐пропагандист
|
||
| 13.02.2021, 11:02 | ||
|
Потому что указатель, возвращённый MapViewOfFile — это настоящий указатель на память и его можно отправлять в любую функцию где требуется указатель, например, во всякие винапи. Выполнять по этому указателю Placement New, таким образом создавать объекты. А с файлом что? Как HANDLE можно передать в функцию требующую указатель? Как на HANDLE можно создать объект?
0
|
||
|
|
||
| 13.02.2021, 11:11 | ||
|
Тупо выделить память под массив, которая больше оперативки. Но не силами самого приложения, как у The trick, а это должна сделать Винда сама. Вот такая простая задача.
0
|
||
|
Модератор
|
|
| 13.02.2021, 11:18 | |
|
Замабувараев, более того он не сможет с файлом разименовать указатель, а любой доступ ему придётся оборачивать в ReadFile/WriteFile/SetFilePointerEx. Я уже молчу о скорости при таком подходе.
Добавлено через 6 минут Pro_grammer, что задачи теперь на ходу будем придумывать? Вот тебе простое решение - создай файл подкачки на 200гб и включи его, если тебя не устраивает чем то внешний файл подкачки. И все функции винды подхватят его и будут работать как ты хочешь. Только зачем это нужно, если и так уже удалось выделить виртуальной памяти больше чем оперативной хотя ты говорил что это невозможно. Я прекрасно понимаю почему ты так сказал, а теперь изворачиваешься, но тут не дураки сидят. Извини мб грубо, но так и есть.
0
|
|
|
COM‐пропагандист
|
|||||||
| 13.02.2021, 11:25 | |||||||
0
|
|||||||
| 13.02.2021, 11:25 | |
|
Помогаю со студенческими работами здесь
40
Реализовать процедуры работы со стеком на последовательном распределении памяти
Стек: Реализовать процедуры работы со стеком на последовательном распределении памяти
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|