запускать в отдельной области памяти что это такое
Выполнить
Удаление пункта Выполнить из меню кнопки Пуск
Если вы хотите удалить пункт Выполнить из меню кнопки Пуск, то откройте раздел
HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplоrer
и создайте параметр типа DWORD °NoRun° со значением 1
Флажок «Запустить в отдельной области памяти»
Ключ типа DWORD ·MemCheckBoxInRunDlg·, равный 1 в разделе
HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplоrer
добавляет флажок «Запустить в отдельной области памяти» в диалоговое окно «Запуск программы», который позволяет выполнить 16-разрядные приложения в отдельных виртуальных DOS-машинах
Очистка списка недавно использованных команд
Команда Выполнить содержит список недавно использованных команд (MRU list)
Этот список содержится в разделе
HKCUSoftwareMicrosoftWindowsCurrentVersionExplоrerRunMRU
Параметр °MRUList° содержит строку, определяющую порядок, в котором остальные записи будут появляться в списке. Например, запись «bca» говорит о том, что первым элементом в списке Открыть будет команда с именем b, потом c, а следом a
Сами команды хранятся как строки с оканчивающимися символами 1 в параметрах a, b, c, d и т.д. Всего допускается 26 записей
Для очистки списка нужно заменить параметры °MRUList° и все команды пустой строкой («»), либо отредактируйте по своему вкусу
Читайте также
Как выполнить предварительную разметку веб-документа?
Как выполнить предварительную разметку веб-документа? Как мы уже неоднократно отмечали ранее, начинать работу по созданию веб-страницы рекомендуется с ее предварительной разметки, иначе говоря – с построения предварительной структуры.Проще всего предварительную
Вы не уверены в том, что обещание можно выполнить
Вы не уверены в том, что обещание можно выполнить Даже если конечная цель невозможна, вы можете взять на себя обязательства по выполнению действий, приближающих ее достижение. Более того, проверка достижимости цели может быть одним из таких действий!Вместо того чтобы
Выполнить
Выполнить Удаление пункта Выполнить из меню кнопки ПускЕсли вы хотите удалить пункт Выполнить из меню кнопки Пуск, то откройте разделHKEY_CURRENT_USER SoftwareMicrosoftWindowsCurrentVersionPoliciesExplоrer и создайте параметр NoRun типа DWORD со значением, равным 1, – и пункт Выполнить исчезнет Очистка
Выполнить
Выполнить Удаление пункта Выполнить из меню кнопки ПускЕсли вы хотите удалить пункт Выполнить из меню кнопки Пуск, то откройте раздел HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplоrerи создайте параметр типа DWORD °NoRun° со значением 1 Флажок «Запустить в отдельной области памяти»Ключ типа
Сокрытие пункта Пуск→Выполнить
Сокрытие пункта Пуск?Выполнить Ключ:[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPolicies Explorer] Значение:
Как выполнить сопряжение?
Как выполнить сопряжение? Чтобы два устройства смогли «общаться» по Bluetooth, нужно осуществить их сопряжение. При этом одно устройство должно заявить о своем присутствии, другое предлагает ему установить связь, а затем они обмениваются кодами (ключами) доступа. Если ключи
10 сетевых задач, которые можно выполнить, никуда не залогиниваясь Олег Нечай
10 сетевых задач, которые можно выполнить, никуда не залогиниваясь Олег Нечай Опубликовано 24 апреля 2014 С выявлением очередной опасной сетевой уязвимости (Heartbleed) стало предельно ясно, что никакие логины и пароли не гарантируют нам абсолютной
Файл подкачки. Правильная настройка файла подкачки и его оптимальный размер.
Здравствуйте уважаемые читатели! Сегодня мы открываем цикл статей про оптимизацию компьютера на ОС Windows. Начнем мы с такой штуки как файл подкачки. В этой статье вы найдёте ответы на такие вопросы: Где находится файл подкачки?; Как правильно настроить файл подкачки?; Как задать оптимальный размер файла подкачки для разных объемов оперативной памяти?. Поехали!
Файл подкачки. Терминология.
Файл подкачки (pagefile.sys) — это системный файл на жестком диске (как правило на системном диске) компьютера, который служит как бы дополнением (расширением) к оперативной памяти. Также эту дополнительную память называют виртуальной памятью компьютера.
Виртуальная память — метод управления памятью компьютера для выполнения программ требующих большие объемы оперативной памяти, чем есть реально на компьютере. Недостающую оперативную память такие программы получают из файла подкачки. Другими словами, файл подкачки разгружает оперативную память в периоды её сильной загрузки.
Оперативная память в разы быстрее чем память файла подкачки. Если одновременно запустить несколько приложений в системе, которые потребляют много оперативной памяти, то данные неиспользуемых из них будут выгружены из оперативной памяти в менее быструю виртуальную память. Активные же приложения будут обслуживаться непосредственно оперативной памятью (RAM). Также, если например свернутое приложение развернуть, то данные из виртуальной памяти вновь перейдут в RAM.
Как настроить файл подкачки и изменить его размер?
Грамотная, правильная настройка файла подкачки поможет значительно ускорить работу компьютера. Этим грех было бы не воспользоваться. Где можно его настроить?
До пункта Быстродействие можно дойти также введя команду sysdm.cpl в командной строке Выполнить (командную строку можно открыть нажав WIN+R ).
Для отключения файла подкачки поставьте переключатель в пункт Без файла подкачки.
Размер файла подкачки Windows. Какой правильный?
Конечно, это субъективный взгляд и данные показатели не могут быть абсолютно точными, рекомендуемыми, но на практике именно они давали эффект. Вы можете сами поэкспериментировать и найти лучшее сочетание для вашего компьютера. Тут есть и некоторые примечания.
Правильное расположение файла подкачки. На каком диске включить?
Если у вас на компьютере несколько физических дисков, то устанавливать файл подкачки нужно на наиболее быстром диске. Считается, что файл подкачки делить на 2 части:
При этом система во время работы обращается к наименее загруженному разделу, не трогая первый.
Также рекомендуется, под файл подкачки создавать отдельный раздел, с объёмом памяти равной либо близкой размеру файла подкачки (например 2024мб). Эта хитрость позволяет избавиться от фрагментации данного файла.
Итоги:
Надеюсь приведенные в статье советы помогут вам правильно настроить файл подкачки на вашем компьютере и оптимизирует его работу. Если есть вопросы пишите в комментариях, постараюсь дать на них исчерпывающие ответы.
Управление памятью: Взгляд изнутри
Доброго времени суток!
Хочу представить вашему вниманию перевод статьи Джонатана Барлетта (Jonathan Bartlett), который является техническим директором в компании New Medio. Статья была опубликована 16 ноября 2004 года на сайте ibm.com и посвящена методам управления памятью. Хотя возраст статьи достаточно высок (по меркам IT), информация в ней является фундаментальной и описывает подходы к распределению памяти, их сильные и слабые стороны. Всё это сопровождается «самопальными» реализациями, для лучшего усвоения материала.
Аннотация от автора
Решения, компромиссы и реализации динамического распределения памяти
Получите представление о методах управления памятью, которые доступны Linux разработчикам. Данные методы не ограничиваются языком C, они также применяются и в других языках программирования. Эта статья даёт подробное описание как происходит управление памятью, на примерах ручного подхода (manually), полуавтоматического (semi-manually) с использованием подсчёта ссылок (referencing count) или пула (pooling) и автоматического при помощи сборщика мусора (garbage collection).
Почему возникает необходимость в управлении памятью
Управление памятью одна из наиболее фундаментальных областей в программировании. Во множестве скриптовых языков, вы можете не беспокоится об управлении памятью, но это не делает сей механизм менее значимым. Знания о возможностях вашего менеджера памяти (memory manager) и тонкостях его работы, являются залогом эффективного программирования. В большинстве системных языков, например таких как C/C++, разработчику необходимо самому следить за используемой памятью. Статья повествует о ручных, полуавтоматических и автоматических методах управления памятью.
Было время, когда управления памятью не было большой проблемой. В качестве примера можно вспомнить времена разработки на ассемблере под Apple II. В основном программы запускались не отдельно от ОС, а вместе с ней. Любой участок памяти мог использоваться как системой, так и разработчиком. Не было необходимости в расчёте общего объёма памяти, т.к. она была одинакова для всех компьютеров. Так что требования к памяти были достаточно статичны — необходимо было просто выбрать участок памяти и использовать его.
Физическая и виртуальная память
Для понимая, как происходит выделение в пределах программы, необходимо иметь представление как ОС выделяет память под программу. (прим. переводчика: т.к. программа запускается под конкретной ОС, то именно она решает, сколько памяти выделить под ту или иную программу) Каждый запущенный процесс считает что имеет доступ ко всей физической памяти компьютера. Очевиден тот факт, что одновременно работает множество процессов, и каждый из них не может иметь доступ ко всей памяти. Но что будет если процессам использовать виртуальную память (virtual memory).
В качестве примера, допустим программа обращается к 629-у участку в памяти. Система виртуальной памяти (virtual memory system), не гарантирует что данные хранятся в RAM по адресу 629. Фактически, это может быть даже не RAM — данные могли быть перенесены на диск, если RAM оказалась вся занята. Т.е. в вирт. памяти могут храниться адреса, соответствующие физическому устройству. ОС хранит таблицу соответствий вирт. адресов к физическим (virtual address-to-physical address), чтобы компьютер мог правильно реагировать на запрос по адресу (address requests). Если RAM хранит физические адреса, то ОС будет вынуждена временно приостановить процесс, выгрузить часть данных НА ДИСК (из RAM), подгрузить необходимые данные для работы процесса С ДИСКА и перезапустить процесс. Таким образом, каждый процесс получает своё адресное пространство с которым может оперировать и может получить ещё больше памяти, чем ему было выделила ОС.
В 32-х битных приложениях (архитектура x86), каждый процесс может работать с 4 гигабайтами памяти. На данный момент большинство пользователей не владеют таким объёмом. Даже если используется подкачка (swap), всё равно должно получиться меньше 4 Гб на процесс. Таким образом, когда процесс выгружается в память, ему выделяется определённое пространство. Конец этого участка памяти именуется как system break. За этой границей находится неразмеченная память, т.е. без проекции на диск или RAM. Поэтому когда у процесса заканчивается память (из той, что ему была выделена при загрузке) он должен запросить у ОС больший кусок памяти. (Mapping (от англ. mapping — отражение, проекция ) — это математический термин, означающий соответствие один к одному — т.е. когда по виртуальному адресу хранится другой адрес (адрес на диске), по которому уже хранятся реальные данные)
Как вы можете видеть, простые вызовы brk() или mmap() могут быть использованы для расширения памяти процесса. Дальше по тексту будут использоваться brk() т.к. он является наиболее простым и распространённым инструментом.
Листинг 1: Глобальные переменные для нашего аллокатора
Как упоминалось выше, «край» размеченной памяти (последний действительный адрес) имеет несколько названий — System break или Current break. В большинстве Unix-like систем, для поиска current system break, используется функция sbrk(0). sbrk отодвигает current break на n байт (передаётся в аргументе), после чего current break примет новое значение. Вызов sbrk(0) просто вернёт current system. Напишем код для нашего malloc, который будет искать current break и инициализировать переменные:
Листинг 2: Инициализации Allocator-а
Для правильного управления, необходимо следить за выделяемой и освобождаемой памятью. Необходимо помечать память как “неиспользуемую”, после вызова free() для какого либо участка памяти. Это необходимо для поиска свободной памяти, когда вызывается malloc(). Таким образом, начало каждого участка памяти, которое возвращает malloc() будет будет иметь следующую структуру:
Листинг 3: Структура Memory Control Block
Можно догадаться, что данная структура будет мешать, если вернуть на неё указатель (вызов функции malloc). (прим. переводчика: имеется ввиду, что если указатель установить на начало этой структуры, то при записи в эту память, мы потеряем информацию о том, сколько памяти было выделено) Решается всё достаточно просто — её необходимо скрыть, а именно вернуть указатель на память, которая располагается сразу за этой структурой. Т.е. по факту вернуть указатель на ту область, которая не хранит в себе никакой информации и куда можно “писать” свои данные. Когда происходит вызов free(), в котором передаётся указатель, мы просто отматываем назад некоторое количество байт (а конкретно sizeof(mem_control_block) ), чтобы использовать данные в этой структуре для поиска в дальнейшем.
Для начала поговорим об освобождении памяти, т.к. этот процесс проще чем выделение. Всё что необходимо сделать для освобождения памяти, это взять указатель, переданный в качестве параметра функции free(), переместить его на sizeof(struct mem_control_block) байт назад, и пометить память как свободную. Вот код:
Листинг 4: Освобождение памяти
Как вы можете заметить, в данном примере освобождение происходит за константное время, т.к. имеет очень простую реализацию. С выделением уже немного сложнее. Рассмотрим алгоритм в общих чертах:
Листинг 5: Псевдокод алгоритма работы аллокатора
Вся суть заключается в своего рода “прогулке” по памяти с целью нахождения свободных участков. Взглянем на код:
Листинг 6: Реализация алгоритма работы
Это наш Memory Manager. Теперь его необходимо собрать, для использования в своих программах.
Чтобы построить наш malloc-подобный allocator, нужно набрать следующую команду (мы не затронули такие функции как realloc(), но malloc() и free() являются наиболее значимыми):
Листинг 7: Компиляция
На выходе получим файл malloc.so, который является библиотекой и содержит наш код.
На Unix системах, вы можете использовать свой allocator, вместо системного. Делается это так:
Листинг 8: Заменяем стандартный malloc
LD_PRELOAD это переменная среды окружения (environment variable). Она используется динамическим линковщиком (dynamic linker) для определения символов, которые содержаться в библиотеке, перед тем как эта библиотека будет подгружена каким-либо приложением. Это подчёркивает важность символов в динамических библиотеках. Таким образом, приложения, которые будут создаваться в рамках текущей сессии, будут использовать malloc(), которой мы только что написали. Некоторые приложения не используют malloc(), но это скорее исключение, чем правило. Другие же, которые использую аллокаторы на подобии realloc(), или которые не имеют представления о внутреннем поведении malloc(), скорее всего упадут. Ash shell (ash — это командная оболочка UNIX подобных систем) отлично работает с нашим malloc аллокатором.
Если вы хотите убедиться в том, что используется именно ваш malloc(), можете добавить вызов write() в начало ваших функций.
В C++ вы можете реализовать свой аллокатор для класса или шаблона с помощью перегрузки (overload) оператора new(). Андрей Александреску в своей книге Современное программирование на C++ описал небольшой объект аллокатора (Глава 4: Размещение в памяти небольших объектов).
Недостатки распределения с помощью malloc()
Не только наш менеджер памяти имеет недостатки, они также присутствуют и у других реализаций. Управление с помощью malloc() довольно опасная вещь для программ, которые хранят данные долгое время и которые должны быть легко доступны. Имея множество ссылок на динамически выделенную память, часто бывает затруднительно узнать, когда её необходимо освободить. Менеджер, обычно легко справляется со своей работой, если время жизни переменной (или время работы с куском памяти), ограничено рамками какой-либо функции (локальные переменные), но для глобальных переменных, чья память используется на всём протяжении работы программы, задача становится значительно сложнее. Также многие API описаны не совсем чётко и становится не понятно, на ком лежит ответственность за управление памятью — на самой программе или на вызванной функции.
Из-за подобных проблем, многие программы работают с памятью согласно собственным правилам. Иногда может показать, что больше операций (прим. переводчика: по тексту “больше кода”) тратится на выделение и освобождение памяти, чем на вычислительную составляющую. Поэтому рассмотрим альтернативные способы управления памятью.
Полу-автоматические (semi-automatic) подходы к управлению памятью
Подсчёт ссылок (reference-counting)
Подсчёт ссылок (reference-counting) — это полу-автоматический метод работы с памятью, требующий дополнительного кода и при котором можно не следить за тем, когда память перестаёт использоваться. Reference-counting делает это за вас.
Механизм работы следующий — для каждой динамически выделенной памяти существует поле, которое хранит число ссылающихся на неё ссылок. Если в программе появляется переменная, ссылающаяся на этот кусок памяти, счётчик увеличивается. И наоборот — при уменьшении переменных, ссылающихся на эту память, счётчик уменьшается. При декременте счётчика, происходит проверка — если количество ссылок 0, то память освобождается.
Каждая ссылка ссылающаяся на эту память, просто увеличивает или уменьшает счётчик. Это предотвращает ситуации очистки памяти, когда она используется. В любом случае, вы не должны забывать использовать функции отвечающие за подсчёт ссылок, если работаете с таким типом (“подсчитываемых”) структур. Также встроенные функции и сторонние библиотеки могут не уметь работать с reference-counting или иметь свой механизм работы.
Для реализации этого механизма, вам достаточно двух функций. Первая будет увеличивать счётчик ссылок, вторая уменьшать и освобождать память, если он достиг нуля.
Например функция подсчёта ссылок может выглядеть примерно так:
Листинг 9. Принцип работы reference-counting
Memory pools
Memory pools ещё один способ полу-автоматического управления памятью. Он автоматизирует процесс для программ, которые проходят через определенные стадии/фрагменты (stages) выполнения, на каждой стадии которой известно сколько места потребуется программе. В качестве примера можно привести серверные процессы, где выделено много памяти под соединения — у неё максимальное время жизни (lifespan) совпадает с временем жизни соединения. Тот же Apache — каждое соединение это отдельный stage, который имеет свой memory pool. После выполнения фрагмента, память моментально освобождается.
В “пуловой” модели управления, каждое выделение памяти относится к конкретному пулу, из которого память и будет выделена. (прим. переводчика: представьте функцию, в которой 5 локальных переменных типа char. Т.е. заранее известно что при выполнении этой функции, необходимо будет 5 байт памяти. Т.е. тело этой функции это как stage через который проходит программа в процессе выполнения, и можно сразу под него выделить кусок памяти фиксированного размера в 5 байт. Это сэкономит время на поиск и “резку” памяти по мере появления переменных в функции и даст гарантию того, что памяти всегда хватит.) Каждый pool имеет своё время жизни. В apache, pool может иметь время жизни равное времени работы сервера, длительности соединения, времени обработки запроса и т.д… Поэтому, если имеется набор функций, которые требуют память не превышающую размер соединения, то её можно просто выделить из пула соединений и по завершению работы, она будет освобождена автоматически. Кроме того, некоторые реализации дают возможность регистрировать функции очистки (cleanup functions), которые вызываются чтобы выполнить некоторые действия перед тем как пул будет очищен (что-то вроде деструкторов в ООП).
Чтобы использовать пул в своих программах, вы можете просто воспользоваться реализацией obstack (GNU — libc) или Apache Protable Runtime (Apache). Преимущество obstack это то, что он по умолчанию идёт со всеми Linux дистрибутивами. А Apache Portable Runtime это возможность использования на множестве платформ. Чтобы узнать больше об их реализациях, в конце статьи лежат ссылки.
Следующий “надуманный” пример демонстрирует применение obstack:
Листинг 11. Пример с использованием obstack
Запускать в отдельной области памяти что это такое
Соль и сахар
Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно
Репутация: нет
Всего: 89
Вот состряпал программу программу для приколов с окнами. И наше вот такую вот интереснейшую вещь, жаль правда не знаю зачем она и для чего.
В Пуск-Выполнить есть скрытый флажок «Запустить в отдельной области памяти». Это есть во всех виндах без исключения. Вот и интересно что бы это могло значить? Зачем эта ерунда?
Присоединённый файл ( Кол-во скачиваний: 29 ) run.gif 4,33 Kb
Шустрый
Профиль
Группа: Участник
Сообщений: 115
Регистрация: 14.5.2006
Репутация: нет
Всего: 6
Цитата |
Добавление флажка «Запустить в отдельной области памяти» в диалоговое окно «Выполнить». Позволяет использовать выделенную виртуальную машину DOS (VDM) для запуска 16-разрядных приложений. |
Соль и сахар
Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно
Репутация: нет
Всего: 89
Шустрый
Профиль
Группа: Участник
Сообщений: 115
Регистрация: 14.5.2006
Репутация: нет
Всего: 6
Цитата |
Windows NT дает возможность выполнять 16-разрядные программы Windows индивидуально в собственных пространствах памяти или совместно в разделяемом адресном пространстве. |
Соль и сахар
Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно
Репутация: нет
Всего: 89
Шустрый
Профиль
Группа: Участник
Сообщений: 115
Регистрация: 14.5.2006
Репутация: нет
Всего: 6
Соль и сахар
Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно
Репутация: нет
Всего: 89
λcat.lolcat
Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich
Репутация: 4
Всего: 173
Java-ненавистник 🙂
Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург
Репутация: 5
Всего: 92
λcat.lolcat
Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich
Репутация: 4
Всего: 173
Опытный
Профиль
Группа: Участник
Сообщений: 440
Регистрация: 1.11.2005
Где: Казахстан. Костан ай
Репутация: 1
Всего: 4
Соль и сахар
Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно
Репутация: нет
Всего: 89
Цитата(Exekutor @ 23.5.2006, 12:55 |
Зато можно запустить консольные приложения |
Опытный
Профиль
Группа: Участник
Сообщений: 440
Регистрация: 1.11.2005
Где: Казахстан. Костан ай
Репутация: 1
Всего: 4
sexton=Пономарь (eng)
Профиль
Группа: Участник
Сообщений: 503
Регистрация: 5.5.2004
Где: Ульяновск
Репутация: нет
Всего: 9
Цитата(Exekutor @ 24.5.2006, 08:36 |
Не знаю не одну нужную программу, работающую в чистом дос. |
Не надо делать столь поспешных выводов. как насчет старых учетных программ? Парус 4 досовый например у нас до сих пор используется. Различное спец. ПО, написанное на каком-нить фоксе 2.6 или клиппере.
Опытный
Профиль
Группа: Участник
Сообщений: 440
Регистрация: 1.11.2005
Где: Казахстан. Костан ай
Репутация: 1
Всего: 4
О каких выводах идет речь? Я сказал:
Я не говорил что их нет.
А для чего используются упомянутые тобой программы?
1. Обсуждать взлом и делиться кряками 2. Способствовать созданию и распространению вирусов Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, December, bartram, Akella.
[ Время генерации скрипта: 0.1404 ] [ Использовано запросов: 20 ] [ GZIP включён ]
|