Articles of linux kernel

Uso de ponto flutuante no kernel do Linux

Estou lendo “Linux Kernel Development”, de Robert Love, e me deparei com a seguinte passagem: Não (Fácil) Uso do Ponto Flutuante Quando um processo de espaço do usuário usa instruções de ponto flutuante, o kernel gerencia a transição do modo inteiro para o ponto flutuante. O que o kernel precisa fazer ao usar instruções de […]

O que são vdso e vsyscall?

Eu fiz o sudo cat /proc/1/maps -vv Eu estou tentando fazer sentido da saída. Eu posso ver um monte de bibliotecas compartilhadas sendo mapeadas para o segmento de mapeamento de memory conforme o esperado. 7f3c00137000-7f3c00179000 r-xp 00000000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00179000-7f3c00379000 —p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00379000-7f3c0037a000 r–p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037a000-7f3c0037b000 rw-p 00043000 […]

Se os threads compartilham o mesmo PID, como eles podem ser identificados?

Eu tenho uma consulta relacionada à implementação de threads no Linux. O Linux não possui suporte explícito a threads. No userspace, podemos usar uma biblioteca de threads (como o NPTL) para criar threads. Agora, se usarmos o NPTL, ele suportará o mapeamento 1: 1. O kernel usará a function clone() para implementar threads. Suponha que […]

Como usar o netlink socket para se comunicar com um módulo do kernel?

Eu estou tentando escrever um módulo de kernel do Linux que se comunica com o processo do usuário usando o netlink. Eu estou usando netlink porque o programa do usuário que eu quero comunicar se comunica usando apenas sockets e eu não posso mudar isso para adicionar ioctl() ou qualquer coisa. O problema é que […]

Descobrindo qual processo foi morto pelo assassino Linux OOM

Quando o Linux fica sem memory (OOM), o OOM killer escolhe um processo para matar baseado em algumas heurísticas (é uma leitura interessante: http://lwn.net/Articles/317814/ ). Como alguém pode determinar programaticamente quais processos foram mortos recentemente pelo assassino da OOM?

Medir o tempo no Linux – tempo vs relógio vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?

Entre as funções de time , time , clock getrusage , clock_gettime , gettimeofday e timespec_get , quero entender claramente como eles são implementados e quais são seus valores de retorno para saber em qual situação eu tenho que usá-los. Primeiro, precisamos classificar as funções que retornam os valores de relógio de parede para comparar […]

Como depurar o kernel do Linux com o GDB e o QEMU?

Eu sou novo no desenvolvimento do kernel e gostaria de saber como executar / depurar o kernel do linux usando o QEMU e o gdb. Na verdade, estou lendo o livro de Robert Love, mas infelizmente isso não ajuda o leitor sobre como instalar ferramentas adequadas para executar ou depurar o kernel … Então o […]

Kernel Linux: exemplo de enganchamento de chamadas do sistema

Eu estou tentando escrever algum código de teste simples como uma demonstração de ligar a tabela de chamada do sistema. “sys_call_table” não é mais exportado na versão 2.6, então eu estou apenas pegando o endereço do arquivo System.map, e eu posso ver que está correto (Olhando através da memory para o endereço que encontrei, eu […]

O que acontece com um identificador de arquivo aberto no Linux se o arquivo apontado for movido, excluir

O que acontece com um identificador de arquivo aberto no Linux se o arquivo apontado receber: Movido para fora -> O identificador de arquivo permanece válido? Excluído -> Isso leva a uma EBADF, indicando um identificador de arquivo inválido? Substituído por um novo arquivo -> O arquivo manipula apontando para este novo arquivo? Substituído por […]

Qual é o número máximo teórico de conexões TCP abertas que uma checkbox Linux moderna pode ter?

Assumindo um desempenho infinito do hardware, uma checkbox Linux pode suportar> 65536 conexões TCP abertas? Eu entendo que o número de portas efêmeras (<65536) limita o número de conexões de um IP local para uma porta em um IP remoto. A tupla (ip local, porta local, ip remoto, porta remota) é o que define com […]