In 32 bit systems with more than 896 MB of RAM it is obvious, that the mapping of kernel addresses need to be changed because of kernel virtual addresses and the non-continuous mapping.
Да, это известно как highmem .
But how is this handled in 64 bit? As the RAM can always be mapped entirely in the address space, the master kernel page table needs to be set up once at initialization and then is never changed, since the mapping is never changed. Thus, this kernel region in the user page table never needs to be updated?
Да .
Btw has someone a good explanation how the user process page tables are updated in 32 bit? As it is always said, that the master kernel page tables are not directly used but only used as a reference. Are the entries for the kernel region copied for every process in its user page table?
В документе highmem, указанном выше, говорится, что сопоставления highmem требуют только манипулирования «таблицами страниц ядра».
«Таблицы страниц» на самом деле являются разновидностью древовидной структуры. Например. см. «Четыре -таблицы страниц уровня» [LWN.net, 2004]. Верхний уровень — это одна страница (4096 байт ). Записи, отображающие диапазон ядра, имеют одинаковые значения во всех процессах и, следовательно, являются общими. Временные сопоставления происходят на более низком уровне дерева, поэтому их нужно изменять только внутри общих таблиц страниц ядра, и им не нужно отдельно изменять каждую таблицу страниц процесса.
По крайней мере, это мой обзор высокого -уровня. У меня нет всех слов.
Это не работает. --пути из PATH
будут рассматриваться как каталоги, которые следует добавлять перед командами, независимо от того, являются ли они исполняемыми файлами или файлами любого другого типа.
Простое решение — создать каталог в другом месте, создать там символическую ссылку на ваш двоичный файл, а затем добавить этот каталог вPATH
:
mkdir ~/my-bin
ln -s ~/.scry/bin/scry ~/my-bin
PATH=$PATH:~/my-bin
hash -p "$HOME"/.scry/bin/scry scry
Добавление вышеуказанного в ваш файл .bashrc
сообщит вашей интерактивной оболочке, что scry
находится по адресу "$HOME"/.scry/bin/scry
.
Другие способы сделать что-то подобное включают создание псевдонима с помощью
alias scry="$HOME"/.scry/bin/scry
или функцию оболочки с
scry () {
"$HOME"/.scry/bin/scry "$@"
}
Переменная PATH
содержит разделенный:
-список каталогов , в которых будет выполняться поиск при вводе команды, которая еще не использовалась. Таким образом, добавление пути к утилите в переменную PATH
ничего не даст.