Позвольте уничтожить X.org с пользовательским сочетанием клавиш

Прежде всего система на 32 бита имеет 0xffffffff (4'294'967'295) линейные адреса для доступа к физическому местоположению ontop RAM.
Ядро делит эти адреса на пространство ядра и пользователя.

К пространству пользователя (верхняя память) может получить доступ пользователь и, при необходимости, также ядром.
Диапазон адресов в шестнадцатеричном числе и нотации в декабре:

0x00000000 - 0xbfffffff
0 - 3'221'225'471

К пространству ядра (низкая память) может только получить доступ ядро.
Диапазон адресов в шестнадцатеричном числе и нотации в декабре:

0xc0000000 - 0xffffffff
3'221'225'472 - 4'294'967'295

Как это:

0x00000000             0xc0000000  0xffffffff 
    |                        |          |
    +------------------------+----------+
    |  User                  |  Kernel  |
    |  space                 |  space   |
    +------------------------+----------+

Таким образом расположение памяти Вы видели в dmesg соответствует отображению линейных адресов в пространстве ядра.

Во-первых, .text, .data и последовательности .init, которые обеспечивают инициализацию собственных таблиц страниц ядра (переводят линейный в физические адреса).

.text : 0xc0400000 - 0xc071ae6a   (3179 kB)

Диапазон, где код ядра находится.

.data : 0xc071ae6a - 0xc08feb78   (1935 kB)

Диапазон, где сегменты данных ядра находятся.

.init : 0xc0906000 - 0xc0973000   ( 436 kB)

Диапазон, где начальные таблицы страниц ядра находятся.

(и еще 128 КБ для некоторых динамических структур данных.)

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

Их используемый размер показывают в круглой скобке, возьмите, например, код ядра:

0xc071ae6a - 0xc0400000 = 31AE6A

В десятичной записи это 3'255'914 (3 179 КБ).


Во-вторых, использование пространства ядра после инициализации

lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)

Диапазон lowmem может использоваться ядром для прямого доступа к физическим адресам.
Это не полный 1 ГБ, потому что ядро всегда требует, чтобы по крайней мере 128 МБ линейных адресов реализовали выделение памяти, состоящее из нескольких несмежных участков, и отображенные на фиксацию линейные адреса.

vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)

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

pkmap   : 0xff800000 - 0xffa00000   (2048 kB)

Постоянное отображение ядра позволяет ядру устанавливать длительные отображения страничных блоков верхней памяти в адресное пространство ядра. Когда страница HIGHMEM отображается с помощью kmap (), виртуальные адреса присвоены отсюда.

fixmap  : 0xffc57000 - 0xfffff000   (3744 kB)

Они отображаются на фиксацию линейные адреса, которые могут относиться к любому физическому адресу в RAM, не только последний 1 ГБ как адреса lowmem. Отображенные на фиксацию линейные адреса немного более эффективны, чем их lowmem и pkmap коллеги. Существуют выделенные дескрипторы таблицы страниц, присвоенные для фиксированного отображения, и отображения страниц HIGHMEM с помощью kmap_atomic выделяются отсюда.


Если Вы хотите погрузиться глубже в кроличью нору:
Понимание ядра Linux

5
13.04.2017, 15:36
1 ответ

XkbOptions обращается к правилу, определенному в файле правил XKB, обычно /usr/share/X11/xkb/rules/base, который будет похож:

terminate:ctrl_alt_bksp =   +terminate(ctrl_alt_bksp)

Это в свою очередь забирает определение из оконечного файла символов, обычно /usr/share/X11/xkb/symbols/terminate. Я не уверен, можно ли просто добавить больше модификаторов к type="CTRL+ALT" выровняйте там или если существуют пределы на значение типа.

Документация относительно настройки XKB может быть найдена по http://www.x.org/wiki/XKB и смочь помогать заполнить некоторые разрывы в этом ответе.

4
27.01.2020, 20:41

Теги

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