Sistemas de Computação Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) 2007/02 - INF01907
Informações gerais Página web: http://www.inf.ufes.br/~jpalmeida/ensino/2007-02- sistemas-computacao Carga horária semestral total: 60 horas Horário: segunda-feira:13:00-15:00 quinta-feira: 17:00-19:00 Local: CT-IX sala 101
Avaliação Uma prova parcial e um trabalho A média parcial (MP) é calculada por: MP = 0,6*P + 0,4*T, onde: P é a média aritmética da(s) nota(s) da(s) prova(s) parcial(is) e T é a média aritmética da(s) nota(s) do(s) trabalho(s). A média final (MF) será: MF = MP, se MP 7,0 (e houver presença) MF = (PF + MP)/2, se MP < 7,0 (PF é a nota da prova final) Se MF 5,0 -> Aprovado Se MF < 5,0 -> Reprovado
Objetivo Apresentar os conceitos do ciclo de vida básico do software cobrindo as atividades de: (1) compilação (2) montagem (3) ligação (4) carga (com ênfase nas últimas três fases - 2 a 4). Apresentar as técnicas usadas nas várias atividades, incluindo os formatos de arquivos executáveis em diferentes sistemas operacionais (Linux, Windows, DOS) e as várias técnicas de modularização de software em formato binário (através de bibliotecas).
Compilação / Montagem / Ligação / Carga Programa em Ling. de Alto Nível Programa em Ling. de Alto Nível Programa em Ling. de Alto Nível Programa em ling. fonte Compilador Compilador Compilador Tradutor Programa em Ling. de Montagem Programa em Ling. de Montagem Programa em Ling. de Montagem Programa em ling. alvo Montador Montador Montador Objeto: módulo em ling de máquina Objeto: módulo em ling de máquina Objeto: módulo em ling de máquina Ligador Executável: programa em ling de máquina Carregador Memória
Compilação / Montagem / Ligação / Carga driver.c Programa em ling. fonte Compilador Tradutor asm_io.asm calc.asm Programa em ling. alvo Montador Montador Objeto: módulo em ling de máquina Objeto: módulo em ling de máquina Objeto: módulo em ling de máquina Ligador Executável: programa em ling de máquina Carregador Memória
Compilação / Montagem / Ligação / Carga driver.c Compilador printf scanf etc. asm_io.asm Montador first.asm Montador libc.a driver.obj asm_io.obj first.obj Ligador first.exe Carregador Memória
Compilação / Montagem / Ligação / Carga driver.c gcc printf scanf etc. asm_io.asm nasm first.asm nasm libc.a driver.obj asm_io.obj first.obj gcc first.exe SO Memória
Temas principais Modularização Construção de sistemas a partir de módulos de sistemas que podem ser combinados estaticamente e dinamicamente: Em tempo de projeto: Em tempo de pré-processamento Em tempo de compilação Em tempo de montagem Em tempo de ligação Em tempo de carga Em tempo de execução Diferentes unidades de composição
Perguntas a serem respondidas... Como os símbolos (rótulos, variáveis) são mapeados em endereços de memória? E os segmentos.bss,.data,.text? Qual é o formato de um arquivo binário?.com,.exe,.dll, A.OUT, COFF, ELF Como o programa vai parar na memória? Como os vários módulos interagem? Como eles sabem da existência um dos outros? Como módulos são distribuídos, instalados, configurados?
Tópicos a serem abordados (Programa) 1/3 Introdução Ciclo de vida do software: tempo de projeto, tempo de compilação, tempo de montagem, tempo de ligação, tempo de carga, tempo de execução Conceitos de montagem (assembling) e montadores (assemblers) Conceitos de ligação (linking) e ligadores (linkers) Carga (loading) e carregadores (loaders) Relocação
Tópicos a serem abordados (Programa) 2/3 Formatos de arquivos binários (executáveis) Bibliotecas (compartilhadas x não-compartilhadas) (estáticas x dinâmicas) Instalação (deployment), distribuição de software (licenças, pacotes, módulos de sistemas operacionais, dependências)
Tópicos a serem abordados (Programa) 3/3 Máquina Virtual Java Introdução à linguagem Java Compilação Just-in-Time Modularização Formatos:.class,.jar applets, carga dinâmica de classes Bibliotecas remotas com exemplo em Java RMI (Remote Method Invocation) Aspectos de segurança de carga e execução
Abordagem Aulas expositivas Aulas de laboratório
Material didático Seções 7.2, 7.3, 7.4 do livro: Andrew S. Tanenbaum, Organização Estruturada de Computadores, páginas 305-321 XEROX CT-III, pasta Sistemas de Computação Livro texto: John R. Levine, Linkers & Loaders, Morgan Kauffman Publishers, 2006. Este livro contém detalhes de muitas arquiteturas, vamos nos concentrar num subconjunto Texto adicional: Tim Lindholm, Frank Yellin, The Java Virtual Machine Specification, 2nd edition [gratuito online http://java.sun.com/docs/books/jvms/second_edition/html/v MSpecTOC.doc.html ] Tutorial Java RMI: [gratuito online http://java.sun.com/docs/books/tutorial/rmi/index.html ]