Мусорные символы при использовании последовательного соединения через соединение SSH с minicom/screen

However when commands are being run, a copy of their files from the hard disk is put into the RAM,

Это неправильно (вообще ). Когда программа выполняется с (по execve (2)... ), процесс (, выполняющий эту программу, )меняет свое виртуальное адресное пространство и ядро переконфигурирует MMU для этой цели. Читайте также про виртуальную память . Обратите внимание, что прикладные программы могут изменять свое виртуальное адресное пространство, используя mmap (2)& munmap& mprotect (2 ), также используемые динамическим компоновщиком (. ] см. ld -linux (8)). См. также madvise (2)& posix _fadvise (2)& mlock (2).

Будущие ошибки страниц будут обрабатываться ядром для ленивой загрузки ()страниц из исполняемого файла. Читайте также о взбивании .

Ядро поддерживает большой кэш страниц . Читайте также про копируем -на -пишем . См. также упреждающее чтение (2).

OK, so what I wonder about is if the double life of a command, one on the hard disk, the other in the RAM is also true for other kind of files, for instance those who have no logic programmed, but are simply containers for data.

Для системных вызовов , таких как чтение (2)и запись (2)также используется кэш страницы. Если данные для чтения находятся в нем, дисковый ввод-вывод выполняться не будет. Если требуется дисковый ввод-вывод, прочитанные данные, скорее всего, будут помещены в кеш страницы. Таким образом, на практике, если вы дважды запустите одну и ту же команду, может случиться так, что физический ввод-вывод не будет выполняться на диск во второй раз (, если у вас есть старый вращающийся жесткий диск -, а не SSD -. ] вы можете это услышать; или внимательно наблюдайте за светодиодом жесткого диска ).

Я рекомендую прочитать такую ​​книгу, как Операционные системы :Three Easy Pieces (, которую можно бесплатно загрузить, по одному файлу PDF на главу ), в которой все это объясняется.

См. также Linux Ate My RAM и выполните такие команды, как xosview, top, htopили cat /proc/self/mapsилиcat /proc/$$/maps(см. proc (5)).

ПС. Я ориентируюсь на Linux, но другие ОС также имеют виртуальную память и кеш страниц.

1
28.06.2016, 20:43
0 ответов

Теги

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