Я абсолютно уверен в том, что Вы ищете. Но запускать новое приложение в рабочем X-сервере можно использовать, например:
DISPLAY=":0" mplayer -fs video.ogg
Можно выбрать идентификатор X-сервера, и можно добавить дополнительный экранный идентификатор как :0.1
запускать приложение на экране номер 1.
Вы спросили слишком много в одном вопросе — хорошо, технически не, как я предполагаю, "это понимание, корректное", может быть отвечен быстро: нет. Но это не полезный ответ.
Во-первых, Вы правы относительно ata_piix
и sd_mod
по-видимому, будучи скомпилированным - в к Вашему ядру. Это - выбор, Вы делаете конфигурирование ядра — можно опустить его, включать его или включать его как модуль. (То же с ext4).
Во-вторых, Вы предположили, что записи намного более просты, чем они на самом деле. Основная схема того, как запись работает, - то, что код файловой системы помещает данные, которые будут записаны в памяти как часть кэш-буфера, и отмечает ее как needs-to-be-written ("грязный"). (Если уже нет слишком многое из этого в RAM, в этом случае это на самом деле вынуждено сделать запись...),
Позже, различные вещи (такой как bdflush
поток ядра), на самом деле сбрасывают грязные страницы к диску. Это - когда Вы видели бы вызовы через sd, scsi, libata, ata_piix, io планировщики, PCI, и т.д. В то время как существует вероятный DMA, вовлеченный в ту запись, это имеет данные, которые будут переданы, и возможно команда. Но записи на диск, по крайней мере, в SATA, обрабатываются путем отправки команд который в основном средний "сектор X записи с данными Y". Но это определенно не обрабатывается размещением в ОЗУ весь диск (рассмотрите: можно использовать диски, намного больше, чем 4 ГиБ на 32-разрядных машинах).
Кэширование обрабатывается подсистемой управления памятью (не драйвер), в сочетании с файловой системой, слоем блока, и т.д.
tmpfs
является особенным, это - в основном полностью кэш. Его просто специальный кэш, который никогда не отбрасывается или записывается обратно (хотя он может быть выгружен). Можно найти код в mm/shmem.c
и несколько других мест (попытка ack-grep --cc CONFIG_TMPFS
найти их).
В основном запись в диск проходит хорошую часть подсистем ядра; сети являются единственным главным, о котором я могу думать, который не вовлечен в Ваш пример. Правильно объяснение его требует усилия книжной длины; я рекомендую искать тот.
Таким образом, мой первый вопрос - почему я не могу наблюдать ata_piix модуль здесь, только в журналах времени начальной загрузки? Это, потому что ata_piix (и sd) создаются как встроенные драйверы в (монолитном) ядре, в противоположность тому, чтобы быть созданным как (загружаемые) .ko модули ядра?
Вы не должны предполагать, какова Ваша конфигурация. На моей машине я имею
$ uname -a
Linux orwell 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 GNU/Linux
Файл конфигурации для этого ядра, расположен в /boot/config-3.2.0-4-amd64
.
Вы спросили о ata_piix
. Поиск вышеупомянутого .config
файл, мы видим CONFIG_ATA_PIIX=m
. мы можем подтвердить это путем выполнения
dlocate ata_piix.ko
альтернативно
dpkg -S ata_piix.ko
linux-image-3.2.0-4-amd64: /lib/modules/3.2.0-4-amd64/kernel/drivers/ata/ata_piix.ko
Так, по крайней мере, в моем ядре, это - модуль.
:)
В моей системе, grep ATA_PIIX /boot/config-2.6.38-16-generic
говорит CONFIG_ATA_PIIX=y
, который должен, вероятно, означать на этом ядре, ata_piix
сборка "в ядре", и не как модуль.Удачи!
– sdaau
22.01.2014, 17:50
sudo bash...
сценарий в OP: память ftrace увеличена (echo 8192 > $KDBGPATH/buffer_size_kb
); иsync ;
добавляется после./wtest ;
звонить. Затем я вижуflush-8
,kworker
(подkthreadd
вps axf
), иsync
самостоятельно, как обрабатывает вftrace
вызывание функций как, например.ata_bmdma_setup()
(который является частьюlibata
, которыйata_piix
основывается), илиget_nr_dirty_inodes()
. – sdaau 22.01.2014, 19:26