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 / 问题

All perguntas(unix)

Martin Hope
Nungesser Mcmindes
Asked: 2025-04-18 09:28:26 +0800 CST

fork() faz com que o buffer DMA na memória física retenha dados obsoletos em gravações subsequentes

  • 13

Estou trabalhando em uma aplicação C++ no Ubuntu 20.04 que usa PCIe DMA para transferir dados de um buffer de espaço do usuário para o hardware. O buffer é mapeado para uma região fixa de 1K de memória física por meio de uma biblioteca personalizada (plib->copyDataToBuffer). Depois de chamar fork() e executar um processo filho (que apenas chama um programa externo e sai), notei que as gravações subsequentes no buffer pelo processo pai não são refletidas na memória física — o kernel ainda vê os dados antigos de antes da bifurcação.

Detalhes principais: O buffer de 1K é mapeado especificamente para DMA; ele é fixado e mapeado para um endereço físico conhecido.

Antes do fork(), uma chamada para plib->copyDataToBuffer atualiza corretamente a memória física.

Após fork(), o processo pai chama plib->copyDataToBuffer novamente com novos dados, e msync retorna sucesso, mas o conteúdo da memória física permanece inalterado.

O processo filho não toca no buffer; ele apenas executa um comando não relacionado via execvp.

Minhas suposições e preocupações: fork() causa COW (Copy-on-Write), mas como somente o pai grava no buffer, eu esperava que o conteúdo atualizado refletisse na memória física.

O comportamento do COW ou o remapeamento de memória pós-bifurcação podem estar interferindo nas regiões de memória mapeadas por DMA?

Confirmei que plib->copyDataToBuffer executa a gravação corretamente de uma perspectiva de software, mas o conteúdo real da memória física (verificado a partir do espaço do kernel) permanece obsoleto.

Pergunta: Por que a memória física que dá suporte ao meu buffer DMA retém dados obsoletos após um fork() + exec em um processo filho, mesmo que o pai grave novos dados depois?

Quais são as melhores práticas para garantir atualizações consistentes de memória física para buffers DMA em chamadas fork()?

linux
  • 2 respostas
  • 553 Views
Martin Hope
stickynotememo
Asked: 2025-01-31 18:49:56 +0800 CST

Por que o chmod 777 é tão ruim se eu sou o único usuário no sistema?

  • 13

Ouvi dizer que chmod 777é uma ideia horrível. No entanto, ninguém mais vai usar meu sistema (e esse é um cenário bem comum para muitos sistemas *nix). Por que eu não deveria permitir tudo?

permissions
  • 5 respostas
  • 4469 Views
Martin Hope
onlynone
Asked: 2018-01-04 13:07:10 +0800 CST

Como os argumentos da linha de comando remoto ssh são analisados

  • 14

Eu vi as perguntas e respostas sobre a necessidade de escape duplo dos argumentos para comandos ssh remotos. Minha pergunta é: exatamente onde e quando a segunda análise é feita?

Se eu executar o seguinte:

$ ssh otherhost pstree -a -p

Eu vejo o seguinte na saída:

  |-sshd,3736
  |   `-sshd,1102
  |       `-sshd,1109
  |           `-pstree,1112 -a -p

O processo pai para o comando remoto ( pstree) é sshd, não parece haver nenhum shell que analise os argumentos da linha de comando para o comando remoto, portanto, não parece que aspas duplas ou escape seriam necessárias ( mas com certeza é). Se, em vez disso, eu ssh lá primeiro e obter um shell de login e, em seguida, executar pstree -a -p, vejo o seguinte na saída:

  ├─sshd,3736
  │   └─sshd,3733
  │       └─sshd,3735
  │           └─bash,3737
  │               └─pstree,4130 -a -p

Então, claramente, há um bashshell que faria a análise da linha de comando nesse caso. Mas no caso em que eu uso um comando remoto diretamente, não parece haver um shell, então por que aspas duplas são necessárias?

bash shell
  • 3 respostas
  • 3255 Views
Martin Hope
111---
Asked: 2017-12-29 06:10:51 +0800 CST

O bash fornece suporte para o uso de ponteiros?

  • 14

Questão simples. O shell bash tem suporte para usar ponteiros ao escrever um script de shell?

Estou familiarizado com a notação de expansão, ${var[@]}ao iterar sobre o array $var, mas não está claro que isso esteja utilizando ponteiros para iterar sobre os índices do array. O bash fornece acesso a endereços de memória como outros idiomas?

Se o bash não suporta o uso de ponteiros, o que outros shells fazem?

bash
  • 4 respostas
  • 10768 Views
Martin Hope
yael
Asked: 2017-12-26 02:28:01 +0800 CST

Como testar se os elementos da matriz são todos iguais no bash?

  • 14

A matriz a seguir representa o número de discos em cada máquina Linux

Cada array único inclui o número de discos em uma máquina Linux .

echo ${ARRAY_DISK_Quantity[*]}
4 4 4 4 2 4 4 4

qual é a maneira simples de identificar que todos os valores da matriz são iguais?

bom estado:

4 4 4 4 4 4 4 4

Estado ruim:

4 4 4 4 4 4 2 4

Estado ruim:

6 6 6 6 6 6 6 6 6 6 2 6 2
bash shell-script
  • 8 respostas
  • 14991 Views
Martin Hope
manifestor
Asked: 2017-12-14 08:31:50 +0800 CST

O que mata -- -0 faz? [duplicado]

  • 14
Esta pergunta já tem respostas aqui :
O que significa "--" (traço duplo)? (5 respostas)
Fechado há 4 anos .

Sim, eu vi que já existe uma pergunta semelhante , mas me deparei kill -- -0e queria saber o que --está fazendo?

linux process
  • 2 respostas
  • 4488 Views
Martin Hope
Caleb Jares
Asked: 2017-12-13 09:32:58 +0800 CST

tail -f, mas quando o arquivo é excluído e recriado (não anexado)

  • 14

Estou tentando observar qualquer nova saída de um arquivo de log. Outro script (que não está sob meu controle) está excluindo o arquivo e criando um novo com o mesmo nome. O uso tail -fnão funciona porque o arquivo está sendo excluído.

tail
  • 2 respostas
  • 7328 Views
Martin Hope
karlosss
Asked: 2017-12-10 03:20:09 +0800 CST

Como fazer com que a leitura e gravação do mesmo arquivo no mesmo pipeline sempre "falha"?

  • 14

Digamos que eu tenha o seguinte script:

#!/bin/bash
for i in $(seq 1000)
do
    cp /etc/passwd tmp
    cat tmp | head -1 | head -1 | head -1 > tmp  #this is the key line
    cat tmp
done

Na linha chave, leio e escrevo o mesmo arquivo tmpque às vezes falha.

(Eu li que é por causa das condições de corrida porque os processos no pipeline são executados em paralelo, o que não entendo por que - cada um headprecisa pegar os dados do anterior, não é? Essa NÃO é minha pergunta principal, mas você também pode responder.)

Quando executo o script, ele gera cerca de 200 linhas. Existe alguma maneira de forçar esse script a produzir sempre 0 linhas (para que o redirecionamento de E/S tmpseja sempre preparado primeiro e os dados sejam sempre destruídos)? Para ser claro, quero dizer alterar as configurações do sistema, não este script.

Obrigado por suas idéias.

bash process
  • 2 respostas
  • 4866 Views
Martin Hope
thecarpy
Asked: 2017-11-28 09:02:05 +0800 CST

Qual é o benefício de /etc/apt/sources.list.d sobre /etc/apt/sources.list

  • 14

Sei que essa pergunta já foi feita antes, mas não aceito a resposta: "você pode ver claramente as adições personalizadas". Quando adiciono ppa's (o que não faço há anos), aperto uma tecla do teclado chamada "Enter" que me permite adicionar uma linha vazia antes da nova entrada (eu até adicionaria um comentário explicativo, mas sou um escritor de tecnologia, então ....). Eu gosto do meu sources.conflimpo e arrumado.

/etc/apt/sources.d

Significa que tenho meia dúzia de arquivos para analisar em vez de apenas um.

AFAIK, não há "absolutamente" nenhuma vantagem em ter um arquivo de configuração versus 6 (por uma questão de argumento, talvez você tenha 3 ou até 2, não importa ... 1 ainda vence 2).

Alguém pode, por favor, apresentar uma vantagem racional, "você pode ver claramente as adições personalizadas" é uma desculpa de pobre.

Devo acrescentar que adoro mudanças, no entanto, APENAS quando há benefícios introduzidos pela mudança.

Editar após a primeira resposta:

Ele permite que novas instalações que precisam de seus próprios repositórios não precisem pesquisar um arquivo simples para garantir que não estejam adicionando entradas duplicadas.

Agora, eles precisam procurar em um diretório por dupes em vez de um arquivo simples. A menos que eles assumam que os administradores não mudam as coisas ...

Ele permite que um administrador de sistema desative facilmente (renomeando) ou remova (excluindo) um conjunto de repositórios sem precisar editar um arquivo monolítico.

O administrador precisa grep do diretório para encontrar o arquivo apropriado para renomear, antes, ele pesquisaria UM arquivo e comentaria uma linha, uma linha sed para "quase" qualquer administrador.

Ele permite que um mantenedor de pacote forneça um comando simples para atualizar os locais do repositório sem ter que se preocupar em alterar inadvertidamente a configuração de repositórios não relacionados.

Não entendo este, "presumo" que o mantenedor do pacote conheça a URL de seu repositório. Novamente, tem sedum diretório em vez de um único arquivo.

linux apt
  • 6 respostas
  • 11055 Views
Martin Hope
gmarmstrong
Asked: 2017-11-27 06:03:59 +0800 CST

Visualizar PDF como imagem no ranger

  • 14

Como posso visualizar PDFs como imagens no ranger ? Por padrão, ele usa pdftotext(no scope.sharquivo de configuração de visualização), mas gostaria de usar pdfimages, pdftoppmou outra solução gráfica.

O ArchWiki sugere um método usandopdftoppm , mas parece desatualizado (não funciona como está e não segue a estrutura do código ao redor).

pdf ranger
  • 4 respostas
  • 16102 Views
Prev
Próximo

Sidebar

Stats

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

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

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

    • 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

    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
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • 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
    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

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