Даниил Смирнов: ну мне нужно одновременное чтение из разных участков памяти и разной частоты. У меня там целых три рабочих частоты понадобились. На за неимением такой возможности пришлось упираться в автомат с двухпортовой памятью. Анализ RTL на Xilinx показывает, что теоретически это возможно. Так однопортовая память занимает один блок, а двухпортовая - уже два блока.
Станислав Силин: обязательно почитаю про MVVM.
Не передаются значения из полей в статусбар. Для первого варианта сработало вроде как. Но только весь UserControl (Panel Content) отправился StatusBarItem.
Что-то не получается. Ни первый, ни второй. Panel - это у меня UserControl. А там, соответственно, содержатся два необходимых мне строковых поля, test_1 и test_2.
beduin01: ну я не программирую на C++. Программирую на C#. Но применение его зависит от конкретных задач. Аллокаторы могут понадобиться там, где стандартные инструменты пасуют. Для обработки больших данных. Например, для кодирования и декодирования видео лучше выделить конкретные участки памяти. Или создание кучи.
beduin01: страницы и есть виртуальная память. Без страниц мы бы не смогли обеспечить многозадачность операционных систем, приложений и прочее. Сегментная организация практически не используется. Он использовался во времена MS DOS, где ограничение памяти из-за разрядности процессора было проблемой (16-разрядные процессоры по факту не могли обращаться к памяти более 64 кБ, но Intel нашла альтернативный путь за счёт сегментов нарастить до 1 МБ, из которых пользователю выделяются те самые знаменитые 640 кБ). В настоящее время используется только один сегмент для виртуализации (виртуальные машины). Остальные сегменты убрали полностью в 64-разрядных процессорах. А на 32-разрядных ещё можно встретить. Но большинство компиляторов тупо совмещают сегмент кода, данных и стека в одной плоскости памяти, чтобы не заморачиваться проблемой переноса программы на альтернативную архитектуру. Например: ARM. Ибо сегментная модель памяти - прерогатива x86. Сегментная модель памяти - это тоже виртуальная память, но очень геморройная в плане фрагментации (придётся смещать чуть ли не весь огромный кусок побайтно области памяти, и это делать нужно чуть ли не на каждом этапе). Поэтому отдали предпочтение страничной памяти (там не нужно ничего перемещать, достаточно изменить в таблице преобразования адресов значение, что конкретный кусок в памяти находится по новому адресу, но физически остаётся на месте).
Аллокаторы нужны для выделения памяти под свои нужды и задачи. Задаёшь размер памяти, а процессор его разбивает на страницы, если выделяется довольно большой участок памяти, или одну страницу, если аллокатор просит выделить участок памяти меньше страницы.
beduin01: да, именно так. Когда создаётся какой-нибудь объект, куча, стек и прочее, динамически создаётся новая(ые) страница(ы) под их нужды. Когда завершается любая работа с ними, страница(ы) просто удаляется(ются) сборщиком мусора или деструктором в конкретных языках. Всё остальное уже делает процессор. Страницы позволяют гибко работать с памятью без серьёзных потерь производительности. Например. Создали мы три объекта размером 3, 1 и 5 страниц. Один объект размера одной страницы удалили. Создали новый объект из семи страниц. Вот одна страница разместится на освобождённой странице, а оставшиеся страницы разместятся в другой области памяти. А трансляция адресов позволяет обращаться к ним к равной степени производительности. Даже переписывать код программы не надо, процессор об этом позаботится. Вот так и решили проблему с фрагментацией памяти.
Dark Hole: ну я программирую аж на пиратской семёрке. Именно VSC 2015. Правда, обновления для системы я отключил давно. Ибо они для пиратской версии ни к чему. Только больше троянцев от Microsoft можно получить в виде блокировок и прочее. Но в любом случае вариант MSDN самый предпочтительный и свободный от любых сюрпризов.
Nastyuuuushka: на пиратскую установить возможно (у меня же стоит на пиратской версии). Но это уже зависит от самой сборки. Если в стандартной сборке ничего не меняли (только активировали, и всё), то работать будет нормально. А если там всякие сборки со всевозможными изменениями в духе Zver и прочее, то не могу гарантировать работоспособность какой-либо программы. Ну семёрка и восьмёрка и так уже разные системы и разные сборки.
Anna Ivanova: при глубоких ветвлениях никакой компилятор не сможет оптимизировать. Ветвление - это исключительно последовательное выполнение с переходами по адресам с последующей загрузкой кода в кэш-память. А самое медленное в процессоре - это переходы и деление. И нельзя слепо доверять компилятору. В любой момент он выдаст неоднозначный код, где процессор может и не переварить.