В данном случае можно использовать X
вместо x
который только добавляет биты к каталогам или файлам, которые уже имеют исполняемый набор битов для некоторого пользователя (т.е. chmod -R +X my_dir
).
В целом (например, если Вы хотели сделать все каталоги читаемыми, не влияя на файлы), Вы могли бы или использовать find
с -type d
или если Вы используете zsh (или колотите 4 с shopt -s globstar
) **/
шарик (оба, не передавая -R
флаг к chmod
).
На 32-разрядной архитектуре Вы имеете 0xffffffff
(4'294'967'295
или 4 ГБ) линейные адреса (не физическое пространство) для обращения к физическому адресу.
Даже только с 512 МБ физического устройства хранения данных (реальная палка RAM, подключенная к шине), ядро будет все еще использовать 4'294'967'295
линейные адреса (на 4 ГБ) для вычисления физических.
Ядро Linux делит этих 4 ГБ (адресов) в пространство пользователя (верхняя память) и пространство ядра (низкая память) 3/1, таким образом, пространство ядра имеет 1'073'741'823
(1 ГБ) линейных адресов для использования.
Этот 1 ГБ линейных адресов, только доступен ядром и становится разделенным еще больше.
ZONE_DMA: Содержит страничные блоки памяти ниже 16 МБ. Это используется для старых шин ISA, они могут обратиться только к первым 16 МБ RAM.
ZONE_NORMAL: Содержит страничные блоки памяти в и выше 16 МБ и ниже 896 МБ, это адреса, которые ядро может отобразить/получить доступ непосредственно.
ZONE_HIGHMEM: Содержит страничные блоки памяти в и выше 896 МБ, страничные блоки выше этой границы обычно не отображаются на пространстве ядра и поэтому не непосредственно доступные ядру. Страничные блоки от пространства пользователя могут быть временно или постоянно отображены здесь.
То, сколько реального, физического места RAM занято различными зонами, зависит от формы и количества процессов, которые Вы выполняете.
Если Вы входите free -ml
в Вашей консоли Вы видите, что использование включает низко - и верхняя память:
total used free shared buffers cached
Mem: 3022 2116 905 0 105 1342
Low: 839 196 642
High: 2182 1919 263
-/+ buffers/cache: 667 2354
Swap: 2859 93 2766
Та же физическая страница может быть отображена больше чем на одном виртуальном адресе.
ZONE_NORMAL состоит из страниц, которые могут быть отображены ядром. Большая часть той памяти не принадлежит ядру, но ядро должно отобразить всю память в какой-то момент (не обязательно все одновременно). Например, когда ядро обрабатывает a write
системный вызов, это должно скопировать данные из предоставленного пользователями буфера, что означает, что буфер должен быть отображен в виртуальном адресном пространстве ядра.
Схема описывает (относительно) простую ситуацию без верхней памяти. (Если Вы работаете с высокопроизводительными устройствами ARM, теперь время, чтобы начать узнавать о верхней памяти.) Затем ядро может отобразить всю память процесса и всю физическую память одновременно.
Вот пример повторного разделения виртуальной памяти, как замечено кодом ядра (я не уверен, возможны ли точные числа, но основная идея должна быть правильной). Таким образом, я описываю значение указателя, используемого кодом ядра.
0x00000000..0x00000fff
: освобожденный. Указатель в этом диапазоне недопустим.0x00001000..0xbfffffff
: память процесса. Это - указатель в виртуальное адресное пространство процесса, которого код ядра на рассмотрении обрабатывает системный вызов. Страница в том диапазоне могла быть освобождена, или это могло быть выделено и загружено (в этом случае, это также имеет физический адрес), или это могло быть выделено и выгружено (в этом случае, это не имеет физического адреса в RAM, но это имеет расположение в подкачке).0xc0000000..0xdfffffff
: физическая память. Указатель в этом диапазоне представляет физический адрес p-0xc0000000. Интерпретация этого указателя на самом деле не зависит от MMU.0xe0000000..0xffefffff
: освобожденный. Указатель в этом диапазоне недопустим.0xff000000..0xffffffff
: память ядра. Это - указатель в код ядра или данные. Страница в этом диапазоне имеет связанный физический адрес, найденный MMU.Я нашел, что Драйверы устройств Linux хорошее введение во внутренности ядра Linux. В конечном счете можно хотеть обратиться к источнику.