Translation components API.

See the Weblate's Web API documentation for detailed description of the API.

GET /api/components/documentation/articlesvm-design_index/changes/?format=api&page=30
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 1495,
    "next": null,
    "previous": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/changes/?format=api&page=29",
    "results": [
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811538/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:27.416003Z",
            "action": 9,
            "target": "`vm_page` представляет собой пару (object,index#). `pv_entry` является записью из аппаратной таблицы страниц (pte). Если у вас имеется пять процессов, совместно использующих одну и ту же физическую страницу, и в трех таблицах страниц этих процессов на самом деле отображается страница, то страница будет представляться одной структурой `vm_page` и тремя структурами `pv_entry`.",
            "id": 852361,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852361/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811539/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:27.427388Z",
            "action": 9,
            "target": "Структуры `pv_entry` представляют страницы, отображаемые MMU (одна структура `pv_entry` соответствует одной pte). Это означает, что, когда нам нужно убрать все аппаратные ссылки на `vm_page` (для того, чтобы повторно использовать страницу для чего-то еще, выгрузить ее, очистить, пометить как грязную и так далее), мы можем просто просмотреть связный список структур `pv_entry`, связанных с этой `vm_page`, для того, чтобы удалить или изменить pte из их таблиц страниц.",
            "id": 852362,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852362/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811540/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:27.439478Z",
            "action": 9,
            "target": "В Linux нет такого связного списка. Для того, чтобы удалить все отображения аппаратной таблицы страниц для `vm_page`, linux должен пройти по индексу каждого объекта VM, который _может_ отображать страницу. К примеру, если у вас имеется 50 процессов, которые все отображают ту же самую динамическую библиотеку и хотите избавиться от страницы X в этой библиотеке, то вам нужно пройтись по индексу всей таблицы страниц для каждого из этих 50 процессов, даже если только 10 из них на самом деле отображают страницу. Так что Linux использует простоту подхода за счет производительности. Многие алгоритмы VM, которые имеют сложность O(1) или (N малое) во FreeBSD, в Linux приобретают сложность O(N), O(N^2) или хуже. Так как pte, представляющий конкретную страницу в объекте, скорее всего, будет с тем же смещением во всех таблицах страниц, в которых они отображаются, то уменьшение количества обращений в таблицы страниц по тому же самому смещению часто позволяет избежать разрастания кэша L1 для этого смещения, что приводит к улучшению производительности.",
            "id": 852363,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852363/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811541/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:27.454692Z",
            "action": 9,
            "target": "Во FreeBSD введены дополнительные сложности (схема с `pv_entry`) для увеличения производительности (уменьшая количество обращений _только_ к тем pte, которые нужно модифицировать).",
            "id": 852364,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852364/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811542/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:27.467350Z",
            "action": 9,
            "target": "Но во FreeBSD имеется проблема масштабирования, которой нет в Linux, потому что имеется ограниченное число структур `pv_entry`, и это приводит к возникновению проблем при большом объеме совместно используемых данных. В этом случае у вас может возникнуть нехватка структур `pv_entry`, даже если свободной памяти хватает. Это может быть достаточно легко исправлено увеличением количества структур `pv_entry` при настройке, но на самом деле нам нужно найти лучший способ делать это.",
            "id": 852365,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852365/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811543/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:55:27.480134Z",
            "action": 9,
            "target": "Что касается использования памяти под таблицу страниц против схемы с `pv_entry`: Linux использует \"постоянные\" таблицы страниц, которые не сбрасываются, но ему не нужны `pv_entry` для каждого потенциально отображаемого pte. FreeBSD использует \"сбрасываемые\" таблицы страниц, но для каждого реально отображаемого pte добавляется структура `pv_entry`. Я думаю, что использование памяти будет примерно одинакова, тем более что у FreeBSD есть алгоритмическое преимущество, заключающееся в способности сбрасывать таблицы страниц с очень малыми накладными расходами.",
            "id": 852366,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852366/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811477/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:56:18.215303Z",
            "action": 5,
            "target": "Рисунок",
            "id": 852367,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/852367/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811478/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:56:23.094866Z",
            "action": 5,
            "target": "fig1.png",
            "id": 852368,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/852368/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811480/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:56:28.472481Z",
            "action": 5,
            "target": "fig2.png",
            "id": 852369,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/852369/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811482/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:56:32.745890Z",
            "action": 5,
            "target": "fig3.png",
            "id": 852370,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/852370/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811484/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:56:36.577706Z",
            "action": 5,
            "target": "fig4.png",
            "id": 852371,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/852371/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811527/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:56:43.183862Z",
            "action": 5,
            "target": "A B C D A B C D A B C D A B C D\n",
            "id": 852372,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/852372/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811460/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:58:00.324650Z",
            "action": 5,
            "target": "Простое и понятное описание архитектуры системы виртуальной памяти FreeBSD",
            "id": 852373,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/852373/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1814016/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:58:31.378001Z",
            "action": 5,
            "target": "Этот документ устарел, и некоторые разделы больше не соответствуют текущему состоянию системы виртуальной памяти. Он сохранён в исторических целях и может быть обновлён в будущем.",
            "id": 852374,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/852374/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811463/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T17:58:38.685600Z",
            "action": 5,
            "target": "Matthew Dillon <dillon@apollo.backplane.com>",
            "id": 852375,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/852375/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811464/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T18:00:02.717907Z",
            "action": 5,
            "target": "Это название — просто замысловатый способ сказать, что я попытаюсь описать всю систему виртуальной памяти (VM) целиком, по возможности так, чтобы это было понятно каждому.В течение последнего года я сосредоточился на нескольких основных подсистемах ядра FreeBSD. Наиболее интересными из них стали подсистемы VM и подкачки (Swap), тогда как работа с NFS оказалась, скорее, «необходимой рутиной». Я переписал лишь небольшие части кода. В области VM моей единственной крупной переработкой стала подсистема подкачки. В основном моя работа заключалась в очистке и поддержке кода, с умеренными правками и без серьёзных изменений алгоритмов в подсистеме VM. Теоретическая основа VM-подсистемы осталась неизменной, и львиная доля заслуг в её модернизации за последние годы принадлежит Джону Дайсону и Дэвиду Гринману. Я не историк, в отличие от Кирка, поэтому не стану приписывать различные функции конкретным людям — всё равно где-нибудь ошибусь.",
            "id": 852376,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/852376/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811462/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T18:39:28.348803Z",
            "action": 9,
            "target": "Аннотация",
            "id": 852526,
            "action_name": "Translation uploaded",
            "url": "https://translate-dev.freebsd.org/api/changes/852526/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811462/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-07-04T18:47:00.788743Z",
            "action": 2,
            "target": "Аннотация",
            "id": 852797,
            "action_name": "Translation changed",
            "url": "https://translate-dev.freebsd.org/api/changes/852797/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-07-05T04:45:03.025842Z",
            "action": 17,
            "target": "",
            "id": 852906,
            "action_name": "Committed changes",
            "url": "https://translate-dev.freebsd.org/api/changes/852906/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1814004/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/juanda097/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/juanda097/?format=api",
            "timestamp": "2025-08-09T17:29:36.066436Z",
            "action": 5,
            "target": "Este documento está desactualizado y algunas secciones no describen con precisión el estado actual del sistema de máquinas virtuales. Se conserva con fines históricos y puede ser actualizado con el tiempo.",
            "id": 878016,
            "action_name": "New translation",
            "url": "https://translate-dev.freebsd.org/api/changes/878016/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/es/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-08-10T04:45:00.391344Z",
            "action": 17,
            "target": "",
            "id": 878249,
            "action_name": "Committed changes",
            "url": "https://translate-dev.freebsd.org/api/changes/878249/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811475/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:14:18.864769Z",
            "action": 27,
            "target": "Вы тут же заметите, что то, что сначала было простым отображением файла в память, становится гораздо более сложным предметом. Данные могут модифицироваться постранично, когда как отображение файла выполняется для многих страниц за раз. Сложность ещё более увеличивается, когда процесс выполняет вызов fork. При этом порождаются два процесса-каждый со с собственным адресным пространством, включающим все изменения, выполненные исходным процессом до вызова функции `fork()`. Было бы глупо для VM-системы делать полную копию данных во время вызова `fork()`, так как весьма вероятно, что один из двух процессов будет нужен только для чтения из той страницы, что позволяет использование исходной страницы. То, что было страницей, принадлежащей только процессу, сделается снова страницей, копируемой при записи, так как каждый из процессов (и родитель, и потомок) полагают, что их собственные изменения после разветвления будут принадлежать только им, и не затронут родственный процесс.",
            "id": 910859,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/910859/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811486/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:14:18.877952Z",
            "action": 27,
            "target": "Такая модель создает некоторое количество потенциальных проблем. Первая, с которой вы можете столкнуться, заключается в сравнительно большой последовательности уровней объектов VM, на сканирование которых тратится время и память. Большое количество уровней может возникнуть, когда процессы разветвляются, а затем разветвляются ещё раз (как порожденные, так и порождающие). Вторая проблема заключается в том, что вы можете столкнуться с мертвыми, недоступными страницами глубоко в иерархии объектов VM. В нашем последнем примере если как родитель, так и потомок изменяют одну и ту же страницу, они оба получают собственные копии страницы, а исходная страница в B становится никому не доступной. такая страница в B может быть высвобождена.",
            "id": 910860,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/910860/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811488/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:14:18.890621Z",
            "action": 27,
            "target": "Проблема с мертвой страницей все ещё имеет место, когда C1 или C2 не полностью перекрывают B. Из-за других применяемых нами методов оптимизации этот случай не представляет большой проблемы и мы просто позволяем таким страницам существовать. Если система испытывает нехватку оперативной памяти, она выполняет их выгрузку в область подкачки, что занимает некоторое пространство в области подкачки, но это все.",
            "id": 910861,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/910861/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811495/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:14:18.903855Z",
            "action": 27,
            "target": "Проблема ещё более обостряется из-за дыр, создаваемых по чередующемуся алгоритму.",
            "id": 910862,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/910862/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811539/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:14:18.921298Z",
            "action": 27,
            "target": "Структуры `pv_entry` представляют страницы, отображаемые MMU (одна структура `pv_entry` соответствует одной pte). Это означает, что, когда нам нужно убрать все аппаратные ссылки на `vm_page` (для того, чтобы повторно использовать страницу для чего-то ещё, выгрузить ее, очистить, пометить как грязную и так далее), мы можем просто просмотреть связный список структур `pv_entry`, связанных с этой `vm_page`, для того, чтобы удалить или изменить pte из их таблиц страниц.",
            "id": 910863,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/910863/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811469/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:18:23.940486Z",
            "action": 27,
            "target": "Самым важным аспектом при проектировании производительности является то, что называется \"оптимизацией критического маршрута\". Часто случается, что оптимизация производительности дает прирост объёма кода ради того, чтобы критический маршрут работал быстрее.",
            "id": 910962,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/910962/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811492/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:18:23.955965Z",
            "action": 27,
            "target": "Во FreeBSD 3.X в структуре управления областью подкачки предварительно выделяется массив, который представляет целый объект, требующий хранения в области подкачки-даже если только несколько страниц этого объекта хранятся в области подкачки. Это создает проблему фрагментации памяти ядра в случае, когда в память отображаются большие объекты или когда ветвятся процессы, занимающие большой объём памяти при работе (RSS).",
            "id": 910963,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/910963/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811501/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:18:23.970519Z",
            "action": 27,
            "target": "Все дерево также распределяется заранее для того, чтобы избежать распределения памяти ядра во время операций с областью подкачки при критически малом объёме свободной памяти. В конце концов, система обращается к области подкачки при нехватке памяти, так что мы должны избежать распределения памяти ядра в такие моменты для избежания потенциальных блокировок.",
            "id": 910964,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/910964/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811542/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:18:23.983872Z",
            "action": 27,
            "target": "Но во FreeBSD имеется проблема масштабирования, которой нет в Linux, потому что имеется ограниченное число структур `pv_entry`, и это приводит к возникновению проблем при большом объёме совместно используемых данных. В этом случае у вас может возникнуть нехватка структур `pv_entry`, даже если свободной памяти хватает. Это может быть достаточно легко исправлено увеличением количества структур `pv_entry` при настройке, но на самом деле нам нужно найти лучший способ делать это.",
            "id": 910965,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/910965/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811467/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:26:10.150225Z",
            "action": 27,
            "target": "Перед тем, как перейти непосредственно к существующей архитектуре, потратим немного времени на рассмотрение вопроса о необходимости поддержки и модернизации любого длительно живущего кода. В мире программирования алгоритмы становятся более важными, чем код, и именно из-за академических корней BSD изначально большое внимание уделялось проработке алгоритмов. Внимание, уделенное архитектуре, в общем отражается на ясности и гибкости кода, который может быть достаточно легко изменен, расширен или с течением времени заменен. Хотя некоторые считают BSD \"старой\" операционной системой, те их нас, кто работает над ней, видят её скорее системой со \"зрелым\" кодом с различными компонентами, которые были заменены, расширены или изменены современным кодом. Он развивается, и FreeBSD остается передовой системой, вне зависимости от того, насколько старой может быть часть кода. Это важное отличие, которое, к сожалению, не всеми понимается. Самой большой ошибкой, которую может допустить программист, является игнорирование истории, и это именно та ошибка, которую сделали многие другие современные операционные системы. Самым ярки примером здесь является Windows NT(R), и последствия ужасны. Linux также в некоторой степени совершил эту ошибку-достаточно, чтобы мы, люди BSD, по крайней мере по разу отпустили по этому поводу шутку. Проблема Linux заключается просто в отсутствии опыта и истории для сравнения идей, проблема, которая легко и быстро решается сообществом Linux точно так же, как она решается в сообществе BSD-постоянной работой над кодом. Разработчики Windows NT(R), с другой стороны, постоянно совершают те же самые ошибки, что были решены в UNIX(R) десятки лет назад, а затем тратят годы на их устранение. Снова и снова. Есть несколько случаев \"проработка архитектуры отсутствует\" и \"мы всегда правы, потому что так говорит наш отдел продаж\". Я плохо переношу тех, кого не учит история.",
            "id": 911064,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/911064/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811473/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:26:10.167667Z",
            "action": 27,
            "target": "Лучше всего начать описание VM-системы FreeBSD с попытки взглянуть на нее с точки зрения пользовательского процесса. Каждый пользовательский процесс имеет единое, принадлежащее только ему и неразрывное адресное пространство VM, содержащее несколько типов объектов памяти. Эти объекты имеют различные характеристики. Код программы и её данные являются единым файлом, отображаемым в память (это выполняющийся двоичный файл), однако код программы доступен только для чтения, когда как данные программы размещаются в режиме копирования-при-записи. BSS программы представляет собой всего лишь выделенную область памяти, заполненную, если это требовалось, нулями, что называется обнулением страниц памяти по требованию. Отдельные файлы могут также отображаться в адресное пространство, именно так работают динамические библиотеки. Такие отображения требуют изменений, чтобы оставаться принадлежащими процессу, который их выполнил. Системный вызов fork добавляет переводит проблему управления VM полностью в новую плоскость, вдобавок к уже имеющимся сложностям.",
            "id": 911065,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/911065/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811474/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:26:10.181168Z",
            "action": 27,
            "target": "Иллюстрирует сложность страница данных двоичной программы (которая является страницей копируемой-при-записи). Двоичная программа содержит секцию предварительно инициализированных данных, которая первоначально отображается непосредственно из файла программы. Когда программа загружается в Vm-пространство процесса, эта область сначала отображается в память и поддерживается бинарным файлом программы, позволяя VM-системе освобождать/повторно использовать страницу, а потом загружать её снова из бинарного файла. Однако в момент, когда процесс изменяет эти данные, VM-система должна сделать копию страницы, принадлежащую только этому процессу. Так как эта копия была изменена, то VM-система не может больше освобождать эту страницу, так как впоследствии её невозможно будет восстановить.",
            "id": 911066,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/911066/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811491/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:26:10.194456Z",
            "action": 27,
            "target": "Страницы с собственными данными первоначально являются страницами, копируемыми при записи или заполняемыми нулями. Когда выполняется изменение, и, соответственно, копирование, начальное хранилище объекта (обычно файл) не может больше использоваться для хранения копии страницы, когда VM-системе нужно использовать её повторно для других целей. В этот момент на помощь приходит область подкачки. Область подкачки выделяется для организации хранилища памяти, которая иначе не может быть доступна. FreeBSD создает структуру управления подкачкой для объекта VM, только когда это действительно нужно. Однако структура управления подкачкой исторически имела некоторые проблемы:",
            "id": 911067,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/911067/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811493/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:26:10.207062Z",
            "action": 27,
            "target": "Также для отслеживания памяти подкачки в памяти ядра поддерживается \"список дыр\", и он также несколько фрагментирован. Так как \"список дыр\" является последовательным списком, то производительность при распределении и высвобождении памяти в области подкачки неоптимально и её сложность зависит от количества страниц как O(n).",
            "id": 911068,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/911068/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811509/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:26:10.219977Z",
            "action": 27,
            "target": "Для тех платформ, что не имеют этой возможности, система эмулирует этот бит. Она снимает отображение или защищает страницу, что приводит к ошибке доступа к странице, если к странице выполняется повторное обращение. При возникновении этой ошибки система просто помечает страницу как используемую и снимает защиту со страницы, так что она может использоваться. Хотя использование такого приема только для определения использования страницы весьма накладно, это выгоднее, чем повторно использовать страницу для других целей и обнаружить, что она снова нужна процессу и подгружать её с диска.",
            "id": 911069,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/911069/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811510/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:26:10.233731Z",
            "action": 27,
            "target": "FreeBSD использует несколько очередей страниц для обновления выбора страниц для повторного использования, а также для определения того, когда же грязные страницы должны быть сброшены в хранилище. Так как таблицы страниц во FreeBSD являются динамическими объектами, практически ничего не стоит вырезать страницу из адресного пространства любого использующего её процесса. После того, как подходящая страница, на основе счетчика использования, выбрана, именно это и выполняется. Система должна отличать между чистыми страницами, которые теоретически могут быть высвобождены в любое время, и грязными страницами, которые сначала должны быть переписаны в хранилище перед тем, как их можно будет использовать повторно. После нахождения подходящей страницы она перемещается в неактивную очередь, если она является грязной, или в очередь кэша, если она чистая. Отдельный алгоритм, основывающийся на отношении количества грязных страниц к чистым, определяет, когда грязные страницы в неактивной очереди должны быть сброшены на диск. Когда это выполнится, сброшенные страницы перемещаются из неактивной очереди в очередь кэша. В этот момент страницы в очереди кэша могут быть повторно активизированы VM со сравнительно малыми накладными расходами. Однако страницы в очереди кэша предполагается \"высвобождать немедленно\" и повторно использовать в LRU-порядке (меньше всего используемый), когда системе потребуется выделение дополнительной памяти.",
            "id": 911070,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/911070/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811514/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:26:10.247578Z",
            "action": 27,
            "target": "Полагая, что ошибка доступа к странице памяти в VM не является операцией с большими накладными расходами, если страница уже находится в основной памяти и может быть просто отображена в адресное пространство процесса, может оказаться, что это станет весьма накладно, если их будет оказываться регулярно много. Хорошим примером этой ситуации является запуск таких программ, как man:ls[1] или man:ps[1], снова и снова. Если бинарный файл программы отображен в память, но не отображен в таблицу страниц, то все страницы, к которым обращалась программа, окажутся недоступными при каждом запуске программы. Это не так уж необходимо, если эти страницы уже присутствуют в кэше VM, так что FreeBSD будет пытаться восстанавливать таблицы страниц процесса из тех страниц, что уже располагаются в VM-кэше. Однако во FreeBSD пока не выполняется предварительное копирование при записи определенных страниц при выполнении вызова exec. Например, если вы запускаете программу man:ls[1] одновременно с работающей `vmstat 1`, то заметите, что она всегда выдает некоторое количество ошибок доступа к страницам, даже когда вы запускаете её снова и снова. Это ошибки заполнения нулями, а не ошибки кода программы (которые уже были обработаны). Предварительное копирование страниц при выполнении вызовов exec или fork находятся в области, требующей более тщательного изучения.",
            "id": 911071,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/911071/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811515/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:26:10.261077Z",
            "action": 27,
            "target": "Большой процент ошибок доступа к страницам, относится к ошибкам при заполнении нулями. Вы можете обычно видеть это, просматривая вывод команды `vmstat -s`. Это происходит, когда процесс обращается к страницам в своей области BSS. Область BSS предполагается изначально заполненной нулями, но VM-система не заботится о выделении памяти до тех пор, пока процесс реально к ней не обратится. При возникновении ошибки VM-система должна не только выделить новую страницу, но и заполнить её нулями. Для оптимизации операции по заполнению нулями в системе VM имеется возможность предварительно обнулять страницы и помечать их, и запрашивать уже обнуленные страницы при возникновении ошибок заполнения нулями. Предварительное заполнение нулями происходит, когда CPU простаивает, однако количество страниц, которые система заранее заполняет нулями, ограничено, для того, чтобы не переполнить кэши памяти. Это прекрасный пример добавления сложности в VM-систему ради оптимизации критического пути.",
            "id": 911072,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/911072/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811536/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:26:10.273940Z",
            "action": 27,
            "target": "Ошибка COW может быть ошибкой при заполнении нулями или данных программы. Механизм в любом случае один и тот же, потому что хранилище данных программы уже в кэше. Я на самом деле не рад ни тому, ни другому. FreeBSD не выполняет предварительное COW данных программы и заполнение нулями, но она _выполняет_ предварительно отображение страниц, которые имеются в её кэше.",
            "id": 911073,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/911073/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811539/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-20T20:26:33.605101Z",
            "action": 27,
            "target": "Структуры `pv_entry` представляют страницы, отображаемые MMU (одна структура `pv_entry` соответствует одной pte). Это означает, что, когда нам нужно убрать все аппаратные ссылки на `vm_page` (для того, чтобы повторно использовать страницу для чего-то ещё, выгрузить её, очистить, пометить как грязную и так далее), мы можем просто просмотреть связный список структур `pv_entry`, связанных с этой `vm_page`, для того, чтобы удалить или изменить pte из их таблиц страниц.",
            "id": 911081,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/911081/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-11-21T04:45:06.807869Z",
            "action": 17,
            "target": "",
            "id": 911246,
            "action_name": "Committed changes",
            "url": "https://translate-dev.freebsd.org/api/changes/911246/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811528/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-24T18:57:31.639377Z",
            "action": 27,
            "target": "FreeBSD 3.X использует \"последовательный список свободных областей\" для управления свободными областями в разделе подкачки. Идея состоит в том, что большие последовательные блоки свободного пространства могут быть представлены при помощи узла односвязного списка ([.filename]#kern/subr_rlist.c#). Но из-за фрагментации последовательный список сам становится фрагментированным. В примере выше полностью неиспользуемое пространство в A и B будет показано как \"свободное\", а C и D как \"полностью занятое\". Каждой последовательности A-B требуется для учёта узел списка, потому что C и D являются дырами, так что узел списка не может быть связан со следующей последовательностью A-B.",
            "id": 911414,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/911414/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1811514/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/v.popolitov/?format=api",
            "timestamp": "2025-11-24T19:35:59.438902Z",
            "action": 27,
            "target": "Полагая, что ошибка доступа к странице памяти в VM не является операцией с большими накладными расходами, если страница уже находится в основной памяти и может быть просто отображена в адресное пространство процесса, может оказаться, что это станет весьма накладно, если их будет оказываться регулярно много. Хорошим примером этой ситуации является запуск таких программ, как man:ls[1] или man:ps[1], снова и снова. Если бинарный файл программы отображен в память, но не отображен в таблицу страниц, то все страницы, к которым обращалась программа, окажутся недоступными при каждом запуске программы. Это не так уж необходимо, если эти страницы уже присутствуют в кэше VM, так что FreeBSD будет пытаться восстанавливать таблицы страниц процесса из тех страниц, что уже располагаются в VM-кэше. Однако во FreeBSD пока не выполняется предварительное копирование при записи определённых страниц при выполнении вызова exec. Например, если вы запускаете программу man:ls[1] одновременно с работающей `vmstat 1`, то заметите, что она всегда выдает некоторое количество ошибок доступа к страницам, даже когда вы запускаете её снова и снова. Это ошибки заполнения нулями, а не ошибки кода программы (которые уже были обработаны). Предварительное копирование страниц при выполнении вызовов exec или fork находятся в области, требующей более тщательного изучения.",
            "id": 911593,
            "action_name": "Search and replace",
            "url": "https://translate-dev.freebsd.org/api/changes/911593/?format=api"
        },
        {
            "unit": null,
            "component": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/articlesvm-design_index/ru/?format=api",
            "user": null,
            "author": null,
            "timestamp": "2025-11-25T04:45:06.092438Z",
            "action": 17,
            "target": "",
            "id": 911677,
            "action_name": "Committed changes",
            "url": "https://translate-dev.freebsd.org/api/changes/911677/?format=api"
        }
    ]
}