Por que “imagens de programas e bibliotecas compartilhadas” são “consideradas privadas para um processo”, mas “compartilhadas (SHR) pelo kernel”?

0

Em a página de manual de top ,

  • Por que "imagens de programas e bibliotecas compartilhadas" estão em # 3 "consideradas privadas em um processo", se "elas serão consideradas compartilhadas (SHR) pelo kernel"?

  • Em que sentido "privado" são "imagens de programas e bibliotecas compartilhadas" consideradas "privadas para um processo"? São "imagens de programas e bibliotecas compartilhadas" somente leitura?

  • Em que sentido "compartilhado" são "imagens de programas e bibliotecas compartilhadas" "contabilizadas como compartilhadas (SHR) pelo kernel"?

  • "o arquivo de troca inclui apenas de # 1 a # 3. A memória no quadrante # 4, quando modificada, age como seu próprio arquivo de troca dedicado." As "imagens de programas e bibliotecas compartilhadas" também funcionam como seus próprios arquivos de troca dedicados?

Obrigado.

For each such process, every memory page is restricted to a single quadrant from the table below. Both physical memory and virtual
memory can include any of the four, while the swap file only includes #1 through #3. The memory in quadrant #4, when modified, acts as its own dedicated swap file.

                             Private | Shared
                         1           |          2
    Anonymous  . stack               |
               . malloc()            |
               . brk()/sbrk()        | . POSIX shm*
               . mmap(PRIVATE, ANON) | . mmap(SHARED, ANON)
              -----------------------+----------------------
               . mmap(PRIVATE, fd)   | . mmap(SHARED, fd)
  File-backed  . pgms/shared libs    |
                         3           |          4

The following may help in interpreting process level memory values displayed as scalable columns and discussed under topic '3a.DESCRIPTIONS of Fields'.

  SHR  - subset of RES (excludes 1, includes all 2 & 4, some 3)

Note: Even though program images and shared libraries are considered private to a process, they will be accounted for as shared (SHR) by the kernel.

    
por Tim 29.10.2018 / 22:26

1 resposta

1

O diagrama distingue a perspectiva privada e compartilhada da perspectiva dos processos em execução. As páginas representadas à esquerda são privadas para cada processo, mesmo que possam ser compartilhadas pelo kernel ( i.e. mapeadas para o mesmo local físico, na memória ou em um armazenamento de apoio). As páginas representadas à direita são compartilhadas por vários processos, e não há expectativas estritas de privacidade.

Assim, as imagens do programa e as bibliotecas compartilhadas são privadas porque qualquer alteração feita a elas, na memória, é visível apenas para o processo que faz as alterações. A maioria das páginas mapeadas de arquivos executáveis e bibliotecas é de fato não-gravável, mas elas não precisam ser.

Eles são compartilhados simultaneamente, conforme visualizados pelo kernel, porque eles mapeiam para áreas físicas compartilhadas. (Usando copy-on-write para que eles possam ser descompartilhados, se necessário.) Esse compartilhamento é um detalhe no nível do kernel e é invisível aos processos.

O swap é um armazenamento de apoio para páginas sujas, isto é, memória que foi alterada desde que foi carregada. As páginas não sujas não precisam de troca: sua origem (normalmente um arquivo mapeado na memória) é o armazenamento de apoio e, quando as pressões de memória determinam que elas sejam removidas da memória física, elas podem ser simplesmente descartadas. Páginas sujas, não compartilhadas, precisam de algum tipo de armazenamento de apoio para serem removidas da memória física. Na maioria dos casos, isso é swap; mas a memória compartilhada suportada por arquivo tem outro armazenamento de backup natural, o arquivo que a suporta. As páginas da memória compartilhada por arquivos que precisam ser removidas da memória física podem ser gravadas no arquivo de backup e descartadas, sem envolver a troca.

    
por 29.10.2018 / 23:40