Вы забываете одну решающую вещь, а именно, что Ваша программа должна будет взаимодействовать с операционной системой, чтобы сделать что-либо интересное.
Конвенции отличаются между Linux и OS X, таким образом, тот же двоичный файл не может работать как есть, по существу не имея блока зависимого от операционной системы кода, чтобы смочь взаимодействовать с ним. Многие из этих вещей скрыты в библиотеках, в которых затем необходимо связаться, и это означает потребности программы быть связываемым, и соединение также отличается между этими двумя системами.
И таким образом, это продолжается и на. Что на поверхности кажется, что выполнение того же самого очень отличается в фактических деталях.
Процессы непривилегированного режима могут использовать Межпроцессное взаимодействие (IPC) для общений друг с другом, самый быстрый метод достижения, это при помощи страниц общей памяти (shmpages
).
Это происходит, например, если banshee
играет музыку и vlc
играет видео, оба процесса должны получить доступ pulseaudio
производить некоторый звук.
Попытайтесь узнать больше о конфигурации общей памяти и использовании с некоторыми следующими командами:
Отобразите конфигурацию общей памяти:
sysctl kernel.shm{max,all,mni}
По умолчанию (Linux 2.6) это должно произвести:
kernel.shmmax = 33554432
kernel.shmall = 2097152
kernel.shmmni = 4096
shmmni
максимальное количество позволенных сегментов общей памяти, shmmax
позволенный размер сегмента общей памяти (32 МБ) и shmall
максимальный общий размер всех сегментов (отображенный как страницы, переводит в 8 ГБ),
В настоящее время используемая общая память:
grep Shmem /proc/meminfo
Если включено распределением:
ls -l /dev/shm
ipcs
большой инструмент должен узнать больше об использовании IPC:
ipcs -m
произведет использование общей памяти, Вы видите выделенные сегменты с соответствующими размерами.
ipcs -m -i <shmid>
шоу больше информации об указанном сегменте включая PID процесса, создающего (cpid) и последнего (lpid) использование его.
ipcrm
может удалить сегменты общей памяти (но знать, что это, только удалены, если никакие другие процессы не присоединены к ним, см. nattach столбец в ipcs -m
).
ipcrm -m <shmid>
Разряжение общей памяти могло быть программой в большой степени с помощью большого количества общей памяти, программа, которая не отсоединяет выделенные сегменты правильно, измененный sysctl
значения...
Это не конкретный Linux и также относится (большинство) к системам UNIX (общая память сначала появилась в CB UNIX).
grep Shmem /proc/meminfo
Это предотвращает UUC (Бесполезное Использование CAT...) – Mei 04.02.2012, 04:20shmpages
по сравнению сkernel.shm{max,all,mni}
? – user278844 12.06.2017, 14:41