04-12-2006 1
Engenharia Electrotécnica - Electrónica e Computadores
Ano Lectivo: 2005/2006
Ana Madureira
Introdução
Complementos de Programação
Objectivos
Os alunos deverão ser capazes de ter uma
perspectiva da :
Arquitectura e Funcionamento de um computador Estrutura genérica de um sistema operativo: estrutura,
funções e características
Evolução Histórica dos SO Tipos de Sistemas Operativos
04-12-2006 3
Introdução à Informática
Informação
Informática = Informação + Automática
Computador
O que é um computador?
Breve perspectiva histórica
Evolução tecnológica Evolução de linguagens Evolução de aplicações
Noção de Computador
Computador é um conjunto de circuitos eléctricos e electrónicos capazes derealizar tarefas de modo autónomo por obediência
a um programa armazenado Internamente Computador é um Sistema de Computação integrando uma componente de Hardware e Software
04-12-2006 5
Sistema de Computação
Computador = Sistema de Computação
Hardware (Componente Física) permite:
executar um determinado tipo de instruções a determinada
velocidade
armazenar um número de bytes
comunicar com um conjunto de periféricos
Estas componentes físicas têm que receber ordens do que fazer e como se articular. Esta é a função do software
Software (Componente Lógica) que é o conjunto de
programas que dirigem o funcionamento do computador
Sistema de Computação
Hardware - UCP, memória,
dispositivos de I/O
Software
Software de Sistema
Sistema Operativo
Utilitários (editores, compiladores,...)
Software de
Desenvolvimento
Ambientes de Programação
SGBD-Sistemas de Gestão de Bases de Dados
Folhas Cálculo, Processadores de texto...
Aplicações
“Packages”
Aplicações por medida
Utilizadores: pessoas,outros
04-12-2006 7
Arquitectura e Funcionamento do
Computador
Informação Binária
Blocos Principais
CPU Memória Principal (Conceito de RAM, ROM,secundária) Periféricos Execução Sequencial busca e descodificação instrução execução
avançar para próxima
instrução
clock
Informação digital
Os computadores processam informação digital
informação digital
Grandeza analógica
Varia de forma contínua (ex: temperatura lida num
termómetro de Hg).
Grandeza digital
Descontínua (existe apenas um número finito de
estados).
Elemento mínimo de informação: dígito binário
04-12-2006 9
Funcionamento de um
Computador
Ciclo de processamento de um processador:
Busca da instrução na memória
Descodificação da instrução
Leitura dos operandos (se necessários)
Execução da instrução
Escrita dos resultados (caso existam).
Esta situação é válida e aplicável em situações em
que o processador execute num ambiente totalmente
centralizado, em que as operações são controladas
sempre por este.
Sistema Operativo
É um programa que actua como
intermediário entre os programas dos utilizadores e o hardware
Máquina virtual, abstraindo o
utilizador
Objectivos:
Criar ambiente no qual o utilizador
possa executar programas
Gestor de Recursos: controla e
coordena a utilização do hardware
Utilizar o Hardware de forma
04-12-2006 11
Tópicos de Discussão
Defina e distinga os seguintes conceitos
Multitarefa
Multiutilizador
Multiprogramação
Multiprocessamento
Conceitos
Multitarefa -
permite repartir a utilização do processador entre várias tarefas simultaneamente.Multiutilizador -
permitem a utilização simultânea dos recursos de um computador por vários utilizadores (UNIX, o FreeBSD, o WindowsNT e o Netware).Multiprogramação –
permite que o CPU possua vários programas simultaneamente activos na memória. Consiste em dividir a memória em N partições fixas de tamanhos variados, e permite que um programa seja executado enquanto outro espera por e/s. Permite que o CPU suporte a execução de múltiplos programas independentes.Multiprocessamento -
é a capacidade de um sistema operacional de executar simultaneamente dois ou mais processos.04-12-2006 13
Lista de sistemas operativos
POSIX / UNIX-like Microsoft Windows Apple / Macintosh Amiga Atari ST Be-like DOS IBM
Digital Equipment Corporation (DEC) / Compaq PDAs
Outros
Classificação
Tipo de comercialização:
Sistemas Proprietários (Windows, Mac). Sistemas Gratuitos (BeOS).
Sistemas Open Source (Código Aberto) (Unix, BSD). Sistemas Livres (Linux).
Funcionamento interno:
Sistemas monotarefa (ex: DOS)
Sistemas multitarefa (ex: Windows, Linux, Unix) Sistemas multi-processador
Os sistemas tarefa podem ainda ser mono-utilizador (BeOS) ou multi-utilizador (Unix, Linux)
Arquitetura:
Sistemas monolíticos (ex:Windows, Linux, Unix) Sistemas micro-kernel (ex: GNU Hurd, Mach). Sistemas Em camadas (ex: Windows NT).
04-12-2006 15
Modelo Simplificado
Hardware
Gestão de Processos Gestão de Memória Gestão de I/O Gestão de Ficheiros Aplicação 1 Utilizador 1 Interface Aplicação 2 Utilizador 1 Aplicação 3 Utilizador 2…
Conceitos e tarefas do SO
ProcessosCódigo executável, dados associados e contexto de execução
Gestão de Memória
Isolamento entre processos, alocação automática e protecção e controlo de
acesso Memória Virtual
Permite o endereçamento lógico da memória estendendo os limites
físicos da memória principal Sistemas de Ficheiros
Implementa o armazenamento a longo prazo de informação. A
informação é armazenada em objectos com um nome conhecidos por ficheiros
Segurança e Protecção
04-12-2006 17
Evolução dos Sistemas Operativos
Processamento em série (batch)
Os programas são submetidos todos juntos, em sequência por
um operador
Cada programa é executado até ao fim. Os resultados são
impressos. Não há interactividade
Multiprogramação
Execução “simultânea” de vários programas, aproveitando a
maior lentidão dos periféricos
“Timesharing”
Vários utilizadores em simultâneo
Interactividade
O tempo do processador é dividido pelos vários utilizadores cada
um no seu terminal
Conceitos
Computador digital
Sistema digital programável que permite armazenar e processar informação em formato digital a velocidades elevadas, realizando operações aritméticas e lógicas elementares.
Programa
Sequência de instruções que processam os dados. Os programas os dados são armazenados na memória do computador em formato digital usando um código binário.
Interpretadores
São programas de software especiais que traduzem e convertem os programas escritos em linguagens de programação de alto-nível (programas fonte) em código capaz de ser interpretado e executado pelo processador.
Ao contrário dos compiladores, que procedem primeiro à conversão de todo o programa fonte antes de o tornar executável, os interpretadores vão tomando acções à medida que vão lendo o código do programa. No entanto, a interpretação do código implica a presença do interpretador sempre que o programa é corrido (interpretado).
Compiladores
São programas de software especiais que traduzem e convertem os programas escritos em linguagens de programação de alto-nível (programas fonte) noutro tipo de programas.
04-12-2006 19
Conceitos
Linguagens de Programação
é uma linguagem com uma sintaxe própria, com a qual se podem
escrever programas de software. Existem várias linguagens de programação, cada qual com o seu conjunto de estruturas, sentenças e regras específicas.
A maior parte das aplicações desenvolvidas por programadores é feita
utilizando linguagens de alto-nível.
Pascal C, C++ prolog
A programação em linguagens de baixo nível implica que o
programador tenha um profundo conhecimento da arquitectura interna do computador e do seu conjunto de instruções máquina, pelo que esta linguagem não é normalmente utilizada para o desenvolvimento de aplicações.
assembly
Conceitos
Código Máquina
é o formato no qual está codificada toda a informação interna ao
computador. Este código consiste em várias sequências binárias (0s e 1s), e é específico a cada computador.
Compiladores
são programas de software especiais que traduzem e convertem os
programas escritos em linguagens de programação de alto-nível (programas fonte) noutro tipo de programas.
Como resultado da tradução, é criado um novo programa correspondente ao programa inincial mas escrito agora em linguagem máquina, o que significa que está pronto a ser executado. Estando no seu estado executável, este programa pode ser corrido (executado) um sem número de vezes sem necessitar de ser novamente compilado. No entanto, ele tem que ser recompilado sempre que forem feitas alterações ao programa fonte.
Assembler
é um programa de software que traduz o código de um programa escrito
04-12-2006 21
História dos Computadores (I)
1939 - O computador de Atanaso_ e Berry. O 1º computador digital (ABC) foi construído em 1939 (Atanasoff/Berry). A memória era formada por condensadores cujo estado de carga representava um número binário. Os condensadores estavam montados em cilindros de baquelite com uma banda metálica na superfície exterior através da qual era feita a leitura da memória. Cada cilindro tinha 30 cm de altura e 20 cm de diâmetro e podia guardar 30 números. Os dados eram introduzidos com cartões perfurados e o armazenamento dos resultados intermédios era feito queimando pequenos pontos num cartão com uma faísca: a resistência das partes carbonizadas do cartão era diferente da das partes não queimadas.
1944 - Konrad Zuse constrói em 1938, na Alemanha, o Z1, um computador capaz de efectuar cálculo em vírgula flutuante. Em 1941 Zuse completa um novo modelo, o Z3, destruído por uma bomba em 1944. Todos os modelos de Zuse usavam relés (Zuse não acreditava na abilidade das válvulas) e filmes antigos perfurados para leitura dos programas e dos dados.
História dos Computadores (II)
1944 -Howard Aiken constrói em Harvard, em 1944, o IBM ASCC (Automatic Sequence Controlled Calculator), mais conhecido por MARK I: > 750000 componentes, 15 m de comprimento, 2,40 m de altura, 4,5 toneladas! Velocidade de processamento: 0.00083 MIPS
04-12-2006 23
História dos Computadores (III)
1943 - Alan Turing completa o COLOSSUS, um dos primeiros
computadores digitais electrónicos programável.
1946 - O primeiro computador
electrónico para uso geral foi construído por John William Mauchly e J. Presper Eckert Jr. entre 1943 e 1946, na Universidade da
Pensilvânia: o ENIAC (Electronic Numerical Integrator And Computer). Ocupava 93 m2, tinha 3 m de altura e pesava 27 toneladas. Os seus 10000 condensadores, 70000 resistências, 6000 interruptores e 18000 válvulas necessitavam de 150 kW!
História dos Computadores (IV)
1943 - Alan Turing completa o COLOSSUS, um dos primeiros
computadores digitais electrónicos programável.
1946 - O primeiro computador electrónico para uso geral foi construído
por John William Mauchly e J. Presper Eckert Jr. entre 1943 e 1946, na Universidade da Pensilvânia: o ENIAC (Electronic Numerical Integrator And Computer). Ocupava 93 m2, tinha 3 m de altura e pesava 27 toneladas. Os seus 10000 condensadores, 70000 resistências, 6000 interruptores e 18000 válvulas necessitavam de 150 kW!
1944 - Em 1944 Mauchly e Eckert decidiram construir um computador
com memória interna, para permitir que o programa executasse funções diferentes de acordo com o resultado obtido em cálculos anteriores: o EDVAC (Electronic Discrete Variable Automatic Computer), que ficou operacional em 1952.
1952 - O primeiro computador comercial, o UNIVAC I (UNIVersal
04-12-2006 25
História dos Computadores (V)
1939 - 9 de Setembro de 1945: Grace Hopper (que desenvolveu o primeiro
compilador) encontra uma traça num dos relés do MARK II de Harvard e escreve no seu logbook: “First actual case of a bug being found.”.
Maio de 1973: o Micral, o primeiro computador baseado num
micro-processador (o Intel 8008) é lançado em França.
Janeiro de 1975: é anunciado o Altair 8800, um kit para montar em casa que se
baseava no micro-processador 8080 da Intel e tinha 256 bytes de memória interna. Programava-se usando um painel de interruptores.
Abril de 1975: Paul Allen e Bill Gates fundam a Microsoft e lançam, em Julho,
um interpretador BASIC para o Altair 8800.
Outras datas na história dos computadores
1971: Surge a primeira versão do sistema operativo UNIX (Bell Labs).
1 de Abril de 1976: Steve Wozniak e Steve Jobs fundam a Apple poucas semanas depois de terem construído o Apple I, baseado no microprocessador 6502 da Motorola.
1979: É lançada a folha de cálculo VisiCalc para o Apple II. 1981: A IBM inicia a venda do .IBM Personal Computer.. 1985: Richard Stallman publica o .GNU Manifesto..
Dezembro de 1991: Linus Torvalds lança a versão 0.1 do sistema operativo Linux.
A árvore genealógica dos
computadores
04-12-2006 27
Modelo John Von Newmann
O matemático Johann von Neumann, consultor do projecto
Manhattan, envolve-se nos projectos do ENIAC e do EDVAC em Junho de 1944. Inspirado por estes, concebe um modelo teórico para um computador, que é o modelo adoptado até hoje.
O computador é constituído pelas seguintes unidades funcionais:
Memória central
Unidade aritmética e lógica Unidade de controlo
Unidades de entrada e saída
Hoje em dia o processador engloba a unidade
aritmética e lógica e a unidade de controlo.
Sistema Computacional
04-12-2006 29
O modelo de von Neumann
O processador não efectua operações directamente sobre a
memória (à excepção da transferência de dados).
O processamento é feito em células especiais de memória no
interior da UAL denominadas registos.
A transferência de dados entre a memória central e os
dispositivos de entrada e saída pode ser feita passando pelo processador ou através de acesso directo à memória (DMA).
04-12-2006 31
Sistema Computacional
Componentes:
Hardware: UCP, memória, dispositivos de I/O
Software
Sistema Operativo: controla e coordena a utilização
do hardware durante a execução de várias aplicações
Aplicações: compiladores, sistemas de bases de
dados,programas diversos, Jogos, …
Utilizadores: pessoas,outros computadores,
máquinas
04-12-2006 33
Estrutura básica de um computador
Um computador consiste num processador e
controladores de dispositivos que estão ligados a um
barramento comum que dá acesso à memória
(partilhada).
Um controlador de memória controla o acesso dos
vários dispositivos e do processador à memória.
No arranque o computador carrega o boostrap
program. Este inicializa todos os aspectos do
sistema, carrega o sistema operativo e dá inicio à
sua execução.
Informação Digital
Os computadores processam informação digital
Grandeza analógica
Varia de forma contínua (ex: temperatura lida num
termómetro de Hg).
Grandeza digital
Descontínua (existe apenas um número finito de
estados).
Elemento mínimo de informação: dígito binário
04-12-2006 35
Funcionamento de um
Computador
Ciclo de processamento de um processador:
Busca da instrução na memória
Descodificação da instrução
Leitura dos operandos (se necessários)
Execução da instrução
Escrita dos resultados (caso existam).
Esta situação é válida e aplicável em situações em
que o processador execute num ambiente totalmente
centralizado, em que as operações são controladas
sempre por este.
Sistema Operativo
É um programa que actua como intermediário entre os
programas dos utilizadores e o hardware
Máquina virtual, abstraindo o utilizador
Objectivos:
Criar ambiente no qual o utilizador possa executar programas Gestor de Recursos: controla e coordena a utilização do
hardware
04-12-2006 37
Modelo Simplificado SO
Hardware
Gestão de Processos Gestão de Memória Gestão de I/O Gestão de Ficheiros Aplicação 1 Utilizador 1 Interface Aplicação 2 Utilizador 1 Aplicação 3 Utilizador 2…
Modelo Simplificado SO
Gestão de ProcessosControla execução processos Comunicação/Sincronização
Gestão de Memória
Isolamento entre processos
Alocação automática de memória protecção e controlo de acesso
Permite o endereçamento lógico da memória estendendo os limites físicos da
memória principal Gestão de I/O
Interface com dispositivos de entrada e saída (teclado, monitor, rato, etc) Interface abstracta
Gestão de Ficheiros
Implementa o armazenamento a longo prazo de informação. Controla permissões de acesso
04-12-2006 39
Evolução Histórica
Os primeiros computadores (inícios da década de 1950) não
dispunham de nenhum software com as funcionalidades que hoje atribuímos aos sistemas operativos.
O objectivo principal nessa altura era a fiabilidade do hardware
assim como o seu desempenho.
Monitor
Carregar um programa em memória
Lotes
Carregar (automático) sequencialmente um conjunto de
programas
Multi-programa
Carregar (automático) dinamicamente um conjunto de
programas
Interactivo
Interacção com o utilizador
A primeira aproximação ao sistema operativo
moderno caracterizou-se pela realização de um
programa utilitário designado de monitor que permitia
ao utilizador carregar os seus programas em
memória, editá-los e verificar a sua execução.
Cada utilizador dispunha de uma quota de tempo
para utilização do computador e este estava
completamente à sua disposição durante aquele
intervalo de tempo.
Evolução Histórica
Monitor de controlo
04-12-2006 41
Evolução Histórica
Tratamento em Lotes (Batch)
O sistema de funcionamento anterior era um pouco ineficiente
uma vez que só permitia um utilizador de cada vez. Além disso, muitas vezes, o processador central do computador (CPU) estava inactivo à espera de um comando do utilizador ou do término de uma operação por parte de um periférico.
Uma forma de optimizar estes tempos consistiu na introdução
de capacidades de sequenciamento automático de trabalhos no monitor. Assim os computadores começaram a tratar lotes de programas automaticamente.
Este sistema de tratamento por lotes evoluiu rapidamente. Os
periféricos começaram a poder executar operações autónomas, notificando o processador do fim da sua execução através do mecanismo de interrupções.
Evolução Histórica
Tratamento em Lotes (Batch)
As operações de entrada/saída podem prosseguir em paralelo
com a execução de um programa que apenas é interrompido para iniciá-las e para tratar a sua terminação.
As bandas magnéticas são substituídas por discos magnéticos
de acesso aleatório.
Nos novos sistemas que utilizam discos os cartões são lidos
directamente do leitor de cartões para o disco.
Esta forma de processamento designa-se por spooling
(simultaneous peripheral operation on-line).
O spooling permite a sobreposição de uma operação de
entrada/saída (I/O) de um trabalho com a computação de outro trabalho
04-12-2006 43
Evolução Histórica
Multiprogramação
A técnica de spooling introduz uma estrutura de dados muito
importante: a pool de trabalhos. A técnica de spooling geralmente resulta na existência de vários trabalhos em disco à espera de serem executados (pool).
A existência de uma pool de trabalhos em disco permite que o sistema
operativo escolha qual o próximo trabalho a ser executado, de forma a optimizar a utilização do CPU. É a base da multiprogramação.
Com a multi-programação os sistemas operativos começam a tomar
decisões pelos utilizadores (qual o próximo trabalho a ser executado?). Com a multi-programação a complexidade dos sistemas operativos aumenta.
Estamos a falar do princípio do escalonamento de
trabalhos/processos.
Pelo facto de ter vários programas em memória ao mesmo tempo o
sistema operativo necessita de ter mecanismos de gestão de memória.
Evolução Histórica
Sistemas Interactivos
Um sistema operativo que permita multiprogramação por lotes (batch)
consegue um elevado grau de utilização efectiva de todos os recursos de um computador.
No entanto este tipo de sistema operativo ainda tem algumas
desvantagens sob o ponto de vista do programador ou utilizador final, uma vez que este não pode interagir com o seu programa enquanto este está a ser executado.
Surgem os sistemas operativos multitarefa/interactivos. Neste tipo de sistemas operativos, vários trabalhos podem ser
executados pelo CPU.
A grande diferença é que a frequência com que o sistema operativo
muda entre tarefa a executar pelo CPU é tão elevada que os
utilizadores podem interagir com cada tarefa/trabalho enquanto estes estão a executar.
Um sistema interactivo possibilita uma comunicação on-line entre o
04-12-2006 45
Tipos de Sistemas Operativos
Sistemas Paralelos
O tipo de multiprocessamento mais comum é o chamado
multiprocessamento simétrico, no qual cada processador corre uma cópia idêntica do sistema operativo.
Sistemas Distribuídos
Ao contrário dos sistemas descritos anteriormente, estes
sistemas não partilham memória nem relógio. Cada processador tem a sua memória local. Os processadores comunicam entre eles através de linhas de comunicação.
Sistemas Tempo-Real
Considera-se que um sistema tempo real funciona
correctamente só se retornar o resultado correcto dentro de determinados limites temporais