0
Kernel Linux

Apresentando arquitetura e implementações
   internas do kernel open source Linux
                      v2.0...
Agenda
■   Localizando
■   Um pouco de história
■   Arquitetura
■   Linux x Unix clássico
■   Código Fonte
■   Kernel-spac...
Localizando




          3
Um pouco de história
■ Início em 1991, por Linus Torvalds
■ Inspirado no Minix, e não baseado nele
■ Implementação dos mai...
Linha de Tempo




             5
O tamanho do Linux




                 6
Arquiteturas de Kernel




                     7
Arquitetura GNU/Linux




                    8
Kernel Subsystems




                9
Linux x Unix clássico
■   Carregamento dinâmico de módulos;
■   Suporta multiprocessamento;
■   Suporta preempção;
■   Sup...
Código Fonte
■   Obtendo: http://www.kernel.org/
■   Versionamento
■   Explorando diretórios
■   Compilação




          ...
Código Fonte
■   Obtendo: http://www.kernel.org/
■   Versionamento
■   Explorando diretórios
■   Compilação




          ...
Código Fonte
■   Obtendo: http://www.kernel.org/
■   Versionamento
■   Explorando diretórios
■   Compilação




          ...
Código Fonte
■   Obtendo: http://www.kernel.org/
■   Versionamento
■   Explorando diretórios
■   Compilação




          ...
Código Fonte
■   Obtendo: http://www.kernel.org/
■   Versionamento
■   Explorando diretórios
■   Compilação




          ...
Kernel-space e User-space
■   Detalhes de desenvolvimento no kernel-space:
       Sem acesso à biblioteca C;
       Codi...
Processos e Threads
■ Implementação de processos a nível de kernel;
■ Nível básico da abstração gerenciável de
  programas...
Estados dos processos




                    18
Criação de Processos
■   Criação em duas etapas: fork() e exec();
■   Otimização de realocação de recursos;
■   O Linux fa...
COW: Copy-On-Write
■ Aproveitamento de recursos já alocados;
■ Não escreve dados desnecessários ou
  redundantes;
■ Menor ...
Threads no Linux
■ Não existem como na forma conceitual;
■ O Linux implementa threads como processos
  comuns;
■ LWP – Lig...
CFS
■ “Completely Fair Schedule” ou Escalonador
  Completamente Justo;
■ Foi implementado por Ingo Molnar e está na
  árvo...
RBT
■ O “Red Black Tree” é um algoritmo de
  armazenamento e busca de informações
  utilizando árvores;
■ Funcionamento pa...
CFS
■   A implementação do novo algoritmo de
    escalonamento veio com uma reimplementação
    completa do escalonador:
 ...
CFS
■   Como funciona?
       quot;CFS's design is quite radical: it does not use
        runqueues, it uses a time-order...
CFS
■   O CFS está implementado em:
       kernel/sched_fair.c
■   Modificações na task_struct:
       - struct prio_arr...
CFS
■   CFS Group Scheduling
       Redução do escopo do CFS para garantir e justiça de
        distribuição de processam...
E a Engenharia?
■ Vantagens das ferramentas open source em
  geral;
■ Conhecimento aprofundado e reaproveitável;
■ Custo e...
Kernel Linux



                Fim




               Contato
Página pessoal: http://hypercast.info/
     E-mail: liusfc@...
Upcoming SlideShare
Loading in...5
×

Apresentação sobre o kernel Linux v2.0

1,838

Published on

Apresentação sobre o kernel Linux feita na Engenharia de Teleinformática, UFC, Brasil.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,838
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
93
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Apresentação sobre o kernel Linux v2.0"

  1. 1. Kernel Linux Apresentando arquitetura e implementações internas do kernel open source Linux v2.0 Líus Fontenelle Carneiro http://hypercast.info/ 1
  2. 2. Agenda ■ Localizando ■ Um pouco de história ■ Arquitetura ■ Linux x Unix clássico ■ Código Fonte ■ Kernel-space e User-space ■ Processos e Threads ■ Escalonador (CFS) 2
  3. 3. Localizando 3
  4. 4. Um pouco de história ■ Início em 1991, por Linus Torvalds ■ Inspirado no Minix, e não baseado nele ■ Implementação dos mais variados recursos, encontrados nas variantes Unix e BSD ■ Preocupação com portabilidade e escalabilidade 4
  5. 5. Linha de Tempo 5
  6. 6. O tamanho do Linux 6
  7. 7. Arquiteturas de Kernel 7
  8. 8. Arquitetura GNU/Linux 8
  9. 9. Kernel Subsystems 9
  10. 10. Linux x Unix clássico ■ Carregamento dinâmico de módulos; ■ Suporta multiprocessamento; ■ Suporta preempção; ■ Suporta “processos leves”; ■ Modelo de devices sysfs. 10
  11. 11. Código Fonte ■ Obtendo: http://www.kernel.org/ ■ Versionamento ■ Explorando diretórios ■ Compilação 11
  12. 12. Código Fonte ■ Obtendo: http://www.kernel.org/ ■ Versionamento ■ Explorando diretórios ■ Compilação 12
  13. 13. Código Fonte ■ Obtendo: http://www.kernel.org/ ■ Versionamento ■ Explorando diretórios ■ Compilação 13
  14. 14. Código Fonte ■ Obtendo: http://www.kernel.org/ ■ Versionamento ■ Explorando diretórios ■ Compilação 14
  15. 15. Código Fonte ■ Obtendo: http://www.kernel.org/ ■ Versionamento ■ Explorando diretórios ■ Compilação 15
  16. 16. Kernel-space e User-space ■ Detalhes de desenvolvimento no kernel-space:  Sem acesso à biblioteca C;  Codificar em C99 e GNU C, não em ANSI;  Sem proteção para acesso à memória;  Sem acesso a ponto flutuante;  Cuidado com sincronia e concorrência;  Nunca esquecer da portabilidade. 16
  17. 17. Processos e Threads ■ Implementação de processos a nível de kernel; ■ Nível básico da abstração gerenciável de programas em execução; ■ Estrutura task_struct;  include/linux/sched.h, linha 994 ■ Process ID máximo é um short int por default; 17
  18. 18. Estados dos processos 18
  19. 19. Criação de Processos ■ Criação em duas etapas: fork() e exec(); ■ Otimização de realocação de recursos; ■ O Linux faz COW! 19
  20. 20. COW: Copy-On-Write ■ Aproveitamento de recursos já alocados; ■ Não escreve dados desnecessários ou redundantes; ■ Menor overhead em sistemas orientados a processos; ■ Estrutura thread_info e o slab allocator;  include/asm-x86_64/thread_info.h ■ Recurso disponibilizado pelo slab allocator. 20
  21. 21. Threads no Linux ■ Não existem como na forma conceitual; ■ O Linux implementa threads como processos comuns; ■ LWP – Lightweight Processes; ■ Não existem mecanismos de escalonamento especiais ou estruturas de dados específicas; ■ Contraste com outros sistemas; ■ KISS; ■ Assim como um processo, é criada partindo de um fork(), que usa a função clone():  kernel/fork.c ■ As flags da função clone() estão definidas em:  include/linux/sched.h 21
  22. 22. CFS ■ “Completely Fair Schedule” ou Escalonador Completamente Justo; ■ Foi implementado por Ingo Molnar e está na árvore oficial desde a versão 2.6.23; ■ Foco em melhorar tempo de resposta das tarefas interativas e dar flexibilidade no gerenciamento do escalonamento em geral; ■ Não se baseia mais em runqueues ou timeslices; ■ Não requer mais análises heurísticas para definir o grau de interatividade de uma tarefa; ■ Armazenamento de informações sobre os processos em Red Black Trees. 22
  23. 23. RBT ■ O “Red Black Tree” é um algoritmo de armazenamento e busca de informações utilizando árvores; ■ Funcionamento parecido com B-Trees convencionais, mas sendo alto-balanceadas e mantendo a simetria; 23
  24. 24. CFS ■ A implementação do novo algoritmo de escalonamento veio com uma reimplementação completa do escalonador:  Agora é modular (em termos de código);  O novo “escalonador” na verdade é um novo algoritmo de escalonamento é um módulo do escalonador, que também é novo! ■ Qual é a idéia? Pelo próprio Ingo Molnar:  quot;This project is a complete rewrite of the Linux task scheduler. My goal is to address various feature requests and to fix deficiencies in the vanilla scheduler that were suggested/found in the past few years, both for desktop scheduling and for server scheduling workloads.quot; 24
  25. 25. CFS ■ Como funciona?  quot;CFS's design is quite radical: it does not use runqueues, it uses a time-ordered rbtree to build a 'timeline' of future task execution, and thus has no 'array switch' artifacts (by which both the vanilla scheduler and RSDL/SD are affected). CFS uses nanosecond granularity accounting and does not rely on any jiffies or other HZ detail. Thus the CFS scheduler has no notion of 'timeslices' and has no heuristics whatsoever.” ■ Essa granularidade pode ser checada em:  /proc/sys/kernel/sched_min_granularity_ns 25
  26. 26. CFS ■ O CFS está implementado em:  kernel/sched_fair.c ■ Modificações na task_struct:  - struct prio_array *array;  + struct sched_entity se; 26
  27. 27. CFS ■ CFS Group Scheduling  Redução do escopo do CFS para garantir e justiça de distribuição de processamento entre processos de um grupo;  Administração no user-space baseada em arquivos e diretórios de um sistema de arquivos virtual;  Ainda sem suporte na versão estável do kernel para gerenciamento de mais de um nível de grupo, como no caso de usar grupos dentro de grupos. 27
  28. 28. E a Engenharia? ■ Vantagens das ferramentas open source em geral; ■ Conhecimento aprofundado e reaproveitável; ■ Custo e fontes disponíveis; ■ Liberdade para escolher; ■ Liberdade para contribuir. 28
  29. 29. Kernel Linux Fim Contato Página pessoal: http://hypercast.info/ E-mail: liusfc@gmail.com 29
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×