Возможно ли освобождение страниц памяти процессом в принципе?

Во-первых, вам не нужны эти пробелы и двойные кавычки.

ExecStartPre=/run/current-system/sw/bin/mkdir -p %h/.config/example/pending

Во-вторых, пробовали ли вы эту команду в своей системе, как она написана? В твоей скорлупе:

mkdir -p ~/.config/example/pending

Наконец, %h относится к дому пользователя. Но, возможно, ваша система нацелена на другое место, так как команда mkdir находится не в том месте. echo ~, чтобы увидеть свой домашний каталог.

1
15.02.2021, 21:19
1 ответ

В конце концов, ядро ​​операционной системы может разрешить «отдавать» (виртуальную память )страницы по частям, (это может быть беспорядок; и на практике это не так важно, неиспользуемая страница в любом случае достаточно скоро будет удалена из оперативной памяти ). По более или менее тем же причинам,среда выполнения языка может просто хранить вещи (, если вы, например. в C go malloc()и free()ничто не гарантирует, что ваше освобожденное пространство является непрерывной страницей в адресном пространстве --, отдавая его обратно только для того, чтобы попросить больше места позже, когда оно будет стоить ).

В Unix есть sbrk(2), что позволяет расширять/сокращать сегмент данных процесса, но это предполагает наличие одного сегмента данных (, у вас может получиться несколько ), стек времени выполнения в принципе расширяется и сжимается. Опять же, если среда выполнения языка или ядро ​​действуют на это, зависит от реализации.

Проверьте, например. Стандарт C :Они тщательно формулируют свое правило "как если бы" программа должна вести себя так, чтобы ее можно было объяснить, абстрагируясь от любых таких деталей и обрабатывая любые ограничения ресурсов.

1
18.03.2021, 22:30

Теги

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