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=7
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 1495,
    "next": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/changes/?format=api&page=8",
    "previous": "https://translate-dev.freebsd.org/api/components/documentation/articlesvm-design_index/changes/?format=api&page=6",
    "results": [
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615510/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.128640Z",
            "action": 45,
            "target": "",
            "id": 276327,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276327/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615510/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.131272Z",
            "action": 6,
            "target": "Uma <literal>vm_page</literal> representa uma tupla (objeto,índice#). Um <literal>pv_entry</literal> representa uma entrada de tabela de página de hardware (pte). Se você tem cinco processos compartilhando a mesma página física, e três dessas tabelas de páginas atualmente mapeiam a página, esta página será representada por uma única estrutura <literal>vm_page</literal> e três estruturas <literal>pv_entry</literal>.",
            "id": 276328,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276328/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/368094/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.148742Z",
            "action": 45,
            "target": "",
            "id": 276329,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276329/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/368094/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.151937Z",
            "action": 6,
            "target": "Em sua seção sobre otimizações de tabela de páginas, você pode dar um pouco mais de detalhes sobre <literal>pv_entry</literal> e <literal>vm_page</literal> (ou vm_page deveria ser <literal>vm_pmap</literal>- como em 4.4, cf. pp. 180-181 of McKusick, Bostic, Karel, Quarterman)? Especificamente, que tipo de operação/reação exigiria a varredura dos mapeamentos?",
            "id": 276330,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276330/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615509/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.174055Z",
            "action": 45,
            "target": "",
            "id": 276331,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276331/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615509/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.176620Z",
            "action": 6,
            "target": "Uma falha de COW pode ser preenchimento com zero ou dados de programa. O mecanismo é o mesmo dos dois modos, porque os dados do programa de apoio quase certamente já estão no cache. Eu estou realmente juntando os dois. O FreeBSD não faz o pré-COW dos dados do programa ou preenchimento com zero, mas <emphasis>faz</emphasis> pré-mapeamento de páginas que existem em seu cache.",
            "id": 276332,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276332/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/368088/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.196929Z",
            "action": 45,
            "target": "",
            "id": 276333,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276333/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/368088/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.199517Z",
            "action": 6,
            "target": "O que isto significa é que o FreeBSD não tentará muito separar páginas sujas (fila inativa) de páginas limpas (fila de cache) quando o sistema não está sendo estressado, nem vai tentar desativar páginas (fila ativa -&gt; fila inativa) quando o sistema não está sendo estressado, mesmo que não estejam sendo usados.",
            "id": 276334,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276334/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615508/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.221599Z",
            "action": 45,
            "target": "",
            "id": 276335,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276335/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615508/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.234699Z",
            "action": 6,
            "target": "Sim, isto é confuso. A relação é <quote>meta</quote> versus <quote>realidade</quote>. Nosso objetivo é separar as páginas, mas a realidade é que, se não estamos em uma crise de memória, não precisamos realmente fazer isso.",
            "id": 276336,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276336/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/368084/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.254088Z",
            "action": 45,
            "target": "",
            "id": 276337,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276337/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/368084/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.256906Z",
            "action": 6,
            "target": "Como a separação de páginas limpas e sujas (inativas) está relacionada à situação em que você vê baixas contagens de filas de cache e altas contagens de filas ativas no <command>systat -vm</command>? As estatísticas do systat rolam as páginas ativa e inativas juntas para a contagem de filas ativas?",
            "id": 276338,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276338/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615507/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.277346Z",
            "action": 45,
            "target": "",
            "id": 276339,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276339/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615507/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.280204Z",
            "action": 6,
            "target": "No 4.X, não usamos uma lista sequencial. Em vez disto, usamos uma árvore raiz e bitmaps de blocos de swap em vez de lista de nós variáveis. Aceitamos o sucesso de pré-alocar todos os bitmaps necessários para toda a área de swap na frente, mas acaba desperdiçando menos memória devido ao uso de um bitmap (um bit por bloco) em vez de uma lista encadeada de nós. O uso de uma árvore raiz em vez de uma lista sequencial nos dá quase o desempenho O(1), não importa o quão fragmentada a árvore se torne.",
            "id": 276340,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276340/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615506/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.304599Z",
            "action": 45,
            "target": "",
            "id": 276341,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276341/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615506/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.307216Z",
            "action": 6,
            "target": "A fragmentação causa outros problemas. Sendo uma lista linear sob 3.X, e tendo uma enorme quantidade de fragmentação inerente, alocando e liberando swap leva a ser um algoritmo O(N) ao invés de um algoritmo O(1). Combinado com outros fatores (troca pesada) e você começa a entrar em níveis de sobrecarga O(N^2) e O(N^3), o que é ruim. O sistema 3.X também pode precisar alocar o KVM durante uma operação de troca para criar um novo nó da lista que pode levar a um impasse se o sistema estiver tentando fazer uma liberação de página em uma situação de pouca memória.",
            "id": 276342,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276342/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615505/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.332888Z",
            "action": 45,
            "target": "",
            "id": 276343,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276343/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615505/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.335597Z",
            "action": 6,
            "target": "O FreeBSD 3.X usa uma abordagem de <quote>lista sequencial de regiões livres</quote> para contabilizar as áreas de swap livres. A ideia é que grandes blocos de espaço linear livre possam ser representados com um único nó da lista (<filename>kern/subr_rlist.c</filename>). Mas devido a fragmentação, a lista sequencial acaba sendo insanamente fragmentada. No exemplo acima, a swap completamente sem uso terá A e B mostrados como <quote>livres</quote> e C e D mostrados como <quote>todos alocados</quote>. Cada sequência A-B requer um nó da lista para considerar porque C e D são buracos, portanto, o nó de lista não pode ser combinado com a próxima sequência A-B.",
            "id": 276344,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276344/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/368074/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.355140Z",
            "action": 45,
            "target": "",
            "id": 276345,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276345/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/368074/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.358269Z",
            "action": 6,
            "target": "A B C D A B C D A B C D A B C D\n",
            "id": 276346,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276346/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615504/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.375444Z",
            "action": 45,
            "target": "",
            "id": 276347,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276347/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615504/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.378885Z",
            "action": 6,
            "target": "O FreeBSD usa um intercalador de swap fixo, cujo padrão é 4. Isso significa que o FreeBSD reserva espaço para quatro áreas de swap, mesmo se você tiver apenas uma, duas ou três. Como a swap é intercalada, o espaço de endereçamento linear representando as <quote>quatro áreas de troca</quote> estará fragmentado se você não tiver quatro áreas de troca. Por exemplo, se você tiver duas áreas de swap, A e B, a representação do espaço de endereçamento do FreeBSD para esta área de troca será intercalada em blocos de 16 páginas:",
            "id": 276348,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276348/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615503/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.409981Z",
            "action": 45,
            "target": "",
            "id": 276349,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276349/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615503/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.413008Z",
            "action": 6,
            "target": "A memória virtual em sistemas operacionais modernos deve abordar vários problemas diferentes de maneira eficiente e para muitos padrões de uso diferentes. A abordagem modular e algorítmica que o BSD historicamente teve nos permite estudar e entender a implementação atual, bem como substituir de forma relativamente limpa grandes seções do código. Houve uma série de melhorias no sistema de VM do FreeBSD nos últimos anos e o trabalho está em andamento.",
            "id": 276350,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276350/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615500/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.489499Z",
            "action": 45,
            "target": "",
            "id": 276355,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276355/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615500/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.492478Z",
            "action": 6,
            "target": "Tanto o Linux quanto o FreeBSD precisam funcionar nesta área. O FreeBSD está tentando maximizar a vantagem de um modelo de mapeamento ativo potencialmente esparso (nem todos os processos precisam mapear todas as páginas de uma biblioteca compartilhada, por exemplo), enquanto o Linux está tentando simplificar seus algoritmos. O FreeBSD geralmente tem a vantagem de desempenho aqui, ao custo de desperdiçar um pouco de memória extra, mas o FreeBSD quebra no caso em que um arquivo grande é massivamente compartilhado em centenas de processos. O Linux, por outro lado, se quebra no caso em que muitos processos mapeiam esparsamente a mesma biblioteca compartilhada e também são executados de maneira não ideal ao tentar determinar se uma página pode ser reutilizada ou não.",
            "id": 276356,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276356/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615499/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.521791Z",
            "action": 45,
            "target": "",
            "id": 276357,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276357/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615499/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.523930Z",
            "action": 6,
            "target": "As otimizações da tabela de páginas constituem a parte mais contenciosa do design de VM do FreeBSD e mostraram alguma tensão com o advento do uso sério de <function>mmap()</function>. Eu acho que isso é realmente uma característica da maioria dos BSDs, embora eu não tenha certeza de quando foi introduzido pela primeira vez. Existem duas otimizações principais. A primeira é que as tabelas de páginas de hardware não contêm estado persistente, mas podem ser descartadas a qualquer momento com apenas uma pequena quantidade de sobrecarga de gerenciamento. A segunda é que cada entrada ativa da tabela de páginas no sistema tem uma estrutura governante <literal>pv_entry</literal> que é amarrada na estrutura <literal>vm_page</literal>. O FreeBSD pode simplesmente iterar através desses mapeamentos que são conhecidos, enquanto o Linux deve verificar todas as tabelas de páginas que <emphasis>possam</emphasis> conter um mapeamento específico para ver se ele o faz, o que pode alcançar O(n^2) situações. É por isso que o FreeBSD tende a fazer melhores escolhas em quais páginas reutilizar ou trocar quando a memória é estressada, dando-lhe melhor desempenho em sobrecarga. No entanto, o FreeBSD requer o ajuste do kernel para acomodar situações de grandes espaços de endereços compartilhados, como aquelas que podem ocorrer em um sistema de notícias, porque ele pode rodar sem estruturas <literal>pv_entry</literal>.",
            "id": 276358,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276358/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615495/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.611580Z",
            "action": 45,
            "target": "",
            "id": 276363,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276363/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615495/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.617384Z",
            "action": 6,
            "target": "É importante notar que o sistema de VM do FreeBSD tenta separar páginas limpas e inativas pelo motivo expresso de evitar descargas desnecessárias de páginas inativas (que consomem largura de banda de I/O), nem move páginas entre as várias filas de páginas gratuitamente quando o subsistema de memória não está sendo enfatizado. É por isto que você verá alguns sistemas com contagens de fila de cache muito baixas e contagens alta de fila ativa ao executar um comando <command>systat -vm</command>. À medida que o sistema de VM se torna mais estressado, ele faz um esforço maior para manter as várias filas de páginas nos níveis determinados para serem mais eficazes.",
            "id": 276364,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276364/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615494/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.647829Z",
            "action": 45,
            "target": "",
            "id": 276365,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276365/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615494/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.651818Z",
            "action": 6,
            "target": "O FreeBSD faz uso de várias filas de páginas para refinar ainda mais a seleção de páginas para reutilização, bem como para determinar quando páginas inativas devem ser liberadas para o suporte ao armazenamento. Como as tabelas de páginas são entidades dinâmicas sob o FreeBSD, não custa virtualmente nada desmapear uma página do espaço de endereço de qualquer processo que a utilize. Quando uma página cadidata ser escolhida com base no contador de uso de página, isso é precisamente o que é feito. O sistema deve fazer uma distinção entre páginas limpas que teoricamente podem ser liberadas a qualquer momento, e páginas inativas que devem primeiro ser escritas em seu repositório de armazenamento antes de serem reutilizáveis. Quando uma página candidata for encontrada, ela será movida para a fila inativa, se estiver inativas, ou para a fila de cache, se estiver limpa. Um algoritmo separado baseado na proporção de páginas inativas para limpas determina quando páginas inativas na fila inativa devem ser liberadas para o disco. Depois que isso for feito, as páginas liberadas serão movidas da fila inativa para a fila de cache. Neste ponto, as páginas na fila de cache ainda podem ser reativadas por uma falha de VM a um custo relativamente baixo. No entanto, as páginas na fila de cache são consideradas <quote>imediatamente livres</quote> e serão reutilizadas em uma forma LRU (usada menos recentemente) quando o sistema precisar alocar nova memória.",
            "id": 276366,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276366/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615493/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.686737Z",
            "action": 45,
            "target": "",
            "id": 276367,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276367/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615493/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.690132Z",
            "action": 6,
            "target": "Para as plataformas que não possuem esse recurso, o sistema realmente emula um bit usado na página. Ele remove o mapeamento ou protege uma página, forçando uma falha de página se a página for acessada novamente. Quando a falha de página acontece, o sistema simplesmente marca a página como tendo sido usada e desprotege a página para que ela possa ser usada. Embora a tomada de tais falhas de página apenas para determinar se uma página está sendo usada pareça ser uma proposta cara, é muito menos dispendioso do que reutilizar a página para outra finalidade, apenas para descobrir que um processo precisa dela e depois ir para o disco .",
            "id": 276368,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276368/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615492/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.708904Z",
            "action": 45,
            "target": "",
            "id": 276369,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276369/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615492/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.711659Z",
            "action": 6,
            "target": "Em qualquer caso, o bit usado na página é desmarcado e, em algum momento posterior, o sistema de VM encontra a página novamente e vê que o bit usado na página foi definido. Isso indica que a página ainda está sendo usada ativamente. Se o bit ainda estiver desmarcado, é uma indicação de que a página não está sendo usada ativamente. Ao testar este bit periodicamente, é desenvolvido um histórico de uso (na forma de um contador) para a página física. Quando, posteriormente, o sistema de VM precisar liberar algumas páginas, a verificação desse histórico se tornará a base da determinação da melhor página candidata a ser reutilizada.",
            "id": 276370,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276370/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615491/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.732706Z",
            "action": 45,
            "target": "",
            "id": 276371,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276371/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615491/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.735474Z",
            "action": 6,
            "target": "O algoritmo de determinação de página livre é construído sobre um histórico do uso das páginas de memória. Para adquirir este histórico, o sistema tira proveito de um recurso de um bit usado pela página que a maioria das tabelas de página de hardware possui.",
            "id": 276372,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276372/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615489/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.784116Z",
            "action": 45,
            "target": "",
            "id": 276375,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276375/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615489/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.786965Z",
            "action": 6,
            "target": "Como o sistema de VM usa toda a memória disponível para o cache em disco, geralmente há poucas páginas realmente livres. O sistema de VM depende de poder escolher corretamente as páginas que não estão em uso para reutilizar em novas alocações. Selecionar as páginas ideais para liberar é possivelmente a função mais importante que qualquer sistema de VM pode executar, porque se fizer uma seleção ruim, o sistema de VM poderá ser desnecessariamente forçado a recuperar páginas do disco, prejudicando seriamente o desempenho do sistema.",
            "id": 276376,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276376/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615488/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.827867Z",
            "action": 45,
            "target": "",
            "id": 276379,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276379/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615488/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.830175Z",
            "action": 6,
            "target": "É evidente a partir dessa lista que havia muito espaço para melhorias. Para o FreeBSD 4.X, eu reescrevi completamente o subsistema de swap:",
            "id": 276380,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276380/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/368004/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.873670Z",
            "action": 45,
            "target": "",
            "id": 276383,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276383/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/368004/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.876059Z",
            "action": 6,
            "target": "Sob o FreeBSD 3.X, a estrutura de gerenciamento de swap pré-aloca uma matriz que engloba todo o objeto que requer suporte para armazenamento da swap - mesmo que apenas algumas páginas desse objeto sejam suportadas por swap. Isto cria um problema de fragmentação de memória do kernel quando grandes objetos são mapeados ou processos com fork de grandes runsizes (RSS).",
            "id": 276384,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276384/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615487/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.895140Z",
            "action": 45,
            "target": "",
            "id": 276385,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276385/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615487/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.897867Z",
            "action": 6,
            "target": "As páginas de dados privadas são inicialmente páginas copy-on-write ou zero-fill. Quando uma alteração e, portanto, uma cópia, é feita, o objeto de apoio original (geralmente um arquivo) não pode mais ser usado para salvar uma cópia da página quando o sistema da VM precisar reutilizá-lo para outras finalidades. É aí que o SWAP entra. O SWAP é alocado para criar um suporte de armazenamento para a memória que não o possui. O FreeBSD aloca a estrutura de gerenciamento de troca para um objeto de VM somente quando for realmente necessário. No entanto, historicamente, a estrutura de gerenciamento de troca teve problemas:",
            "id": 276386,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276386/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615486/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.917341Z",
            "action": 45,
            "target": "",
            "id": 276387,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276387/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615486/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.920448Z",
            "action": 6,
            "target": "A vantagem do modelo de objetos de VM é que o <function>fork()</function> é extremamente rápido, já que não é necessária nenhuma cópia de dados real. A desvantagem é que você pode criar uma camada de Objetos de VM relativamente complexa que reduz um pouco o tratamento de falhas de página e gasta memória gerenciando as estruturas de Objetos de VM. As otimizações que o FreeBSD faz prova reduzir os problemas o suficiente para que as falhas possam ser ignoradas, não deixando nenhuma desvantagem real.",
            "id": 276388,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276388/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615485/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.943274Z",
            "action": 45,
            "target": "",
            "id": 276389,
            "action_name": "New contributor",
            "url": "https://translate-dev.freebsd.org/api/changes/276389/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/615485/?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/pt_BR/?format=api",
            "user": null,
            "author": "https://translate-dev.freebsd.org/api/users/anonymous/?format=api",
            "timestamp": "2021-04-08T03:34:14.946105Z",
            "action": 6,
            "target": "O problema da página morta ainda existe no caso em que C1 ou C2 não ofuscaram completamente as páginas de B. Devido as nossas outras otimizações, este caso não representa um grande problema e simplesmente permitimos que as páginas fiquem inativas. Se o sistema ficar com pouca memória, ele irá trocá-las, comendo uma pequena parte da swap, mas é isso.",
            "id": 276390,
            "action_name": "Automatic translation",
            "url": "https://translate-dev.freebsd.org/api/changes/276390/?format=api"
        }
    ]
}