Sistemas Hardware-Software

Professor: Fabio Lubacheski (fabioagl@insper.edu.br)

Professor: Diego Saragoza da Silva

Creditos: Maciel Calebe Vidal

O que é um Sistema de Hardware-Software ?

Um Sistema de Hardware-Software ou Sistema de Computação combina o Hardware (computador) e o Sistema Operacional parar tornam o computador utilizável por usuários e programas.

Uma calculadora é um Sistema de Computação ?

  • NÃO, apesar das calculadoras terem processador, quantidade limitada de memória e capacidade de E/S. No entanto, as calculadoras não têm armazenamento secundário.

  • Além disso um Sistema de Computação deve ser de uso geral (sem uso específico) e reprogramável, ou seja, deve permitir a execução de outros programas sem necessidade de modificar o hardware ou sofware do sistema, qualidades que uma calculadora não tem.

E um microcontrolador é um Sistema de Computação ?

  • Os microcontroladores são de uso geral (a sua função não é adaptada a nenhuma aplicação específica), são reprogramáveis, possuem um processador, memória interna, armazenamento secundário e capazes de realizar E/S, mas eles não têm um Sistema Operacional, assim NÃO são considerados um Sistema de Computação.

E por que um Sistema Operacional é tão importante ?

  • O Sistema Operacional (SO) implementa abstrações de programação e interfaces que permitem que os usuários executem e interajam facilmente com os serviços do sistema.

  • Ele também gerencia os recursos de hardware (mémoria, acesso a disco,...) e controla como e quando os programas são executados.

  • O SO implementa políticas e mecanismos para garantir que vários programas possam ser executados simultaneamente no sistema de forma eficiente, protegida e contínua.

Qual linguagem e sistema operacional iremos utilizar ?

  • A linguagem C, pois é uma linguagem de programação de alto nível como Java e Python, mas não esconde detalhes sobre o gerenciamento de memória, comunicação com o hardware e sua tradução é relativamente direta para Assembly.

  • Os códigos e os exemplos da disciplina serão executados no sistema operacional Linux, que é o sistema operacional dominante em sistemas de supercomputação e é, sem dúvida, o sistema operacional mais utilizado por engenheiros e cientistas da computação.

  • O Linux também é gratuito e de código aberto, além disso um conhecimento prático do Linux é um trunfo para todos os estudantes de computação.

Vereremos o código-fonte em muitas formas

O que iremos aprender na disciplina ?

  • Como um programa escrito na linguagem C é executado em um computador;

  • Como as instruções do programa são traduzidas para binário e como o computador executa sua instruções binária;

  • Como o SO gerencia programas em execução no sistema;

  • Como escrever programas que podem fazer uso de computadores multi-core; e

  • Ao longo da disciplina, você também será apresentado a detalhes da linguagem C e aprender a depuração de código em Assembly.

Conteúdo da disciplina

Bibliografia básica

Computer Systems: A Programmer’s Perspective

R. E. Bryant and D. R. O’Hallaro

site: http://csapp.cs.cmu.edu

Este livro é realmente importante para disciplina!

Obrigado !