AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 447104
Accepted
sys463
sys463
Asked: 2018-06-01 04:11:13 +0800 CST2018-06-01 04:11:13 +0800 CST 2018-06-01 04:11:13 +0800 CST

Arquivos mapeados de memória do Linux

  • 772

A saída do lsofmeu RHEL7 mostra que um arquivo com descritor de arquivo memé usado por 40 processos. Isso significa que este arquivo é mapeado na memória 40 vezes ou o quê? Alguém poderia explicar o que significa arquivos mapeados em memória? Isso significa que 40 vezes na minha memória?

# lsof /usr/lib/locale/locale-archive
COMANDO PID USUÁRIO FD TIPO TAMANHO DO DISPOSITIVO/DESLIGADO NOME DO NÓ
vmtoolsd 605 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
agetty 656 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
sintonizado 963 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
iostat 1199 adm mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
chkMtaMem 1205 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
snmpd 4704 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
sleep 5461 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
cmsubagt 6487 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
sleep 6649 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc1 6803 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc2 6835 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc3 6836 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc4 6856 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc5 6884 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc6 6889 usr mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc7 6893 usr1 mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
cmfpagt 7704 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc8 7943 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
crond 8001 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
sh 8005 adm mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
iostat 8014 adm mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
crond 20427 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc9 20648 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc10 20649 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc10 20760 usr2 mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc9 20777 usr2 mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc11 21353 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc12 21354 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc13 21355 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc14 21356 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc15 21357 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc16 21358 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc17 21554 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc18 21569 usr2 mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc19 21590 usr2 mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc20 21647 usr2 mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc21 22016 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc22 22017 root mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc23 22104 usr2 mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
proc24 22122 usr2 mem REG 8,5 106070960 50808629 /usr/lib/locale/locale-archive
linux rhel
  • 2 2 respostas
  • 1616 Views

2 respostas

  • Voted
  1. skyking
    2018-06-01T05:52:10+08:002018-06-01T05:52:10+08:00

    Sim, pelo manual de lsof:

       FD         is the File Descriptor number of the file or:
    
                       cwd  current working directory;
                       Lnn  library references (AIX);
                       err  FD information error (see NAME column);
                       jld  jail directory (FreeBSD);
                       ltx  shared library text (code and data);
                       Mxx  hex memory-mapped type number xx.
                       m86  DOS Merge mapped file;
                       mem  memory-mapped file;
                       mmap memory-mapped device;
                       pd   parent directory;
                       rtd  root directory;
                       tr   kernel trace file (OpenBSD);
                       txt  program text (code and data);
                       v86  VP/ix mapped file;
    

    É apenas se estiver mapeado no modo não compartilhado e qualquer processo gravar na memória virtual que exija mais de uma cópia do arquivo na memória física. Caso contrário, se nenhuma gravação ocorrer (o que eu não acho), os dados nem precisarão ocupar a memória física antes que qualquer processo leia a memória.

    • 2
  2. Best Answer
    ctrl-alt-delor
    2018-06-01T06:38:28+08:002018-06-01T06:38:28+08:00

    Veja a diferença entre memória virtual e física.

    Muitos processos podem mapear a mesma memória física. Se 10 processos mapearem o mesmo arquivo, no máximo uma cópia será armazenada em cache na RAM.

    Se a memória não for compartilhada, se um processo a alterar, essa página (com a alteração) será duplicada antes de confirmar a gravação. (Portanto, nem toda a memória é copiada. Isso é chamado de cópia na gravação ou COW).

    Um arquivo mapeado na memória é quando você pede ao sistema operacional para mapear um arquivo na memória. Ele não carrega o arquivo até que você comece a ler/escrever e somente o que for necessário. O mapeamento de memória é apenas uma interface diferente para leitura/gravação/busca/etc. Você também pode acessar a memória por meio de leitura/gravação/busca.

    Então, como isso é feito?

    Isso é feito percebendo que algumas coisas são as mesmas: Isso é troca e arquivos são os mesmos; e ram e cache de arquivo são os mesmos. Portanto, quando você abre um arquivo, ele é mapeado como swap (não se preocupe, ele não será usado para trocar outras coisas). Quando você começa a ler, uma falha de segmentação é gerada e o sistema operacional a troca do arquivo (a exceção (falha de segmentação) é tratada pelo sistema operacional, portanto não é repassada para um processo) (na verdade, não é uma falha de segmentação , é uma falha de página). Não importa qual interface você usa memória ou arquivo. Eles são apenas interfaces sobre a mesma funcionalidade.

    • 2

relate perguntas

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

  • Desativar a maximização automática de janelas no Gnome3

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve