Откройте любой вид приложения с Bash

Изменение сразу отражается. По пути нет никакого кэширования. Когда Вы читаете /proc//smaps, Вы на самом деле инициировали обход таблицы страниц того процесса. Информация об отображениях накоплена по пути, затем отображена без любого кэширования.

Код позади /proc//smaps файл находится в fs/proc/task_mmu.c, конкретно show_smap функция.
Та функция делает a walk_page_range с smaps_pte_range как обратный вызов PTE. smaps_pte_range самостоятельно накапливает информацию в a struct mem_size_stats.

Часть того кода, ответственного за PSS делает:

mapcount = page_mapcount(page);
if (mapcount >= 2) {
    if (pte_dirty(ptent) || PageDirty(page))
        mss->shared_dirty += ptent_size;
    else
        mss->shared_clean += ptent_size;
    mss->pss += (ptent_size << PSS_SHIFT) / mapcount;
} else {
    if (pte_dirty(ptent) || PageDirty(page))
        mss->private_dirty += ptent_size;
    else
        mss->private_clean += ptent_size;
    mss->pss += (ptent_size << PSS_SHIFT);
}

(Вы видите здесь, что страницы могут только считаться в Shared часть, если это на самом деле отображается несколько раз - это считается как частное иначе.)

page_mapcount определяется встроенный в linux/mm.h и просто доступы a struct page:

static inline int page_mapcount(struct page *page)
{
    return atomic_read(&(page)->_mapcount) + 1;
}

Таким образом, PSS "всегда актуален".

3
05.04.2013, 02:41
1 ответ

Уже существует внешняя команда для этого. Нет ничего нового, которое должно быть записано. Команда xdg-open. Это откроет файл на основе своей ассоциации типа MIME. Вот пример:

xdg-open file.png
13
27.01.2020, 21:08
  • 1
    , о!спасибо! Это хорошо работает для меня! Довольно хороший на самом деле. –  Pranit Bauva 04.04.2013, 18:34

Теги

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