Вводя в заблуждение объяснение Виртуальной памяти в TLDP

Отображение от клавиш на клавиатуре до модификаторов как Meta и Control обрабатывается X-сервером (т.е. часть низкого уровня GUI). Этим отображением можно управлять через старого стиля xmodmap команда или модернизированный интерфейс XKB, или через GUI инструменты конфигурирования, который использует один из них под капотом.

По умолчанию, на большинстве установок, Meta ключ является ключом, маркировал Alt. Это вызвано тем, что исторически, много рабочих станций Unix имели ключ, маркировал Meta, где ПК имеют ключ, маркировал Alt. Таким образом, если у Вас есть привязка для M-C-y, нажмите Ctrl+Alt+Y.

Для проверки, какова текущая привязка запустите xev программа в терминале. С xev сфокусированным окном нажмите клавиши; Вы будете видеть расшифровку стенограммы сгенерированных событий в терминале.

Коммуникация между эмуляторами терминала (или оконечные устройства, соответствующие медосмотру терминалы) и приложения, использует символы. При нажатии A терминал получает информацию “A ключ, никакой модификатор”, но что это отправляет в приложение, работающее в терминале, является символом a. При нажатии функциональной клавиши как или F1 нет никакого соответствующего символа; терминал отправляет последовательность символов, начинающуюся с символа ESC (байт 27, иногда записанный \e или ^[). Когда эмулятор терминала, такой как xterm получил событие нажатия клавиши с Meta модификатор, это переводит тот ключ к символу ESC, сопровождаемому базовой функцией ключа, например. \ea (Escape, нижний регистр a), когда Вы нажимаете Meta+A.

Каково точное различие между 'терминалом', 'оболочкой', 'tty' и 'консолью'? может быть полезный фон.

4
10.01.2013, 02:51
2 ответа

Linux, а также Windows, работайте в значительной степени то же здесь. Каждый процесс получает свое собственное "виртуальное" адресное пространство. Это не означает, что память на самом деле физически доступна (очевидно, большая часть компьютеров на 32 бита никогда не имела достаточно памяти), это, почему это является виртуальным.

Также адреса, используемые там, не соответствуют физическим адресам. Таким образом, сегмент физической памяти в AAAA:0000 мог соответствовать 9128:2af2, точка - Вы, не должны заботиться. Весь приложение касается в, то, где вещь интереса находится в своем собственном сегменте памяти. И да, который также означает, что два приложения могут указать на тот же адрес в своем собственном представлении памяти и получить разные вещи.

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

Позвольте мне рекомендовать Вам учебник как Tanenbaum, Операционные системы, если Вы хотите копаться немного глубже в расположении пространства виртуальной памяти и адресного пространства процесса или если Вы не можете овладеть одним легко, http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory также делает хорошее чтение.

7
27.01.2020, 20:47
  • 1
    Max, "куча" спасибо для блога, Вы указали на меня на. Чтение его для последнего полув неделю, очень ясный и информативный! –  Boris Burkov 12.01.2013, 20:33

“Собственное виртуальное адресное пространство” на самом деле означает противоположность того, что Вы говорите: это означает что адрес 11 111 111 точек к другому местоположению в физической памяти в каждом процессе. Если бы виртуальные адреса соответствовали тому же физическому адресу в различных процессах, то процессы совместно использовали бы адресное пространство. На самом деле часть адресного пространства совместно используется несколькими процессами (например, после fork, почти всеми страницами поделятся между родителем и ребенком). Это соответствует Вашему “случаю 2” изображения. Linux и Windows не отличаются в этом отношении.

Linux может на самом деле работать (в ухудшенном режиме, который среди других не поддерживает fork) на некоторых маленьких встроенных устройствах, которые не имеют никакого MMU, только MPU (единица защиты памяти). На таких устройствах нет никаких виртуальных адресных пространств (случай 2), но между процессами существует все еще разделение, потому что каждый процесс имеет свой собственный набор полномочий по страницам памяти.

4
27.01.2020, 20:47

Теги

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