Как подкачка страниц организована в отсутствие свопинга?

Первое место для проверки - то, если существует бэкпорт, но нет, который не удивителен, так как у индивидуалиста есть энергия 7.2 также.

Следующая вещь попробовать состоит в том, если кто-то поднял репозиторий с энергией 7,3 пакетов где-нибудь, предпочтительно PPA. Существует много PPAs с энергией, включая несколько с 7.3 (не исчерпывающий список).

Если Вы не находите двоичный пакет нигде или не любите тех, Вы находите, следующий самый легкий шаг должен захватить исходный пакет от аккуратного, который имеет энергию 7.3. Загрузите исходный пакет (.dsc, .debian.tar.gz и .orig.tar.gz), затем выполненный

apt-get install build-essential fakeroot
apt-get build-dep vim
dpkg-source -x vim_7.3.035+hg~8fdc12103333-1ubuntu2.dsc
cd vim-7.3.035+hg~8fdc12103333
# Edit debian/changelog to add an entry with your name and “recompiled for lucid”
dpkg-buildpackage -rfakeroot -us -uc -b -nc

Если все будет подходить, то у Вас будут двоичные пакеты для Ваших дистрибутивов. При столкновении с недостающими зависимостями или ошибками компиляции это должно быть решено в зависимости от конкретного случая.

Следующая вещь попробовать состоит в том, чтобы скомпилировать восходящие 7,3 источников с упаковкой от Вашей версии Ubuntu. Это дает Вам хороший и чистый пакет, но он немного более включен, поэтому если Вы не чувствуете себя уверенно в выполнении этого без инструкций, я рекомендую просто скомпилировать восходящий источник.

Если Вы закончите тем, что компилировали восходящий источник, по умолчанию, то Вы закончите с файлами под /usr/local, и не будет легко удалить их или даже знать то, что Вы имеете. Каждый раз, когда Вы устанавливаете что-то, не используя диспетчер пакетов, я рекомендую установить в отдельную структуру каталогов и создать символьные ссылки в /usr/local (или ~/usr или безотносительно). Уберите хорошо для этого:

  • Установка под /usr/local/stow (или ~/usr/stow или везде, где). Со многими программами можно использовать что-то как ./configure --prefix=/usr/local/stow/vim-7.3. Это поместит основной двоичный файл в /usr/local/stow/vim-7.3/bin, и так далее.
  • Выполненный stow vim-7.3 от /usr/local/stow каталог. Это создает символьные ссылки в “нормальных” каталогах, например. /usr/local/bin/vim -> ../../stow/vim-7.3/bin/vim.
  • Если Вы когда-нибудь хотите удалить эту программу, просто работать stow -D vim-7.3 удалить символьные ссылки и удалить /usr/local/stow/vim-7.3.

Существует также xstow, который является подобными, но более мощными программами (одно из его преимуществ - то, что это может иметь дело с конфликтами).

3
04.01.2011, 10:30
3 ответа

Насколько я понимаю Ваш вопрос, это обычно происходит таким способом:

Если Вы выделяете память:

  • Память Mark, как выделено, но не выделяет физическую память (следовательно на доступе будет отсутствие страницы). В Linux это останавливается на данном этапе, но возможно, что система может сразу выделить физическое место - затем это выполняет подобный алгоритм в конце как на отсутствии страницы за исключением того, что OOM не произойдет.

Если существует отсутствие страницы (получающий доступ не отображенная страница)

  1. Проверьте, выделяется ли память, если не возвращают ошибку.
  2. Проверьте, существует ли свободная физическая страница. Если существует goto 5
  3. Проверьте, существует ли часть, которая может быть записана обратно к диску (как файл от кэша) или если существует свободное пространство на подкачке (если нет никакой подкачки, рассматривают это как подкачку размера 0). Если существует, записывают обратно файл/блок к диску или страницу записи к диску, то не отображают его и goto 5. Если оба возможны, выбирают любого.
  4. Возвратите условие OOM. Это зависит от ядра, что происходит - это может отобразить ошибку пользователю, панике/"синему" экрану ядра, найдите, что некоторый процесс уничтожает и т.д.
  5. Отобразите страницу, которая вызвала проблему к освобожденной странице. Если страница была подкачана прочитанная страница от подкачки и помещала ее в страницу. Если страница поддерживается файлом чтения файла и поместила содержание там.

В целом можно сказать, что никакая подкачка не эквивалентна полной подкачке.

6
27.01.2020, 21:15
  • 1
    Нет уверенный в том, что Вы имеете в виду с, "выделяют физическое место постоянным образом (возможно, immediatly?)". В любом случае чрезмерные обязательства Unixes как Солярис действительно резервируют виртуальную память во время выделения, чтобы удостовериться, что дальнейшее использование не инициировало бы из ситуации с памятью. Когда виртуальная память ограничена физической памятью, которая является реальной тратой RAM. Это - причина, почему всегда рекомендуется иметь достаточно набора области подкачки с Солярисом и подобным Unixes. –  jlliagre 03.01.2011, 17:43
  • 2
    @jilliagre: Да - неправильная опция, выбранная в программе проверки правописания. Я также разъясняю то, что я имел в виду. –  Maciej Piechotka 03.01.2011, 17:50

Свопинг, позволяет перемещать неиспользованные страницы из памяти и на диск. Однако это не важно к фактической операции страничного обмена, которая произойдет, даже если не будет никакой подкачки.

0
27.01.2020, 21:15
  • 1
    Та терминология варьируется. Свопинг может использоваться для описания перемещения всей памяти, связанной с процессом к/от области подкачки в единственной операции, в то время как (спрос), подкачка страниц используется, когда меньшие блоки фиксированного размера памяти перемещены в ту же область подкачки. В то время как реализовано большей частью Unix/Unix как Ose, подкачивая, как описано здесь не реализован в ядре Linux, настолько подкачивающем, и подкачка страниц часто используются попеременно в этом контексте. –  jlliagre 04.01.2011, 00:22
  • 2
    я смотрю на него с точки зрения архитектуры процессора. –  sybreon 04.01.2011, 03:21
  • 3
    архитектура процессора имеет мало общего с этими понятиями. Что Вы описываете, поскольку "свопинг" - то, что все остальные называют подкачкой страниц. Я задаюсь вопросом, каково Ваше собственное определение подкачки страниц. –  jlliagre 04.01.2011, 13:00
  • 4
    На определенных архитектурах процессора таблица страниц может быть разбита на страницы в аппаратных средствах между MMU и основной памятью. На других эта операция обрабатывается ОС. Однако никакие процессоры не могут подкачать страницы к диску в аппаратных средствах и полагаться на ОС, чтобы сделать это. Следовательно, различные условия я раньше описывал понятие 'виртуальной памяти' с аппаратной точки зрения, в противоположность 'дисковой подкачке' в OP. –  sybreon 04.01.2011, 13:52
  • 5
    Ваш оператор "таблица страниц может быть разбит на страницы в аппаратных средствах между MMU и основной памятью". не имеет смысла мне. Это не таблица страниц, которая разбита на страницы, но блоки памяти. Эти блоки памяти разбиты на страницы с основную память на внешнюю память, которая обычно является дисководом. MMU не является устройством хранения. Возможно, Вы путающий память подкачки страниц и кэш-память. –  jlliagre 04.01.2011, 23:01

Если я понимаю правильно Ваш вопрос, Вы спрашиваете, как разбиение на страницы происходит, если никакая область подкачки не определяется.

С системами Ose с помощью традиционного подхода Unix виртуальная память всегда поддерживается физической RAM, таким образом, никакие отсутствия страницы не могут произойти из-за этой недостающей области подкачки, за пределами курса несвязанные случаи как файлы с отображенной памятью или поддельные указатели.

С чрезмерными обязательствами ОС как Linux нет никакого строгого резервирования, происходящего так первый доступ к неотображенной странице, в то время как больше RAM не доступно, инициировал бы уничтожителя OOM или некоторое другое разрушительное событие / ошибочное событие.

0
27.01.2020, 21:15
  • 1
    Это не на самом деле верно в, например, Linux. Linux выделяет физическое место на доступе - не по запросу выделения. Поэтому для процесса совершенно возможно выделить больше места затем существует memory+swap, все еще не инициировавший OOM, пока это не получает доступ к памяти. Дополнительно файлы mmap-редактора записаны в диск, скорее затем подкачивают и может инициировать отсутствие страницы. –  Maciej Piechotka 03.01.2011, 16:05
  • 2
    Ха, я неявно записал, что мое описание не относилось к Linux, который является сверхфиксирующей ОС. файлы mmap-редактора, по моему скромному мнению, вне темы, как вопрос о подкачке. –  jlliagre 03.01.2011, 16:15
  • 3
    RAM, используемый отображенными файлами, может быть освобожден к их бэкенду поэтому дело не в этом очень вне темы с Linux и подобными. –  jlliagre 03.01.2011, 16:25
  • 4
    . Извините я не заметил что (следовательно редактирование). –  Maciej Piechotka 03.01.2011, 16:51
  • 5
    могут произойти по другим причинам, например, когда процесс пытается разыменовать недопустимый указатель (указывающий вне его адресного пространства). –  Gilles 'SO- stop being evil' 03.01.2011, 21:41

Теги

Похожие вопросы